summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/automake.mom789
-rw-r--r--doc/doc.am711
-rw-r--r--doc/fdl.texi505
-rw-r--r--doc/gnu.eps784
-rw-r--r--doc/gnu.xpm198
-rw-r--r--doc/grnexmpl.g3250
-rw-r--r--doc/grnexmpl.me88
-rw-r--r--doc/groff.css17
-rw-r--r--doc/groff.dvibin0 -> 1369752 bytes
-rw-r--r--doc/groff.html24945
-rw-r--r--doc/groff.html.node/Adjustment.html57
-rw-r--r--doc/groff.html.node/Argument-Units.html68
-rw-r--r--doc/groff.html.node/Artificial-Fonts.html252
-rw-r--r--doc/groff.html.node/Assigning-Register-Formats.html188
-rw-r--r--doc/groff.html.node/Auto_002dincrement.html124
-rw-r--r--doc/groff.html.node/Background.html96
-rw-r--r--doc/groff.html.node/Basics.html232
-rw-r--r--doc/groff.html.node/Blank-Line-Traps.html71
-rw-r--r--doc/groff.html.node/Breaking.html119
-rw-r--r--doc/groff.html.node/Built_002din-Registers.html253
-rw-r--r--doc/groff.html.node/Calling-Macros.html164
-rw-r--r--doc/groff.html.node/Changing-the-Type-Size.html159
-rw-r--r--doc/groff.html.node/Changing-the-Vertical-Spacing.html146
-rw-r--r--doc/groff.html.node/Character-Classes.html140
-rw-r--r--doc/groff.html.node/Character-Translations.html200
-rw-r--r--doc/groff.html.node/Colors.html208
-rw-r--r--doc/groff.html.node/Columnation.html53
-rw-r--r--doc/groff.html.node/Command-Reference.html60
-rw-r--r--doc/groff.html.node/Comment-Command.html65
-rw-r--r--doc/groff.html.node/Comments.html157
-rw-r--r--doc/groff.html.node/Common-Features.html89
-rw-r--r--doc/groff.html.node/Compatibility-Mode.html221
-rw-r--r--doc/groff.html.node/Concept-Index.html2359
-rw-r--r--doc/groff.html.node/Conditional-Blocks.html174
-rw-r--r--doc/groff.html.node/Conditionals-and-Loops.html64
-rw-r--r--doc/groff.html.node/Configuration-and-Customization.html56
-rw-r--r--doc/groff.html.node/Control-Characters.html137
-rw-r--r--doc/groff.html.node/Conventions-Used-in-This-Manual.html124
-rw-r--r--doc/groff.html.node/Copy-Mode.html256
-rw-r--r--doc/groff.html.node/Copying-This-Manual.html534
-rw-r--r--doc/groff.html.node/Credits.html58
-rw-r--r--doc/groff.html.node/DESC-File-Format.html258
-rw-r--r--doc/groff.html.node/Debugging.html317
-rw-r--r--doc/groff.html.node/Default-Units.html87
-rw-r--r--doc/groff.html.node/Deferring-Output.html106
-rw-r--r--doc/groff.html.node/Delimiters.html233
-rw-r--r--doc/groff.html.node/Device-Control-Commands.html185
-rw-r--r--doc/groff.html.node/Device-and-Font-Description-Files.html77
-rw-r--r--doc/groff.html.node/Differences-from-AT_0026T-ms.html171
-rw-r--r--doc/groff.html.node/Displays-and-Keeps.html74
-rw-r--r--doc/groff.html.node/Diversion-Traps.html79
-rw-r--r--doc/groff.html.node/Diversions.html394
-rw-r--r--doc/groff.html.node/Document-Formats.html57
-rw-r--r--doc/groff.html.node/Document-Parts.html84
-rw-r--r--doc/groff.html.node/Drawing-Geometric-Objects.html361
-rw-r--r--doc/groff.html.node/Dummy-Characters.html166
-rw-r--r--doc/groff.html.node/End_002dof_002dinput-Traps.html187
-rw-r--r--doc/groff.html.node/Environment.html151
-rw-r--r--doc/groff.html.node/Environments.html250
-rw-r--r--doc/groff.html.node/Escape-Sequence-Index.html162
-rw-r--r--doc/groff.html.node/Fields.html98
-rw-r--r--doc/groff.html.node/File-Formats.html62
-rw-r--r--doc/groff.html.node/File-Keyword-Index.html215
-rw-r--r--doc/groff.html.node/Filling.html79
-rw-r--r--doc/groff.html.node/Font-Description-File-Format.html280
-rw-r--r--doc/groff.html.node/Font-Directories.html113
-rw-r--r--doc/groff.html.node/Font-Families.html182
-rw-r--r--doc/groff.html.node/Font-Positions.html138
-rw-r--r--doc/groff.html.node/Font-and-Size-Changes.html56
-rw-r--r--doc/groff.html.node/Footnotes-and-Endnotes.html60
-rw-r--r--doc/groff.html.node/Formatter-Instructions.html83
-rw-r--r--doc/groff.html.node/GNU-troff-Reference.html99
-rw-r--r--doc/groff.html.node/Graphics-Commands.html247
-rw-r--r--doc/groff.html.node/Groff-Options.html536
-rw-r--r--doc/groff.html.node/Gtroff-Internals.html187
-rw-r--r--doc/groff.html.node/Headers-and-Footers.html61
-rw-r--r--doc/groff.html.node/Headings-in-ms.html214
-rw-r--r--doc/groff.html.node/Hyphenation.html66
-rw-r--r--doc/groff.html.node/I_002fO.html457
-rw-r--r--doc/groff.html.node/Identifiers.html210
-rw-r--r--doc/groff.html.node/Implementation-Differences.html64
-rw-r--r--doc/groff.html.node/Indented-regions-in-ms.html112
-rw-r--r--doc/groff.html.node/Indexing.html58
-rw-r--r--doc/groff.html.node/Input-Conventions.html171
-rw-r--r--doc/groff.html.node/Input-Encodings.html154
-rw-r--r--doc/groff.html.node/Input-Line-Traps.html185
-rw-r--r--doc/groff.html.node/Installation.html57
-rw-r--r--doc/groff.html.node/Intermediate-Output-Examples.html171
-rw-r--r--doc/groff.html.node/Interpolating-Registers.html99
-rw-r--r--doc/groff.html.node/Introduction.html68
-rw-r--r--doc/groff.html.node/Invocation-Examples.html120
-rw-r--r--doc/groff.html.node/Invoking-Requests.html143
-rw-r--r--doc/groff.html.node/Invoking-groff.html82
-rw-r--r--doc/groff.html.node/Italic-Corrections.html96
-rw-r--r--doc/groff.html.node/Language-Concepts.html70
-rw-r--r--doc/groff.html.node/Leaders.html126
-rw-r--r--doc/groff.html.node/Leading-Space-Traps.html82
-rw-r--r--doc/groff.html.node/Ligatures-and-Kerning.html157
-rw-r--r--doc/groff.html.node/Line-Continuation.html166
-rw-r--r--doc/groff.html.node/Line-Layout.html267
-rw-r--r--doc/groff.html.node/Lists-in-ms.html216
-rw-r--r--doc/groff.html.node/Macro-Directories.html125
-rw-r--r--doc/groff.html.node/Macro-Index.html335
-rw-r--r--doc/groff.html.node/Macro-Package-Intro.html63
-rw-r--r--doc/groff.html.node/Macro-Packages.html64
-rw-r--r--doc/groff.html.node/Major-Macro-Packages.html103
-rw-r--r--doc/groff.html.node/Manipulating-Filling-and-Adjustment.html501
-rw-r--r--doc/groff.html.node/Manipulating-Hyphenation.html580
-rw-r--r--doc/groff.html.node/Manipulating-Spacing.html220
-rw-r--r--doc/groff.html.node/Manipulating-Type-Size-and-Vertical-Spacing.html74
-rw-r--r--doc/groff.html.node/Measurements.html177
-rw-r--r--doc/groff.html.node/Miscellaneous.html275
-rw-r--r--doc/groff.html.node/Missing-Unix-Version-7-ms-Macros.html78
-rw-r--r--doc/groff.html.node/Motion-Quanta.html93
-rw-r--r--doc/groff.html.node/Numeric-Expressions.html395
-rw-r--r--doc/groff.html.node/Obsolete-Command.html74
-rw-r--r--doc/groff.html.node/Operator-Index.html188
-rw-r--r--doc/groff.html.node/Operators-in-Conditionals.html222
-rw-r--r--doc/groff.html.node/Optional-man-extensions.html264
-rw-r--r--doc/groff.html.node/Other-Differences.html248
-rw-r--r--doc/groff.html.node/Output-Device-Intro.html63
-rw-r--r--doc/groff.html.node/Output-Language-Compatibility.html103
-rw-r--r--doc/groff.html.node/Page-Control.html218
-rw-r--r--doc/groff.html.node/Page-Geometry.html140
-rw-r--r--doc/groff.html.node/Page-Layout-Adjustment.html57
-rw-r--r--doc/groff.html.node/Page-Layout.html188
-rw-r--r--doc/groff.html.node/Page-Location-Traps.html326
-rw-r--r--doc/groff.html.node/Page-Motions.html454
-rw-r--r--doc/groff.html.node/Paper-Format.html101
-rw-r--r--doc/groff.html.node/Paragraphs-in-ms.html160
-rw-r--r--doc/groff.html.node/Paragraphs.html109
-rw-r--r--doc/groff.html.node/Parameters.html195
-rw-r--r--doc/groff.html.node/Postprocessor-Access.html144
-rw-r--r--doc/groff.html.node/Predefined-Text.html53
-rw-r--r--doc/groff.html.node/Preprocessor-Intro.html78
-rw-r--r--doc/groff.html.node/Preprocessor-Support.html56
-rw-r--r--doc/groff.html.node/Program-and-File-Index.html239
-rw-r--r--doc/groff.html.node/Punning-Names.html190
-rw-r--r--doc/groff.html.node/Register-Index.html349
-rw-r--r--doc/groff.html.node/Registers.html65
-rw-r--r--doc/groff.html.node/Request-Index.html394
-rw-r--r--doc/groff.html.node/Requests-and-Macros.html221
-rw-r--r--doc/groff.html.node/Safer-Mode.html61
-rw-r--r--doc/groff.html.node/Sections-and-Chapters.html56
-rw-r--r--doc/groff.html.node/Selecting-Fonts.html227
-rw-r--r--doc/groff.html.node/Sentences.html174
-rw-r--r--doc/groff.html.node/Separation.html94
-rw-r--r--doc/groff.html.node/Setting-Registers.html215
-rw-r--r--doc/groff.html.node/Simple-Commands.html207
-rw-r--r--doc/groff.html.node/Special-Fonts.html93
-rw-r--r--doc/groff.html.node/String-Index.html344
-rw-r--r--doc/groff.html.node/Strings.html429
-rw-r--r--doc/groff.html.node/Suppressing-Output.html147
-rw-r--r--doc/groff.html.node/Tab-Stops-in-ms.html67
-rw-r--r--doc/groff.html.node/Table-of-Contents.html71
-rw-r--r--doc/groff.html.node/Tabs-and-Fields.html276
-rw-r--r--doc/groff.html.node/Tabs-and-Leaders.html87
-rw-r--r--doc/groff.html.node/Text-settings-in-ms.html76
-rw-r--r--doc/groff.html.node/Text.html81
-rw-r--r--doc/groff.html.node/The-Implicit-Page-Trap.html74
-rw-r--r--doc/groff.html.node/Traps.html73
-rw-r--r--doc/groff.html.node/Tutorial-for-Macro-Users.html68
-rw-r--r--doc/groff.html.node/Typeface-and-decoration.html212
-rw-r--r--doc/groff.html.node/Typographical-symbols-in-ms.html80
-rw-r--r--doc/groff.html.node/Using-Escape-Sequences.html206
-rw-r--r--doc/groff.html.node/Using-Fonts.html148
-rw-r--r--doc/groff.html.node/Using-Fractional-Type-Sizes.html172
-rw-r--r--doc/groff.html.node/Using-Symbols.html632
-rw-r--r--doc/groff.html.node/Vertical-Position-Traps.html94
-rw-r--r--doc/groff.html.node/Warnings.html246
-rw-r--r--doc/groff.html.node/What-Is-groff_003f.html68
-rw-r--r--doc/groff.html.node/Writing-Macros.html267
-rw-r--r--doc/groff.html.node/als.html33
-rw-r--r--doc/groff.html.node/groff-Capabilities.html91
-rw-r--r--doc/groff.html.node/groff.html_fot.html525
-rw-r--r--doc/groff.html.node/gtroff-Output.html100
-rw-r--r--doc/groff.html.node/if_002delse.html97
-rw-r--r--doc/groff.html.node/if_002dthen.html111
-rw-r--r--doc/groff.html.node/index.html453
-rw-r--r--doc/groff.html.node/man.html71
-rw-r--r--doc/groff.html.node/mdoc.html61
-rw-r--r--doc/groff.html.node/me.html67
-rw-r--r--doc/groff.html.node/mm.html64
-rw-r--r--doc/groff.html.node/mom.html85
-rw-r--r--doc/groff.html.node/ms-Body-Text.html70
-rw-r--r--doc/groff.html.node/ms-Document-Control-Settings.html524
-rw-r--r--doc/groff.html.node/ms-Document-Description-Macros.html189
-rw-r--r--doc/groff.html.node/ms-Document-Structure.html106
-rw-r--r--doc/groff.html.node/ms-Footnotes.html155
-rw-r--r--doc/groff.html.node/ms-Headers-and-Footers.html122
-rw-r--r--doc/groff.html.node/ms-Insertions.html181
-rw-r--r--doc/groff.html.node/ms-Introduction.html60
-rw-r--r--doc/groff.html.node/ms-Legacy-Features.html285
-rw-r--r--doc/groff.html.node/ms-Margins.html56
-rw-r--r--doc/groff.html.node/ms-Multiple-Columns.html88
-rw-r--r--doc/groff.html.node/ms-Naming-Conventions.html89
-rw-r--r--doc/groff.html.node/ms-Page-Layout.html64
-rw-r--r--doc/groff.html.node/ms-TOC.html242
-rw-r--r--doc/groff.html.node/ms-basic-information.html211
-rw-r--r--doc/groff.html.node/ms-keeps-and-displays.html207
-rw-r--r--doc/groff.html.node/ms-language-and-localization.html135
-rw-r--r--doc/groff.html.node/ms.html75
-rw-r--r--doc/groff.html.node/troff-and-nroff-Modes.html114
-rw-r--r--doc/groff.html.node/while.html161
-rw-r--r--doc/groff.info423
-rw-r--r--doc/groff.info-17824
-rw-r--r--doc/groff.info-27529
-rw-r--r--doc/groff.info-3bin0 -> 238373 bytes
-rw-r--r--doc/groff.pdfbin0 -> 1148308 bytes
-rw-r--r--doc/groff.texi18927
-rw-r--r--doc/groff.txt18123
-rw-r--r--doc/me-revisions261
-rw-r--r--doc/meintro.me.in2266
-rw-r--r--doc/meintro_fr.me.in2374
-rw-r--r--doc/meref.me.in2439
-rw-r--r--doc/ms.ms4486
-rw-r--r--doc/pic.ms3287
-rw-r--r--doc/txi-en.tex74
-rw-r--r--doc/webpage.ms2580
219 files changed, 136189 insertions, 0 deletions
diff --git a/doc/automake.mom b/doc/automake.mom
new file mode 100644
index 0000000..5609e19
--- /dev/null
+++ b/doc/automake.mom
@@ -0,0 +1,789 @@
+.\" -*- mode: text; coding: utf-8; -*-
+.\"
+.\" Copyright ©2014 - 2022 Free Software Foundation
+.\" 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
+.\"
+.\" Permission is hereby granted, free of charge, to any person
+.\" obtaining a copy of this software and associated documentation
+.\" files (the "Software"), to deal in the Software without restriction,
+.\" including, without limitation, the rights to use, copy, modify,
+.\" merge, publish, distribute, sublicense, and sell copies of
+.\" the Software, and to permit persons to whom the Software is
+.\" furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be
+.\" included in all copies, or substantial portions, of the Software;
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS," WITHOUT WARRANTY OF ANY KIND,
+.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+.\" OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
+.\" NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+.\" HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY,
+.\" WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING
+.\" FROM, OUT OF, OR IN CONNECTION WITH, THE SOFTWARE, OR THE USE OF,
+.\" OR OTHER DEALINGS IN, THE SOFTWARE.
+.\"
+.\" Formatted with the mom macros
+.\" .RW (reduce) and .EW (expand) control track kerning
+.\" .WS controls word spacing
+.\" Hanging punctuation and hyphens are inserted manually
+.\"
+.TITLE "Using Automake in the Groff project"
+.AUTHOR "Bertrand Garrigues"
+.COPYRIGHT "2014, 2017 Free Software Foundation"
+.COVER TITLE AUTHOR DOCTYPE COPYRIGHT
+.
+.PAPER LETTER
+.PRINTSTYLE TYPESET
+.
+.HEADING_STYLE 1 NUMBER
+.HEADING_STYLE 2 NUMBER
+.HEADING_STYLE 3 NUMBER
+.HEADING_STYLE 4 NUMBER
+.
+.QUOTE_INDENT 2m
+.CODE_FONT CB
+.
+\# Table of contents
+.TOC_PADDING 2
+.SPACE_TOC_ITEMS
+.AUTO_RELOCATE_TOC
+.TOC_ENTRY_STYLE 2 FONT I
+.TOC_LEAD 14
+.
+.NO_SHIM \" Flex-spaced
+.
+.START
+.
+.PP
+This is a quick overview of how to use `automake' in the groff
+project, and is intended to help the developers and contributors
+find their way when they have to make changes to the sources files
+or to the data that are installed. If you need more details on
+`automake', here are some reading suggestions:
+.
+.LEFT
+.SP 3p
+.
+.LIST
+.SHIFT_LIST 1m
+.ITEM
+The Automake Manual:
+\*[FWD 1m]\c
+.PDF_WWW_LINK https://www.gnu.org/software/automake/manual/automake.html
+.SP 3p
+.ITEM
+A book by John Calcote, with good practical examples:
+\*[FWD 1m]\c
+.PDF_WWW_LINK http://fsmsh.com/2753
+.SP 3p
+.ITEM
+This site, by Diego Petteno, with good practical examples too:
+\*[FWD 1m]\c
+.PDF_WWW_LINK https://autotools.io/index.html
+.LIST OFF
+.
+.JUSTIFY
+.HY DEFAULT
+.
+.HEADING 1 "Overview, the initial build"
+.
+.HEADING 2 "First build"
+.
+.PP
+Groff integrates the `gnulib' and uses its `bootstrap' script. When
+compiling from the git repository, you should first invoke this
+script:
+.QUOTE
+.CODE
+$ ./bootstrap
+.CODE OFF
+.QUOTE OFF
+This will:
+.
+.QUAD LEFT
+.HY OFF
+.
+.LIST
+.SHIFT_LIST 1m
+.ITEM
+.SP 3p
+Clone the gnulib repository as a git submodule in `gnulib',
+add the needed gnulib sources files in `lib',
+add the needed gnulib m4 macros in `gnulib_m4'.
+.SP 3p
+.ITEM
+Invoke autoreconf that will call all the `GNU autotools' (`aclocal',
+`autoheader', `autoconf', `automake') in the right order for
+creating the following files:
+.LIST DASH
+.SHIFT_LIST .5m
+.SP 3p
+.ITEM
+INSTALL (a symlink to gnulib's INSTALL file)
+.ITEM
+Makefile.in
+.ITEM
+aclocal.m4
+.ITEM
+autom4te.cache/
+.ITEM
+build-aux/ (that contains all the helper scripts)
+.ITEM
+configure
+.ITEM
+src/include/config.hin
+.LIST BACK
+.LIST OFF
+.
+.SP 3p
+.JUSTIFY
+.HY DEFAULT
+.
+.WS +2
+.EW .5
+The file aclocal.m4 is generated and the groff m4 macros are
+included via the acinclude.m4 file.
+.WS DEFAULT
+.EW 0
+.
+.PP
+At this point you can invoke the `configure' script and call `make'
+to build the groff project. You can do it in the source tree:
+.QUOTE
+.CODE
+$ ./configure
+$ make
+.CODE OFF
+.QUOTE OFF
+You can also build groff in an out-of-source build tree, which is
+cleaner:
+.QUOTE
+.CODE
+$ mkdir build
+$ cd build
+$ ../configure
+$ make
+.CODE OFF
+.QUOTE OFF
+Parallel build is also supported: `make' can be invoked
+with the -j option, which will greatly speed up the build.
+.
+.HEADING 2 "Automake in the autotools process"
+.
+.PP
+Automake's main job is to generate a Makefile.in file (this file is
+maintained manually on projects using only autoconf). The main file
+processed by `automake' is the Makefile.am file, which eventually
+generates a Makefile. The (simplified) process is:
+.
+.SP 3p
+.QUAD LEFT
+.HY OFF
+.
+.LIST
+.SHIFT_LIST 1m
+.ITEM
+`aclocal' generates the `aclocal.m4' file from `configure.ac' and
+the user-defined macros in `acinclude.m4'.
+.ITEM
+`autoheader' generates config.h.in.
+.ITEM
+`autoconf' generates the `configure' script from `aclocal.m4' and `configure.ac'
+.ITEM
+`automake' generates Makefile.in from Makefile.am and the
+`configure.ac' file. It also generates some helper scripts, on the
+groff project they are located in build-aux.
+.ITEM
+`configure' generates `config.status'
+.ITEM
+`config.status' generates the Makefile and config.h.
+.LIST OFF
+.
+.SP 3p
+.JUSTIFY
+.HY DEFAULT
+.
+.WS -2
+.RW .16
+Finally, `autoreconf' is the program that can be used to call these
+various tools in the correct order.
+.RW 0
+.WS DEFAULT
+.
+.PP
+Automake defines a set of special variables that are used to
+generate various build rules in the final Makefile. Note however
+that if Automake's predefined rules are not enough, you still have
+the possibility of adding handwritten standard `make' rules in a
+Makefile.am; these rules will be copied verbatim in the Makefile.in
+and then in the final Makefile.
+.
+.HEADING 2 "Modification of autotools files"
+.
+.PP
+Previously, when groff used `autoconf' only and not `automake',
+you had to invoke manually the autotools, depending on what you
+modified. For example, to change the file `aclocal.m4', you had
+to run the shell command `aclocal -I m4'; to recreate the files
+`configure' and `Makefile', you had to use the command 'autoreconf
+- I m4'.
+.PP
+Now, as groff uses `automake', you don't need to run `autoreconf'.
+If you make some changes in Makefile.am or configure.ac, all the
+files that need to be updated will be regenerated when you execute
+`make'.
+.
+.HEADING 1 "Building a program"
+.
+.HEADING 2 "A program and its source files"
+.
+.PP
+Generally speaking, when using `automake' you will have to write a
+Makefile.am file and use the variable \*[CODE]bin_PROGRAMS\*[CODE OFF]
+to declare a program that should be built, and then list the
+sources of this program in a variable that starts with the name of
+your program and ends with \*[CODE]_SOURCES\*[CODE OFF]\&. In the
+groff project we have only 1 top-level Makefile.am that includes
+several \&.am files.
+.PP
+Take for example the build of grolbp, in src/devices/grolbp/grolbp.am.
+The file starts with:
+.QUOTE ADJUST -4p
+.CODE
+bin_PROGRAMS += grolbp
+.CODE OFF
+.QUOTE OFF
+This says that a program named `grolbp' is added to the list of the
+programs that should be built. The variable
+\*[CODE]bin_PROGRAMS\*[CODE OFF] is initialized to an empty string in
+the top-level Makefile.am, which includes grolbp.am. (We will see later
+why we don't write directly
+\*[CODE]bin_PROGRAMS\~=\~grolbp\*[CODE OFF] in a Makefile.am in the
+grolbp directory.)
+.PP
+Then, we list the sources of grolbp like this:
+.QUOTE ADJUST -4p
+.IL 1m
+.HI 1m
+.CODE
+grolbp_SOURCES = \\
+src/devices/grolbp/lbp.cpp \\
+src/devices/grolbp/lbp.h \\
+src/devices/grolbp/charset.h
+.CODE OFF
+.QUOTE OFF
+.ILQ
+As you added `grolbp' to \*[CODE]bin_PROGRAMS\*[CODE OFF],
+you need to define the sources of grolbp in the variable
+\*[CODE]grolbp_SOURCES\*[CODE OFF]\&. If you write in another file
+\*[CODE]bin_PROGRAMS += foo\*[CODE OFF] you will list the sources
+of `foo' in \*[CODE]foo_SOURCES\*[CODE OFF]\&.
+.PP
+With these two statements, the resulting generated Makefile
+will contain everything that is needed to build, clean,
+install and uninstall the `grolbp' binary when invoking the
+adequate `make' command. Also, the source files listed in
+\*[CODE]grolbp_SOURCES\*[CODE OFF] will automatically be included in
+the distribution tarball. That is why the headers are also listed
+in \*[CODE]grolbp_SOURCES\*[CODE OFF]: it is not necessary to add
+them in order to correctly build `grolbp', but this way the headers
+will be distributed.
+.
+.SP 3p
+.QUAD LEFT
+.HY OFF
+.
+.LIST
+.SHIFT_LIST 1m
+.ITEM
+The path to the files are relative to the top-level directory.
+.ITEM
+The binaries are generated in the top-level build directory.
+.ITEM
+The \&.o files are generated in the directory where the source files
+are located, or, in the case of an out-of-source build tree, in a
+directory that is the replication of the source tree directory.
+For example if you built groff in a `build' directory, lbp.o
+(object file from src/devices/grolbp/lbp.cpp) will be located in
+build/src/devices/grolbp/lbp.o.
+.LIST OFF
+.
+.SP 3p
+.JUSTIFY
+.HY DEFAULT
+.
+We will also see later the reasons; this is due to the non-recursive
+make design.
+.
+.HEADING 2 "Linking against a library"
+.
+.PP
+To list which libraries grolbp needs to link against, we just write:
+.QUOTE
+.IL
+.HI
+.CODE
+grolbp_LDADD = $(LIBM) \\
+libdriver.a \\
+libgroff.a \\
+lib/libgnu.a
+.CODE OFF
+.QUOTE OFF
+.ILQ
+Again, we use the variable \*[CODE]grolbp_LDADD\*[CODE OFF] because
+we added a program named `grolbp'. This will also automatically
+set build dependencies between `grolbp' and the libraries it needs:
+`libdriver.a' and `libgroff.a', that are convenience libraries built
+within the groff project, will be compiled before grolbp.
+.
+.HEADING 2 "Preprocessor flags"
+.
+.PP
+Preprocessor flags that are common to all the binaries are listed
+in the variable \*[CODE]AM_CPPFLAGS\*[CODE OFF] in the top-level
+Makefile.am. If a `foo' binary needs specific preprocessor
+flags, use \*[CODE]foo_CPPFLAGS\*[CODE OFF], for example, in
+src/devices/xditview/xditview.am, extra flags are needed to build
+gxditview and are added like this:
+.QUOTE
+.IL
+.HI
+.CODE
+gxditview_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS) -Dlint \\
+-I$(top_builddir)/src/devices/xditview
+.CODE OFF
+.QUOTE OFF
+.ILQ
+.PP
+The use of specific CPPFLAGS changes the name of the generated objects:
+the \&.o object files are prefixed with the name of the program.
+For example, the \&.o file corresponding to
+src/devices/xditview/device.c will be
+src/devices/xditview/gxditview-device.o.
+.
+.HEADING 2 "Cleaning"
+.
+.PP
+You don't need to write rules to clean the programs listed in
+\*[CODE]bin_PROGRAMS\*[CODE OFF], `automake' will write them for
+you. However, some programs might have generated sources that
+should be cleaned. In this case, you have mainly two special
+variables to list extra files that should be cleaned:
+.
+.SP 3p
+.QUAD LEFT
+.HY OFF
+.
+.LIST
+.SHIFT_LIST 1m
+.ITEM
+\*[CODE]MOSTLYCLEANFILES\*[CODE OFF] for files that should be
+cleaned by `make mostlyclean'
+.ITEM
+\*[CODE]CLEANFILES\*[CODE OFF ] for files that should be cleaned by
+`make clean'
+.LIST OFF
+.
+.JUSTIFY
+.HY DEFAULT
+.SP 3p
+.
+There is also the possibility of writing custom rules. We will see
+that later.
+.
+.HEADING 2 "Dependencies"
+.
+.PP
+We have already seen that when linking against a convenience
+library, the dependencies are already created by `automake'.
+However, some dependencies still need to be manually added, for
+example when a source file includes a generated header. In this
+case, the easiest way is to add a plain-make dependency. For
+example, src/roff/groff/groff.cpp includes defs.h, which is a
+generated header. We just add in src/roff/groff/groff.am:
+.QUOTE
+.CODE
+src/roff/groff/groff.$(OBJEXT): defs.h
+.CODE OFF
+.QUOTE OFF
+.
+.HEADING 2 "Scripts"
+.
+.PP
+Apart from \*[CODE]bin_PROGRAMS\*[CODE OFF], there is another
+similar special variable for scripts: \*[CODE]bin_SCRIPTS\*[CODE OFF]\&.
+The scripts listed in this variable will automatically be
+built (of course you have to provide your custom rule to build the
+script), installed and uninstalled when invoking `make', `make
+install' and `make uninstall'. The main difference is that unlike
+the programs listed in \*[CODE]bin_PROGRAMS\*[CODE OFF], the scripts
+will not be cleaned by default. They are not distributed by default
+either. In the groff project, \*[CODE]bin_SCRIPTS\*[CODE OFF] are
+cleaned because they are added to \*[CODE]MOSTLYCLEANFILES\*[CODE OFF]
+in the top-level Makefile.am.
+.PP
+A simple example are the gropdf and pdfmom scripts in
+src/devices/gropdf/gropdf.am:
+.CODE_SIZE 84
+.QUOTE_INDENT 1
+.QUOTE
+.CODE
+bin_SCRIPTS += gropdf pdfmom
+ [...]
+gropdf: $(gropdf_dir)/gropdf.pl $(SH_DEPS_SED_SCRIPT)
+ $(AM_V_GEN)$(RM) $@ \\
+ sed -f $(SH_DEPS_SED_SCRIPT) \\
+ -e "s|[@]VERSION[@]|$(VERSION)|" \\
+ -e "s|[@]PERL[@]|$(PERL)|" \\
+ -e "s|[@]GROFF_FONT_DIR[@]|$(fontpath)|" \\
+ -e "s|[@]RT_SEP[@]|$(RT_SEP)|" $(gropdf_dir)/gropdf.pl \\
+ >$@ \
+ && chmod +x $@
+
+pdfmom: $(gropdf_dir)/pdfmom.pl $(SH_DEPS_SED_SCRIPT)
+ $(AM_V_GEN)$(RM) $@ \\
+ sed -f $(SH_DEPS_SED_SCRIPT) \\
+ -e "s|[@]VERSION[@]|$(VERSION)|" \\
+ -e "s|[@]RT_SEP[@]|$(RT_SEP)|" \\
+ -e "s|[@]PERL[@]|$(PERL)|" $(gropdf_dir)/pdfmom.pl \\
+ >$@
+ && chmod +x $@
+.QUOTE OFF
+.QUOTE_INDENT 2m
+.CODE_SIZE 100
+In this example, the `@' symbol is protected by square brackets to
+prevent the substitution of the variable by `automake'.
+.
+.HEADING 1 "Non-recursive make schema"
+.
+.PP
+There are two possibilities for organizing the Makefile.am of a
+large project, using a recursive or a non-recursive `make'.
+.
+.HEADING 2 "1st possibility: make recursion"
+.
+.PP
+A top level Makefile.am includes another Makefile.am, using the
+\*[CODE]SUBDIRS\*[CODE OFF] directive, and the Makefile.am of each
+sub-directory lists the programs that should be built. If we had
+chosen this type of organization, we would have a Makefile.am in
+src/devices/grolbp and in each directory that contain sources to
+build a program (tbl, eqn, troff, and so on). We would write in the
+top-level Makefile.am:
+.QUOTE
+.IL
+.HI
+.CODE
+SUBDIRS = src/devices/grolbp \\
+\&... (and all the dir that build a program or a script)
+.CODE OFF
+.QUOTE OFF
+and in src/devices/grolbp, we would have a file Makefile.am that
+contains:
+.QUOTE
+.CODE
+bin_PROGRAMS = grolbp
+grolbp_SOURCES = lbp.cpp lbp.h charset.h
+.CODE OFF
+.QUOTE OFF
+.PP
+Only `grolbp' is affected to the variable \*[CODE]bin_PROGRAMS\*[CODE OFF]\&.
+It would be the same in, say, src/roff/troff: you would have a Makefile.am
+with \*[CODE]bin_PROGRAMS = troff\*[CODE OFF]\&. We would have
+one generated Makefile per Makefile.am file: in the build tree
+you will have the top-level Makefile, grolbp's Makefile in
+src/devices/grolbp, troff's Makefile in src/roff/troff, and so on.
+When calling `make' to build everything, `make' will be recursively
+called in all the directories that have a Makefile. Thus, the
+paths are logically relative to the directory that contains the
+Makefile.am.
+.PP
+This approach has the disadvantage of making dependencies harder
+to resolve: each Makefile does not know the targets of the other
+Makfiles. It also makes the build slower.
+.
+.HEADING 2 "Non-recursive make used by the Groff project"
+.
+.PP
+The second possibility, which was chosen for the groff project, is to use
+a non-recursive make schema. It is described in paragraph 7.3 of
+the Automake manual ("An Alternative Approach to Subdirectories"),
+based on the following paper from Peter Miller:
+.PDF_WWW_LINK http://miller.emu.id.au/pmiller/books/rmch/ \
+ SUFFIX . "\*[IT]Recursive Make Considered Harmful\*[PREV]"
+.PP
+The idea is to have a single Makefile that contains all the rules.
+That is why we have only a single Makefile.am in the top-level
+directory which includes all the \&.am files that define rules
+to build the various programs. The inclusion is done with the
+\*[CODE]include\*[CODE OFF] directive, not \*[CODE]SUBDIRS\*[CODE OFF]\&.
+Using `include' is like copying the contents of the included
+file into the top-level Makefile.am, and will not generate other
+Makefile.
+.PP
+We first say in this top-level Makefile.am:
+.QUOTE
+.CODE
+bin_PROGAMS =
+.CODE OFF
+.QUOTE OFF
+and then all the \&.am files that define a program to be built (e.g.
+src/devices/grolbp/grolbp.am, src/roff/troff/troff.am, and so on)
+overload this variable, so that at the end, all the programs that
+should be built are listed in this \*[CODE]bin_PROGRAMS\*[CODE OFF]
+variable. This is the reason why all the paths in the various \&.am
+files are relative to the top-level directory: at the end we will
+have only one Makefile in the top-level directory of the build tree.
+.PP
+As the resulting single Makefile knows all the targets, the
+dependencies are easier to manage. The build is also faster,
+particularly when compiling a single file: `make' is called once only
+and the file will be instantly rebuilt, while on a recursive make
+system, `make' will have to be invoked in all the sub-directories.
+.PP
+Note also that in order to make `gnulib' work with this
+non-recursive schema, the `--automake-subdir'
+configuration should be selected in bootstrap.conf.
+.
+.HEADING 1 "Installing data"
+.
+.PP
+Variables that end with \*[CODE]_DATA\*[CODE OFF] are special
+variables used to list files that should be installed in a
+particular location. The prefix of the variables should refer to
+another previously defined variable that ends with a `dir' suffix.
+This variable that ends with `dir' defines where the files should be
+installed.
+.
+.HEADING 2 "A simple case"
+.
+.PP
+For example, in font/devX100/devX100.am, we can see this:
+.QUOTE
+.CODE
+if !WITHOUT_X11
+devX100fontdir = $(fontdir)/devX100
+devX100font_DATA = $(DEVX100FONTS)
+endif
+.SP
+EXTRA_DIST += $(DEVX100FONTS)
+.CODE OFF
+.QUOTE OFF
+.WS -4
+\*[CODE]DEVX100FONTS\*[CODE OFF] is just a list of font files,
+defined at the beginning of devX100.am. \*[CODE]fontdir\*[CODE OFF]
+is where all the font directories are installed, it is defined
+in the top-level Makefile.am. The conditional
+\*[CODE]if\~!WITHOUT_X11\*[CODE OFF]
+is used to prevent the installation of
+these files if X11 is not available.
+.WS DEFAULT
+.PP
+We first define where we wants to install the devX100 fonts with:
+.QUOTE
+.CODE
+devX100fontdir = $(fontdir)/devX100
+.CODE OFF
+.QUOTE OFF
+Because we declared a variable ending with `dir', we are allowed
+to define \*[CODE]devX100font_DATA\*[CODE OFF] (you remove the
+`dir' suffix and add \*[CODE]_DATA\*[CODE OFF]). Wildcards are not
+supported in the special variables that end with
+\*[CODE]_DATA\*[CODE OFF]\&.
+.PP
+With these two lines, `make install' will install the files
+listed in \*[CODE]DEVX100FONTS\*[CODE OFF] and `make uninstall'
+will uninstall them. \*[CODE]devX100fontdir\*[CODE OFF] will be
+automatically created if missing during the installation
+process, but not removed during the uninstall. The complete
+\*[CODE]fontdir\*[CODE OFF] is removed by a custom uninstall rule
+(uninstall_groffdirs in Makefile.am).
+.PP
+Because the files listed in \*[CODE]devX100font_DATA\*[CODE OFF]
+are not distributed by default, we explicitly added them to the
+\*[CODE]EXTRA_DIST\*[CODE OFF] variable, which lists all the files
+that should be distributed and that are not taken into account by
+the default automake rules.
+.QUOTE
+.CODE
+ EXTRA_DIST += $(DEVX100FONTS)
+.CODE OFF
+.QUOTE OFF
+Another possibility would have been to add a `dist' prefix to the
+\*[CODE]devX100font_DATA\*[CODE OFF] variable, in this case the use
+of \*[CODE]EXTRA_DIST\*[CODE OFF] is useless (except of course if
+\*[CODE]WITHOUT_X11\*[CODE OFF] is true, in this case we don't
+install the files but we still have to distribute them):
+.QUOTE
+.CODE
+if !WITHOUT_X11
+devX100fontdir = $(fontdir)/devX100
+dist_devX100font_DATA = $(DEVX100FONTS)
+else
+EXTRA_DIST += $(DEVX100FONTS)
+endif
+.CODE OFF
+.QUOTE OFF
+.
+.HEADING 2 "Dealing with generated files"
+.
+.PP
+In the previous example, all the font files that must be installed
+were already present in the source tree. But in some cases,
+you need to generate the files you intend to install. In this
+case, the files should be installed but not distributed. A
+simple way to deal with this is to add a `nodist' prefix to your
+\*[CODE]xxx_DATA\*[CODE OFF] variable.
+.PP
+For example in font/devps/devps.am, we have a list of
+font files already present in the source tree, defined
+by \*[CODE]DEVPSFONTFILES\*[CODE OFF], and another list
+of font files that are generated, listed in the variable
+\*[CODE]DEVPSFONTFILES_GENERATED\*[CODE OFF]\&. They should all
+by installed in a `devps' directory under the fontdir. Thus
+the following three lines, where we use the `dist' and `nodist'
+prefixes:
+.QUOTE
+.CODE
+devpsfontdir = $(fontdir)/devps
+dist_devpsfont_DATA = $(DEVPSFONTFILES)
+nodist_devpsfont_DATA = $(DEVPSFONTFILES_GENERATED)
+.CODE OFF
+.QUOTE OFF
+The generated files are not cleaned by default, thus we add:
+.QUOTE
+.CODE
+MOSTLYCLEANFILES += $(DEVPSFONTFILES_GENERATED)
+.CODE OFF
+.QUOTE OFF
+.
+.HEADING 1 "Extending Automake's rules"
+.
+.HEADING 2 "Local clean rules"
+.
+.PP
+In most of the cases, the files that need to be cleaned are
+automatically determined by `automake', or were added to the
+\*[CODE]MOSTCLEANFILES\*[CODE OFF] or \*[CODE]CLEANFILES\*[CODE OFF]
+variables. However, you might need to define a specific rule
+to clean some files that were not added to any list. Automake
+defines a set of targets to extend the clean targets with your
+own rules: clean-local, mostlyclean-local, distclean-local or
+maintainerclean-local. An example of such extension exists in
+font/devpdf/devpdf.am: because some fonts are not explicitly listed
+in a \*[CODE]xxx_DATA\*[CODE OFF] variable but generated by a custom
+rule, we define an extra rule to extend the `mostlyclean' target:
+.CODE_SIZE 92
+.QUOTE
+.CODE
+mostlyclean-local: mostlyclean_devpdf_extra
+mostlyclean_devpdf_extra:
+ @echo Cleaning font/devpdf
+ rm -rf $(top_builddir)/font/devpdf/enc \\
+ $(top_builddir)/font/devpdf/map;
+ if test -d $(top_builddir)/font/devpdf; then \\
+ for f in $(GROFF_FONT_FILES); do \\
+ rm -f $(top_builddir)/font/devpdf/$$f; \\
+ done; \\
+ fi
+.CODE OFF
+.QUOTE OFF
+.
+.NO_FLEX OFF \" Prevent upcoming NEWPAGE from disabling flex-spacing.
+.HEADING 2 "Local install/uninstall rules and hooks"
+.
+.PP
+Similarly to the clean rules, there are extensions to install and
+uninstall rules. They come with two flavous, local rules and hooks.
+.
+.SP 3p
+.QUAD LEFT
+.HY OFF
+.
+.LIST
+.SHIFT_LIST 1m
+.ITEM
+There are 2 rules to extend install commands: `install-exec-local'
+for binaries and `install-data-local' for data.
+.ITEM
+There is 1 uninstall local rule: `uninstall-local'.
+.LIST OFF
+.
+.SP 3p
+.JUSTIFY
+.HY DEFAULT
+.
+There are no guarantees on the order of execution of these local
+rules. An example of local rule is the installation of GXditview.ad
+and GXditview-color.ad files in src/devices/xditview/xditview.am: if
+theses files are already installed, the old files are first saved.
+Also, the final file that is installed is stripped from its \&.ad
+suffix. Thus the usage of a custom rule rather than the definition
+of a \*[CODE]xxx_DATA\*[CODE OFF] variable:
+.FLEX
+.QUOTE
+.CODE
+# Custom installation of GXditview.ad and GXditview-color.ad
+install-data-local: install_xditview
+uninstall-local: uninstall_xditview
+.SP
+[...]
+install_xditview: $(xditview_srcdir)/GXditview.ad
+ -test -d $(DESTDIR)$(appdefdir) \\
+ || $(mkinstalldirs) $(DESTDIR)$(appdefdir)
+ if test -f $(DESTDIR)$(appdefdir)/GXditview; then \\
+ mv $(DESTDIR)$(appdefdir)/GXditview \\
+ $(DESTDIR)$(appdefdir)/GXditview.old; \\
+ fi
+ [...]
+ $(INSTALL_DATA) $(xditview_srcdir)/GXditview.ad \\
+ $(DESTDIR)$(appdefdir)/GXditview
+.CODE OFF
+.QUOTE OFF
+.PP
+Hooks, on the other hand, are guaranteed to be executed after all the
+standard targets have been executed.
+.BR
+.SP 3p
+.QUAD LEFT
+.HY OFF
+.
+.LIST
+.SHIFT_LIST 1m
+.SP 3p
+.ITEM
+There are 2 install hooks: `install-exec-hook' and
+`install-data-hook'.
+.ITEM
+There is 1 uninstall hook: `unintall-hook'
+.LIST OFF
+.
+.SP 3p
+.JUSTIFY
+.HY DEFAULT
+.
+.PP
+An example of hook is the `uninstall_groffdirs' rule in the
+top-level Makefile.am. This hook is used to remove all the
+directories specific to groff introduced by the installation
+process. Obviously it could not be a local extension of `uninstall'
+because the order of execution is not guaranteed.
+.QUOTE
+.CODE
+# directories specific to groff
+uninstall-hook: uninstall_groffdirs
+uninstall_groffdirs:
+ if test -d $(DESTDIR)$(datasubdir); then \\
+ rm -rf $(DESTDIR)$(fontdir); \\
+ rm -rf $(DESTDIR)$(oldfontdir); \\
+ rmdir $(DESTDIR)$(datasubdir); \\
+ fi
+ [...]
+.CODE OFF
+.QUOTE OFF
+.TOC
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/doc/doc.am b/doc/doc.am
new file mode 100644
index 0000000..cddc519
--- /dev/null
+++ b/doc/doc.am
@@ -0,0 +1,711 @@
+# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+# Original Makefile.sub written by Werner Lemberg <wl@gnu.org>.
+# Adapted to Automake by Bertrand Garrigues
+# (bertrand.garrigues@laposte.net).
+#
+# 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/>.
+
+doc_srcdir = $(abs_top_srcdir)/doc
+doc_builddir = $(abs_top_builddir)/doc
+
+# Some document sources are parameterized in configuration options like
+# the groff version number and the command prefix. Use this in target
+# rules to prepare formattable versions of them from .in files.
+DOC_SED = $(SED) \
+ -e "s;[@]VERSION[@];$(VERSION);" \
+ -e "s;[@]g[@];$(g);g;"
+
+# Use this in target rules to run the build tree's groff.
+#
+# It includes flags to locate its tmac and device/font description
+# directories and to produce verbose diagnostics in the event of syntax
+# or formatting problems.
+DOC_GROFF = \
+ GROFF_COMMAND_PREFIX= \
+ GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+ $(GROFFBIN) -M $(doc_srcdir) $(MFLAG) $(FFLAG) -ww -b
+
+# This image file is used by several documents in the groff source tree.
+DOC_GNU_EPS = doc/gnu.eps
+
+# Other doc, installed in $(docdir)
+# Files located in the source tree
+DOCFILES_INST = \
+ doc/me-revisions \
+ doc/ms.ms \
+ doc/pic.ms
+DOCFILES_NOINST = \
+ doc/meintro.me.in \
+ doc/meintro_fr.me.in \
+ doc/meref.me.in
+# Files that undergo a transformation prior to groff processing
+GENERATEDDOCFILES = \
+ doc/meintro.me \
+ doc/meintro_fr.me \
+ doc/meref.me
+# Files generated in the build tree
+if USE_GROHTML
+PROCESSEDDOCFILES_HTML = \
+ doc/pic.html
+endif
+if USE_GROPDF
+PROCESSEDDOCFILES_PDF = \
+ doc/automake.pdf \
+ doc/groff-man-pages.pdf
+endif
+PROCESSEDDOCFILES_PS = \
+ doc/meref.ps \
+ doc/meintro.ps \
+ doc/meintro_fr.ps \
+ doc/ms.ps \
+ doc/pic.ps
+PROCESSEDDOCFILES_TXT = \
+ doc/groff-man-pages.utf8.txt
+PROCESSEDDOCFILES = \
+ $(PROCESSEDDOCFILES_HTML) \
+ $(PROCESSEDDOCFILES_PS) \
+ $(PROCESSEDDOCFILES_PDF) \
+ $(PROCESSEDDOCFILES_TXT)
+
+# Declare minimal dependencies for documents by output driver.
+PROCESSEDFILES_DEPS_HTML = pre-grohtml groff troff post-grohtml \
+ font/devhtml/stamp font/devps/stamp
+PROCESSEDFILES_DEPS_PS = groff troff grops font/devps/stamp
+PROCESSEDFILES_DEPS_PDF = groff troff gropdf font/devpdf/stamp
+PROCESSEDFILES_DEPS_TXT = groff troff grotty font/devutf8/stamp
+
+if USE_GROHTML
+$(PROCESSEDDOCFILES_HTML): $(PROCESSEDFILES_DEPS_HTML)
+endif
+$(PROCESSEDDOCFILES_PS): $(PROCESSEDFILES_DEPS_PS)
+if USE_GROPDF
+$(PROCESSEDDOCFILES_PDF): $(PROCESSEDFILES_DEPS_PDF)
+endif
+$(PROCESSEDDOCFILES_TXT): $(PROCESSEDFILES_DEPS_TXT)
+
+otherdocdir = $(docdir)
+dist_otherdoc_DATA = $(DOCFILES_INST)
+nodist_otherdoc_DATA = $(PROCESSEDDOCFILES) $(GENERATEDDOCFILES)
+MOSTLYCLEANFILES += $(GENERATEDDOCFILES) $(PROCESSEDDOCFILES)
+EXTRA_DIST += $(DOCFILES_NOINST)
+
+# pdf doc, written in mom and therefore using contrib/mom/mom.am
+# definitions
+EXTRA_DIST += doc/automake.mom
+if USE_GROPDF
+docpdfdocdir = $(pdfdocdir)
+nodist_docpdfdoc_DATA = doc/automake.pdf
+endif
+doc/automake.pdf: doc/automake.mom pdfmom contrib/mom/om.tmac
+
+# GNU PIC html documentation, installed in $(htmldocdir)
+# Other pic*.html files are installed by the local rule
+if USE_GROHTML
+htmlpicdir = $(htmldocdir)
+htmlpic_DATA = $(PROCESSEDDOCFILES_HTML)
+HTMLDOCFILESALL = pic*.html
+HTMLDOCIMAGEFILES = pic*
+endif
+
+# Examples files, installed in $(exampledir)
+
+# source tree files
+EXAMPLEFILES = \
+ doc/webpage.ms \
+ doc/groff.css \
+ doc/grnexmpl.g \
+ doc/grnexmpl.me
+
+# Generated in the build tree
+if USE_GROHTML
+PROCESSEDEXAMPLEFILES_HTML = doc/webpage.html
+else
+PROCESSEDEXAMPLEFILES_HTML =
+endif
+PROCESSEDEXAMPLEFILES_PS = \
+ doc/webpage.ps \
+ doc/grnexmpl.ps
+PROCESSEDEXAMPLEFILES = \
+ $(PROCESSEDEXAMPLEFILES_HTML) \
+ $(PROCESSEDEXAMPLEFILES_PS)
+
+$(PROCESSEDEXAMPLEFILES_HTML): $(PROCESSEDFILES_DEPS_HTML)
+$(PROCESSEDEXAMPLEFILES_PS): $(PROCESSEDFILES_DEPS_PS)
+
+docexamplesdir = $(exampledir)
+dist_docexamples_DATA = $(EXAMPLEFILES)
+nodist_docexamples_DATA = $(PROCESSEDEXAMPLEFILES)
+MOSTLYCLEANFILES += $(PROCESSEDEXAMPLEFILES)
+
+if USE_GROHTML
+# webpage.html is generated; webpage*.html files are installed by the
+# local rule.
+HTMLEXAMPLEFILESALL = webpage*.html
+HTMLEXAMPLEIMAGEFILES = webpage*
+htmlexamplesdir = $(exampledir)
+endif
+
+# Locate image subdirectory for HTML documents relative to an
+# installation directory such as `htmldocdir` or `exampledir`. Do _not_
+# use for locating files within the source or build trees.
+imagedir = img
+
+EXTRA_DIST += \
+ doc/txi-en.tex
+
+# Introduce variables to house the groff man pages. We break the list
+# of page sources into multiple chunks because we have to load Swedish
+# localization before formatting groff_mmse.7 and then reload English
+# localization afterward. This also serves as a test of groff locale
+# switching; being lazy and shunting groff_mmse.7 off to the end of the
+# document would not achieve this goal (and not loading Swedish
+# localization at all to format it would be gauche).
+GROFF_MAN_PAGES1 = \
+ src/utils/addftinfo/addftinfo.1 \
+ src/utils/afmtodit/afmtodit.1 \
+ contrib/chem/chem.1 \
+ src/preproc/eqn/eqn.1 \
+ contrib/eqn2graph/eqn2graph.1 \
+ contrib/gdiffmk/gdiffmk.1 \
+ contrib/glilypond/glilypond.1 \
+ contrib/gperl/gperl.1 \
+ contrib/gpinyin/gpinyin.1 \
+ contrib/grap2graph/grap2graph.1 \
+ src/preproc/grn/grn.1 \
+ src/devices/grodvi/grodvi.1 \
+ src/roff/groff/groff.1 \
+ src/utils/grog/grog.1 \
+ src/devices/grohtml/grohtml.1 \
+ src/devices/grolbp/grolbp.1 \
+ src/devices/grolj4/grolj4.1 \
+ src/devices/gropdf/gropdf.1 \
+ src/devices/grops/grops.1 \
+ src/devices/grotty/grotty.1 \
+ $(GXDITVIEW_MAN1) \
+ src/utils/hpftodit/hpftodit.1 \
+ src/utils/indxbib/indxbib.1 \
+ src/utils/lkbib/lkbib.1 \
+ src/utils/lookbib/lookbib.1 \
+ contrib/mm/mmroff.1 \
+ src/preproc/eqn/neqn.1 \
+ src/roff/nroff/nroff.1 \
+ src/devices/gropdf/pdfmom.1 \
+ contrib/pdfmark/pdfroff.1 \
+ src/utils/pfbtops/pfbtops.1 \
+ src/preproc/pic/pic.1 \
+ contrib/pic2graph/pic2graph.1 \
+ src/preproc/preconv/preconv.1 \
+ src/preproc/refer/refer.1 \
+ src/preproc/soelim/soelim.1 \
+ src/preproc/tbl/tbl.1 \
+ src/utils/tfmtodit/tfmtodit.1 \
+ src/roff/troff/troff.1 \
+ $(XTOTROFF_MAN1) \
+ man/groff_font.5 \
+ man/groff_out.5 \
+ man/groff_tmac.5 \
+ man/groff.7 \
+ man/groff_char.7 \
+ man/groff_diff.7 \
+ contrib/hdtbl/groff_hdtbl.7 \
+ tmac/groff_man.7 \
+ tmac/groff_man_style.7 \
+ tmac/groff_mdoc.7 \
+ tmac/groff_me.7 \
+ contrib/mm/groff_mm.7
+
+GROFF_MAN_PAGES2 = \
+ contrib/mm/groff_mmse.7
+
+GROFF_MAN_PAGES3 = \
+ contrib/mom/groff_mom.7 \
+ tmac/groff_ms.7 \
+ contrib/rfc1345/groff_rfc1345.7 \
+ tmac/groff_trace.7 \
+ tmac/groff_www.7 \
+ man/roff.7
+
+GROFF_MAN_PAGES_ALL = $(GROFF_MAN_PAGES1) $(GROFF_MAN_PAGES2) \
+ $(GROFF_MAN_PAGES3)
+
+# This is a convenience target for (re-)generating all the man pages.
+man-all: $(GROFF_MAN_PAGES_ALL)
+
+# ...and for cleaning them.
+man-clean:
+ $(RM) $(GROFF_MAN_PAGES_ALL)
+
+# Many pages use tbl, a few use eqn, and soelim(1) uses pic. We also
+# need groff's FreeEuro font so we can embed it.
+#
+# We embed the fonts (-P-e) to (1) honor the current PDF standard, (2)
+# ensure consistent rendering of the document, and (3) exercise this
+# feature of gropdf.
+doc/groff-man-pages.pdf: $(GROFF_MAN_PAGES_ALL) eqn pic tbl \
+ $(TMAC_PACKAGE_MAN) $(TMAC_PACKAGE_MDOC) font/devps/freeeuro.pfa
+ $(GROFF_V)$(DOC_GROFF) -pet -mandoc -dHF=HB -rC1 \
+ -rCHECKSTYLE=3 -Tpdf -P-e \
+ $(GROFF_MAN_PAGES1) \
+ $(tmac_srcdir)/sv.tmac $(GROFF_MAN_PAGES2) \
+ $(tmac_srcdir)/en.tmac $(GROFF_MAN_PAGES3) > $@
+
+doc/groff-man-pages.utf8.txt: $(GROFF_MAN_PAGES_ALL) eqn pic tbl \
+ $(TMAC_PACKAGE_MAN) $(TMAC_PACKAGE_MDOC)
+ $(GROFF_V)$(DOC_GROFF) -pet -Tutf8 -mandoc \
+ -rCHECKSTYLE=3 $(GROFF_MAN_PAGES1) \
+ $(tmac_srcdir)/sv.tmac $(GROFF_MAN_PAGES2) \
+ $(tmac_srcdir)/en.tmac $(GROFF_MAN_PAGES3) > $@
+
+doc/grnexmpl.ps: $(doc_srcdir)/grnexmpl.me $(doc_srcdir)/grnexmpl.g \
+ grn eqn
+ $(GROFF_V)$(MKDIR_P) `dirname $@` \
+ && $(DOC_GROFF) -Tps -ge -me $(doc_srcdir)/grnexmpl.me >$@
+
+# Generating *.me from *.me.in is, surprisingly, a challenge.
+# 1. A pattern rule ("%.me: %.me.in") is not portable to NetBSD or
+# OpenBSD make.
+# 2. A single-suffix rule works in an isolated Makefile, but _only_
+# with the .SUFFIXES special target, not with the
+# (Automake-specific) SUFFIXES macro.
+# .SUFFIXES: .in
+# .in:
+# $(DOC_SED) $< >$@
+# (One can validly complain that this approach is too general.)
+# 3. GNU Automake insists that we use the SUFFIXES macro and not the
+# special target.
+# error: use variable 'SUFFIXES', not target '.SUFFIXES'
+# 4. What about a target rule? We'd have to explicitly write the first
+# dependency name in the rule commands because NetBSD make (and
+# reportedly OpenBSD) refuses to honor the $< variable in target
+# rules.
+#
+# So what is left? A double-suffix rule--but you have to use it in a
+# special way that is explicitly not countenanced by POSIX.
+#
+# "The application shall ensure that the target portion is a valid
+# target name (see Target Rules) of the form .s2 or .s1.s2 (where .s1
+# and .s2 are suffixes that have been given as prerequisites of the
+# .SUFFIXES special target and s1 and s2 do not contain any <slash> or
+# <period> characters.) If there is only one <period> in the target,
+# it is a single-suffix inference rule. Targets with two periods are
+# double-suffix inference rules. Inference rules can have only one
+# target before the <colon>."
+# (POSIX Issue 8, make(1), "Inference Rules")
+#
+# A double-suffix rule won't work in an obvious way because its
+# semantics are that the suffix is replaced, not removed. You have to
+# add both suffixes to the .SUFFIXES special target, in order with the
+# dependency first.
+# .SUFFIXES: .me.in .me
+# .me.in.me:
+# $(DOC_SED) $< >$@
+# Thanks to Automake, we must say
+# SUFFIXES += .me.in .me
+# for reason 3 above. The GNU Automake manual does not explicitly state
+# that it preserves the ordering of the suffixes, but for now it does.
+#
+# It appears to be dumb luck that this works; the rigamarole by itself
+# justifies to me the worth of GNU Make's pattern rules (which require
+# neither '.SUFFIXES' nor 'SUFFIXES') and establishing semantics for $<
+# in target rules. But I won't hold my breath waiting on other make(1)
+# implementors to agree. -- GBR
+.PRECIOUS: $(GENERATEDDOCFILES)
+SUFFIXES += .me.in .me
+.me.in.me:
+ $(GROFF_V)$(MKDIR_P) `dirname $@` \
+ && $(DOC_SED) $< >$@
+
+.me.ps:
+ $(GROFF_V)$(MKDIR_P) `dirname $@` \
+ && $(DOC_GROFF) -Tps -me $< >$@
+
+# Use '-K utf8', not '-k', in case 'configure' didn't find uchardet.
+# The French translation uses tbl; its English counterpart does not.
+doc/meintro_fr.ps: doc/meintro_fr.me preconv
+ $(GROFF_V)$(MKDIR_P) `dirname $@` \
+ && $(DOC_GROFF) -K utf8 -t -Tps -me -mfr $< >$@
+
+doc/ms.ps: $(doc_srcdir)/ms.ms eqn tbl
+ $(GROFF_V)$(MKDIR_P) `dirname $@` \
+ && $(DOC_GROFF) -et -Tps -ms $(doc_srcdir)/ms.ms >$@
+
+doc/pic.ps: $(doc_srcdir)/pic.ms eqn pic tbl
+ $(GROFF_V)$(MKDIR_P) `dirname $@` \
+ && $(DOC_GROFF) -pet -Tps -ms $(doc_srcdir)/pic.ms >$@
+
+doc/webpage.ps: $(DOC_GNU_EPS) tmac/www.tmac tbl
+doc/webpage.ps: $(doc_srcdir)/webpage.ms
+ $(GROFF_V)$(MKDIR_P) `dirname $@` \
+ && $(DOC_GROFF) -I $(doc_srcdir) -I $(doc_builddir) -t -Tps \
+ -ms -mwww $(doc_srcdir)/webpage.ms >$@
+
+# We have no "generic" ms documents.
+#.ms.ps:
+# $(GROFF_V)$(MKDIR_P) `dirname $@` \
+# && $(DOC_GROFF) -Tps -ms $< >$@
+
+doc/pic.html: eqn pic tbl
+doc/pic.html: tmac/www.tmac
+doc/pic.html: $(doc_srcdir)/pic.ms
+ $(GROFF_V)$(MKDIR_P) $(doc_builddir) \
+ && cd $(doc_builddir) \
+ && $(DOC_GROFF) -pet -P-Ipic -P-Dimg -P-jpic -Thtml -ms \
+ $(doc_srcdir)/pic.ms > pic.html
+
+doc/webpage.html: tbl
+doc/webpage.html: tmac/www.tmac
+doc/webpage.html: $(DOC_GNU_EPS)
+doc/webpage.html: $(doc_srcdir)/groff.css
+doc/webpage.html: $(doc_srcdir)/webpage.ms
+ $(GROFF_V)$(MKDIR_P) $(doc_builddir) \
+ && cd $(doc_builddir) \
+ && $(DOC_GROFF) -t -I $(doc_srcdir) -P-jwebpage -P-nrb \
+ -P-Iwebpage -P-Dimg -Thtml -ms $(doc_srcdir)/webpage.ms \
+ > webpage.html
+
+# We remove groff.css only from an out-of-source build tree.
+mostlyclean-local: mostlyclean_doc
+mostlyclean_doc:
+if USE_GROHTML
+ if test -d $(doc_builddir); then \
+ cd $(doc_builddir) \
+ && for f in $(HTMLDOCFILESALL); do \
+ $(RM) $$f; \
+ done; \
+ fi
+ if test -d $(doc_builddir)/img; then \
+ cd $(doc_builddir)/img \
+ && for f in $(HTMLDOCIMAGEFILES); do \
+ $(RM) $$f; \
+ done; \
+ rmdir $(doc_builddir)/img || :; \
+ fi
+endif
+ if test $(top_builddir) != $(top_srcdir); then \
+ $(RM) $(top_builddir)/doc/groff.css; \
+ fi
+if USE_GROHTML
+ if test -d $(doc_builddir); then \
+ cd $(doc_builddir) \
+ && for f in $(HTMLEXAMPLEFILESALL); do \
+ $(RM) $$f; \
+ done; \
+ fi
+ if test -d $(doc_builddir)/img; then \
+ cd $(doc_builddir)/img \
+ && for f in $(HTMLEXAMPLEIMAGEFILES); do \
+ $(RM) $$f; \
+ done; \
+ rmdir $(doc_builddir)/img || :; \
+ fi
+endif
+
+install-data-hook: install_doc_htmldoc
+install_doc_htmldoc:
+if USE_GROHTML
+ cd $(doc_builddir) \
+ && for f in `ls $(HTMLDOCFILESALL)`; do \
+ $(RM) $(DESTDIR)$(htmldocdir)/$$f; \
+ $(INSTALL_DATA) $$f $(DESTDIR)$(htmldocdir)/$$f; \
+ done
+ -test -d $(DESTDIR)$(htmldocdir)/$(imagedir) \
+ || $(mkinstalldirs) $(DESTDIR)$(htmldocdir)/$(imagedir)
+ $(RM) $(DESTDIR)$(htmldocdir)/$(imagedir)/$(HTMLDOCIMAGEFILES)
+ $(INSTALL_DATA) $(doc_builddir)/img/$(HTMLDOCIMAGEFILES) \
+ $(DESTDIR)$(htmldocdir)/$(imagedir)
+endif
+
+install-data-hook: install_doc_gnu_eps install_doc_examples
+
+install_doc_gnu_eps: $(DOC_GNU_EPS)
+ for d in $(doc_builddir) $(doc_srcdir); do \
+ if test -f "$$d/gnu.eps"; then \
+ $(RM) $(DESTDIR)$(exampledir)/gnu.eps; \
+ $(INSTALL_DATA) \
+ $$d/gnu.eps $(DESTDIR)$(exampledir)/gnu.eps; \
+ break; \
+ fi; \
+ done
+
+install_doc_examples: $(DOC_GNU_EPS)
+if USE_GROHTML
+ cd $(doc_builddir) \
+ && for f in `ls $(HTMLEXAMPLEFILESALL)`; do \
+ $(RM) $(DESTDIR)$(exampledir)/$$f; \
+ $(INSTALL_DATA) $$f $(DESTDIR)$(exampledir)/$$f; \
+ done
+ -test -d $(DESTDIR)$(exampledir)/$(imagedir) \
+ || $(mkinstalldirs) $(DESTDIR)$(exampledir)/$(imagedir)
+ $(RM) \
+ $(DESTDIR)$(exampledir)/$(imagedir)/$(HTMLEXAMPLEIMAGEFILES)
+ $(INSTALL_DATA) $(doc_builddir)/img/$(HTMLEXAMPLEIMAGEFILES) \
+ $(DESTDIR)$(exampledir)/$(imagedir)
+endif
+
+uninstall-hook: \
+ uninstall_doc_examples uninstall_doc_htmldoc
+uninstall_doc_examples:
+ $(RM) $(DESTDIR)$(exampledir)/gnu.eps
+if USE_GROHTML
+ -test -d $(DESTDIR)$(docexamplesdir) \
+ && cd $(DESTDIR)$(docexamplesdir) \
+ && for f in $(HTMLEXAMPLEFILESALL); do \
+ $(RM) $$f; \
+ done
+ -test -d $(DESTDIR)$(docexamplesdir)/$(imagedir) \
+ && cd $(DESTDIR)$(docexamplesdir)/$(imagedir) \
+ && for f in $(HTMLEXAMPLEIMAGEFILES); do \
+ $(RM) $$f; \
+ done
+ -rmdir $(DESTDIR)$(docexamplesdir)/$(imagedir)
+ -rmdir $(DESTDIR)$(docexamplesdir)
+endif
+
+uninstall_doc_htmldoc:
+if USE_GROHTML
+ -test -d $(DESTDIR)$(htmldocdir) \
+ && cd $(DESTDIR)$(htmldocdir) \
+ && for f in $(HTMLDOCFILESALL); do \
+ $(RM) $$f; \
+ done
+ -test -d $(DESTDIR)$(htmldocdir)/$(imagedir) \
+ && cd $(DESTDIR)$(htmldocdir)/$(imagedir) \
+ && for f in $(HTMLDOCIMAGEFILES); do \
+ $(RM) $$f; \
+ done
+ -rmdir $(DESTDIR)$(htmldocdir)/$(imagedir)
+ -rmdir $(DESTDIR)$(htmldocdir)
+endif
+
+# groff Texinfo manual
+#
+# We produce all possible formats by by default and ship them in the
+# distribution archive ('make dist') so that people don't need to have
+# 'makeinfo' or TeX available.
+#
+# The GNU info, plain text, and HTML formats require only 'makeinfo'.
+#
+# DVI and PDF require a working TeX installation. We can't use
+# Automake's facilities for PDF production because its 'dist' target
+# attempts to generate 'groff.pdf' by invoking 'texi2dvi' without the
+# '-E' option (use 'makeinfo' to expand macros), which is needed to
+# build this file. 'texi2dvi' honors the 'MAKEINFO' environment
+# variable.
+#
+# Were the foregoing not true, we would simply say this:
+#info_TEXINFOS = doc/groff.texi
+#doc_groff_TEXINFOS = doc/fdl.texi
+
+if USE_TEX
+GROFF_DVI = doc/groff.dvi
+GROFF_PDF = doc/groff.pdf
+endif
+
+all: doc/groff.info doc/groff.txt doc/groff.html $(GROFF_DVI) \
+ $(GROFF_PDF)
+
+# Distribute the manual in source form as well.
+EXTRA_DIST += doc/groff.texi doc/fdl.texi
+
+EXTRA_DIST += doc/groff.info
+MAINTAINERCLEANFILES += doc/groff.info
+doc/groff.info: $(doc_srcdir)/groff.texi
+ $(AM_V_at)$(MKDIR_P) $(doc_builddir)
+ $(AM_V_GEN)LANG=C \
+ LC_ALL=C \
+ $(MAKEINFO) -o doc/groff.info --enable-encoding \
+ -I $(doc_srcdir) $(doc_srcdir)/groff.texi
+
+# Distribute the Info files.
+dist-hook: dist-info-bits
+dist-info-bits:
+ chmod u+w $(distdir)/doc
+ for d in $(doc_builddir) $(doc_srcdir); do \
+ if [ -f "$$d"/groff.info ]; then \
+ cp -f "$$d"/groff.info-* $(distdir)/doc; \
+ break; \
+ fi; \
+ done
+
+EXTRA_DIST += doc/groff.txt
+MAINTAINERCLEANFILES += doc/groff.txt
+.texi.txt:
+ $(AM_V_at)$(MKDIR_P) $(doc_builddir)
+ $(AM_V_GEN)LANG=C \
+ LC_ALL=C \
+ $(MAKEINFO) --enable-encoding -I $(doc_srcdir) --plaintext \
+ -o $@ $<
+
+# Generate HTML, both split into several files, and as a single file.
+# 'html' and its installation counterpart 'install-html' are standard
+# Automake targets.
+EXTRA_DIST += doc/groff.html doc/groff.html.node
+MAINTAINERCLEANFILES += doc/groff.html doc/groff.html.node
+.texi.html:
+ $(AM_V_at)$(MKDIR_P) $(doc_builddir)/
+ $(AM_V_GEN)LANG=C \
+ LC_ALL=C \
+ $(MAKEINFO) --html -I $(doc_srcdir) \
+ -o doc/`basename $@`.node $<
+ $(AM_V_at)LANG=C \
+ LC_ALL=C \
+ $(MAKEINFO) --html -I $(doc_srcdir) --no-split \
+ -o $@ $<
+
+EXTRA_DIST += doc/groff.dvi doc/groff.pdf
+
+# Define pattern rules to make our Texinfo manual in DVI and PDF
+# formats. 'pdf' and 'dvi' and their installation counterparts
+# 'install-pdf' and 'install-dvi' are standard Automake targets.
+.texi.dvi:
+if HAVE_TEXI2DVI
+if USE_TEX
+ $(AM_V_at)$(MKDIR_P) $(doc_builddir)
+ $(AM_V_GEN)LANG=C \
+ LC_ALL=C \
+ TEXINPUTS="$(top_srcdir)/build-aux:$(TEXINPUTS)" \
+ MAKEINFO='$(MAKEINFO) -I $(doc_srcdir)' \
+ FORCE_SOURCE_DATE=1 \
+ $(PROG_TEXI2DVI) -e --batch --build-dir=doc/`basename $@`.t2d \
+ -o $@ $<
+else
+ @echo "program 'tex' is missing; cannot generate $@" >&2; \
+ exit 1
+endif # USE_TEX
+else
+ @echo "program 'texi2dvi' is missing or too old;" \
+ "cannot generate $@" >&2; \
+ exit 1
+endif # HAVE_TEXI2DVI
+
+.texi.pdf:
+if HAVE_TEXI2DVI
+if USE_TEX
+ $(AM_V_at)$(MKDIR_P) $(doc_builddir)
+ $(AM_V_GEN)LANG=C \
+ LC_ALL=C \
+ TEXINPUTS="$(top_srcdir)/build-aux:$(TEXINPUTS)" \
+ MAKEINFO='$(MAKEINFO) -I $(doc_srcdir)' \
+ $(PROG_TEXI2DVI) -e --batch --pdf \
+ --build-dir=doc/`basename $@`.t2p -o $@ $<
+else
+ @echo "program 'tex' is missing; cannot generate $@" >&2; \
+ exit 1
+endif # USE_TEX
+else
+ @echo "program 'texi2dvi' is missing or too old;" \
+ "cannot generate $@" >&2; \
+ exit 1
+endif # HAVE_TEXI2DVI
+
+install-doc: install-dvi install-html install-pdf
+
+maintainer-clean-local:
+ $(RM) $(doc_builddir)/groff.info*
+ $(RM) $(doc_builddir)/groff.pdf
+ $(RM) $(doc_builddir)/groff.dvi
+ $(RM) $(doc_builddir)/groff.txt
+ $(RM) -r $(doc_builddir)/groff.html.*
+
+install-data-local: install-txt
+install-txt:
+ -test -d $(DESTDIR)$(docdir) \
+ || $(mkinstalldirs) $(DESTDIR)$(docdir)
+ cp $(top_srcdir)/doc/groff.txt $(DESTDIR)$(docdir)
+
+install-data-local: install_infodoc
+install_infodoc: doc/groff.info
+ -test -d $(DESTDIR)$(infodir) \
+ || $(mkinstalldirs) $(DESTDIR)$(infodir)
+ $(RM) $(DESTDIR)/doc/groff.info*
+ for d in $(doc_builddir) $(doc_srcdir); do \
+ if [ -f "$$d"/groff.info ]; then \
+ cp "$$d"/groff.info* $(DESTDIR)$(infodir); \
+ $(INSTALL_INFO) --info-file="$$d"/groff.info \
+ --info-dir=$(DESTDIR)$(infodir); \
+ break; \
+ fi; \
+ done
+install-pdf-local: doc/groff.pdf
+ -test -d $(DESTDIR)$(pdfdocdir) \
+ || $(mkinstalldirs) $(DESTDIR)$(pdfdocdir)
+ cp $(top_srcdir)/doc/groff.pdf $(DESTDIR)$(pdfdocdir)
+install-html-local: doc/groff.html
+ -test -d $(DESTDIR)$(htmldocdir)/groff.html.mono \
+ || $(mkinstalldirs) $(DESTDIR)$(htmldocdir)/groff.html.mono
+ cp -r $(top_srcdir)/doc/groff.html \
+ $(DESTDIR)$(htmldocdir)/groff.html.mono
+ cp -r $(top_srcdir)/doc/groff.html.node \
+ $(DESTDIR)$(htmldocdir)
+
+uninstall-local: uninstall_infodoc uninstall-pdf uninstall-html \
+ uninstall-txt
+uninstall_doc: uninstall-local
+uninstall-doc: uninstall-local
+uninstall_infodoc:
+ -$(INSTALL_INFO) --remove --info-dir=$(DESTDIR)$(infodir) \
+ $(DESTDIR)$(infodir)/groff.info
+ -for f in `ls $(DESTDIR)$(infodir)/groff.info*`; do \
+ $(RM) $$f; \
+ done
+uninstall-pdf:
+ $(RM) $(DESTDIR)$(pdfdocdir)/groff.pdf
+ -rmdir $(DESTDIR)$(pdfdocdir)
+uninstall-html:
+ $(RM) $(DESTDIR)$(htmldocdir)/groff.html.mono/*
+ $(RM) $(DESTDIR)$(htmldocdir)/groff.html.node/*
+uninstall-txt:
+ $(RM) $(DESTDIR)$(docdir)/groff.txt
+
+# An image of a gnu in enscapsulated PostScript is generated during the
+# build process if necessary. Our configure script assumes pnmdepth is
+# available if xpmtoppm is (see macro "GROFF_PROG_XPMTOPPM").
+EXTRA_DIST += $(DOC_GNU_EPS) doc/gnu.xpm
+$(DOC_GNU_EPS): doc/gnu.xpm
+ $(AM_V_GEN)if test "$(XPMTOPPM)" != found; then \
+ echo "program 'xpmtoppm' is missing; can't generate $@" >&2; \
+ exit 1; \
+ fi; \
+ if test "$(pnmtops)" != found; then \
+ echo "program 'pnmtops' is missing; can't generate $@" >&2; \
+ exit 1; \
+ fi; \
+ if ! echo "$(pnmtops_nosetpage)" | grep -q nosetpage; then \
+ echo "program 'pnmtops' can't handle -nosetpage option;" \
+ "can't generate $@" >&2; \
+ exit 1; \
+ fi; \
+ xpmtoppm $(top_srcdir)/doc/gnu.xpm | pnmdepth 15 \
+ | $(pnmtops_nosetpage) -noturn -rle >$@
+
+# Provide a copy of the image in the distribution archive to accommodate
+# systems without a tool to generate it from an X pixmap.
+dist-hook: dist-gnueps
+dist-gnueps:
+ chmod u+w $(distdir)/doc
+ for d in $(doc_builddir) $(doc_srcdir); do \
+ if [ -f "$$d"/$(DOC_GNU_EPS) ]; then \
+ cp -f "$$d"/$(DOC_GNU_EPS) $(distdir)/doc; \
+ break; \
+ fi; \
+ done
+
+
+# Local Variables:
+# fill-column: 72
+# mode: makefile-automake
+# End:
+# vim: set autoindent filetype=automake textwidth=72:
diff --git a/doc/fdl.texi b/doc/fdl.texi
new file mode 100644
index 0000000..46f6b81
--- /dev/null
+++ b/doc/fdl.texi
@@ -0,0 +1,505 @@
+@c The GNU Free Documentation License.
+@center Version 1.3, 3 November 2008
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2000-2018 Free Software Foundation, Inc.
+@uref{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The ``Document'', below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as ``you''. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, La@TeX{} input
+format, SGML or XML using a publicly available
+DTD, and standard-conforming simple HTML,
+PostScript or PDF designed for human modification. Examples
+of transparent image formats include PNG, XCF and
+JPG@. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, SGML or
+XML for which the DTD and/or processing tools are
+not generally available, and the machine-generated HTML,
+PostScript or PDF produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section Entitled ``Endorsements''. Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''. You must delete all
+sections Entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+@uref{http://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+@item
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+@end enumerate
+
+@page
+@heading ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+ Copyright (C) @var{year} @var{your name}.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with@dots{}Texts.''@: line with this:
+
+@smallexample
+@group
+ with the Invariant Sections being @var{list their titles}, with
+ the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+ being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
diff --git a/doc/gnu.eps b/doc/gnu.eps
new file mode 100644
index 0000000..6a836c7
--- /dev/null
+++ b/doc/gnu.eps
@@ -0,0 +1,784 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%LanguageLevel: 2
+%%Creator: pnmtops
+%%Title: noname.ps
+%%Pages: 1
+%%BoundingBox: 203 311 408 481
+%%EndComments
+%%BeginSetup
+/rlestr1 1 string def
+/readrlestring {
+ /rlestr exch def
+ currentfile rlestr1 readhexstring pop
+ 0 get
+ dup 127 le {
+ currentfile rlestr 0
+ 4 3 roll
+ 1 add getinterval
+ readhexstring pop
+ length
+ } {
+ 257 exch sub dup
+ currentfile rlestr1 readhexstring pop
+ 0 get
+ exch 0 exch 1 exch 1 sub {
+ rlestr exch 2 index put
+ } for
+ pop
+ } ifelse
+} bind def
+/readstring {
+ dup length 0 {
+ 3 copy exch
+ 1 index sub
+ getinterval
+ readrlestring
+ add
+ 2 copy le { exit } if
+ } loop
+ pop pop
+} bind def
+/rpicstr 107 string def
+/gpicstr 107 string def
+/bpicstr 107 string def
+%%EndSetup
+%%Page: 1 1
+gsave
+203.76 311.04 translate
+204.48 169.92 scale
+213 177 4
+[ 213 0 0 -177 0 177 ]
+{ rpicstr readstring }
+{ gpicstr readstring }
+{ bpicstr readstring }
+true 3
+colorimage
+97ff00f097ff00f097ff00f097ff00f097ff00f097ff00f0ecff04eddcaabddeb1ff00f0ecff04ed
+dcaabddeb1ff00f0ecff04eddcaabddeb1ff00f0eeff0ad988777478864555678adfb5ff00f0eeff
+0ad988777478864555678adfb5ff00f0eeff0ad988777478864555678adfb5ff00f0f0ff0dfdbba9
+4afcb867b544777675447cb6ff00f0f0ff0dfdbba94afcb867b544777675447cb6ff00f0f0ff0dfd
+bba94afcb867b544777675447cb6ff00f0f1ff10faab6985449d5d649543484465675558bdd3ff01
+ecdfe8ff00f0f1ff10faab6985449d5d649543484465675558bdd3ff01ecdfe8ff00f0f1ff10faab
+6985449d5d649543484465675558bdd3ff01ecdfe8ff00f0f2ff12fb9de89476454897d54a443974
+43575554339fd7ff06d978778998889ceaff00f0f2ff12fb9de89476454897d54a44397443575554
+339fd7ff06d978778998889ceaff00f0f2ff12fb9de89476454897d54a44397443575554339fd7ff
+06d978778998889ceaff00f0f3ff14fc9cfff834455554669b487434a5444755555346cfdaff0afc
+869cfdcfa9fedaa988dfecff00f0f3ff14fc9cfff834455554669b487434a5444755555346cfdaff
+0afc869cfdcfa9fedaa988dfecff00f0f3ff14fc9cfff834455554669b487434a5444755555346cf
+daff0afc869cfdcfa9fedaa988dfecff00f0f3ff159bffd5ae84534554454c74b444474444944566
+5549effdff00fee2ff0ce8977adb8874764564444aee99ecff00f0f3ff159bffd5ae84534554454c
+74b4444744449445665549effdff00fee2ff0ce8977adb8874764564444aee99ecff00f0f3ff159b
+ffd5ae84534554454c74b4444744449445665549effdff00fee2ff0ce8977adb8874764564444aee
+99ecff00f0f5ff18fee8defd9975ca4535454445c47844455444554456444558bffeff0176afe4ff
+05e8448baa5665fe44054535797efc8bedff00f0f5ff18fee8defd9975ca4535454445c478444554
+44554456444558bffeff0176afe4ff05e8448baa5665fe44054535797efc8bedff00f0f5ff18fee8
+defd9975ca4535454445c47844455444554456444558bffeff0176afe4ff05e8448baa5665fe4405
+4535797efc8bedff00f0f5ff07e7cef97cd76758a4fe540356754b44fe540b46455463855caaacdd
+a7bdafedff01fdbefbff07fd77a86754454445fe4405896446effc9eeeff00f0f5ff07e7cef97cd7
+6758a4fe540356754b44fe540b46455463855caaacdda7bdafedff01fdbefbff07fd77a867544544
+45fe4405896446effc9eeeff00f0f5ff07e7cef97cd76758a4fe540356754b44fe540b4645546385
+5caaacdda7bdafedff01fdbefbff07fd77a86754454445fe4405896446effc9eeeff00f0f6ff11fe
+8e758a849ec65488444467c86467945646fe440954555757efca78bffaefedff02d675affeff13fe
+ed976666844443444343444455677898affbaeefff00f0f6ff11fe8e758a849ec65488444467c864
+67945646fe440954555757efca78bffaefedff02d675affeff13feed976666844443444343444455
+677898affbaeefff00f0f6ff11fe8e758a849ec65488444467c86467945646fe440954555757efca
+78bffaefedff02d675affeff13feed976666844443444343444455677898affbaeefff00f0f6ff1d
+c79889555655afc64664457efd75b594485445455445494674eefddeefdaecff039efb6466fd4412
+466558444334563454434555434459cfffe9eff0ff00f0f6ff1dc79889555655afc64664457efd75
+b594485445455445494674eefddeefdaecff039efb6466fd44124665584443345634544345554344
+59cfffe9eff0ff00f0f6ff1dc79889555655afc64664457efd75b594485445455445494674eefdde
+efdaecff039efb6466fd4412466558444334563454434555434459cfffe9eff0ff00f0f7ff1ef9ac
+796686455447eea64589dffffffddc669557656856684494cecba66c8eecff1aa8fefecb985677b6
+5554844434345346433456457899998effffadf0ff00f0f7ff1ef9ac796686455447eea64589dfff
+fffddc669557656856684494cecba66c8eecff1aa8fefecb985677b6555484443434534643345645
+7899998effffadf0ff00f0f7ff1ef9ac796686455447eea64589dffffffddc669557656856684494
+cecba66c8eecff1aa8fefecb985677b65554844434345346433456457899998effffadf0ff00f0f7
+ff1dc7ffeffb557555465bfe77ccfffecccbba568c9dfe8aefbed8dbfeeffd99ebff1bf57deef855
+4454555556534333453453345434644454444579fffbdff1ff00f0f7ff1dc7ffeffb557555465bfe
+77ccfffecccbba568c9dfe8aefbed8dbfeeffd99ebff1bf57deef855445455555653433345345334
+5434644454444579fffbdff1ff00f0f7ff1dc7ffeffb557555465bfe77ccfffecccbba568c9dfe8a
+efbed8dbfeeffd99ebff1bf57deef8554454555556534333453453345434644454444579fffbdff1
+ff00f0f8ff1efe9ffdedffe7445465959ffbefe967abbbcdcb97778999aaacceefffeb89dfeaff10
+94679d9964454555569a65664345334443fb44034568ffbef1ff00f0f8ff1efe9ffdedffe7445465
+959ffbefe967abbbcdcb97778999aaacceefffeb89dfeaff1094679d9964454555569a6566434533
+4443fb44034568ffbef1ff00f0f8ff1efe9ffdedffe7445465959ffbefe967abbbcdcb97778999aa
+acceefffeb89dfeaff1094679d9964454555569a65664345334443fb44034568ffbef1ff00f0f8ff
+0ef9ffc5457bff944545bd78ffe97aeffbff07edddccbccccccedee8ff1bfe96434689d556686887
+75874765675444443333344455789cfffaeff2ff00f0f8ff0ef9ffc5457bff944545bd78ffe97aef
+fbff07edddccbccccccedee8ff1bfe96434689d55668688775874765675444443333344455789cff
+faeff2ff00f0f8ff0ef9ffc5457bff944545bd78ffe97aeffbff07edddccbccccccedee8ff1bfe96
+434689d55668688775874765675444443333344455789cfffaeff2ff00f0f8ff0c9ddea6544469e8
+56567efceb9dd6ff05fda754445bdefdff04c65dfe5444fb33043446effebff2ff00f0f8ff0c9dde
+a6544469e856567efceb9dd6ff05fda754445bdefdff04c65dfe5444fb33043446effebff2ff00f0
+f8ff0c9ddea6544469e856567efceb9dd6ff05fda754445bdefdff04c65dfe5444fb33043446effe
+bff2ff00f0f9ff0cf8bc7559bb853459679aa9fe9dcbff03fea68ed6fd3307344456765467dfaff2
+ff00f0f9ff0cf8bc7559bb853459679aa9fe9dcbff03fea68ed6fd3307344456765467dfaff2ff00
+f0f9ff0cf8bc7559bb853459679aa9fe9dcbff03fea68ed6fd3307344456765467dfaff2ff00f0fa
+ff0dfd74469cb646bdb63459eeffd8efc9ff0dc7cd33334444588754334457dfccf2ff00f0faff0d
+fd74469cb646bdb63459eeffd8efc9ff0dc7cd33334444588754334457dfccf2ff00f0faff0dfd74
+469cb646bdb63459eeffd8efc9ff0dc7cd33334444588754334457dfccf2ff00f0faff0cf8964444
+5885457dc436cefb8ec7ff028ab445fd3305345676654debf2ff00f0faff0cf89644445885457dc4
+36cefb8ec7ff028ab445fd3305345676654debf2ff00f0faff0cf89644445885457dc436cefb8ec7
+ff028ab445fd3305345676654debf2ff00f0faff0bc8ffeb7444455444895befb9c6ff05fb8c9543
+3334fe4403577769faf2ff00f0faff0bc8ffeb7444455444895befb9c6ff05fb8c95433334fe4403
+577769faf2ff00f0faff0bc8ffeb7444455444895befb9c6ff05fb8c95433334fe4403577769faf2
+ff00f0fbff0cfe7cbbcacdb6444455666ffb9fc5ff02b8fc43fd330444455568caf2ff00f0fbff0c
+fe7cbbcacdb6444455666ffb9fc5ff02b8fc43fd330444455568caf2ff00f0fbff0cfe7cbbcacdb6
+444455666ffb9fc5ff02b8fc43fd330444455568caf2ff00f0fbff0be7e555444569a7444558dfd8
+c4ff0cfa7fb53334433333457abbebeff3ff00f0fbff0be7e555444569a7444558dfd8c4ff0cfa7f
+b53334433333457abbebeff3ff00f0fbff0be7e555444569a7444558dfd8c4ff0cfa7fb533344333
+33457abbebeff3ff00f0fbff0b9bfc9cea7544568855da8b8eedff05edbbaaaabcefddff0197e6fe
+330634578865569dcff3ff00f0fbff0b9bfc9cea7544568855da8b8eedff05edbbaaaabcefddff01
+97e6fe330634578865569dcff3ff00f0fbff0b9bfc9cea7544568855da8b8eedff05edbbaaaabcef
+ddff0197e6fe330634578865569dcff3ff00f0fcff0cfe7ffffeefffd9445776eff7dfefff09eb86
+7789998778778adff7ff02cbcdefecff0bfaa5333433433469dfffffbff3ff00f0fcff0cfe7ffffe
+efffd9445776eff7dfefff09eb867789998778778adff7ff02cbcdefecff0bfaa5333433433469df
+ffffbff3ff00f0fcff0cfe7ffffeefffd9445776eff7dfefff09eb867789998778778adff7ff02cb
+cdefecff0bfaa5333433433469dfffffbff3ff00f0fcff0bf9dfffcbaaabceeb556cffabefff0be7
+69cedbb9988aa9abba88cffaff05fea8998889adecff0a77344555455444467cffaff3ff00f0fcff
+0bf9dfffcbaaabceeb556cffabefff0be769cedbb9988aa9abba88cffaff05fea8998889adecff0a
+77344555455444467cffaff3ff00f0fcff0bf9dfffcbaaabceeb556cffabefff0be769cedbb9988a
+a9abba88cffaff05fea8998889adecff0a77344555455444467cffaff3ff00f0fcff0be8ff944433
+44446afb9efc8ff0ff0dfc69a899abdefeecba8668aa78cffcff07fb9aba988abdfcbdedff0ac874
+55544433344458ffbff3ff00f0fcff0be8ff94443344446afb9efc8ff0ff0dfc69a899abdefeecba
+8668aa78cffcff07fb9aba988abdfcbdedff0ac87455544433344458ffbff3ff00f0fcff0be8ff94
+443344446afb9efc8ff0ff0dfc69a899abdefeecba8668aa78cffcff07fb9aba988abdfcbdedff0a
+c87455544433344458ffbff3ff00f0fcff0a9dc856789a987544dfffe7f0ff03fd747adffaff04ec
+877667dffeff09e978879bcedba98aecbfeeff02f7da53fe3304344456efbff3ff00f0fcff0a9dc8
+56789a987544dfffe7f0ff03fd747adffaff04ec877667dffeff09e978879bcedba98aecbfeeff02
+f7da53fe3304344456efbff3ff00f0fcff0a9dc856789a987544dfffe7f0ff03fd747adffaff04ec
+877667dffeff09e978879bcedba98aecbfeeff02f7da53fe3304344456efbff3ff00f0fcff0a8f99
+8887765567977bffadf0ff01a58efeff04fdcfefffcefeff0feb8549ffffd9968ceffb5becfffc89
+efeeff0af9c85333333443344679cef3ff00f0fcff0a8f998887765567977bffadf0ff01a58efeff
+04fdcfefffcefeff0feb8549ffffd9968ceffb5becfffc89efeeff0af9c85333333443344679cef3
+ff00f0fcff0a8f998887765567977bffadf0ff01a58efeff04fdcfefffcefeff0feb8549ffffd996
+8ceffb5becfffc89efeeff0af9c85333333443344679cef3ff00f0fdff01faadfe4406568aa86576
+df9ff1ff1dfa8efffffeffff9c885de67cffec9bfd848ddab98effffe754547ffffe89eeff0afd9f
+645aa6434696445ecef3ff00f0fdff01faadfe4406568aa86576df9ff1ff1dfa8efffffeffff9c88
+5de67cffec9bfd848ddab98effffe754547ffffe89eeff0afd9f645aa6434696445ecef3ff00f0fd
+ff01faadfe4406568aa86576df9ff1ff1dfa8efffffeffff9c885de67cffec9bfd848ddab98effff
+e754547ffffe89eeff0afd9f645aa6434696445ecef3ff00f0fdff0bf666544565654458dec9bf9f
+f1ff009bfeff1af9c8d99aa9485967ee6766cf9c65be88befdca8d4447349aeffd8ceeff097d4433
+47984348684eddf3ff00f0fdff0bf666544565654458dec9bf9ff1ff009bfeff1af9c8d99aa94859
+67ee6766cf9c65be88befdca8d4447349aeffd8ceeff097d443347984348684eddf3ff00f0fdff0b
+f666544565654458dec9bf9ff1ff009bfeff1af9c8d99aa9485967ee6766cf9c65be88befdca8d44
+47349aeffd8ceeff097d443347984348684eddf3ff00f0fdff0bb888aaa8877655554ceffdbff2ff
+20e8cfffffc9b9aaab69b74b69586865565ba6d786b7559c5d644945a3465da9ea8eefff09786443
+3434685345bfbcf3ff00f0fdff0bb888aaa8877655554ceffdbff2ff20e8cfffffc9b9aaab69b74b
+69586865565ba6d786b7559c5d644945a3465da9ea8eefff097864433434685345bfbcf3ff00f0fd
+ff0bb888aaa8877655554ceffdbff2ff20e8cfffffc9b9aaab69b74b69586865565ba6d786b7559c
+5d644945a3465da9ea8eefff097864433434685345bfbcf3ff00f0fdff0b6efddb9865554445569f
+faeff2ff008efeff17887b8a8c57c668874758754764655a869e644566d548a394fe33025bd7dff0
+ff099a44333344447944bfbaf3ff00f0fdff0b6efddb9865554445569ffaeff2ff008efeff17887b
+8a8c57c668874758754764655a869e644566d548a394fe33025bd7dff0ff099a44333344447944bf
+baf3ff00f0fdff0b6efddb9865554445569ffaeff2ff008efeff17887b8a8c57c668874758754764
+655a869e644566d548a394fe33025bd7dff0ff099a44333344447944bfbaf3ff00f0feff0bfe7ffc
+544444555556666df8f2ff22f8cfbea86ea55d697e56d575a546458546554355a64ba454439b34c4
+54334333345a7bf0ff099d544555433445b65dbaf3ff00f0feff0bfe7ffc544444555556666df8f2
+ff22f8cfbea86ea55d697e56d575a546458546554355a64ba454439b34c454334333345a7bf0ff09
+9d544555433445b65dbaf3ff00f0feff0bfe7ffc544444555556666df8f2ff22f8cfbea86ea55d69
+7e56d575a546458546554355a64ba454439b34c454334333345a7bf0ff099d544555433445b65dba
+f3ff00f0feff02fbae95fc44034547eee9f2ff239cdd9bc65bd55d677f56e574c454459645544345
+6855d555654d7386453344533334b99ff1ff09ab4444345543454885a9f3ff00f0feff02fbae95fc
+44034547eee9f2ff239cdd9bc65bd55d677f56e574c4544596455443456855d555654d7386453344
+533334b99ff1ff09ab4444345543454885a9f3ff00f0feff02fbae95fc44034547eee9f2ff239cdd
+9bc65bd55d677f56e574c4544596455443456855d555654d7386453344533334b99ff1ff09ab4444
+345543454885a9f3ff00f0feff0bf8d9444578b9bcba75356e9cf3ff24f9aff768f549e55a857f55
+d463b4444595476454455655ab584844a3784643637443335bb8f1ff09baa443444345544448e9f3
+ff00f0feff0bf8d9444578b9bcba75356e9cf3ff24f9aff768f549e55a857f55d463b44445954764
+54455655ab584844a3784643637443335bb8f1ff09baa443444345544448e9f3ff00f0feff0bf8d9
+444578b9bcba75356e9cf3ff24f9aff768f549e55a857f55d463b4444595476454455655ab584844
+a3784643637443335bb8f1ff09baa443444345544448e9f3ff00f0feff0bf7fb59bba8754444458d
+ef8ff3ff25bce9fa56f648f659956f55d474944444a65784563455945b6594b4546c354363854333
+349b9ff2ff09aba433345533344346e9f3ff00f0feff0bf7fb59bba8754444458def8ff3ff25bce9
+fa56f648f659956f55d474944444a65784563455945b6594b4546c354363854333349b9ff2ff09ab
+a433345533344346e9f3ff00f0feff0bf7fb59bba8754444458def8ff3ff25bce9fa56f648f65995
+6f55d474944444a65784563455945b6594b4546c354363854333349b9ff2ff09aba4333455333443
+46e9f3ff00f0feff0bf7ffb854346788787569ce9ff4ff21fe8ff77655f645f756a46e55a4747445
+44b566a4754554a446846479864a45435375fe4301499cf2ff098d7643333568634446daf3ff00f0
+feff0bf7ffb854346788787569ce9ff4ff21fe8ff77655f645f756a46e55a474744544b566a47545
+54a446846479864a45435375fe4301499cf2ff098d7643333568634446daf3ff00f0feff0bf7ffb8
+54346788787569ce9ff4ff21fe8ff77655f645f756a46e55a474744544b566a4754554a446846479
+864a45435375fe4301499cf2ff098d7643333568634446daf3ff00f0feff0bf8ff84589876555676
+6acd9ff4ff21e7ee99b445e754e945945f54c584654544b577c46454548566458a5d5c3864446545
+fe43024486eff3ff0a7f8ac7333334774446faeff4ff00f0feff0bf8ff845898765556766acd9ff4
+ff21e7ee99b445e754e945945f54c584654544b577c46454548566458a5d5c3864446545fe430244
+86eff3ff0a7f8ac7333334774446faeff4ff00f0feff0bf8ff845898765556766acd9ff4ff21e7ee
+99b445e754e945945f54c584654544b577c46454548566458a5d5c3864446545fe43024486eff3ff
+0a7f8ac7333334774446faeff4ff00f0feff0bf8fe576544455666567ace9ff4ff278dbb6a9544d8
+54da45a46f64d584554644c576c4858554655788fe8b84478445464444534344467df4ff0bfe8e55
+44333334557554cbdff4ff00f0feff0bf8fe576544455666567ace9ff4ff278dbb6a9544d854da45
+a46f64d584554644c576c4858554655788fe8b84478445464444534344467df4ff0bfe8e55443333
+34557554cbdff4ff00f0feff0bf8fe576544455666567ace9ff4ff278dbb6a9544d854da45a46f64
+d584554644c576c4858554655788fe8b84478445464444534344467df4ff0bfe8e55443333345575
+54cbdff4ff00f0feff0bfafc57555666655654448d8ff5ff29f8cff6489735c854bc55c56e54d584
+454844c578d485a6755433a47cf96445b4454735446444344456dff5ff02faae57fd3304355854eb
+dff4ff00f0feff0bfafc57555666655654448d8ff5ff29f8cff6489735c854bc55c56e54d5844548
+44c578d485a6755433a47cf96445b4454735446444344456dff5ff02faae57fd3304355854ebdff4
+ff00f0feff0bfafc57555666655654448d8ff5ff29f8cff6489735c854bc55c56e54d584454844c5
+78d485a6755433a47cf96445b4454735446444344456dff5ff02faae57fd3304355854ebdff4ff00
+f0feff0bfdf9a44578adb985445bff8ff5ff299afff6488a34c954ad54d66e44d494444655b679d4
+a5c59666c9c445bfb343b54555364465443444456ef5ff03f8efd543fd330355a4cbeff4ff00f0fe
+ff0bfdf9a44578adb985445bff8ff5ff299afff6488a34c954ad54d66e44d494444655b679d4a5c5
+9666c9c445bfb343b54555364465443444456ef5ff03f8efd543fd330355a4cbeff4ff00f0feff0b
+fdf9a44578adb985445bff8ff5ff299afff6488a34c954ad54d66e44d494444655b679d4a5c59666
+c9c445bfb343b54555364465443444456ef5ff03f8efd543fd330355a4cbeff4ff00f0fdff0af67b
+dfea6546988655cf8ff6ff2afaadff55487c34c9549d44c76c44b4a5445546975bc4a5d4a55dfdc3
+334543437735553444564434443446f5ff04f7ffa43453fe3303347cebeff4ff00f0fdff0af67bdf
+ea6546988655cf8ff6ff2afaadff55487c34c9549d44c76c44b4a5445546975bc4a5d4a55dfdc333
+4543437735553444564434443446f5ff04f7ffa43453fe3303347cebeff4ff00f0fdff0af67bdfea
+6546988655cf8ff6ff2afaadff55487c34c9549d44c76c44b4a5445546975bc4a5d4a55dfdc33345
+43437735553444564434443446f5ff04f7ffa43453fe3303347cebeff4ff00f0feff0bfcf9fb8545
+6875543345cf8ff6ff2ba8fb9d44486e34a7549c45d66a4594a4444446685ca47694844ae5e53465
+554368345434445545454433446ef6ff0bf7fd533346334333345dfbeff4ff00f0feff0bfcf9fb85
+456875543345cf8ff6ff2ba8fb9d44486e34a7549c45d66a4594a4444446685ca47694844ae5e534
+65554368345434445545454433446ef6ff0bf7fd533346334333345dfbeff4ff00f0feff0bfcf9fb
+85456875543345cf8ff6ff2ba8fb9d44486e34a7549c45d66a4594a4444446685ca47694844ae5e5
+3465554368345434445545454433446ef6ff0bf7fd533346334333345dfbeff4ff00f0feff0bfbfe
+a558754444697657ff8ff7ff2dfa9ffe5e44466f45a7558b45e5763694b44544574d6c9576556347
+e4db747ca544683444344554454454353446eff7ff0ad6543433346434433489fbf3ff00f0feff0b
+fbfea558754444697657ff8ff7ff2dfa9ffe5e44466f45a7558b45e5763694b44544574d6c957655
+6347e4db747ca544683444344554454454353446eff7ff0ad6543433346434433489fbf3ff00f0fe
+ff0bfbfea558754444697657ff8ff7ff2dfa9ffe5e44466f45a7558b45e5763694b44544574d6c95
+76556347e4db747ca544683444344554454454353446eff7ff0ad6543433346434433489fbf3ff00
+f0feff0bfaee887544459b85448cfd9cf7ff2d9affff5b54565e5486547847d4644866844535457a
+4959fe9a6544d5affb4486866834443444644544643744468ef7ff0a958b433333364334347ffaf3
+ff00f0feff0bfaee887544459b85448cfd9cf7ff2d9affff5b54565e5486547847d4644866844535
+457a4959fe9a6544d5affb4486866834443444644544643744468ef7ff0a958b433333364334347f
+faf3ff00f0feff0bfaee887544459b85448cfd9cf7ff2d9affff5b54565e5486547847d464486684
+4535457a4959fe9a6544d5affb4486866834443444644544643744468ef7ff0a958b433333364334
+347ffaf3ff00f0feff0bfadc985459da534784578ad8f8ff2ff8bffbbf7844566f54855455488444
+464853543646696fedcdc84a46555effa543545b444443447446445547645ad7acf8ff0274d543fe
+3304543343affbf3ff00f0feff0bfadc985459da534784578ad8f8ff2ff8bffbbf7844566f548554
+55488444464853543646696fedcdc84a46555effa543545b444443447446445547645ad7acf8ff02
+74d543fe3304543343affbf3ff00f0feff0bfadc985459da534784578ad8f8ff2ff8bffbbf784456
+6f54855455488444464853543646696fedcdc84a46555effa543545b444443447446445547645ad7
+acf8ff0274d543fe3304543343affbf3ff00f0feff0bfb9ba56ce9534775444598f7f9ff30fe7cff
+fc5f9654556f655455445846a7577a556577bf777855547a7b683836acee63455c54454444645743
+65448457ed9af9ff02fb8663fd33043433436ffaf3ff00f0feff0bfb9ba56ce9534775444598f7f9
+ff30fe7cfffc5f9654556f655455445846a7577a556577bf777855547a7b683836acee63455c5445
+444464574365448457ed9af9ff02fb8663fd33043433436ffaf3ff00f0feff0bfb9ba56ce9534775
+444598f7f9ff30fe7cfffc5f9654556f655455445846a7577a556577bf777855547a7b683836acee
+63455c5445444464574365448457ed9af9ff02fb8663fd33043433436ffaf3ff00f0feff0cfe8eda
+e9444454465445bdeabffaff31e7dffece5eb555466f555474afd99d84aaa954578887445aedc4bf
+8a7a76633455335b7b8487446447a944644454448ff99ffaff0be7e834334334333343343afbf3ff
+00f0feff0cfe8edae9444454465445bdeabffaff31e7dffece5eb555466f555474afd99d84aaa954
+578887445aedc4bf8a7a76633455335b7b8487446447a944644454448ff99ffaff0be7e834334334
+333343343afbf3ff00f0feff0cfe8edae9444454465445bdeabffaff31e7dffece5eb555466f5554
+74afd99d84aaa954578887445aedc4bf8a7a76633455335b7b8487446447a944644454448ff99ffa
+ff0be7e834334334333343343afbf3ff00f0fdff0b7eec56b6434654445566ce9ffbff32fe7dffff
+7c7ba5565566487884963466556778887666789beffff65d9358c585455954ad8c73445534556644
+444334544cfe69faff0b7bd44334333343333334dfbef3ff00f0fdff0b7eec56b6434654445566ce
+9ffbff32fe7dffff7c7ba5565566487884963466556778887666789beffff65d9358c585455954ad
+8c73445534556644444334544cfe69faff0b7bd44334333343333334dfbef3ff00f0fdff0b7eec56
+b6434654445566ce9ffbff32fe7dffff7c7ba5565566487884963466556778887666789beffff65d
+9358c585455954ad8c73445534556644444334544cfe69faff0b7bd44334333343333334dfbef3ff
+00f0fdff0b7c94774445544454445bef8cfbff0ee8dfffffa887b46644886ec7458aeffaff00eefe
+ff19fe48ec535948437958f9566ab87dbefecaa967675574578de69ffcff02f87b63fa330234ef9f
+f3ff00f0fdff0b7c94774445544454445bef8cfbff0ee8dfffffa887b46644886ec7458aeffaff00
+eefeff19fe48ec535948437958f9566ab87dbefecaa967675574578de69ffcff02f87b63fa330234
+ef9ff3ff00f0fdff0b7c94774445544454445bef8cfbff0ee8dfffffa887b46644886ec7458aeffa
+ff00eefeff19fe48ec535948437958f9566ab87dbefecaa967675574578de69ffcff02f87b63fa33
+0234ef9ff3ff00f0fdff02a97bb6fe4406585446449ff8bffdff0dfe7effffaec7b6c46545bd7579
+cff3ff0dc57dc6335364543a58efffffb79ffeff11fdcb86557455cf97cffddeffea5564943334fe
+330434334afdaff3ff00f0fdff02a97bb6fe4406585446449ff8bffdff0dfe7effffaec7b6c46545
+bd7579cff3ff0dc57dc6335364543a58efffffb79ffeff11fdcb86557455cf97cffddeffea556494
+3334fe330434334afdaff3ff00f0fdff02a97bb6fe4406585446449ff8bffdff0dfe7effffaec7b6
+c46545bd7579cff3ff0dc57dc6335364543a58efffffb79ffeff11fdcb86557455cf97cffddeffea
+5564943334fe330434334afdaff3ff00f0fdff0cc9ec64444448754475345fff89fdff0bc8efffea
+6bc6b484959866aef1ff08fe745885443334549ffdff01b6effdff10fdb685554bfc654456b847e7
+e633433343fe3303436ff9eff3ff00f0fdff0cc9ec64444448754475345fff89fdff0bc8efffea6b
+c6b484959866aef1ff08fe745885443334549ffdff01b6effdff10fdb685554bfc654456b847e7e6
+33433343fe3303436ff9eff3ff00f0fdff0cc9ec64444448754475345fff89fdff0bc8efffea6bc6
+b484959866aef1ff08fe745885443334549ffdff01b6effdff10fdb685554bfc654456b847e7e633
+433343fe3303436ff9eff3ff00f0fdff1be7a644654595644853464cfff88dffffd99fffffc969e5
+9595746aeff8ff00eff9ff0dea454589333684dffffdeffffc6ffbff0ea555635cfec8668aeff764
+54233334fd33014bf9f2ff00f0fdff1be7a644654595644853464cfff88dffffd99fffffc969e595
+95746aeff8ff00eff9ff0dea454589333684dffffdeffffc6ffbff0ea555635cfec8668aeff76454
+233334fd33014bf9f2ff00f0fdff1be7a644654595644853464cfff88dffffd99fffffc969e59595
+746aeff8ff00eff9ff0dea454589333684dffffdeffffc6ffbff0ea555635cfec8668aeff7645423
+3334fd33014bf9f2ff00f0fdff10f7d6585468574476447445efffb988889dfeff058957e564459e
+f9ff03fea9568ff9ff0dfeedb845339d75bfffc57fffffb7fbff0cfee644338ebdfb99eac5333553
+fc33023467ccf2ff00f0fdff10f7d6585468574476447445efffb988889dfeff058957e564459ef9
+ff03fea9568ff9ff0dfeedb845339d75bfffc57fffffb7fbff0cfee644338ebdfb99eac5333553fc
+33023467ccf2ff00f0fdff10f7d6585468574476447445efffb988889dfeff058957e564459ef9ff
+03fea9568ff9ff0dfeedb845339d75bfffc57fffffb7fbff0cfee644338ebdfb99eac5333553fc33
+023467ccf2ff00f0fdff0cfab7a54674655764477544b9cffdff07fdecda5d56e437dffaff05feca
+aada35effbff10eeefffeedeb436e7487ff9a87efffff9affbff07cd55433444854344fe33084333
+43333334447a9ff2ff00f0fdff0cfab7a54674655764477544b9cffdff07fdecda5d56e437dffaff
+05fecaaada35effbff10eeefffeedeb436e7487ff9a87efffff9affbff07cd55433444854344fe33
+08433343333334447a9ff2ff00f0fdff0cfab7a54674655764477544b9cffdff07fdecda5d56e437
+dffaff05fecaaada35effbff10eeefffeedeb436e7487ff9a87efffff9affbff07cd554334448543
+44fe3308433343333334447a9ff2ff00f0fdff0cfc9e94664655764458473455cefdff06f99b875d
+75838ff9ff04c446655339fbff11fe7445effffef955b3346ec8646effffef6dfbff02db9443fd33
+0034f8330248fe9ff2ff00f0fdff0cfc9e94664655764458473455cefdff06f99b875d75838ff9ff
+04c446655339fbff11fe7445effffef955b3346ec8646effffef6dfbff02db9443fd330034f83302
+48fe9ff2ff00f0fdff0cfc9e94664655764458473455cefdff06f99b875d75838ff9ff04c4466553
+39fbff11fe7445effffef955b3346ec8646effffef6dfbff02db9443fd330034f8330248fe9ff2ff
+00f0fcff157f9764556664457464345577fddfffffea4a475d8434f9ff05fa444343336ffaff10d8
+44aeffefffd553338f9433afffffcfb7fbff03fbd54334fd330b4334433333343333443dfadff2ff
+00f0fcff157f9764556664457464345577fddfffffea4a475d8434f9ff05fa444343336ffaff10d8
+44aeffefffd553338f9433afffffcfb7fbff03fbd54334fd330b4334433333343333443dfadff2ff
+00f0fcff157f9764556664457464345577fddfffffea4a475d8434f9ff05fa444343336ffaff10d8
+44aeffefffd553338f9433afffffcfb7fbff03fbd54334fd330b4334433333343333443dfadff2ff
+00f0fcff158deb457866437655733543459b67ffffa947584b8357f9ff05e433344336effaff10fe
+a46cffeffc644358de6434dffffebff6fbff02fe9944f633044233343ceaf1ff00f0fcff158deb45
+7866437655733543459b67ffffa947584b8357f9ff05e433344336effaff10fea46cffeffc644358
+de6434dffffebff6fbff02fe9944f633044233343ceaf1ff00f0fcff158deb457866437655733543
+459b67ffffa947584b8357f9ff05e433344336effaff10fea46cffeffc644358de6434dffffebff6
+fbff02fe9944f633044233343ceaf1ff00f0fcff15bbfb669694455548434634554865faedb64559
+4a639ef9ff04934334338ffcff14d7558dfffaaacffffb4368adfe6338dfffffcff7effbff01c844
+fd33ff34fd330043fe33015e9ef1ff00f0fcff15bbfb669694455548434634554865faedb645594a
+639ef9ff04934334338ffcff14d7558dfffaaacffffb4368adfe6338dfffffcff7effbff01c844fd
+33ff34fd330043fe33015e9ef1ff00f0fcff15bbfb669694455548434634554865faedb645594a63
+9ef9ff04934334338ffcff14d7558dfffaaacffffb4368adfe6338dfffffcff7effbff01c844fd33
+ff34fd330043fe33015e9ef1ff00f0fcff14e9fb5d6b54465455444534544685f77e7645674545f9
+ff04fd4335337cfcff15b5335646fffffc8bbffea8aeffed733aabaadedff8effbff01f854fb3300
+43fc330334447bbff1ff00f0fcff14e9fb5d6b54465455444534544685f77e7645674545f9ff04fd
+4335337cfcff15b5335646fffffc8bbffea8aeffed733aabaadedff8effbff01f854fb330043fc33
+0334447bbff1ff00f0fcff14e9fb5d6b54465455444534544685f77e7645674545f9ff04fd433533
+7cfcff15b5335646fffffc8bbffea8aeffed733aabaadedff8effbff01f854fb330043fc33033444
+7bbff1ff00f0fcff14f8c5d896547544644444344555a5f75c6654664489f9ff04f6335438bffdff
+15f946aeff74efffffd58ffffefffffa94368dfc8ccff7faff01fb44f533024475a9f0ff00f0fcff
+14f8c5d896547544644444344555a5f75c6654664489f9ff04f6335438bffdff15f946aeff74efff
+ffd58ffffefffffa94368dfc8ccff7faff01fb44f533024475a9f0ff00f0fcff14f8c5d896547544
+644444344555a5f75c6654664489f9ff04f6335438bffdff15f946aeff74efffffd58ffffefffffa
+94368dfc8ccff7faff01fb44f533024475a9f0ff00f0fcff14fa6de875657456445454443654b6f5
+6a6754543bdff9ff04b4367469bffeff0afc65cfffff849fffffb69ffdff07f883357cfeebffe6fa
+ff02fd6543fe330334443334fd330253adccf0ff00f0fcff14fa6de875657456445454443654b6f5
+6a6754543bdff9ff04b4367469bffeff0afc65cfffff849fffffb69ffdff07f883357cfeebffe6fa
+ff02fd6543fe330334443334fd330253adccf0ff00f0fcff14fa6de875657456445454443654b6f5
+6a6754543bdff9ff04b4367469bffeff0afc65cfffff849fffffb69ffdff07f883357cfeebffe6fa
+ff02fd6543fe330334443334fd330253adccf0ff00f0fcff13fe8ffa75685655446463444555a5e5
+6a7845535ff9ff04fc537fdaf5fdff01a38ffeff05d44efffffaaefdff03f98334bffeff00b7faff
+03fb643343fe3302443334fe330343566e9ff0ff00f0fcff13fe8ffa75685655446463444555a5e5
+6a7845535ff9ff04fc537fdaf5fdff01a38ffeff05d44efffffaaefdff03f98334bffeff00b7faff
+03fb643343fe3302443334fe330343566e9ff0ff00f0fcff13fe8ffa75685655446463444555a5e5
+6a7845535ff9ff04fc537fdaf5fdff01a38ffeff05d44efffffaaefdff03f98334bffeff00b7faff
+03fb643343fe3302443334fe330343566e9ff0ff00f0fbff129ef75968545745544354455575b45a
+765443bff9ff04c57affffc6fdff0057fdff06f93dfffffc58effeff07fa53339efeffff8bf9ff02
+843343fe330944333334333433bf78cff0ff00f0fbff129ef75968545745544354455575b45a7654
+43bff9ff04c57affffc6fdff0057fdff06f93dfffffc58effeff07fa53339efeffff8bf9ff028433
+43fe330944333334333433bf78cff0ff00f0fbff129ef75968545745544354455575b45a765443bf
+f9ff04c57affffc6fdff0057fdff06f93dfffffc58effeff07fa53339efeffff8bf9ff02843343fe
+330944333334333433bf78cff0ff00f0fbff06cbfb5795456848fe44074555548559675434f9ff05
+fd9bafffff6afeff0cfc5dfffcb9876639fffffe54bffeff07fc533356779bff8df9ff02fc4435fe
+33ff44ff3304443646fe8aefff00f0fbff06cbfb5795456848fe44074555548559675434f9ff05fd
+9bafffff6afeff0cfc5dfffcb9876639fffffe54bffeff07fc533356779bff8df9ff02fc4435fe33
+ff44ff3304443646fe8aefff00f0fbff06cbfb5795456848fe44074555548559675434f9ff05fd9b
+afffff6afeff0cfc5dfffcb9876639fffffe54bffeff07fc533356779bff8df9ff02fc4435fe33ff
+44ff3304443646fe8aefff00f0fbff11f8fea9945895584534444956457459664437f8ff04e8efff
+fe4dfeff0cfa38fb5333433335cfffffc4bffeff01fe93fd3301597bf8ff0d743534333334443343
+535559fe8fefff00f0fbff11f8fea9945895584534444956457459664437f8ff04e8effffe4dfeff
+0cfa38fb5333433335cfffffc4bffeff01fe93fd3301597bf8ff0d743534333334443343535559fe
+8fefff00f0fbff11f8fea9945895584534444956457459664437f8ff04e8effffe4dfeff0cfa38fb
+5333433335cfffffc4bffeff01fe93fd3301597bf8ff0d743534333334443343535559fe8fefff00
+f0fbff11fbafff8678c4644434445c5645544b66644bf8ff04eefffffa6ffeff0cfd345333343338
+94bffffff6bffdff06d4354456875449f8ff01c434fe330834444543537cbfd8efefff00f0fbff11
+fbafff8678c4644434445c5645544b66644bf8ff04eefffffa6ffeff0cfd34533334333894bfffff
+f6bffdff06d4354456875449f8ff01c434fe330834444543537cbfd8efefff00f0fbff11fbafff86
+78c4644434445c5645544b66644bf8ff04eefffffa6ffeff0cfd34533334333894bffffff6bffdff
+06d4354456875449f8ff01c434fe330834444543537cbfd8efefff00f0faff058efff6c89474fe44
+076b5645555b67544ef5ff01f7affeff0cfe533334333338b97ffffffeadfdff07f6464545557744
+eff9ff0cf5333433334333453356fffb6eeeff00f0faff058efff6c89474fe44076b5645555b6754
+4ef5ff01f7affeff0cfe533334333338b97ffffffeadfdff07f6464545557744eff9ff0cf5333433
+334333453356fffb6eeeff00f0faff058efff6c89474fe44076b5645555b67544ef5ff01f7affeff
+0cfe533334333338b97ffffffeadfdff07f6464545557744eff9ff0cf5333433334333453356fffb
+6eeeff00f0faff10e8eff8ea7544734454886544555b56648ff5ff01f4effdff075335843345338a
+7dfeff0079fdff07fe469333435777cff9ff02f64445fe33064466659efa77dfeeff00f0faff10e8
+eff8ea7544734454886544555b56648ff5ff01f4effdff075335843345338a7dfeff0079fdff07fe
+469333435777cff9ff02f64445fe33064466659efa77dfeeff00f0faff10e8eff8ea754473445488
+6544555b56648ff5ff01f4effdff075335843345338a7dfeff0079fdff07fe469333435777cff9ff
+02f64445fe33064466659efa77dfeeff00f0faff10fd9dfceb6559533844a59554565a5554eff5ff
+00e6fdff08fe45bdc43344436edefeff0067fdff07fe747334334789eff9ff0bfb4446333344458e
+66b758efedff00f0faff10fd9dfceb6559533844a59554565a5554eff5ff00e6fdff08fe45bdc433
+44436edefeff0067fdff07fe747334334789eff9ff0bfb4446333344458e66b758efedff00f0faff
+10fd9dfceb6559533844a59554565a5554eff5ff00e6fdff08fe45bdc43344436edefeff0067fdff
+07fe747334334789eff9ff0bfb4446333344458e66b758efedff00f0f9ff0ef8efee669a43484585
+b4657649453cf4ff009afcff0b4cffd33333435daefffffe5dfdff01eec5fe330136bff8ff09fd69
+b643345874bd636bebff00f0f9ff0ef8efee669a43484585b4657649453cf4ff009afcff0b4cffd3
+3333435daefffffe5dfdff01eec5fe330136bff8ff09fd69b643345874bd636bebff00f0f9ff0ef8
+efee669a43484585b4657649453cf4ff009afcff0b4cffd33333435daefffffe5dfdff01eec5fe33
+0136bff8ff09fd69b643345874bd636bebff00f0f9ff0efe9fffa9b634a54768a5b55559549ff4ff
+007efcff0b88fef5333334775ffffff8affdff07feeb43333356768ff8ff07c9fb87dcfed876adea
+ff00f0f9ff0efe9fffa9b634a54768a5b55559549ff4ff007efcff0b88fef5333334775ffffff8af
+fdff07feeb43333356768ff8ff07c9fb87dcfed876adeaff00f0f9ff0efe9fffa9b634a54768a5b5
+5559549ff4ff007efcff0b88fef5333334775ffffff8affdff07feeb43333356768ff8ff07c9fb87
+dcfed876adeaff00f0f8ff0ccbffbae86594775d6684547655f3ff006ffcff07e77cdc433346a56f
+f7ff0583333377845ff8ff06f5668877778bdffcff03feffdfdffeff00fef6ff00f0f8ff0ccbffba
+e86594775d6684547655f3ff006ffcff07e77cdc433346a56ff7ff0583333377845ff8ff06f56688
+77778bdffcff03feffdfdffeff00fef6ff00f0f8ff0ccbffbae86594775d6684547655f3ff006ffc
+ff07e77cdc433346a56ff7ff0583333377845ff8ff06f5668877778bdffcff03feffdfdffeff00fe
+f6ff00f0f8ff0cfdaeefffda55b4ab586554954bf4ff01fc4efdff08feeda49fd88989b59ff7ff05
+d445569c94cff8ff03fbdedeeffcff0ddeffe58bff6e6ffffebde597bdbef9ff00f0f8ff0cfdaeef
+ffda55b4ab586554954bf4ff01fc4efdff08feeda49fd88989b59ff7ff05d445569c94cff8ff03fb
+dedeeffcff0ddeffe58bff6e6ffffebde597bdbef9ff00f0f8ff0cfdaeefffda55b4ab586554954b
+f4ff01fc4efdff08feeda49fd88989b59ff7ff05d445569c94cff8ff03fbdedeeffcff0ddeffe58b
+ff6e6ffffebde597bdbef9ff00f0f7ff0bfabdfffcbb49e6bf7654854ff4ff01f95efbff05fd67aa
+b75558f6ff05f945669859dff7ff008ffaff0fa4cff738fe579fcbfe76db549b6577affbff00f0f7
+ff0bfabdfffcbb49e6bf7654854ff4ff01f95efbff05fd67aab75558f6ff05f945669859dff7ff00
+8ffaff0fa4cff738fe579fcbfe76db549b6577affbff00f0f7ff0bfabdfffcbb49e6bf7654854ff4
+ff01f95efbff05fd67aab75558f6ff05f945669859dff7ff008ffaff0fa4cff738fe579fcbfe76db
+549b6577affbff00f0f6ff0afcacfc94aa79fd6855578ff4ff01f59efbff05eefd989abdeff5ff03
+947757daf6ff009dfaff0ffb5dff56fd45eb48dfa55d849b46b6effbff00f0f6ff0afcacfc94aa79
+fd6855578ff4ff01f59efbff05eefd989abdeff5ff03947757daf6ff009dfaff0ffb5dff56fd45eb
+48dfa55d849b46b6effbff00f0f6ff0afcacfc94aa79fd6855578ff4ff01f59efbff05eefd989abd
+eff5ff03947757daf6ff009dfaff0ffb5dff56fd45eb48dfa55d849b46b6effbff00f0f5ff09feba
+befecffcde8cd5dff4ff01e6aefaff03feefffeef4ff03f64dfffcf6ff00e8f9ff0dd6efd8ee5dd4
+36bff846d48c4c6efaff00f0f5ff09febabefecffcde8cd5dff4ff01e6aefaff03feefffeef4ff03
+f64dfffcf6ff00e8f9ff0dd6efd8ee5dd436bff846d48c4c6efaff00f0f5ff09febabefecffcde8c
+d5dff4ff01e6aefaff03feefffeef4ff03f64dfffcf6ff00e8f9ff0dd6efd8ee5dd436bff846d48c
+4c6efaff00f0f3ffffbb00cefeff00e5f3ff0198ccf8ff01efdff4ff04fd58fff97ff7ff00f8f9ff
+0efa6fffffec59358876446467558aeffbff00f0f3ffffbb00cefeff00e5f3ff0198ccf8ff01efdf
+f4ff04fd58fff97ff7ff00f8f9ff0efa6fffffec59358876446467558aeffbff00f0f3ffffbb00ce
+feff00e5f3ff0198ccf8ff01efdff4ff04fd58fff97ff7ff00f8f9ff0efa6fffffec593588764464
+67558aeffbff00f0f1ff04ecbcceff69f3ff025cfacee9ff03a4cffb58f7ff01fbcffbff0fcaa957
+766664678889bdeff9fffffebffbff00f0f1ff04ecbcceff69f3ff025cfacee9ff03a4cffb58f7ff
+01fbcffbff0fcaa957766664678889bdeff9fffffebffbff00f0f1ff04ecbcceff69f3ff025cface
+e9ff03a4cffb58f7ff01fbcffbff0fcaa957766664678889bdeff9fffffebffbff00f0efff02fdc9
+4ef4ff03fd3efbcde9ff04f77ffe46dff7ff009ffbff047bcc89bceffbff00fafeff00bffbff00f0
+efff02fdc94ef4ff03fd3efbcde9ff04f77ffe46dff7ff009ffbff047bcc89bceffbff00fafeff00
+bffbff00f0efff02fdc94ef4ff03fd3efbcde9ff04f77ffe46dff7ff009ffbff047bcc89bceffbff
+00fafeff00bffbff00f0eeff01f96ff4ff03f73cfedde9ff04fb4dffa78ef7ff00dafbff028fffcf
+f9ff04fafffffebffbff00f0eeff01f96ff4ff03f73cfedde9ff04fb4dffa78ef7ff00dafbff028f
+ffcff9ff04fafffffebffbff00f0eeff01f96ff4ff03f73cfedde9ff04fb4dffa78ef7ff00dafbff
+028fffcff9ff04fafffffebffbff00f0eeff01f4cff4ff03d54efffee8ff0498fff5d7eef8ff01f9
+effcff029ffeaffdff08eddbba9997ab79adbffbff00f0eeff01f4cff4ff03d54efffee8ff0498ff
+f5d7eef8ff01f9effcff029ffeaffdff08eddbba9997ab79adbffbff00f0eeff01f4cff4ff03d54e
+fffee8ff0498fff5d7eef8ff01f9effcff029ffeaffdff08eddbba9997ab79adbffbff00f0eeff00
+c6f3ff027956dfe7ff04e5eff78e7df8ff01fe9ffdff10fd787658a987765445785796a8dd55a9cf
+fbff00f0eeff00c6f3ff027956dfe7ff04e5eff78e7df8ff01fe9ffdff10fd787658a98776544578
+5796a8dd55a9cffbff00f0eeff00c6f3ff027956dfe7ff04e5eff78e7df8ff01fe9ffdff10fd7876
+58a987765445785796a8dd55a9cffbff00f0eeff007af4ff02fc5fb7e6ff05f56ff95fe9cff8ff00
+dbfdff0ffe9a7684bbb968d74bff78f9fedf97dffaff00f0eeff007af4ff02fc5fb7e6ff05f56ff9
+5fe9cff8ff00dbfdff0ffe9a7684bbb968d74bff78f9fedf97dffaff00f0eeff007af4ff02fc5fb7
+e6ff05f56ff95fe9cff8ff00dbfdff0ffe9a7684bbb968d74bff78f9fedf97dffaff00f0efff01fe
+4ef4ff02f78f95f1ff00edf7ff06fd5dfa4effaaeff9ff01fbdffcff0d9bd5fffe6af94aff77f9ff
+efe7dffaff00f0efff01fe4ef4ff02f78f95f1ff00edf7ff06fd5dfa4effaaeff9ff01fbdffcff0d
+9bd5fffe6af94aff77f9ffefe7dffaff00f0efff01fe4ef4ff02f78f95f1ff00edf7ff06fd5dfa4e
+ffaaeff9ff01fbdffcff0d9bd5fffe6af94aff77f9ffefe7dffaff00f0efff01fb6ff4ff03c4efb6
+8ef4ff05feeeb4aeffecf9ff0688fc4afffe89eff9ff00aefcff0d8bb5ffff6afa49ff77f9fffff7
+dffaff00f0efff01fb6ff4ff03c4efb68ef4ff05feeeb4aeffecf9ff0688fc4afffe89eff9ff00ae
+fcff0d8bb5ffff6afa49ff77f9fffff7dffaff00f0efff01fb6ff4ff03c4efb68ef4ff05feeeb4ae
+ffecf9ff0688fc4afffe89eff9ff00aefcff0d8bb5ffff6afa49ff77f9fffff7dffaff00f0efff01
+f7aff5ff05fe59ffd85eeff5ff0596678959ddddf9ff07e6bd59fffffd99aefaff01f98efdff0d6b
+c5ffff5afa48ff86f8ffeff7dffaff00f0efff01f7aff5ff05fe59ffd85eeff5ff0596678959dddd
+f9ff07e6bd59fffffd99aefaff01f98efdff0d6bc5ffff5afa48ff86f8ffeff7dffaff00f0efff01
+f7aff5ff05fe59ffd85eeff5ff0596678959ddddf9ff07e6bd59fffffd99aefaff01f98efdff0d6b
+c5ffff5afa48ff86f8ffeff7dffaff00f0efff01f4eff5ff05f77ffffc668ff2ff05c8667878888b
+fcff02fb6c59fdff02d98beffbff01e8effeff0d7ad6fffe5afb49ff75f8fffff7dffaff00f0efff
+01f4eff5ff05f77ffffc668ff2ff05c8667878888bfcff02fb6c59fdff02d98beffbff01e8effeff
+0d7ad6fffe5afb49ff75f8fffff7dffaff00f0efff01f4eff5ff05f77ffffc668ff2ff05c8667878
+888bfcff02fb6c59fdff02d98beffbff01e8effeff0d7ad6fffe5afb49ff75f8fffff7dffaff00f0
+efff00c5f4ff05a6efffff754df3ff05ecbcccddeeeffaff01685afcff03fb78adeffeff02ebaaef
+feff0d7bd6ffff4bfb4aff75f8fffff7dffaff00f0efff00c5f4ff05a6efffff754df3ff05ecbccc
+ddeeeffaff01685afcff03fb78adeffeff02ebaaeffeff0d7bd6ffff4bfb4aff75f8fffff7dffaff
+00f0efff00c5f4ff05a6efffff754df3ff05ecbcccddeeeffaff01685afcff03fb78adeffeff02eb
+aaeffeff0d7bd6ffff4bfb4aff75f8fffff7dffaff00f0efff0089f5ff01e76ffeff01fb6bf5ff06
+fd66787765458df9ff01a46cfaff05c988999989befcff0d7bc7ffff5afc59ff76f8fffff6dffaff
+00f0efff0089f5ff01e76ffeff01fb6bf5ff06fd66787765458df9ff01a46cfaff05c988999989be
+fcff0d7bc7ffff5afc59ff76f8fffff6dffaff00f0efff0089f5ff01e76ffeff01fb6bf5ff06fd66
+787765458df9ff01a46cfaff05c988999989befcff0d7bc7ffff5afc59ff76f8fffff6dffaff00f0
+efff005ef6ff02fe55dffdff00abf5ff01f5affeff03feb858effbff01d54eefff0d8bc7fffe4afc
+5aff77f8fffff6effaff00f0efff005ef6ff02fe55dffdff00abf5ff01f5affeff03feb858effbff
+01d54eefff0d8bc7fffe4afc5aff77f8fffff6effaff00f0efff005ef6ff02fe55dffdff00abf5ff
+01f5affeff03feb858effbff01d54eefff0d8bc7fffe4afc5aff77f8fffff6effaff00f0f0ff01fb
+5ff6ff01c44dfcff00eff5ff0098fbff01d74bfbff02fc4beff0ff0d7bb7fffe4afd4aff87f8ffff
+f6effaff00f0f0ff01fb5ff6ff01c44dfcff00eff5ff0098fbff01d74bfbff02fc4beff0ff0d7bb7
+fffe4afd4aff87f8fffff6effaff00f0f0ff01fb5ff6ff01c44dfcff00eff5ff0098fbff01d74bfb
+ff02fc4beff0ff0d7bb7fffe4afd4aff87f8fffff6effaff00f0f0ff01f6bff7ff02fd44cff0ff01
+fc4dfaff01b58efbff0474dfedc88af3ff0d7bb7fffe49fe4bff78f7fffff6effaff00f0f0ff01f6
+bff7ff02fd44cff0ff01fc4dfaff01b58efbff0474dfedc88af3ff0d7bb7fffe49fe4bff78f7ffff
+f6effaff00f0f0ff01f6bff7ff02fd44cff0ff01fc4dfaff01b58efbff0474dfedc88af3ff0d7bb7
+fffe49fe4bff78f7fffff6effaff00f0f0ff00b5f6ff01b55cefff04f6cfb6448efcff01a5affcff
+0596544557776df4ff0d7bb7fffe49fe4cff78f8fffff6effaff00f0f0ff00b5f6ff01b55cefff04
+f6cfb6448efcff01a5affcff0596544557776df4ff0d7bb7fffe49fe4cff78f8fffff6effaff00f0
+f0ff00b5f6ff01b55cefff04f6cfb6448efcff01a5affcff0596544557776df4ff0d7bb7fffe49fe
+4cff78f8fffff6effaff00f0f1ff01fe5cf8ff03fea658efefff05e6f8357755dffdff02fd66bffc
+ff00fefeff01d5eff5ff0d7ba8fffe49fe4cff88f7fffff6effaff00f0f1ff01fe5cf8ff03fea658
+efefff05e6f8357755dffdff02fd66bffcff00fefeff01d5eff5ff0d7ba8fffe49fe4cff88f7ffff
+f6effaff00f0f1ff01fe5cf8ff03fea658efefff05e6f8357755dffdff02fd66bffcff00fefeff01
+d5eff5ff0d7ba8fffe49fe4cff88f7fffff6effaff00f0f1ff01f59ff9ff03eb7457afeeff05a8a3
+7ffffceffcff02fa57dff9ff01fa8ff5ff0d7bb8fffd4afe4dff89f7fffff6effaff00f0f1ff01f5
+9ff9ff03eb7457afeeff05a8a37ffffceffcff02fa57dff9ff01fa8ff5ff0d7bb8fffd4afe4dff89
+f7fffff6effaff00f0f1ff01f59ff9ff03eb7457afeeff05a8a37ffffceffcff02fa57dff9ff01fa
+8ff5ff0d7bb8fffd4afe4dff89f7fffff6effaff00f0f1ff0086fbff05eca876678ccdedff027d53
+bff8ff01e75bf8ff005ff5ff0c7cb8fffd4afe4cffacf8fffff6f9ff00f0f1ff0086fbff05eca876
+678ccdedff027d53bff8ff01e75bf8ff005ff5ff0c7cb8fffd4afe4cffacf8fffff6f9ff00f0f1ff
+0086fbff05eca876678ccdedff027d53bff8ff01e75bf8ff005ff5ff0c7cb8fffd4afe4cffacf8ff
+fff6f9ff00f0f2ff01fa4efdff08fb75468beffe9db9efeeff026d84eff7ff0185aff9ff006df5ff
+0c6cb8fffc4bfb4dff8cf7fffff5f9ff00f0f2ff01fa4efdff08fb75468beffe9db9efeeff026d84
+eff7ff0185aff9ff006df5ff0c6cb8fffc4bfb4dff8cf7fffff5f9ff00f0f2ff01fa4efdff08fb75
+468beffe9db9efeeff026d84eff7ff0185aff9ff006df5ff0c6cb8fffc4bfb4dff8cf7fffff5f9ff
+00f0f2ff01a4dffeff03f95799bffeff02fa8abfeeff076dc5ffffc74579effcff00faf8ff008bf5
+ff0c6ca9fffc4bfb4cff8cf7fffff5f9ff00f0f2ff01a4dffeff03f95799bffeff02fa8abfeeff07
+6dc5ffffc74579effcff00faf8ff008bf5ff0c6ca9fffc4bfb4cff8cf7fffff5f9ff00f0f2ff01a4
+dffeff03f95799bffeff02fa8abfeeff076dc5ffffc74579effcff00faf8ff008bf5ff0c6ca9fffc
+4bfb4cff8cf7fffff5f9ff00f0f3ff01fa4cfdff0284efe9fdff02fe87bfeeff07befdffff75dca6
+5ef2ff00a9f5ff0c6da9fffc4bfb4cff8bf7fffff5f9ff00f0f3ff01fa4cfdff0284efe9fdff02fe
+87bfeeff07befdffff75dca65ef2ff00a9f5ff0c6da9fffc4bfb4cff8bf7fffff5f9ff00f0f3ff01
+fa4cfdff0284efe9fdff02fe87bfeeff07befdffff75dca65ef2ff00a9f5ff0c6da9fffc4bfb4cff
+8bf7fffff5f9ff00f0f3ff0173bffeff03fd4bff9dfcff01c4efeeff07dcfffffe43643567f2ff00
+a9f5ff0c6c99fffb4bfb4cff8cf7fffff5f9ff00f0f3ff0173bffeff03fd4bff9dfcff01c4efeeff
+07dcfffffe43643567f2ff00a9f5ff0c6c99fffb4bfb4cff8cf7fffff5f9ff00f0f3ff0173bffeff
+03fd4bff9dfcff01c4efeeff07dcfffffe43643567f2ff00a9f5ff0c6c99fffb4bfb4cff8cf7ffff
+f5f9ff00f0f4ff01f939fdff03f66fff7ffcff00f6f2ff00cefaff06fe433333569adff5ff01db7c
+f5ff0c5d99fffb4aa539ff7cf7fffff5f9ff00f0f4ff01f939fdff03f66fff7ffcff00f6f2ff00ce
+faff06fe433333569adff5ff01db7cf5ff0c5d99fffb4aa539ff7cf7fffff5f9ff00f0f4ff01f939
+fdff03f66fff7ffcff00f6f2ff00cefaff06fe433333569adff5ff01db7cf5ff0c5d99fffb4aa539
+ff7cf7fffff5f9ff00f0f4ff01f57ffdff03b4bfff7ffcff01f7bff4ff01edeffaff06fe6333333b
+546ef6ff02fe875ff5ff0c6da9fffb479dc6bf6cf7fffff5f9ff00f0f4ff01f57ffdff03b4bfff7f
+fcff01f7bff4ff01edeffaff06fe6333333b546ef6ff02fe875ff5ff0c6da9fffb479dc6bf6cf7ff
+fff5f9ff00f0f4ff01f57ffdff03b4bfff7ffcff01f7bff4ff01edeffaff06fe6333333b546ef6ff
+02fe875ff5ff0c6da9fffb479dc6bf6cf7fffff5f9ff00f0f4ff09f4effea69ec849fffe8ffcff01
+f85ff6ff02fe866df8ff05e633334d553af6ff02f7577ff5ff0c5db8fffb46ffec5e6cf7fffff5f9
+ff00f0f4ff09f4effea69ec849fffe8ffcff01f85ff6ff02fe866df8ff05e633334d553af6ff02f7
+577ff5ff0c5db8fffb46ffec5e6cf7fffff5f9ff00f0f4ff09f4effea69ec849fffe8ffcff01f85f
+f6ff02fe866df8ff05e633334d553af6ff02f7577ff5ff0c5db8fffb46ffec5e6cf7fffff5f9ff00
+f0f4ff09f77863577347dffffb9ffcff01f95bf6ff01d6aef6ff04b8aeff5b46f6ff0283447ff5ff
+0c6ec8fffb4afff9344497ffffe5f9ff00f0f4ff09f77863577347dffffb9ffcff01f95bf6ff01d6
+aef6ff04b8aeff5b46f6ff0283447ff5ff0c6ec8fffb4afff9344497ffffe5f9ff00f0f4ff09f778
+63577347dffffb9ffcff01f95bf6ff01d6aef6ff04b8aeff5b46f6ff0283447ff5ff0c6ec8fffb4a
+fff9344497ffffe5f9ff00f0f4ff09fe99abfffedffffffabffcff01f8c9f6ff005df2ff026cb3ef
+f8ff03f84334cff5ff0c5eb9fffb38ffe46745a7fffeb6f9ff00f0f4ff09fe99abfffedffffffabf
+fcff01f8c9f6ff005df2ff026cb3eff8ff03f84334cff5ff0c5eb9fffb38ffe46745a7fffeb6f9ff
+00f0f4ff09fe99abfffedffffffabffcff01f8c9f6ff005df2ff026cb3eff8ff03f84334cff5ff0c
+5eb9fffb38ffe46745a7fffeb6f9ff00f0ecff01f9dffcfffff8f2ff01baeff7ff025ce4aff9ff03
+fe743337f4ff0c5eb8fffa45ffe5ff6cf7eadda6f9ff00f0ecff01f9dffcfffff8f2ff01baeff7ff
+025ce4aff9ff03fe743337f4ff0c5eb8fffa45ffe5ff6cf7eadda6f9ff00f0ecff01f9dffcfffff8
+f2ff01baeff7ff025ce4aff9ff03fe743337f4ff0c5eb8fffa45ffe5ff6cf7eadda6f9ff00f0ecff
+01f8dffcfffff8f3ff05c5464afffffefbff03fe6ff57ffaff04feb643345ef4ff0c4eb8fff944cf
+88ff5bf7a37ba6f9ff00f0ecff01f8dffcfffff8f3ff05c5464afffffefbff03fe6ff57ffaff04fe
+b643345ef4ff0c4eb8fff944cf88ff5bf7a37ba6f9ff00f0ecff01f8dffcfffff8f3ff05c5464aff
+fffefbff03fe6ff57ffaff04feb643345ef4ff0c4eb8fff944cf88ff5bf7a37ba6f9ff00f0ecff01
+f9cffcff01f9e7f3ff05aedfe5bffdeff9ff01f99ffbff05eed7433346bff4ff0c4db9fff846df59
+ff6bf7a35ca7f9ff00f0ecff01f9cffcff01f9e7f3ff05aedfe5bffdeff9ff01f99ffbff05eed743
+3346bff4ff0c4db9fff846df59ff6bf7a35ca7f9ff00f0ecff01f9cffcff01f9e7f3ff05aedfe5bf
+fdeff9ff01f99ffbff05eed7433346bff4ff0c4db9fff846df59ff6bf7a35ca7f9ff00f0ecff01f9
+cffcff02fac8dff2ff02fc4df8f0ff04fc64333378f3ff0c4ca9fff639ee84af5bf7834b97f9ff00
+f0ecff01f9cffcff02fac8dff2ff02fc4df8f0ff04fc64333378f3ff0c4ca9fff639ee84af5bf783
+4b97f9ff00f0ecff01f9cffcff02fac8dff2ff02fc4df8f0ff04fc64333378f3ff0c4ca9fff639ee
+84af5bf7834b97f9ff00f0ecff01fabffbff01a85ef1ff0179e8f1ff05fe853333356ef3ff0c4da5
+585445759a5a5bf7c69b97f9ff00f0ecff01fabffbff01a85ef1ff0179e8f1ff05fe853333356ef3
+ff0c4da5585445759a5a5bf7c69b97f9ff00f0ecff01fabffbff01a85ef1ff0179e8f1ff05fe8533
+33356ef3ff0c4da5585445759a5a5bf7c69b97f9ff00f0ecff01fb9ffaff0097f1ff01d6aaf1ff05
+e743433346dff3ff0c4da85eedba8654444bf7edfb97f9ff00f0ecff01fb9ffaff0097f1ff01d6aa
+f1ff05e743433346dff3ff0c4da85eedba8654444bf7edfb97f9ff00f0ecff01fb9ffaff0097f1ff
+01d6aaf1ff05e743433346dff3ff0c4da85eedba8654444bf7edfb97f9ff00f0ecff01fd8ffaff01
+e6cff2ff01f96af2ff05fe743433346ef2ff0c5d8668aceffffffe5bf7effc97f9ff00f0ecff01fd
+8ffaff01e6cff2ff01f96af2ff05fe743433346ef2ff0c5d8668aceffffffe5bf7effc97f9ff00f0
+ecff01fd8ffaff01e6cff2ff01f96af2ff05fe743433346ef2ff0c5d8668aceffffffe5bf7effc97
+f9ff00f0ecff01fe7ffaff01f89ff2ff01fe58f4ff07feede744443346dff2ff0c7d746456555666
+685bf7fffd98f9ff00f0ecff01fe7ffaff01f89ff2ff01fe58f4ff07feede744443346dff2ff0c7d
+746456555666685bf7fffd98f9ff00f0ecff01fe7ffaff01f89ff2ff01fe58f4ff07feede7444433
+46dff2ff0c7d746456555666685bf7fffd98f9ff00f0ebff007ffaff01eb8ff1ff00b5f2ff05c889
+755459eff2ff0c6c8555bfffffec585bf7fffda8f9ff00f0ebff007ffaff01eb8ff1ff00b5f2ff05
+c889755459eff2ff0c6c8555bfffffec585bf7fffda8f9ff00f0ebff007ffaff01eb8ff1ff00b5f2
+ff05c889755459eff2ff0c6c8555bfffffec585bf7fffda8f9ff00f0ebff007ffaff01bd8ff1ff01
+f6cff3ff09eeffedbafd8efffeeedff7ff04fe696597fefeff05d55bf6fffea9f9ff00f0ebff007f
+faff01bd8ff1ff01f6cff3ff09eeffedbafd8efffeeedff7ff04fe696597fefeff05d55bf6fffea9
+f9ff00f0ebff007ffaff01bd8ff1ff01f6cff3ff09eeffedbafd8efffeeedff7ff04fe696597fefe
+ff05d55bf6fffea9f9ff00f0ebff007efaff01db9cf1ff01fb8feeff06fb67656764666dfaff0efd
+84434658abceeeecb64af6fffea8f9ff00f0ebff007efaff01db9cf1ff01fb8feeff06fb67656764
+666dfaff0efd84434658abceeeecb64af6fffea8f9ff00f0ebff007efaff01db9cf1ff01fb8feeff
+06fb67656764666dfaff0efd84434658abceeeecb64af6fffea8f9ff00f0ebff009bfaff01f9c8f0
+ff007eedff05ccfffebefe7afaff0ef86aa98999a8764444364af6fffea9f9ff00f0ebff009bfaff
+01f9c8f0ff007eedff05ccfffebefe7afaff0ef86aa98999a8764444364af6fffea9f9ff00f0ebff
+009bfaff01f9c8f0ff007eedff05ccfffebefe7afaff0ef86aa98999a8764444364af6fffea9f9ff
+00f0ebff00bafaff02fe95acf1ff00d8edff06fbdf97cceee6effbff0eb86544665567594666444a
+e6fffd9af9ff00f0ebff00bafaff02fe95acf1ff00d8edff06fbdf97cceee6effbff0eb865446655
+67594666444ae6fffd9af9ff00f0ebff00bafaff02fe95acf1ff00d8edff06fbdf97cceee6effbff
+0eb86544665567594666444ae6fffd9af9ff00f0ebff00d8f9ff03fbcb88eff3ff01fd8feeff06fe
+9eb4386efc7ffbff0efeb764957acb5756544649d5fffd8af9ff00f0ebff00d8f9ff03fbcb88eff3
+ff01fd8feeff06fe9eb4386efc7ffbff0efeb764957acb5756544649d5fffd8af9ff00f0ebff00d8
+f9ff03fbcb88eff3ff01fd8feeff06fe9eb4386efc7ffbff0efeb764957acb5756544649d5fffd8a
+f9ff00f0ebff00f7f9ff04fcbffd88eff3ff00c9eeff06fd7ed5439eff8af9ff0ce5f7aefe6ecdbd
+dc58d6fffc8af9ff00f0ebff00f7f9ff04fcbffd88eff3ff00c9eeff06fd7ed5439eff8af9ff0ce5
+f7aefe6ecdbddc58d6fffc8af9ff00f0ebff00f7f9ff04fcbffd88eff3ff00c9eeff06fd7ed5439e
+ff8af9ff0ce5f7aefe6ecdbddc58d6fffc8af9ff00f0ebff00f7f8ff03baacfd7cf3ff01fc9ff2ff
+0aeffebaa638e8547fffd5dffaff0ce5f6adec58deebba57e6fffb8af9ff00f0ebff00f7f8ff03ba
+acfd7cf3ff01fc9ff2ff0aeffebaa638e8547fffd5dffaff0ce5f6adec58deebba57e6fffb8af9ff
+00f0ebff00f7f8ff03baacfd7cf3ff01fc9ff2ff0aeffebaa638e8547fffd5dffaff0ce5f6adec58
+deebba57e6fffb8af9ff00f0ebff01facff8ff03eb9cf7dff3ff0186cff7ff0ec96655556798674a
+54ba555cfffc6dfbff10feb5b76554445569a738f6fffa88ccccdffcff00f0ebff01facff8ff03eb
+9cf7dff3ff0186cff7ff0ec96655556798674a54ba555cfffc6dfbff10feb5b76554445569a738f6
+fffa88ccccdffcff00f0ebff01facff8ff03eb9cf7dff3ff0186cff7ff0ec96655556798674a54ba
+555cfffc6dfbff10feb5b76554445569a738f6fffa88ccccdffcff00f0ebff01fd9ff7ff02fab86a
+f3ff1be749effecbceefffeed996543344444333334bdeb36a454779bec68efcff00b6fc440b5444
+564ae6fffd855554456dfdff00f0ebff01fd9ff7ff02fab86af3ff1be749effecbceefffeed99654
+3344444333334bdeb36a454779bec68efcff00b6fc440b5444564ae6fffd855554456dfdff00f0eb
+ff01fd9ff7ff02fab86af3ff1be749effecbceefffeed996543344444333334bdeb36a454779bec6
+8efcff00b6fc440b5444564ae6fffd855554456dfdff00f0eaff006ff7ff02fe99e7f2ff08a45553
+3469cdcdb643fa3322349ffff73435469766774688898899996444455555455555454af6ffff8645
+4444489afeff00f0eaff006ff7ff02fe99e7f2ff08a455533469cdcdb643fa3322349ffff7343546
+9766774688898899996444455555455555454af6ffff86454444489afeff00f0eaff006ff7ff02fe
+99e7f2ff08a455533469cdcdb643fa3322349ffff734354697667746888988999964444555554555
+55454af6ffff86454444489afeff00f0eaff008df7ff02f9e8f8f2ff06fc445bdcdb9754fc331034
+44334438fffffd455844678bdfdacebafeab00a8fb990f98775cf5efff78bbcbaaaab77ffffff0ea
+ff008df7ff02f9e8f8f2ff06fc445bdcdb9754fc33103444334438fffffd455844678bdfdacebafe
+ab00a8fb990f98775cf5efff78bbcbaaaab77ffffff0eaff008df7ff02f9e8f8f2ff06fc445bdcdb
+9754fc33103444334438fffffd455844678bdfdacebafeab00a8fb990f98775cf5efff78bbcbaaaa
+b77ffffff0eaff00d8f7ff02f8d9acf1ff04e534444343fd33134433456655437ffffffe466857ec
+a37be8788767fe8815778799998aaabbba5bc5efff7899866658869ffffff0eaff00d8f7ff02f8d9
+acf1ff04e534444343fd33134433456655437ffffffe466857eca37be8788767fe8815778799998a
+aabbba5bc5efff7899866658869ffffff0eaff00d8f7ff02f8d9acf1ff04e534444343fd33134433
+456655437ffffffe466857eca37be8788767fe8815778799998aaabbba5bc5efff7899866658869f
+fffff0eaff00f7f7ff02f98e8ef1ff0ffc74333334688887abcbaaefefded9affeff22488666fed3
+47c49ddcbbaabbba75a469c85cccdccb7db5cffe7cfff8bd6ff9cffffff0eaff00f7f7ff02f98e8e
+f1ff0ffc74333334688887abcbaaefefded9affeff22488666fed347c49ddcbbaabbba75a469c85c
+ccdccb7db5cffe7cfff8bd6ff9cffffff0eaff00f7f7ff02f98e8ef1ff0ffc74333334688887abcb
+aaefefded9affeff22488666fed347c49ddcbbaabbba75a469c85cccdccb7db5cffe7cfff8bd6ff9
+cffffff0eaff00f7f7ff02f78f8fefff03edcdddeff9ff01fd8ffeff0757b585dfe447c4bffcff04
+86e49efa7ffeff0d8ee5cffd7dfff8ce6ff9dffffff0eaff00f7f7ff02f78f8fefff03edcdddeff9
+ff01fd8ffeff0757b585dfe447c4bffcff0486e49efa7ffeff0d8ee5cffd7dfff8ce6ff9dffffff0
+eaff00f7f7ff02f78f8fefff03edcdddeff9ff01fd8ffeff0757b585dfe447c4bffcff0486e49efa
+7ffeff0d8ee5cffd7dfff8ce6ff9dffffff0eaff01f8dff8ff02f78cafedff00fcf8ff0cfe7fffff
+fe58c6949fe559b4dffcff04a7f48fe99ffeff0d8ff5dffe6dfff9ce6ff9dffffff0eaff01f8dff8
+ff02f78cafedff00fcf8ff0cfe7ffffffe58c6949fe559b4dffcff04a7f48fe99ffeff0d8ff5dffe
+6dfff9ce6ff9dffffff0eaff01f8dff8ff02f78cafedff00fcf8ff0cfe7ffffffe58c6949fe559b4
+dffcff04a7f48fe99ffeff0d8ff5dffe6dfff9ce6ff9dffffff0eaff01fbaff8ff02f96cafe3ff0b
+fb8ffffffe58d8955ff65cb6fbff1596e58ff88ffffffd7ee5dfff6dfff8cd7ff9effffff0eaff01
+fbaff8ff02f96cafe3ff0bfb8ffffffe58d8955ff65cb6fbff1596e58ff88ffffffd7ee5dfff6dff
+f8cd7ff9effffff0eaff01fbaff8ff02f96cafe3ff0bfb8ffffffe58d8955ff65cb6fbff1596e58f
+f88ffffffd7ee5dfff6dfff8cd7ff9effffff0e9ff007ff7ff01798fe3ff0bf6dffffffd58e7765e
+f66e97fbff1596f57ff98ffffffd7ff5efff6dfff8dd8ff8effffff0e9ff007ff7ff01798fe3ff0b
+f6dffffffd58e7765ef66e97fbff1596f57ff98ffffffd7ff5efff6dfff8dd8ff8effffff0e9ff00
+7ff7ff01798fe3ff0bf6dffffffd58e7765ef66e97fbff1596f57ff98ffffffd7ff5efff6dfff8dd
+8ff8effffff0e9ff00baf7ff01f66ce3ff00c6feff07fd69e6685be66f88fbff1196f59ff99fffff
+fe8fe6ffff5efff8ec9ff7feff00f0e9ff00baf7ff01f66ce3ff00c6feff07fd69e6685be66f88fb
+ff1196f59ff99ffffffe8fe6ffff5efff8ec9ff7feff00f0e9ff00baf7ff01f66ce3ff00c6feff07
+fd69e6685be66f88fbff1196f59ff99ffffffe8fe6ffff5efff8ec9ff7feff00f0e9ff00f7f7ff03
+fe87fffde6ff01fe7dfeff07fc5af67938d67f6afbff04a5d59ff89ffeff099fe7ffff5efff8fbaf
+f7feff00f0e9ff00f7f7ff03fe87fffde6ff01fe7dfeff07fc5af67938d67f6afbff04a5d59ff89f
+feff099fe7ffff5efff8fbaff7feff00f0e9ff00f7f7ff03fe87fffde6ff01fe7dfeff07fc5af679
+38d67f6afbff04a5d59ff89ffeff099fe7ffff5efff8fbaff7feff00f0e9ff01f9cff7ff02fbbff7
+e7ff02fd88effeff07fb5ce67935d78e5efbff0495c49ff89ffeff099fe7ffff5efff8fabff6feff
+00f0e9ff01f9cff7ff02fbbff7e7ff02fd88effeff07fb5ce67935d78e5efbff0495c49ff89ffeff
+099fe7ffff5efff8fabff6feff00f0e9ff01f9cff7ff02fbbff7e7ff02fd88effeff07fb5ce67935
+d78e5efbff0495c49ff89ffeff099fe7ffff5efff8fabff6feff00f0e9ff01fd8ff6ff01aee8eaff
+fffe02b88aeffdff07fb4ec8a944b7ad5ffbff0496c49ff7affeff099fe7ffff5ffff8f9dff7feff
+00f0e9ff01fd8ff6ff01aee8eafffffe02b88aeffdff07fb4ec8a944b7ad5ffbff0496c49ff7affe
+ff099fe7ffff5ffff8f9dff7feff00f0e9ff01fd8ff6ff01aee8eafffffe02b88aeffdff07fb4ec8
+a944b7ad5ffbff0496c49ff7affeff099fe7ffff5ffff8f9dff7feff00f0e8ff007ef6ff03fac9ff
+dff1ff07db967665555788cffbff07fb4eb8d67587c97ffbff0486d49fe7affeff099fe7ffff6fff
+f8f8efe6feff00f0e8ff007ef6ff03fac9ffdff1ff07db967665555788cffbff07fb4eb8d67587c9
+7ffbff0486d49fe7affeff099fe7ffff6ffff8f8efe6feff00f0e8ff007ef6ff03fac9ffdff1ff07
+db967665555788cffbff07fb4eb8d67587c97ffbff0486d49fe7affeff099fe7ffff6ffff8f8efe6
+feff00f0e8ff00b8f6ff03fac9ffdff2ff06b643333343334ef9ff07f95faae6a566d79ffbff1186
+d49fe6affffffe8fe8ffff6ffff8f8ffd5feff00f0e8ff00b8f6ff03fac9ffdff2ff06b643333343
+334ef9ff07f95faae6a566d79ffbff1186d49fe6affffffe8fe8ffff6ffff8f8ffd5feff00f0e8ff
+00b8f6ff03fac9ffdff2ff06b643333343334ef9ff07f95faae6a566d79ffbff1186d49fe6afffff
+fe8fe8ffff6ffff8f8ffd5feff00f0e8ff01f9bff7ff03cbb9fe8ff4ff01fe94fb33007ff9ff07f8
+6f8af7d655d5dffbff1186d4aff5affffffe7fe8ffff7ffff7f7ffb5feff00f0e8ff01f9bff7ff03
+cbb9fe8ff4ff01fe94fb33007ff9ff07f86f8af7d655d5dffbff1186d4aff5affffffe7fe8ffff7f
+fff7f7ffb5feff00f0e8ff01f9bff7ff03cbb9fe8ff4ff01fe94fb33007ff9ff07f86f8af7d655d5
+dffbff1186d4aff5affffffe7fe8ffff7ffff7f7ffb5feff00f0e7ff007ef7ff03adc9fadff4ff08
+b544333334333434dff9ff06f76f7bf97656e5faff0496e3bff4cffeff099fe8ffff7fffe8f7ffc8
+feff00f0e7ff007ef7ff03adc9fadff4ff08b544333334333434dff9ff06f76f7bf97656e5faff04
+96e3bff4cffeff099fe8ffff7fffe8f7ffc8feff00f0e7ff007ef7ff03adc9fadff4ff08b5443333
+34333434dff9ff06f76f7bf97656e5faff0496e3bff4cffeff099fe8ffff7fffe8f7ffc8feff00f0
+e7ff00d9f7ff03cae7f8fef4ff0083fc33014339f8ff06f68f6dfc5947c5faff11a5e3cff4aaa978
+998fd8fffc49ffe8f7ffcbfeff00f0e7ff00d9f7ff03cae7f8fef4ff0083fc33014339f8ff06f68f
+6dfc5947c5faff11a5e3cff4aaa978998fd8fffc49ffe8f7ffcbfeff00f0e7ff00d9f7ff03cae7f8
+fef4ff0083fc33014339f8ff06f68f6dfc5947c5faff11a5e3cff4aaa978998fd8fffc49ffe8f7ff
+cbfeff00f0e7ff01facff8ff02f7e8c7f3ff079c665655469de63af8ff1ff59f6ffe4b48c4666777
+6678776656d4cff49bbba9978fc7fffe546db8f7ffcafeff00f0e7ff01facff8ff02f7e8c7f3ff07
+9c665655469de63af8ff1ff59f6ffe4b48c46667776678776656d4cff49bbba9978fc7fffe546db8
+f7ffcafeff00f0e7ff01facff8ff02f7e8c7f3ff079c665655469de63af8ff1ff59f6ffe4b48c466
+67776678776656d4cff49bbba9978fc7fffe546db8f7ffcafeff00f0e6ff008ef8ff04fe8977fffc
+f4ff07c58e7ad9cfe864cff9ff1fe59f6ffe7769c6eeeedddeddeeffc5e4cfd4dffffffb9fd7ffff
+ac6478e8ffcafeff00f0e6ff008ef8ff04fe8977fffcf4ff07c58e7ad9cfe864cff9ff1fe59f6ffe
+7769c6eeeedddeddeeffc5e4cfd4dffffffb9fd7ffffac6478e8ffcafeff00f0e6ff008ef8ff04fe
+8977fffcf4ff07c58e7ad9cfe864cff9ff1fe59f6ffe7769c6eeeedddeddeeffc5e4cfd4dffffffb
+9fd7ffffac6478e8ffcafeff00f0e6ff01e7eff8ff0afa45dffcfffdbefdfffaeffbff07f7cd6ffc
+bffbf86ff9ff07b69e6fffd46bd49efbff11c6f3cfe4effffffccfe9fffe9ffc67d9ffbbfeff00f0
+e6ff01e7eff8ff0afa45dffcfffdbefdfffaeffbff07f7cd6ffcbffbf86ff9ff07b69e6fffd46bd4
+9efbff11c6f3cfe4effffffccfe9fffe9ffc67d9ffbbfeff00f0e6ff01e7eff8ff0afa45dffcfffd
+befdfffaeffbff07f7cd6ffcbffbf86ff9ff07b69e6fffd46bd49efbff11c6f3cfe4effffffccfe9
+fffe9ffc67d9ffbbfeff00f0e6ff01fe7cf8ff09fe74affcfcfe8cefffb6faff07fa9a8efe9ffffd
+4df9ff08b6cd7ffff55da877dffcff11b6d4dfd4effffffddff9fffe9fffa9caffadfeff00f0e6ff
+01fe7cf8ff09fe74affcfcfe8cefffb6faff07fa9a8efe9ffffd4df9ff08b6cd7ffff55da877dffc
+ff11b6d4dfd4effffffddff9fffe9fffa9caffadfeff00f0e6ff01fe7cf8ff09fe74affcfcfe8cef
+ffb6faff07fa9a8efe9ffffd4df9ff08b6cd7ffff55da877dffcff11b6d4dfd4effffffddff9fffe
+9fffa9caffadfeff00f0e5ff01f9bff9ff02fe946ffefb03cebfff5cfaff07fe8e8afe9fcdff76f9
+ff0985e99ffff85e5adc69effdff03d6435554feff0afebff8fffe8fff8aabefaffeff00f0e5ff01
+f9bff9ff02fe946ffefb03cebfff5cfaff07fe8e8afe9fcdff76f9ff0985e99ffff85e5adc69effd
+ff03d6435554feff0afebff8fffe8fff8aabefaffeff00f0e5ff01f9bff9ff02fe946ffefb03cebf
+ff5cfaff07fe8e8afe9fcdff76f9ff0985e99ffff85e5adc69effdff03d6435554feff0afebff8ff
+fe8fff8aabefaffeff00f0e4ff00a9f8ff08f94dfbfce8df9ffbaaf9ff06df8a9bbfd8ffb7f9ff09
+d565cffff86d658ee749fcff02ecbacefeff0afe8fe5fffe9fff6656896cfeff00f0e4ff00a9f8ff
+08f94dfbfce8df9ffbaaf9ff06df8a9bbfd8ffb7f9ff09d565cffff86d658ee749fcff02ecbacefe
+ff0afe8fe5fffe9fff6656896cfeff00f0e4ff00a9f8ff08f94dfbfce8df9ffbaaf9ff06df8a9bbf
+d8ffb7f9ff09d565cffff86d658ee749fcff02ecbacefeff0afe8fe5fffe9fff6656896cfeff00f0
+e4ff01fc7df9ff08fd46ebfdd9cb8ef8ccf9ff06fedf97fff7ff98f8ff09faefffe89e6e859fd75b
+f6ff0d56a8fffebfffcdfedd648dfffff0e4ff01fc7df9ff08fd46ebfdd9cb8ef8ccf9ff06fedf97
+fff7ff98f8ff09faefffe89e6e859fd75bf6ff0d56a8fffebfffcdfedd648dfffff0e4ff01fc7df9
+ff08fd46ebfdd9cb8ef8ccf9ff06fedf97fff7ff98f8ff09faefffe89e6e859fd75bf6ff0d56a8ff
+febfffcdfedd648dfffff0e3ff01e8cff9ff0797c8febc69caf8fbf7ff04a6ffe7ff6cf5ff1fc5ae
+7ffc54bfe767777665555567988899aa86455557aaaaababbbb969fffff0e3ff01e8cff9ff0797c8
+febc69caf8fbf7ff04a6ffe7ff6cf5ff1fc5ae7ffc54bfe767777665555567988899aa86455557aa
+aaababbbb969fffff0e3ff01e8cff9ff0797c8febc69caf8fbf7ff04a6ffe7ff6cf5ff1fc5ae7ffc
+54bfe767777665555567988899aa86455557aaaaababbbb969fffff0e2ff008ef9ff07f999aeae56
+e8f8fbf8ff05fd89bfbafb8ff5ff16a5ac9fffd536ce4cedeeeecb99aa9cddccbbbbaa99a98afeaa
+05a98989fffff0e2ff008ef9ff07f999aeae56e8f8fbf8ff05fd89bfbafb8ff5ff16a5ac9fffd536
+ce4cedeeeecb99aa9cddccbbbbaa99a98afeaa05a98989fffff0e2ff008ef9ff07f999aeae56e8f8
+fbf8ff05fd89bfbafb8ff5ff16a5ac9fffd536ce4cedeeeecb99aa9cddccbbbbaa99a98afeaa05a9
+8989fffff0e2ff00edf8ff0796eaaf859ba7fcdff9ff05ebfcbf7ef6eff5ff079478affffe95344e
+edff03d8fffff0e2ff00edf8ff0796eaaf859ba7fcdff9ff05ebfcbf7ef6eff5ff079478affffe95
+344eedff03d8fffff0e2ff00edf8ff0796eaaf859ba7fcdff9ff05ebfcbf7ef6eff5ff079478afff
+fe95344eedff03d8fffff0d8ff07fdbb9fd85da6bfaff8ff03e9ec8f7cf4ff02fc75bffeff03d538
+99abfecc12bbabbabaaabcdeedcb98888999a9987afffff0d8ff07fdbb9fd85da6bfaff8ff03e9ec
+8f7cf4ff02fc75bffeff03d53899abfecc12bbabbabaaabcdeedcb98888999a9987afffff0d8ff07
+fdbb9fd85da6bfaff8ff03e9ec8f7cf4ff02fc75bffeff03d53899abfecc12bbabbabaaabcdeedcb
+98888999a9987afffff0d7ff06aad9ff96e86edcf8ff039dd7e8cff3ff00fefdff10fed787666556
+677788888999987667789bfecc01cdeefeff00f0d7ff06aad9ff96e86edcf8ff039dd7e8cff3ff00
+fefdff10fed787666556677788888999987667789bfecc01cdeefeff00f0d7ff06aad9ff96e86edc
+f8ff039dd7e8cff3ff00fefdff10fed787666556677788888999987667789bfecc01cdeefeff00f0
+d8ff07fddbfd98e67e77faf9ff03f9cd7ebdd4ff00f0d8ff07fddbfd98e67e77faf9ff03f9cd7ebd
+d4ff00f0d8ff07fddbfd98e67e77faf9ff03f9cd7ebdd4ff00f0d8ff08fbaffffecd8ba9adbffbff
+04fe9bc7ebbfd4ff00f0d8ff08fbaffffecd8ba9adbffbff04fe9bc7ebbfd4ff00f0d8ff08fbafff
+fecd8ba9adbffbff04fe9bc7ebbfd4ff00f0d8ff08bcdfffffefb7e88fbefcff04edcbee7eacd3ff
+00f0d8ff08bcdfffffefb7e88fbefcff04edcbee7eacd3ff00f0d8ff08bcdfffffefb7e88fbefcff
+04edcbee7eacd3ff00f0d9ff09feb9fffffeecd7e98ffafdff09f857dfe7e9efffeca99ed7ff00f0
+d9ff09feb9fffffeecd7e98ffafdff09f857dfe7e9efffeca99ed7ff00f0d9ff09feb9fffffeecd7
+e98ffafdff09f857dfe7e9efffeca99ed7ff00f0d9ff01faf8feff05c9e8e89efe9ffeff0ae76cff
+8d8cfd98adfbb8ced8ff00f0d9ff01faf8feff05c9e8e89efe9ffeff0ae76cff8d8cfd98adfbb8ce
+d8ff00f0d9ff01faf8feff05c9e8e89efe9ffeff0ae76cff8d8cfd98adfbb8ced8ff00f0d9ff0af9
+f8ffffdbe7ca9caeff8ffeff0b8a6ff9c8ce875effeeff8bdfd9ff00f0d9ff0af9f8ffffdbe7ca9c
+aeff8ffeff0b8a6ff9c8ce875effeeff8bdfd9ff00f0d9ff0af9f8ffffdbe7ca9caeff8ffeff0b8a
+6ff9c8ce875effeeff8bdfd9ff00f0d9fffff908ffeacf9e9e7eadfbbffeff0b6a7fc99cf7c746ca
+47bfe8bfd9ff00f0d9fffff908ffeacf9e9e7eadfbbffeff0b6a7fc99cf7c746ca47bfe8bfd9ff00
+f0d9fffff908ffeacf9e9e7eadfbbffeff0b6a7fc99cf7c746ca47bfe8bfd9ff00f0d9ff09faebfd
+bfeadf8e8f9ef9fdff0b6a8f89afe77444b8498ff7bfd9ff00f0d9ff09faebfdbfeadf8e8f9ef9fd
+ff0b6a8f89afe77444b8498ff7bfd9ff00f0d9ff09faebfdbfeadf8e8f9ef9fdff0b6a8f89afe774
+44b8498ff7bfd9ff00f0d9ff09fdddfbfb9eff8b9f8fdbfdff0b5c8e68ff95433386447865afd9ff
+00f0d9ff09fdddfbfb9eff8b9f8fdbfdff0b5c8e68ff95433386447865afd9ff00f0d9ff09fdddfb
+fb9eff8b9f8fdbfdff0b5c8e68ff95433386447865afd9ff00f0d7ff17ce9effff9c8f9fbdfffffe
+ff6f7b5eff643343453543688fd9ff00f0d7ff17ce9effff9c8f9fbdfffffeff6f7b5eff64334345
+3543688fd9ff00f0d7ff17ce9effff9c8f9fbdfffffeff6f7b5eff643343453543688fd9ff00f0d7
+ff17e9efffffab6cdb9efffffdff6f8b4fff64434437443345bfd9ff00f0d7ff17e9efffffab6cdb
+9efffffdff6f8b4fff64434437443345bfd9ff00f0d7ff17e9efffffab6cdb9efffffdff6f8b4fff
+64434437443345bfd9ff00f0d7ff00dbfeff12e89afabdfffffddf8bca7bff83436434433466d8ff
+00f0d7ff00dbfeff12e89afabdfffffddf8bca7bff83436434433466d8ff00f0d7ff00dbfeff12e8
+9afabdfffffddf8bca7bff83436434433466d8ff00f0d7ff00befeff12f9b6cbeafeffffafb5fef9
+bfc359d834433598d8ff00f0d7ff00befeff12f9b6cbeafeffffafb5fef9bfc359d834433598d8ff
+00f0d7ff00befeff12f9b6cbeafeffffafb5fef9bfc359d834433598d8ff00f0d2ff119c8ffbffef
+ff8ee58fff99e548784433455ed8ff00f0d2ff119c8ffbffefff8ee58fff99e548784433455ed8ff
+00f0d2ff119c8ffbffefff8ee58fff99e548784433455ed8ff00f0d2ff01fccffdff06b9fa8afffb
+7743fe3301548ed8ff00f0d2ff01fccffdff06b9fa8afffb7743fe3301548ed8ff00f0d2ff01fccf
+fdff06b9fa8afffb7743fe3301548ed8ff00f0d2ff00fafcff0cfa68858efffc87433333356549d9
+ff00f0d2ff00fafcff0cfa68858efffc87433333356549d9ff00f0d2ff00fafcff0cfa68858efffc
+87433333356549d9ff00f0d2ff00ebfbff0cb99a769effffdca7568effe69adaff00f0d2ff00ebfb
+ff0cb99a769effffdca7568effe69adaff00f0d2ff00ebfbff0cb99a769effffdca7568effe69ada
+ff00f0d2ff00cffaff03feffc7effdff03efffb68adaff00f0d2ff00cffaff03feffc7effdff03ef
+ffb68adaff00f0d2ff00cffaff03feffc7effdff03efffb68adaff00f0c8ff01fedffcff02fe645a
+daff00f0c8ff01fedffcff02fe645adaff00f0c8ff01fedffcff02fe645adaff00f097ff00f097ff
+00f097ff00f097ff00f097ff00f097ff00f097ff00f097ff00f097ff00f0
+currentdict /inputf undef
+currentdict /picstr undef
+currentdict /rpicstr undef
+currentdict /gpicstr undef
+currentdict /bpicstr undef
+grestore
+showpage
+%%Trailer
diff --git a/doc/gnu.xpm b/doc/gnu.xpm
new file mode 100644
index 0000000..bc54934
--- /dev/null
+++ b/doc/gnu.xpm
@@ -0,0 +1,198 @@
+/* XPM */
+static char *noname[] = {
+/* width height ncolors chars_per_pixel */
+"213 177 14 1",
+/* colors */
+"` c #FFF",
+"a c #DDD",
+"b c #BBB",
+"c c #999",
+"d c #777",
+"e c #555",
+"f c #333",
+"g c #EEE",
+"h c #CCC",
+"i c #AAA",
+"j c #888",
+"k c #666",
+"l c #444",
+"m c #222",
+/* pixels */
+"`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
+"`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
+"``````````````````````````````````````````gaahiibaag`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
+"``````````````````````````````````````acjjdddldjjkleeekdjia``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
+"```````````````````````````````````abbicli`hbjkdbelldddkdelldh```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
+"`````````````````````````````````iibkcjellcaeaklcelfljllkekdeeejba````````````````````````````````````````````````````````````````````````````````````````````gha````````````````````````````````````````````````````",
+"```````````````````````````````bcagjcldkleljcdaelillfcdllfedeeelffc`````````````````````````````````````````````````````````````````````````````````````acdjddjccjjjch```````````````````````````````````````````````",
+"`````````````````````````````hch```jflleeeelkkcbljdlfliellldeeeeeflkh````````````````````````````````````````````````````````````````````````````````hjkch`ah`ic`gaiicjja````````````````````````````````````````````",
+"````````````````````````````cb``aeigjlefleellelhdlblllldllllcllekkeelcg``````````g``````````````````````````````````````````````````````````````gjcddiabjjdldkleklllliggcc```````````````````````````````````````````",
+"`````````````````````````ggjag`accdehilefelelllehldjllleellleellekllleejb```````dki```````````````````````````````````````````````````````````gjlljbiiekkelllllllefedcdg`hjb`````````````````````````````````````````",
+"````````````````````````gdhg`cdhadkdejilelelelekdelbllelelellkleelkfjeehiiihaaidbai``````````````````````````````````````````abg`````````````addijkdellelllelllllljckllkg``hcg```````````````````````````````````````",
+"```````````````````````gjgdejijlcghkeljjllllkdhjklkdcleklklllllleleeededg`hidjb``ig`````````````````````````````````````````akdei````````ggacdkkkkjllllflllflflllleekddjcji``big`````````````````````````````````````",
+"``````````````````````hdcjjceeekeei`hklkklledg`adebeclljelleleellelclkdlgg`aagg`ai``````````````````````````````````````````cg`bklkklllllllllkkeejlllfflekflellfleeelfllech```gcg````````````````````````````````````",
+"`````````````````````cihdckkjkleelldggiklejca``````aahkkceedkekjekkjllclhghbikkhjg``````````````````````````````````````````ij`g`ghbcjekddbkeeeljlllflfleflklfflekledjccccjg````ia```````````````````````````````````",
+"````````````````````hd``g``beedeeelkeb`gddhh```ghhhbbiekjhca`gjig`bgajab`gg``acc`````````````````````````````````````````````edagg`jeelleleeeeekeflfffleflefflelflklllelllledc```ba``````````````````````````````````",
+"```````````````````gc``aga``gdllelkecec``bg`gckdibbbhahbcdddjccciiihhgg```gbjca```````````````````````````````````````````````clkdcaccklleleeeekcikekklflefflllflllllllllllllekj``bg`````````````````````````````````",
+"```````````````````c``heledb``cllelebadj``gcdig`````````````gaaahhbhhhhhhgag```````````````````````````````````````````````````gcklflkjcaeekkjkjjddejdldkekdelllllfffffllleedjch```ig````````````````````````````````",
+"``````````````````caagikelllkcgjekekdg`hgbca```````````````````````````````````````````````````````````````````````````````````````aidelllebag````````hkea`gelllfffffffffffffllkg``gb````````````````````````````````",
+"`````````````````jbhdeecbbjefleckdciic`gca`````````````````````````````````````````````````````````````````````````````````````````````````````````````gikjgakffffffffflllekdkelkda`i````````````````````````````````",
+"```````````````adllkchbklkbabkflecgg``ajg`````````````````````````````````````````````````````````````````````````````````````````````````````````````````hdhaffffllllejjdelfflleda`hh```````````````````````````````",
+"```````````````jckllllejjeledahlfkhg`bjg````````````````````````````````````````````````````````````````````````````````````````````````````````````````````jiblleffffffffflekdkkelagb```````````````````````````````",
+"``````````````hj``gbdlllleellljcebg`bc```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````bjhcelffffllllllledddkc`i```````````````````````````````",
+"`````````````gdhbbhihabklllleekkk``bc`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````bj`hlfffffffffllleeekjhi```````````````````````````````",
+"````````````gdgeeelllekcidllleeja`aj```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````id`befffllfffffledibbgbg``````````````````````````````",
+"````````````cb`hchgidellekjjeeaijbjg````````````````````````````````````````gabbiiiibhg`````````````````````````````````````````````````````````````````````````cdgkfffffffledjjkeekcah``````````````````````````````",
+"```````````gd````gg```aclleddkg``da`````````````````````````````````````gbjkddjcccjddjddjia`````````````````````hbhag````````````````````````````````````````````iieffflfflfflkca`````b``````````````````````````````",
+"```````````ca```hbiiibhggbeekh``ib````````````````````````````````````gdkchgabbccjjiicibbijjh````````````````gijccjjjcia``````````````````````````````````````````ddflleeeleellllkdh``i``````````````````````````````",
+"``````````gj``clllffllllki`bcg`hj````````````````````````````````````hkcijccibag`gghbijkkjiidjh````````````bcibicjjiba`hba````````````````````````````````````````hjdleeelllffflllej``b``````````````````````````````",
+"``````````cahjekdjcicjdella```gd```````````````````````````````````adldia```````````````ghjddkkda```````gcdjjdcbhgabicjighb````````````````````````````````````````daiefffffffflllekg`b``````````````````````````````",
+"``````````j`ccjjjddkeekdcddb``ia``````````````````````````````````iejg```````ah`g```hg``````gbjelc````acckjhg``bebgh```hjcg````````````````````````````````````````chjeffffffllffllkdchg`````````````````````````````",
+"`````````iiallllllekjiijkedka`c``````````````````````````````````ijg`````g````chjjeagkdh``ghcb`ajljaaibcjg````gdeleld````gjc```````````````````````````````````````ac`kleiiklflkcklleghg`````````````````````````````",
+"`````````kkkellekekellejaghcb`c`````````````````````````````````cb```````chjacciicljeckdggkdkkh`chkebgjjbg`ahijallldflcig``ajh``````````````````````````````````````dallffldcjlfljkjlgaa`````````````````````````````",
+"````````bjjjiiijjddkeeeelhg``ab```````````````````````````````gjh`````hcbciiibkcbdlbkcejkjkeekebikadjkbdeecheakllcleiflkeaicgijg````````````````````````````````````djkllfflflkjefleb`bh`````````````````````````````",
+"````````kg`aabcjkeeellleekc``ig```````````````````````````````jg``````jjdbjijhedhkkjjdldejdeldklkeeijkcgkllekkaeljifclffffffebada```````````````````````````````````cillfffflllldcllb`bi`````````````````````````````",
+"```````gd``hellllleeeeekkkka`j```````````````````````````````jh`bgijkgieeakcdgekaedeielklejelkeelfeeiklbilellfcbflhlelfflffffleidb``````````````````````````````````caelleeelffllebkeabi`````````````````````````````",
+"```````bigcellllllllllleldgggc``````````````````````````````chaacbhkebaeeakdd`ekgedlhlelleckleellflekjeeaeeekeladfjkleffllefffflbcc`````````````````````````````````ibllllfleelfleljjeic`````````````````````````````",
+"```````jacllledjbcbhbidefekgch`````````````````````````````ci``dkj`elcgeeijed`eealkfblllleceldklelleekeeibejljllifdjlklfkfdllfffebbj````````````````````````````````biillflllfleelllljgc`````````````````````````````",
+"```````d`becbbijdelllllejag`j`````````````````````````````bhgc`iek`klj`keccek`eealdlclllllikedjlekfleeclebkeclblelkhfelfkfjelfffflcbc```````````````````````````````ibilfffleefffllflkgc`````````````````````````````",
+"```````d``bjelflkdjjdjdekchgc````````````````````````````gj``ddkee`kle`dekilkgeeildldllellbekkildeleelillkjlkldcjklilelfefdelflflflcch``````````````````````````````jadklffffekjkflllkai`````````````````````````````",
+"```````j``jlejcjdkeeekdkkihac```````````````````````````gdggccbllegdelgclecle`elhejlkelellbeddhlkleleljekklejieaehfjklllkelelflflflljkg`````````````````````````````d`jihdffffflddlllk`ig````````````````````````````",
+"```````j`gedkellleekkkekdihgc```````````````````````````jabbkicellajelaileilk`klaejleelkllhedkhljejeelkeedjj`gjbjlldjllelklllleflflllkda```````````````````````````gjgeellfffffleedeelhba````````````````````````````",
+"```````i`hedeeekkkkeekellljaj``````````````````````````jh``kljcdfehjelbheehekgelaejlleljllhedjaljeikdeelffildh`cklleblleldfellklllfllleka``````````````````````````iigedfffffffffeejelgba````````````````````````````",
+"```````a`cilledjiabcjelleb``j`````````````````````````ci```kljjiflhceliaelakkgllalcllllkeebkdcalieheckkkhchlleb`bflfbeleeefkllkellfllllekg`````````````````````````jg`aelfffffffffeeilhbg````````````````````````````",
+"`````````kdba`gikelkcjjkeeh`j````````````````````````iia``eeljdhflhcelcallhdkhllblielleelkcdebhliealieea`ahffflelflfddfeeeflllekllflllfllk`````````````````````````d``ilfleffffffffldhgbg````````````````````````````",
+"```````h`c`bjelekjdeelffleh`j```````````````````````ij`bcallljkgflidelchleakkileclillllllkkjehildkcljlligegeflkeeelfkjflelfllleelelellffllkg```````````````````````d`aeffflkfflfffflea`bg````````````````````````````",
+"```````b`gieejdellllkcdked``j``````````````````````ic``geglllkk`leideejblegedkfkclbllelledlakhcedkeekfldglabdldhiellkjflllflleellellelfefllkg`````````````````````akelflffflklfllffljc`b`````````````````````````````",
+"```````iggjjdelllecbjelljh`ach````````````````````ci````ebelekegeljkeldjldalklljkkjllefeledilcec`gcikellaei``blljkjkkjflllflllkllellklfdlllkjg````````````````````cejblffffffklfflfld``i`````````````````````````````",
+"```````iahcjelecaiefldjledjiaj```````````````````jb``bb`djllekk`eljeeleeljjllllkljefelfklkkck`gahahjlilkeeeg``ielfeleblllllflldllklleeldkleiadih``````````````````dlaelfffffffelfflfi``b`````````````````````````````",
+"```````bcbiekhgceflddelllecj`d`````````````````gdh```he`ckeleek`keeleellejlkideddieekeddb`dddjeeeldidbkjfjfkihggkfleehellellllkledlfkelljledgaci`````````````````bjkkfffffffffflfflfk``i`````````````````````````````",
+"```````gjgaigcllllellkellebagib```````````````gda``ghgegbeeelkk`eeeldli`accajliiiceledjjjdlleigahlb`jididkkffleeffebdbjljdllklldicllklllelllj``cc```````````````gdgjflfflfflfffflfflfi`b`````````````````````````````",
+"````````dgghekbklflkellleekkhgc``````````````gda````dhdbieekeekkljdjjlckflkkeekddjjjdkkkdjcbg````keacfejhejeleeceliajhdflleefleekklllllfflellh`gkc``````````````dballfflfffflffffffla`bg`````````````````````````````",
+"````````dhclddllleelllelllebg`jh````````````gja`````ijjdblkklljjkghdlejig```````````````gg```````gljghefecljlfdcej`cekkibjdabg`ghiickdkdeedledjagkc````````````jdbkfffffffffffffffflg`c``````````````````````````````",
+"````````icdbbkllllllejellkllc``jb``````````gdg````ighdbkhlkelebadedch`````````````````````````````hedahkffefklelfiejg`````bdc````````ahbjkeedleeh`cdh``aag``gieeklclffflffffffflffli`ai``````````````````````````````",
+"````````hcghklllllljdelldefle```jc````````hjg```gikbhkbljlcecjkkig`````````````````````````````````gdlejjellffflelc`````````bkg``````````abkjeeelb`hkellekbjldgdgkfflffflffffffflfk``cg``````````````````````````````",
+"````````gdikllkeleceklljeflklh```jja````acc`````hckcgececedlkig```````````````````g`````````````````gilelejcfffkjla````ag````hk`````````````ieeekfeh`ghjkkjig``dklelmfffflfffffffflb`c```````````````````````````````",
+"`````````dakejelkjedlldklldlleg```bcjjjjca``````jcedgekllecg`````````````````gicekj``````````````````ggabjleffcadeb```hed`````bd`````````````ggkllffjgba`bccgihefffeefffffffffffflkdhh```````````````````````````````",
+"`````````ibdielkdlkeedkllddellbch``````````aghaieaekglfda````````````````ghiiiaifeg`````````````ggg```ggagblfkgdljd``cijdg`````ci`````````````haeelffllljelfllfffffflffflffffffllldic````````````````````````````````",
+"`````````hcgclkklkeedkllejldfleehg`````````ccbjdeadejfj`````````````````hllkkeeffc`````````````gdlleg````g`ceebfflkghjklkg````g`ka````````````abcllfffffffffflfffffffffffffffffflj`gc````````````````````````````````",
+"``````````d`cdkleekkklledlklfleedd`aa`````gilildeajlfl`````````````````illlflfffk```````````````ajllig``g```aeefffj`clffi`````h`bd`````````````baelfflfffffffflffllfffffflffffllfa`ia````````````````````````````````",
+"``````````jagbledjkklfdkeedffelflecbkd````icldejlbjfed````````````````glfffllffkg````````````````gilkh``g``hkllfejagklfla````gb``k`````````````gccllfffffffffffffffffffffflmffflfhgi`````````````````````````````````",
+"``````````bb`bkkckclleeeljlflkfleeljke`igabkleeclikfcg````````````````cflfflffj```````````adeeja```iiih````blfkjia`gkffja`````h``dg`````````````hjllffffffffflflfffffffflfffffffegcg`````````````````````````````````",
+"``````````gc`beakbellkeleellleflellkje`ddgdklekdlele`````````````````alffeffdh``````````beffeklk`````hjbb``gijig``gadffiibiiaga``jg``````````````jelfffffffffffflffffffffffffllldbb``````````````````````````````````",
+"```````````jheajckeldellklllllflleeeie`dehkkelkklljc`````````````````kffelfjb``````````clkig``dlg`````aej````g`````iclfkja`hjhh``d```````````````bllfffffffffffffffffffffffflldeic```````````````````````````````````",
+"```````````ikagjdekedlekllelelllfkelbk`ekikdelelfba`````````````````blfkdlkcb````````hkeh`````jlc`````bkc``````````jjffedh`ggb``gk```````````````akelfffffffflllffflffffffffefiahh```````````````````````````````````",
+"```````````gj``idekjekeellklkfllleeeiegekidjleefe``````````````````hefd`ai`e````````ifj```````allg`````iig`````````cjfflb```````bd```````````````bklfflfffffffllffflfffffflfekkgc````````````````````````````````````",
+"````````````cg`deckjeledleellfelleeedebleidkellfb`````````````````hedi````hk````````ed`````````cfa`````hejg````````iefffcg`g````jb````````````````jlfflfffffffllffffflffflffb`djh````````````````````````````````````",
+"````````````hb`bedcelekjljllllllleeeeljeeckdelfl`````````````````acbi`````ki```````hea```hbcjdkkfc`````gelb````````hefffekddcb``ja`````````````````hllfeffffffllllffffllfklk`gji`````````````````````````````````````",
+"`````````````j`gicclejceejlefllllcekledleckkllfd``````````````````gjg````gla```````ifj`beffflffffeh`````hlb````````gcfffffffffecdb``````````````````dlfeflffffflllfflfefeeec`gj``````````````````````````````````````",
+"`````````````bi```jkdjhlklllflllehekleellbkkkllb``````````````````gg`````ik````````aflefffflfffjclb``````kb`````````alfellekjdellc``````````````````hlflfffffffllllelfefdhb`ajg``````````````````````````````````````",
+"``````````````jg```khjcldlllllllkbekleeeebkdellg`````````````````````````di````````gefffflfffffjbcd``````gia`````````klkleleeeddllg``````````````````effflfffflfffleffek```bkg```````````````````````````````````````",
+"``````````````gjg``jgidelldflleljjkelleeebekklj``````````````````````````lg`````````effejlffleffjida``````dc`````````glkcffflfedddh``````````````````kllleffffffllkkkecg`idda````````````````````````````````````````",
+"```````````````aca`hgbkeeceffjllieceelekeieeelg`````````````````````````gk`````````glebahlfflllfkgag``````kd`````````gdldfflffldjcg``````````````````blllkfffflllejgkkbdejg``````````````````````````````````````````",
+"`````````````````jg`ggkkcilfljlejeblkedklclefh``````````````````````````ci``````````lh``affffflfeaig`````gea````````gghefffffffkb````````````````````akcbklfflejdlbakfkb`````````````````````````````````````````````",
+"`````````````````gc```icbkflieldkjiebeeeecelc```````````````````````````dg``````````jj`g`efffffldde``````ji``````````ggblfffffekdkj```````````````````hc`bjdah`gajdkia```````````````````````````````````````````````",
+"``````````````````hb``bigjkeclddeakkjleldkee````````````````````````````k```````````gddhahlffflkiek`````````````````````jfffffddjle````````````````````ekkjjddddjba````````````g``a`a````````g```````````````````````",
+"```````````````````aigg```aieeblibejkeelcelb```````````````````````````hlg`````````ggailc`ajjcjcbec`````````````````````alleekchclh````````````````````bagagg```````````ag``gejb``kgk````gbagecdbabg`````````````````",
+"`````````````````````iba```hbblcgkb`dkeljel````````````````````````````ceg`````````````akdiibdeeej```````````````````````clekkcjeca`````````````````````j```````````````ilh``dfj`gedc`hb`gdkabelcbkeddi``````````````",
+"```````````````````````hih`hcliidc`akjeeedj````````````````````````````ecg````````````gg`acjcibag`````````````````````````clddedai``````````````````````ca```````````````bea``ek`alegblja`ieeajlcblkbkg``````````````",
+"`````````````````````````gbibg`gh``hagjhaea```````````````````````````gkig```````````````gg```gg```````````````````````````kla```h``````````````````````gj````````````````akg`ajggeaalfkb``jlkaljhlhkg```````````````",
+"````````````````````````````bbbbhg``````ge````````````````````````````cjhh``````````````````g`a````````````````````````````aej```cd``````````````````````j`````````````````ik`````ghecfejjdkllklkdeejig``````````````",
+"````````````````````````````````ghbhhg``kc````````````````````````````eh`ihg````````````````````````````````````````````````ilh``bej`````````````````````bh`````````````hiiceddkkkklkdjjjcbag``c`````gb``````````````",
+"`````````````````````````````````````ahclg```````````````````````````afg`bha`````````````````````````````````````````````````dd``glka`````````````````````c`````````````dbhhjcbhg``````````````i``````b``````````````",
+"```````````````````````````````````````ck````````````````````````````dfh`gaa`````````````````````````````````````````````````bla``idjg````````````````````ai````````````j```h``````````````````i`````gb``````````````",
+"```````````````````````````````````````lh```````````````````````````aelg```g``````````````````````````````````````````````````cj```eadgg```````````````````cg```````````c``gi`````````gaabbicccdibdciab``````````````",
+"``````````````````````````````````````hk````````````````````````````dceka`````````````````````````````````````````````````````geg``djgda```````````````````gc``````````adjdkejicjddkelledjedckijaaeeich``````````````",
+"``````````````````````````````````````di```````````````````````````he`bd```````````````````````````````````````````````````````ek``ce`gch```````````````````ab`````````gcidkjlbbbckjadlb``dj`c`ga`cda````````````````",
+"`````````````````````````````````````glg```````````````````````````dj`ce````````````````````````````````ga`````````````````````aea`ilg``iig``````````````````ba```````````cbae```gki`cli``dd`c``g`gda````````````````",
+"`````````````````````````````````````bk```````````````````````````hlg`bkjg```````````````````````````gggblig``gh````````````````jj`hli```gjcg`````````````````ig``````````jbbe````ki`ilc``dd`c`````da````````````````",
+"`````````````````````````````````````di``````````````````````````gec``ajegg`````````````````````````ckkdjcecaaaa````````````````gkbaec`````accig```````````````cjg````````kbhe````ei`ilj``jk`j``g``da````````````````",
+"`````````````````````````````````````lg``````````````````````````dd````hkkj```````````````````````````````hjkkdjdjjjjb```````````bkhec````````acjbg`````````````gjg```````diak```gei`blc``de`j`````da````````````````",
+"````````````````````````````````````he``````````````````````````ikg`````dela````````````````````````````ghbhhhaaggg```````````````kjei```````````bdjiag```````gbiig```````dbak````lb`bli``de`j`````da````````````````",
+"````````````````````````````````````jc````````````````````````gdk````````bkb`````````````````````````akkdjddkeleja````````````````ilkh``````````````hcjjccccjcbg``````````dbhd````ei`hec``dk`j`````ka````````````````",
+"````````````````````````````````````eg```````````````````````geea`````````ib`````````````````````````ei````````gbjejg`````````````aelg````````````````````````````````````jbhd```gli`hei``dd`j`````kg````````````````",
+"```````````````````````````````````be```````````````````````hlla``````````g`````````````````````````cj````````````adlb`````````````hlbg```````````````````````````````````dbbd```gli`ali``jd`j`````kg````````````````",
+"```````````````````````````````````kb``````````````````````allh````````````````````````````````````hla``````````````bejg````````````dla`gahjji````````````````````````````dbbd```glc`glb``dj`d`````kg````````````````",
+"``````````````````````````````````be``````````````````````beeh`````````````````````````````````````kh`bklljg``````````iei```````````ckelleedddka``````````````````````````dbbd```glc`glh``dj`j`````kg````````````````",
+"`````````````````````````````````geh```````````````````gikejg`````````````````````````````````````gk`jfeddeea``````````akkb````````````g``````aeg`````````````````````````dbij```glc`glh``jj`d`````kg````````````````",
+"`````````````````````````````````ec`````````````````gbdledi```````````````````````````````````````ijifd````hg````````````ieda``````````````````ij`````````````````````````dbbj```ali`gla``jc`d`````kg````````````````",
+"````````````````````````````````jk````````````ghijdkkdjhha````````````````````````````````````````daefb```````````````````gdeb``````````````````e`````````````````````````dhbj```ali`glh``ih`j`````k`````````````````",
+"```````````````````````````````ilg`````````bdelkjbg``gcabcg```````````````````````````````````````kajlg`````````````````````jei`````````````````ka````````````````````````khbj```hlb`bla``jh`d`````e`````````````````",
+"``````````````````````````````ila````````cedccb````````ijib```````````````````````````````````````kahe````hdledcg````````````i``````````````````jb````````````````````````khic```hlb`blh``jh`d`````e`````````````````",
+"`````````````````````````````ilh````````jlg`gc`````````gjdb```````````````````````````````````````bg`a````deahikeg``````````````````````````````ic````````````````````````kaic```hlb`blh``jb`d`````e`````````````````",
+"````````````````````````````dfb````````alb``ca``````````hlg```````````````````````````````````````ah`````glfklfekd``````````````````````````````ic````````````````````````khcc```blb`blh``jh`d`````e`````````````````",
+"```````````````````````````cfc`````````kk```d````````````k``````````````````````````````hg```````````````glfffffekcia`````````````````````````abdh````````````````````````eacc```bliiefc``dh`d`````e`````````````````",
+"```````````````````````````ed`````````blb```d````````````db```````````````````````````gag````````````````gkffffffbelkg```````````````````````gjde`````````````````````````kaic```bldcahkb`kh`d`````e`````````````````",
+"```````````````````````````lg``gikcghjlc```gj````````````je````````````````````````gjkka``````````````````gkfffflaeefi```````````````````````dedd`````````````````````````eabj```blk``ghegkh`d`````e`````````````````",
+"```````````````````````````ddjkfeddflda````bc````````````ceb``````````````````````akig``````````````````````bjig``eblk``````````````````````jflld`````````````````````````kghj```bli```cflllcd````ge`````````````````",
+"```````````````````````````gccib```ga``````ib````````````jhc``````````````````````ea``````````````````````````````khbfg````````````````````jlfflh`````````````````````````egbc```bfj``glkdleid```gbk`````````````````",
+"```````````````````````````````````````````ca````````````j`j``````````````````````````````big`````````````````````ehgli``````````````````gdlfffd``````````````````````````egbj```ile``ge``kh`dgiaaik`````````````````",
+"```````````````````````````````````````````ja````````````j`j````````````````````````````helkli`````g`````````````gk``ed````````````````gbklffleg``````````````````````````lgbj```cllh`jj``eb`difdbik`````````````````",
+"```````````````````````````````````````````ch````````````cgd````````````````````````````iga`geb``ag``````````````````cc`````````````ggadlffflkb```````````````````````````labc```jlka`ec``kb`difehid`````````````````",
+"```````````````````````````````````````````ch````````````ihja````````````````````````````````hla`j```````````````````````````````````hklffffdj````````````````````````````lhic```kfcggjli`eb`djflbcd`````````````````",
+"```````````````````````````````````````````ib`````````````ijeg````````````````````````````````dcgj`````````````````````````````````gjefffffekg````````````````````````````laieejelledecieieb`dhkcbcd`````````````````",
+"```````````````````````````````````````````bc```````````````cd````````````````````````````````akii````````````````````````````````gdlflffflka`````````````````````````````laijeggabijkellllb`dga`bcd`````````````````",
+"```````````````````````````````````````````aj```````````````gkh````````````````````````````````cki```````````````````````````````gdlflffflkg``````````````````````````````eajkkjihg``````geb`dg``hcd`````````````````",
+"```````````````````````````````````````````gd````````````````jc````````````````````````````````gej```````````````````````````ggagdllllfflka```````````````````````````````dadlklekeeekkkkjeb`d```acj`````````````````",
+"````````````````````````````````````````````d```````````````gbj`````````````````````````````````be``````````````````````````````hjjcdeelecg```````````````````````````````khjeeeb`````ghejeb`d```aij`````````````````",
+"````````````````````````````````````````````d```````````````baj``````````````````````````````````kh`````````````````````````````gg``gabi`ajg```ggga``````````````````````gkckecd`g``````aeeb`k```gic`````````````````",
+"````````````````````````````````````````````dg``````````````abch`````````````````````````````````bj````````````````````````````````````````bkdkekdklkkka```````````````ajllflkejibhgggghbkli`k```gij`````````````````",
+"````````````````````````````````````````````cb```````````````chj``````````````````````````````````dg````````````````````````````````````````hh```gbg`gdi```````````````jkiicjcccijdkllllfkli`k```gic`````````````````",
+"````````````````````````````````````````````bi```````````````gceih````````````````````````````````aj`````````````````````````````````````````ba`cdhhgggkg`````````````bjkellkkeekdeclkkkllligk```aci`````````````````",
+"````````````````````````````````````````````aj`````````````````bhbjjg``````````````````````````````aj````````````````````````````````````````gcgblfjkg`hd``````````````gbdklcedihbedekellklcae```aji`````````````````",
+"`````````````````````````````````````````````d`````````````````hb``ajjg`````````````````````````````hc```````````````````````````````````````adgaelfcg``ji````````````````ge`dig`gkghabaahejak```hji`````````````````",
+"`````````````````````````````````````````````d``````````````````biih`adh`````````````````````````````hc```````````````````````````````g``gbiikfjgjeld```aea```````````````ge`kiaghejaggbbiedgk```bji`````````````````",
+"`````````````````````````````````````````````ih```````````````````gbch`da`````````````````````````````jkh`````````````````````hckkeeeekdcjkdlielbieeeh```hka`````````````gbebdkeellleekcidfj`k```ijjhhhha````````````",
+"`````````````````````````````````````````````ac``````````````````````ibjki````````````````````````````gdlcg``ghbhgg```ggacckelfflllllffffflbagbfkilelddcbghkjg``````````bkllllllllllelllekligk```ajeeeelleka`````````",
+"``````````````````````````````````````````````k``````````````````````gccgd``````````````````````````````ileeefflkchahabklfffffffffffffffflc````dflfelkcdkkddlkjjjcjjccccklllleeeeeleeeeeleli`k````jklellllljci```````",
+"``````````````````````````````````````````````ja`````````````````````cgj`j```````````````````````````````hllebahabcdelffffffffffflllffllfj`````aleejllkdjba`aihgbiibibibijcccccccccccccjddeh`eg```djbbhbiiiibdd``````",
+"``````````````````````````````````````````````aj`````````````````````jacih````````````````````````````````gefllllflfffffffffllfflekkeelfd``````glkkjedghifdbgjdjjdkdjjjjjjddjdccccjiiibbbiebheg```djccjkkkejjkc``````",
+"```````````````````````````````````````````````d`````````````````````cjgjg`````````````````````````````````hdlffffflkjjjjdibhbiig`g`agaci```````ljjkkk`gafldhlcaahbbiibbbideilkchjehhhahhbdabeh``gdh```jbak``ch``````",
+"```````````````````````````````````````````````d`````````````````````dj`j`````````````````````````````````````gahaaag``````````````````aj```````edbejea`glldhlb```````````jkglcg`id```````jggeh``ada```jhgk``ca``````",
+"```````````````````````````````````````````````ja````````````````````djhi``````````````````````````````````````````h```````````````````gd``````gejhkclc`geecbla```````````id`lj`gcc```````j``ea``gka```chgk``ca``````",
+"```````````````````````````````````````````````bi````````````````````ckhi``````````````````````````````````````````````````````````````bj``````gejajcee``kehbk````````````ckgej``jj``````adggea```ka```jhad``cg``````",
+"````````````````````````````````````````````````d`````````````````````dcj``````````````````````````````````````````````````````````````ka``````aejgddkeg`kkgcd````````````ck`ed``cj``````ad``eg```ka```jaaj``jg``````",
+"````````````````````````````````````````````````bi`````````````````````kkh````````````````````````````````````````````````````````````hk```````akcgkkjebgkk`jj````````````ck`ec``cc``````gj`gk````eg```jghc``d```````",
+"`````````````````````````````````````````````````d`````````````````````gjd```a```````````````````````````````````````````````````````gda```````hei`kdcfjakd`ki````````````ieaec``jc```````c`gd````eg```j`bi``d```````",
+"`````````````````````````````````````````````````ch``````````````````````bb``d`````````````````````````````````````````````````````ajjg````````behgkdcfeadjgeg````````````cehlc``jc```````c`gd````eg```j`ib``k```````",
+"`````````````````````````````````````````````````aj```````````````````````iggj```````````````````````````````````````````````g`gbjjig``````````blghjicllbdiae`````````````ckhlc``di```````c`gd````e````j`ca``d```````",
+"``````````````````````````````````````````````````dg```````````````````````ihc``a`````````````````````````````````abckdkkeeeedjjh``````````````blgbjakdejdhcd`````````````jkalc`gdi```````c`gd````k````j`jg`gk```````",
+"``````````````````````````````````````````````````bj```````````````````````ihc``a```````````````````````````````bklffffflffflg`````````````````ce`iigkiekkadc`````````````jkalc`gki``````gj`gj````k````j`j``ae```````",
+"```````````````````````````````````````````````````cb`````````````````````hbbc`gj````````````````````````````gclffffffffffffd``````````````````jk`ji`dakeeaea`````````````jkali``ei``````gd`gj````d````d`d``be```````",
+"````````````````````````````````````````````````````dg````````````````````iahc`ia```````````````````````````bellffffflffflfla``````````````````dk`db`cdkekge``````````````ckgfb``lh```````c`gj````d```gj`d``hj```````",
+"````````````````````````````````````````````````````ac````````````````````higd`j`g``````````````````````````jffffffffffflffc```````````````````kj`ka`hecldhe``````````````iegfh``liiicdjccj`aj```hlc``gj`d``hb```````",
+"`````````````````````````````````````````````````````ih````````````````````dgjhd````````````````````````````chkkekeelkcagkfi```````````````````ec`k``glbljhlkkkdddkkdjddkkekalh``lcbbbiccdj`hd```gelkabj`d``hi```````",
+"``````````````````````````````````````````````````````jg```````````````````gjcdd```h``````````````````````````hejgdiach`gjklh`````````````````gec`k``gddkchkggggaaagaagg``heglh`ala``````bc`ad````ihkldjgj``hi```````",
+"``````````````````````````````````````````````````````gdg````````````````````ilea``h```abg`a```ig``````````````dhak``hb``b`jk`````````````````bkcgk```alkbalcg````````````hk`fh`glg``````hh`gc```gc``hkdac``bb```````",
+"```````````````````````````````````````````````````````gdh```````````````````gdli``h`h`gjhg```bk```````````````icijg`gc````ala````````````````bkhad````eeaijdda```````````bkala`alg``````aa``c```gc```ichi``ia```````",
+"`````````````````````````````````````````````````````````cb``````````````````gclk``b`b`bhgb```eh```````````````gjgji`gc`ha``dk````````````````jegcc````jegeiahkcg`````````aklfeeel```````gb``j```gj```jiibg`i````````",
+"``````````````````````````````````````````````````````````ic```````````````````cla`b`hgja`c``bii````````````````a`jicbb`aj``bd````````````````aekeh````jkakejggdlc``````````ghbihg```````gj`ge```gc```kkekjckh```````",
+"```````````````````````````````````````````````````````````hda`````````````````alkgb`aachbjg`jhh`````````````````ga`cd```d``cj```````````````````ig```gjcgkgjec`adeb``````````````````````ekij```gb```ha`gaaklja`````",
+"````````````````````````````````````````````````````````````gjh`````````````````cdhj`gbhkchi`j`b````````````````````ik``gd``kh````````````````````````heigd``helb`gdkddddkkeeeeekdcjjjcciijkleeeediiiiibibbbbckc`````",
+"``````````````````````````````````````````````````````````````jg`````````````````cccigigekgj`j`b```````````````````ajcb`bi`bj`````````````````````````ieihc```aefkhglhgagggghbcciichaahhbbbbiiccicjiiiiiiiicjcjc`````",
+"``````````````````````````````````````````````````````````````ga``````````````````ckgii`jecbid`ha`````````````````gb`hb`dg`kg`````````````````````````cldji````gcefllg````````````````````````````````````````aj`````",
+"```````````````````````````````````````````````````````````````````````````````````abbc`ajeaikb`i```````````````````gcghj`dh```````````````````````````hdeb```````aefjccibhhhhhhbbibbibiiibhaggahbcjjjjccciccjdi`````",
+"````````````````````````````````````````````````````````````````````````````````````iiac``ckgjkgah``````````````````caadgjh``````````````````````````````g`````````gadjdkkkeekkdddjjjjjccccjdkkddjcbhhhhhhhagg```````",
+"```````````````````````````````````````````````````````````````````````````````````aab`acjgkdgdd`i`````````````````chadgba```````````````````````````````````````````````````````````````````````````````````````````",
+"```````````````````````````````````````````````````````````````````````````````````bi````ghajbiciab``````````````gcbhdgbb````````````````````````````````````````````````````````````````````````````````````````````",
+"``````````````````````````````````````````````````````````````````````````````````bha`````g`bdgjj`bg``````````gahbggdgih`````````````````````````````````````````````````````````````````````````````````````````````",
+"`````````````````````````````````````````````````````````````````````````````````gbc`````gghadgcj``i`````````jeda`gdgcg```ghiccg`````````````````````````````````````````````````````````````````````````````````````",
+"`````````````````````````````````````````````````````````````````````````````````i`j``````hcgjgjcg`gc```````gdkh``jajh`acjia`bbjhg```````````````````````````````````````````````````````````````````````````````````",
+"`````````````````````````````````````````````````````````````````````````````````c`j````abgdhichig``j```````jik``chjhgjdeg``gg``jba``````````````````````````````````````````````````````````````````````````````````",
+"`````````````````````````````````````````````````````````````````````````````````c`c``gih`cgcgdgia`bb```````kid`hcch`dhdlkhildb`gjb``````````````````````````````````````````````````````````````````````````````````",
+"`````````````````````````````````````````````````````````````````````````````````igb`ab`gia`jgj`cg`c````````kij`jci`gddlllbjlcj``db``````````````````````````````````````````````````````````````````````````````````",
+"`````````````````````````````````````````````````````````````````````````````````aaa`b`bcg``jbc`j`ab````````ehjgkj``celfffjklldjkei``````````````````````````````````````````````````````````````````````````````````",
+"````````````````````````````````````````````````````````````````````````````````````hgcg````chj`c`ba`````g``k`dbeg``klfflflefelfkjj``````````````````````````````````````````````````````````````````````````````````",
+"````````````````````````````````````````````````````````````````````````````````````gcg`````ibkhabcg`````a``k`jbl```kllfllfdllffleb``````````````````````````````````````````````````````````````````````````````````",
+"````````````````````````````````````````````````````````````````````````````````````ab``````gjci`iba`````aa`jbhidb``jflfklfllfflkk```````````````````````````````````````````````````````````````````````````````````",
+"````````````````````````````````````````````````````````````````````````````````````bg```````cbkhbgi`g````i`be`g`cb`hfecajfllffecj```````````````````````````````````````````````````````````````````````````````````",
+"``````````````````````````````````````````````````````````````````````````````````````````````chj``b``g```jggej```ccgeljdjllffleeg```````````````````````````````````````````````````````````````````````````````````",
+"```````````````````````````````````````````````````````````````````````````````````````````````hh`````````bc`iji```bddlfffffffeljg```````````````````````````````````````````````````````````````````````````````````",
+"```````````````````````````````````````````````````````````````````````````````````````````````i```````````ikjjejg```hjdlffffffekelc`````````````````````````````````````````````````````````````````````````````````",
+"``````````````````````````````````````````````````````````````````````````````````````````````gb````````````bccidkcg````ahidekjg``gkci```````````````````````````````````````````````````````````````````````````````",
+"``````````````````````````````````````````````````````````````````````````````````````````````h````````````````g``hdg`````````g```bkji```````````````````````````````````````````````````````````````````````````````",
+"```````````````````````````````````````````````````````````````````````````````````````````````````````````````````ga````````````gklei```````````````````````````````````````````````````````````````````````````````",
+"`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
+"`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
+"`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````"
+};
diff --git a/doc/grnexmpl.g b/doc/grnexmpl.g
new file mode 100644
index 0000000..ba1a1b8
--- /dev/null
+++ b/doc/grnexmpl.g
@@ -0,0 +1,3250 @@
+sungremlinfile
+0 320.00 240.00
+ARC
+320.00 240.00
+320.00 416.00
+320.00 416.00
+320.00 64.00
+496.00 240.00
+144.00 240.00
+*
+4 0
+0
+CURVE BSPLINE
+764.00 288.00
+776.00 304.00
+764.00 320.00
+*
+3 0
+0
+CURVE BSPLINE
+768.00 288.00
+780.00 304.00
+768.00 320.00
+*
+3 0
+0
+CURVE BSPLINE
+768.00 320.00
+788.00 320.00
+800.00 304.00
+*
+3 0
+0
+CURVE BSPLINE
+768.00 288.00
+788.00 288.00
+800.00 304.00
+*
+3 0
+0
+ARC
+192.00 268.00
+192.00 267.00
+192.00 269.00
+192.00 267.00
+193.00 268.00
+191.00 268.00
+*
+3 0
+0
+ARC
+192.00 212.00
+192.00 211.00
+192.00 213.00
+192.00 211.00
+193.00 212.00
+191.00 212.00
+*
+3 0
+0
+CENTRIGHT
+476.00 32.00
+430.00 28.00
+453.00 28.00
+476.00 28.00
+*
+1 1
+10 $DP sub 2$
+CENTRIGHT
+476.00 224.00
+430.00 220.00
+453.00 220.00
+476.00 220.00
+*
+1 1
+10 $DP sub 2$
+CENTRIGHT
+476.00 256.00
+430.00 252.00
+453.00 252.00
+476.00 252.00
+*
+1 1
+10 $DP sub 2$
+CENTRIGHT
+476.00 448.00
+430.00 444.00
+453.00 444.00
+476.00 444.00
+*
+1 1
+10 $DP sub 2$
+VECTOR
+604.00 344.00
+612.00 344.00
+612.00 364.00
+620.00 364.00
+*
+6 0
+0
+ARC
+416.00 320.00
+416.00 319.00
+416.00 321.00
+416.00 319.00
+417.00 320.00
+415.00 320.00
+*
+3 0
+0
+CENTLEFT
+596.00 336.00
+596.00 332.00
+604.00 332.00
+613.00 332.00
+*
+1 1
+3 $-$
+CENTLEFT
+596.00 368.00
+596.00 364.00
+604.00 364.00
+612.00 364.00
+*
+1 1
+3 $+$
+POLYGON
+592.00 320.00
+592.00 384.00
+656.00 352.00
+592.00 320.00
+*
+3 1
+0
+ARC
+392.00 390.00
+392.00 392.00
+392.00 392.00
+392.00 388.00
+390.00 390.00
+394.00 390.00
+*
+3 0
+0
+VECTOR
+396.00 388.00
+384.00 384.00
+*
+3 0
+0
+ARC
+392.00 378.00
+392.00 380.00
+392.00 380.00
+392.00 376.00
+390.00 378.00
+394.00 378.00
+*
+3 0
+0
+ARC
+312.00 326.00
+312.00 328.00
+312.00 328.00
+312.00 324.00
+314.00 326.00
+310.00 326.00
+*
+3 0
+0
+CENTRIGHT
+276.00 352.00
+243.00 348.00
+259.00 348.00
+276.00 348.00
+*
+1 1
+7 $vv B2$
+POLYGON
+280.00 356.00
+280.00 348.00
+284.00 348.00
+288.00 352.00
+284.00 356.00
+*
+3 21
+0
+VECTOR
+308.00 324.00
+320.00 320.00
+*
+3 0
+0
+ARC
+312.00 314.00
+312.00 316.00
+312.00 316.00
+312.00 312.00
+314.00 314.00
+310.00 314.00
+*
+3 0
+0
+CENTLEFT
+292.00 212.00
+292.00 208.00
+300.00 208.00
+308.00 208.00
+*
+1 1
+3 $+$
+CENTLEFT
+292.00 268.00
+292.00 264.00
+300.00 264.00
+309.00 264.00
+*
+1 1
+3 $-$
+POLYGON
+288.00 192.00
+288.00 288.00
+384.00 240.00
+288.00 192.00
+*
+3 1
+0
+ARC
+256.00 268.00
+256.00 267.00
+256.00 269.00
+256.00 267.00
+257.00 268.00
+255.00 268.00
+*
+3 0
+0
+VECTOR
+328.00 268.00
+416.00 268.00
+416.00 320.00
+356.00 320.00
+*
+6 0
+0
+VECTOR
+356.00 328.00
+356.00 312.00
+*
+3 0
+0
+VECTOR
+352.00 328.00
+352.00 312.00
+*
+6 0
+0
+VECTOR
+320.00 320.00
+352.00 320.00
+*
+6 0
+0
+VECTOR
+312.00 312.00
+256.00 312.00
+256.00 268.00
+288.00 268.00
+*
+6 0
+0
+VECTOR
+224.00 276.00
+224.00 260.00
+*
+3 0
+0
+VECTOR
+228.00 276.00
+228.00 260.00
+*
+6 0
+0
+VECTOR
+228.00 268.00
+256.00 268.00
+*
+6 0
+0
+VECTOR
+224.00 268.00
+192.00 268.00
+192.00 384.00
+316.00 384.00
+*
+6 0
+0
+VECTOR
+320.00 392.00
+320.00 376.00
+*
+3 0
+0
+VECTOR
+316.00 392.00
+316.00 376.00
+*
+6 0
+0
+VECTOR
+312.00 328.00
+312.00 352.00
+288.00 352.00
+*
+6 0
+0
+VECTOR
+392.00 392.00
+416.00 392.00
+416.00 320.00
+*
+6 0
+0
+VECTOR
+320.00 384.00
+384.00 384.00
+*
+6 0
+0
+VECTOR
+192.00 256.00
+192.00 268.00
+160.00 268.00
+*
+6 0
+0
+ARC
+160.00 266.00
+160.00 268.00
+160.00 268.00
+160.00 264.00
+158.00 266.00
+162.00 266.00
+*
+3 0
+0
+VECTOR
+164.00 256.00
+152.00 260.00
+*
+3 0
+0
+ARC
+160.00 254.00
+160.00 256.00
+160.00 256.00
+160.00 252.00
+158.00 254.00
+162.00 254.00
+*
+3 0
+0
+ARC
+194.00 256.00
+196.00 256.00
+196.00 256.00
+192.00 256.00
+194.00 254.00
+194.00 258.00
+*
+3 0
+0
+VECTOR
+204.00 260.00
+200.00 248.00
+*
+3 0
+0
+VECTOR
+200.00 248.00
+200.00 232.00
+*
+6 0
+0
+VECTOR
+152.00 260.00
+128.00 260.00
+*
+6 0
+0
+ARC
+96.00 266.00
+96.00 268.00
+96.00 268.00
+96.00 264.00
+98.00 266.00
+94.00 266.00
+*
+3 0
+0
+VECTOR
+92.00 256.00
+104.00 260.00
+*
+3 0
+0
+ARC
+96.00 254.00
+96.00 256.00
+96.00 256.00
+96.00 252.00
+98.00 254.00
+94.00 254.00
+*
+3 0
+0
+VECTOR
+124.00 268.00
+124.00 252.00
+*
+3 0
+0
+VECTOR
+128.00 268.00
+128.00 252.00
+*
+6 0
+0
+VECTOR
+104.00 260.00
+124.00 260.00
+*
+6 0
+0
+VECTOR
+96.00 268.00
+96.00 320.00
+40.00 320.00
+*
+6 0
+0
+ARC
+28.00 338.00
+28.00 340.00
+28.00 340.00
+28.00 336.00
+30.00 338.00
+26.00 338.00
+*
+3 0
+0
+VECTOR
+24.00 336.00
+40.00 320.00
+*
+3 0
+0
+ARC
+28.00 302.00
+28.00 304.00
+28.00 304.00
+28.00 300.00
+30.00 302.00
+26.00 302.00
+*
+3 0
+0
+ARC
+14.00 320.00
+12.00 320.00
+12.00 320.00
+16.00 320.00
+14.00 322.00
+14.00 318.00
+*
+3 0
+0
+VECTOR
+96.00 252.00
+76.00 252.00
+*
+6 0
+0
+ARC
+68.00 258.00
+68.00 260.00
+68.00 260.00
+68.00 256.00
+70.00 258.00
+66.00 258.00
+*
+3 0
+0
+VECTOR
+64.00 248.00
+76.00 252.00
+*
+3 0
+0
+ARC
+68.00 246.00
+68.00 248.00
+68.00 248.00
+68.00 244.00
+70.00 246.00
+66.00 246.00
+*
+3 0
+0
+VECTOR
+352.00 384.00
+352.00 416.00
+512.00 416.00
+*
+6 0
+0
+VECTOR
+512.00 424.00
+512.00 408.00
+*
+3 0
+0
+VECTOR
+516.00 424.00
+516.00 408.00
+*
+6 0
+0
+VECTOR
+516.00 416.00
+564.00 416.00
+564.00 368.00
+592.00 368.00
+*
+6 0
+0
+VECTOR
+564.00 416.00
+564.00 448.00
+516.00 448.00
+*
+6 0
+0
+ARC
+480.00 454.00
+480.00 456.00
+480.00 456.00
+480.00 452.00
+482.00 454.00
+478.00 454.00
+*
+3 0
+0
+VECTOR
+476.00 444.00
+488.00 448.00
+*
+3 0
+0
+ARC
+480.00 442.00
+480.00 444.00
+480.00 444.00
+480.00 440.00
+482.00 442.00
+478.00 442.00
+*
+3 0
+0
+VECTOR
+512.00 456.00
+512.00 440.00
+*
+3 0
+0
+VECTOR
+516.00 456.00
+516.00 440.00
+*
+6 0
+0
+VECTOR
+488.00 448.00
+512.00 448.00
+*
+6 0
+0
+VECTOR
+480.00 440.00
+480.00 416.00
+*
+6 0
+0
+ARC
+352.00 384.00
+352.00 383.00
+352.00 385.00
+352.00 383.00
+353.00 384.00
+351.00 384.00
+*
+3 0
+0
+ARC
+480.00 416.00
+480.00 415.00
+480.00 417.00
+480.00 415.00
+481.00 416.00
+479.00 416.00
+*
+3 0
+0
+ARC
+564.00 416.00
+564.00 415.00
+564.00 417.00
+564.00 415.00
+565.00 416.00
+563.00 416.00
+*
+3 0
+0
+VECTOR
+480.00 456.00
+480.00 472.00
+*
+6 0
+0
+BOTCENT
+480.00 488.00
+452.00 488.00
+480.00 488.00
+509.00 488.00
+*
+1 1
+12 $- ^ vv REF$
+POLYGON
+484.00 480.00
+476.00 480.00
+476.00 476.00
+480.00 472.00
+484.00 476.00
+*
+3 21
+0
+ARC
+550.00 396.00
+548.00 396.00
+548.00 396.00
+552.00 396.00
+550.00 394.00
+550.00 398.00
+*
+3 0
+0
+VECTOR
+540.00 400.00
+544.00 388.00
+*
+3 0
+0
+VECTOR
+544.00 388.00
+544.00 316.00
+*
+6 0
+0
+VECTOR
+552.00 396.00
+552.00 416.00
+*
+6 0
+0
+ARC
+552.00 416.00
+552.00 415.00
+552.00 417.00
+552.00 415.00
+553.00 416.00
+551.00 416.00
+*
+3 0
+0
+CENTRIGHT
+516.00 352.00
+483.00 348.00
+499.00 348.00
+516.00 348.00
+*
+1 1
+7 $vv B1$
+POLYGON
+520.00 356.00
+520.00 348.00
+524.00 348.00
+528.00 352.00
+524.00 356.00
+*
+3 21
+0
+VECTOR
+512.00 280.00
+512.00 296.00
+*
+3 0
+0
+VECTOR
+516.00 280.00
+516.00 296.00
+*
+6 0
+0
+VECTOR
+564.00 288.00
+564.00 256.00
+516.00 256.00
+*
+6 0
+0
+ARC
+480.00 250.00
+480.00 248.00
+480.00 248.00
+480.00 252.00
+482.00 250.00
+478.00 250.00
+*
+3 0
+0
+VECTOR
+476.00 260.00
+488.00 256.00
+*
+3 0
+0
+ARC
+480.00 262.00
+480.00 260.00
+480.00 260.00
+480.00 264.00
+482.00 262.00
+478.00 262.00
+*
+3 0
+0
+VECTOR
+512.00 248.00
+512.00 264.00
+*
+3 0
+0
+VECTOR
+516.00 248.00
+516.00 264.00
+*
+6 0
+0
+VECTOR
+488.00 256.00
+512.00 256.00
+*
+6 0
+0
+VECTOR
+480.00 264.00
+480.00 288.00
+*
+6 0
+0
+ARC
+480.00 288.00
+480.00 289.00
+480.00 287.00
+480.00 289.00
+481.00 288.00
+479.00 288.00
+*
+3 0
+0
+ARC
+564.00 288.00
+564.00 289.00
+564.00 287.00
+564.00 289.00
+565.00 288.00
+563.00 288.00
+*
+3 0
+0
+VECTOR
+480.00 248.00
+480.00 232.00
+*
+6 0
+0
+ARC
+550.00 308.00
+548.00 308.00
+548.00 308.00
+552.00 308.00
+550.00 310.00
+550.00 306.00
+*
+3 0
+0
+VECTOR
+540.00 304.00
+544.00 316.00
+*
+3 0
+0
+VECTOR
+552.00 308.00
+552.00 288.00
+*
+6 0
+0
+ARC
+552.00 288.00
+552.00 289.00
+552.00 287.00
+552.00 289.00
+553.00 288.00
+551.00 288.00
+*
+3 0
+0
+VECTOR
+528.00 352.00
+544.00 352.00
+*
+6 0
+0
+ARC
+544.00 352.00
+544.00 351.00
+544.00 353.00
+544.00 351.00
+545.00 352.00
+543.00 352.00
+*
+3 0
+0
+VECTOR
+516.00 288.00
+564.00 288.00
+564.00 336.00
+592.00 336.00
+*
+6 0
+0
+VECTOR
+512.00 288.00
+448.00 288.00
+448.00 64.00
+*
+6 0
+0
+VECTOR
+352.00 416.00
+352.00 448.00
+*
+6 0
+0
+ARC
+352.00 416.00
+352.00 415.00
+352.00 417.00
+352.00 415.00
+353.00 416.00
+351.00 416.00
+*
+3 0
+0
+BOTCENT
+352.00 460.00
+343.00 460.00
+352.00 460.00
+361.00 460.00
+*
+1 1
+3 $A$
+POLYGON
+356.00 448.00
+348.00 448.00
+348.00 452.00
+352.00 456.00
+356.00 452.00
+*
+3 21
+0
+BOTCENT
+320.00 396.00
+307.00 396.00
+320.00 396.00
+333.00 396.00
+*
+1 1
+6 $cc F$
+BOTRIGHT
+348.00 328.00
+321.00 328.00
+334.00 328.00
+348.00 328.00
+*
+1 1
+6 $cc O$
+BOTCENT
+228.00 280.00
+215.00 280.00
+228.00 280.00
+242.00 280.00
+*
+1 1
+6 $cc C$
+BOTCENT
+128.00 272.00
+116.00 272.00
+128.00 272.00
+141.00 272.00
+*
+1 1
+6 $cc S$
+CENTLEFT
+204.00 256.00
+204.00 252.00
+227.00 252.00
+250.00 252.00
+*
+1 1
+10 $DP sub 2$
+BOTCENT
+68.00 264.00
+56.00 264.00
+68.00 264.00
+80.00 264.00
+*
+1 1
+4 $PN$
+TOPRIGHT
+388.00 380.00
+342.00 371.00
+365.00 371.00
+388.00 371.00
+*
+1 1
+10 $DP sub 2$
+TOPCENT
+392.00 348.00
+372.00 339.00
+392.00 339.00
+412.00 339.00
+*
+1 1
+6 $AGND$
+POLYGON
+396.00 352.00
+388.00 352.00
+388.00 356.00
+392.00 360.00
+396.00 356.00
+*
+3 21
+0
+VECTOR
+392.00 360.00
+392.00 376.00
+*
+6 0
+0
+TOPRIGHT
+540.00 396.00
+494.00 387.00
+517.00 387.00
+540.00 387.00
+*
+1 1
+10 $DP sub 1$
+CENTRIGHT
+508.00 440.00
+476.00 436.00
+492.00 436.00
+508.00 436.00
+*
+1 1
+7 $cc D1$
+CENTRIGHT
+508.00 408.00
+476.00 404.00
+492.00 404.00
+508.00 404.00
+*
+1 1
+7 $cc D2$
+BOTRIGHT
+508.00 268.00
+476.00 268.00
+492.00 268.00
+508.00 268.00
+*
+1 1
+7 $cc D1$
+BOTRIGHT
+508.00 300.00
+476.00 300.00
+492.00 300.00
+508.00 300.00
+*
+1 1
+7 $cc D2$
+VECTOR
+672.00 392.00
+672.00 344.00
+720.00 344.00
+720.00 392.00
+672.00 392.00
+*
+3 0
+0
+ARC
+696.00 396.00
+696.00 392.00
+696.00 400.00
+696.00 392.00
+700.00 396.00
+692.00 396.00
+*
+3 0
+0
+TOPCENT
+696.00 392.00
+688.00 383.00
+696.00 383.00
+705.00 383.00
+*
+1 1
+3 $R$
+ARC
+668.00 368.00
+668.00 364.00
+668.00 372.00
+668.00 364.00
+672.00 368.00
+664.00 368.00
+*
+3 0
+0
+CENTLEFT
+676.00 368.00
+676.00 364.00
+688.00 364.00
+700.00 364.00
+*
+1 1
+4 $CK$
+ARC
+724.00 368.00
+724.00 364.00
+724.00 372.00
+724.00 364.00
+720.00 368.00
+728.00 368.00
+*
+3 0
+0
+CENTRIGHT
+720.00 368.00
+688.00 364.00
+704.00 364.00
+720.00 364.00
+*
+1 1
+7 $O bar$
+CENTLEFT
+676.00 352.00
+676.00 348.00
+684.00 348.00
+693.00 348.00
+*
+1 1
+3 $D$
+CENTRIGHT
+720.00 352.00
+703.00 348.00
+711.00 348.00
+720.00 348.00
+*
+1 1
+3 $O$
+VECTOR
+656.00 352.00
+672.00 352.00
+*
+6 0
+0
+VECTOR
+720.00 352.00
+736.00 352.00
+736.00 176.00
+768.00 176.00
+*
+6 0
+0
+VECTOR
+728.00 368.00
+800.00 368.00
+*
+6 0
+0
+BOTRIGHT
+804.00 376.00
+762.00 376.00
+783.00 376.00
+804.00 376.00
+*
+1 1
+6 $DOWN$
+POLYGON
+800.00 372.00
+800.00 364.00
+804.00 364.00
+808.00 368.00
+804.00 372.00
+*
+3 21
+0
+VECTOR
+516.00 192.00
+564.00 192.00
+564.00 144.00
+592.00 144.00
+*
+6 0
+0
+VECTOR
+512.00 192.00
+432.00 192.00
+432.00 416.00
+*
+6 0
+0
+VECTOR
+512.00 200.00
+512.00 184.00
+*
+3 0
+0
+VECTOR
+516.00 200.00
+516.00 184.00
+*
+6 0
+0
+VECTOR
+564.00 192.00
+564.00 224.00
+516.00 224.00
+*
+6 0
+0
+ARC
+480.00 230.00
+480.00 232.00
+480.00 232.00
+480.00 228.00
+482.00 230.00
+478.00 230.00
+*
+3 0
+0
+VECTOR
+476.00 220.00
+488.00 224.00
+*
+3 0
+0
+ARC
+480.00 218.00
+480.00 220.00
+480.00 220.00
+480.00 216.00
+482.00 218.00
+478.00 218.00
+*
+3 0
+0
+VECTOR
+512.00 232.00
+512.00 216.00
+*
+3 0
+0
+VECTOR
+516.00 232.00
+516.00 216.00
+*
+6 0
+0
+VECTOR
+488.00 224.00
+512.00 224.00
+*
+6 0
+0
+VECTOR
+480.00 216.00
+480.00 192.00
+*
+6 0
+0
+ARC
+480.00 192.00
+480.00 191.00
+480.00 193.00
+480.00 191.00
+481.00 192.00
+479.00 192.00
+*
+3 0
+0
+ARC
+564.00 192.00
+564.00 191.00
+564.00 193.00
+564.00 191.00
+565.00 192.00
+563.00 192.00
+*
+3 0
+0
+VECTOR
+480.00 232.00
+480.00 248.00
+*
+6 0
+0
+VECTOR
+552.00 172.00
+552.00 192.00
+*
+6 0
+0
+ARC
+552.00 192.00
+552.00 191.00
+552.00 193.00
+552.00 191.00
+553.00 192.00
+551.00 192.00
+*
+3 0
+0
+TOPRIGHT
+508.00 220.00
+476.00 211.00
+492.00 211.00
+508.00 211.00
+*
+1 1
+7 $cc D1$
+TOPRIGHT
+508.00 188.00
+476.00 179.00
+492.00 179.00
+508.00 179.00
+*
+1 1
+7 $cc D2$
+VECTOR
+224.00 212.00
+192.00 212.00
+192.00 96.00
+316.00 96.00
+*
+6 0
+0
+VECTOR
+312.00 168.00
+256.00 168.00
+256.00 212.00
+288.00 212.00
+*
+6 0
+0
+VECTOR
+328.00 212.00
+416.00 212.00
+416.00 160.00
+356.00 160.00
+*
+6 0
+0
+VECTOR
+604.00 136.00
+612.00 136.00
+612.00 116.00
+620.00 116.00
+*
+6 0
+0
+ARC
+416.00 160.00
+416.00 161.00
+416.00 159.00
+416.00 161.00
+417.00 160.00
+415.00 160.00
+*
+3 0
+0
+CENTLEFT
+596.00 112.00
+596.00 108.00
+604.00 108.00
+613.00 108.00
+*
+1 1
+3 $-$
+CENTLEFT
+596.00 144.00
+596.00 140.00
+604.00 140.00
+612.00 140.00
+*
+1 1
+3 $+$
+POLYGON
+592.00 160.00
+592.00 96.00
+656.00 128.00
+592.00 160.00
+*
+3 1
+0
+ARC
+392.00 90.00
+392.00 88.00
+392.00 88.00
+392.00 92.00
+390.00 90.00
+394.00 90.00
+*
+3 0
+0
+VECTOR
+396.00 92.00
+384.00 96.00
+*
+3 0
+0
+ARC
+392.00 102.00
+392.00 100.00
+392.00 100.00
+392.00 104.00
+390.00 102.00
+394.00 102.00
+*
+3 0
+0
+ARC
+312.00 154.00
+312.00 152.00
+312.00 152.00
+312.00 156.00
+314.00 154.00
+310.00 154.00
+*
+3 0
+0
+CENTRIGHT
+276.00 128.00
+243.00 124.00
+259.00 124.00
+276.00 124.00
+*
+1 1
+7 $vv B2$
+POLYGON
+280.00 124.00
+280.00 132.00
+284.00 132.00
+288.00 128.00
+284.00 124.00
+*
+3 21
+0
+VECTOR
+308.00 156.00
+320.00 160.00
+*
+3 0
+0
+ARC
+312.00 166.00
+312.00 164.00
+312.00 164.00
+312.00 168.00
+314.00 166.00
+310.00 166.00
+*
+3 0
+0
+VECTOR
+356.00 152.00
+356.00 168.00
+*
+3 0
+0
+VECTOR
+352.00 152.00
+352.00 168.00
+*
+6 0
+0
+VECTOR
+320.00 160.00
+352.00 160.00
+*
+6 0
+0
+VECTOR
+320.00 88.00
+320.00 104.00
+*
+3 0
+0
+VECTOR
+316.00 88.00
+316.00 104.00
+*
+6 0
+0
+VECTOR
+312.00 152.00
+312.00 128.00
+288.00 128.00
+*
+6 0
+0
+VECTOR
+392.00 88.00
+416.00 88.00
+416.00 160.00
+*
+6 0
+0
+VECTOR
+320.00 96.00
+384.00 96.00
+*
+6 0
+0
+VECTOR
+352.00 96.00
+352.00 64.00
+512.00 64.00
+*
+6 0
+0
+VECTOR
+512.00 56.00
+512.00 72.00
+*
+3 0
+0
+VECTOR
+516.00 56.00
+516.00 72.00
+*
+6 0
+0
+VECTOR
+516.00 64.00
+564.00 64.00
+564.00 112.00
+592.00 112.00
+*
+6 0
+0
+VECTOR
+564.00 64.00
+564.00 32.00
+516.00 32.00
+*
+6 0
+0
+ARC
+480.00 26.00
+480.00 24.00
+480.00 24.00
+480.00 28.00
+482.00 26.00
+478.00 26.00
+*
+3 0
+0
+VECTOR
+476.00 36.00
+488.00 32.00
+*
+3 0
+0
+ARC
+480.00 38.00
+480.00 36.00
+480.00 36.00
+480.00 40.00
+482.00 38.00
+478.00 38.00
+*
+3 0
+0
+VECTOR
+512.00 24.00
+512.00 40.00
+*
+3 0
+0
+VECTOR
+516.00 24.00
+516.00 40.00
+*
+6 0
+0
+VECTOR
+488.00 32.00
+512.00 32.00
+*
+6 0
+0
+VECTOR
+480.00 40.00
+480.00 64.00
+*
+6 0
+0
+ARC
+352.00 96.00
+352.00 97.00
+352.00 95.00
+352.00 97.00
+353.00 96.00
+351.00 96.00
+*
+3 0
+0
+ARC
+480.00 64.00
+480.00 65.00
+480.00 63.00
+480.00 65.00
+481.00 64.00
+479.00 64.00
+*
+3 0
+0
+ARC
+564.00 64.00
+564.00 65.00
+564.00 63.00
+564.00 65.00
+565.00 64.00
+563.00 64.00
+*
+3 0
+0
+VECTOR
+480.00 24.00
+480.00 8.00
+*
+6 0
+0
+TOPCENT
+480.00 -4.00
+452.00 -13.00
+480.00 -13.00
+509.00 -13.00
+*
+1 1
+12 $- ^ vv REF$
+POLYGON
+484.00 0.00
+476.00 0.00
+476.00 4.00
+480.00 8.00
+484.00 4.00
+*
+3 21
+0
+ARC
+550.00 84.00
+548.00 84.00
+548.00 84.00
+552.00 84.00
+550.00 86.00
+550.00 82.00
+*
+3 0
+0
+VECTOR
+540.00 80.00
+544.00 92.00
+*
+3 0
+0
+VECTOR
+544.00 92.00
+544.00 164.00
+*
+6 0
+0
+VECTOR
+552.00 84.00
+552.00 64.00
+*
+6 0
+0
+ARC
+552.00 64.00
+552.00 65.00
+552.00 63.00
+552.00 65.00
+553.00 64.00
+551.00 64.00
+*
+3 0
+0
+CENTRIGHT
+516.00 128.00
+483.00 124.00
+499.00 124.00
+516.00 124.00
+*
+1 1
+7 $vv B1$
+POLYGON
+520.00 124.00
+520.00 132.00
+524.00 132.00
+528.00 128.00
+524.00 124.00
+*
+3 21
+0
+ARC
+550.00 172.00
+548.00 172.00
+548.00 172.00
+552.00 172.00
+550.00 170.00
+550.00 174.00
+*
+3 0
+0
+VECTOR
+540.00 176.00
+544.00 164.00
+*
+3 0
+0
+VECTOR
+528.00 128.00
+544.00 128.00
+*
+6 0
+0
+ARC
+544.00 128.00
+544.00 129.00
+544.00 127.00
+544.00 129.00
+545.00 128.00
+543.00 128.00
+*
+3 0
+0
+VECTOR
+352.00 64.00
+352.00 32.00
+*
+6 0
+0
+ARC
+352.00 64.00
+352.00 65.00
+352.00 63.00
+352.00 65.00
+353.00 64.00
+351.00 64.00
+*
+3 0
+0
+CENTCENT
+352.00 16.00
+344.00 12.00
+352.00 12.00
+360.00 12.00
+*
+1 1
+3 $B$
+POLYGON
+356.00 32.00
+348.00 32.00
+348.00 28.00
+352.00 24.00
+356.00 28.00
+*
+3 21
+0
+TOPCENT
+320.00 84.00
+307.00 75.00
+320.00 75.00
+333.00 75.00
+*
+1 1
+6 $cc F$
+TOPRIGHT
+348.00 160.00
+321.00 151.00
+334.00 151.00
+348.00 151.00
+*
+1 1
+6 $cc O$
+BOTRIGHT
+388.00 100.00
+342.00 100.00
+365.00 100.00
+388.00 100.00
+*
+1 1
+10 $DP sub 2$
+BOTCENT
+392.00 132.00
+372.00 132.00
+392.00 132.00
+412.00 132.00
+*
+1 1
+6 $AGND$
+POLYGON
+396.00 128.00
+388.00 128.00
+388.00 124.00
+392.00 120.00
+396.00 124.00
+*
+3 21
+0
+VECTOR
+392.00 120.00
+392.00 104.00
+*
+6 0
+0
+BOTRIGHT
+540.00 84.00
+494.00 84.00
+517.00 84.00
+540.00 84.00
+*
+1 1
+10 $DP sub 1$
+BOTRIGHT
+508.00 44.00
+476.00 44.00
+492.00 44.00
+508.00 44.00
+*
+1 1
+7 $cc D1$
+BOTRIGHT
+508.00 76.00
+476.00 76.00
+492.00 76.00
+508.00 76.00
+*
+1 1
+7 $cc D2$
+VECTOR
+672.00 88.00
+672.00 136.00
+720.00 136.00
+720.00 88.00
+672.00 88.00
+*
+3 0
+0
+ARC
+696.00 84.00
+696.00 88.00
+696.00 80.00
+696.00 88.00
+700.00 84.00
+692.00 84.00
+*
+3 0
+0
+BOTCENT
+696.00 88.00
+688.00 88.00
+696.00 88.00
+705.00 88.00
+*
+1 1
+3 $R$
+ARC
+668.00 112.00
+668.00 116.00
+668.00 108.00
+668.00 116.00
+672.00 112.00
+664.00 112.00
+*
+3 0
+0
+CENTLEFT
+676.00 112.00
+676.00 108.00
+688.00 108.00
+700.00 108.00
+*
+1 1
+4 $CK$
+ARC
+724.00 112.00
+724.00 116.00
+724.00 108.00
+724.00 116.00
+720.00 112.00
+728.00 112.00
+*
+3 0
+0
+CENTRIGHT
+720.00 112.00
+688.00 108.00
+704.00 108.00
+720.00 108.00
+*
+1 1
+7 $O bar$
+CENTLEFT
+676.00 128.00
+676.00 124.00
+684.00 124.00
+693.00 124.00
+*
+1 1
+3 $D$
+CENTRIGHT
+720.00 128.00
+703.00 124.00
+711.00 124.00
+720.00 124.00
+*
+1 1
+3 $O$
+VECTOR
+656.00 128.00
+672.00 128.00
+*
+6 0
+0
+VECTOR
+720.00 128.00
+800.00 128.00
+*
+6 0
+0
+CENTRIGHT
+804.00 120.00
+780.00 116.00
+792.00 116.00
+804.00 116.00
+*
+1 1
+4 $UP$
+POLYGON
+800.00 124.00
+800.00 132.00
+804.00 132.00
+808.00 128.00
+804.00 124.00
+*
+3 21
+0
+ARC
+256.00 212.00
+256.00 213.00
+256.00 211.00
+256.00 213.00
+257.00 212.00
+255.00 212.00
+*
+3 0
+0
+VECTOR
+224.00 204.00
+224.00 220.00
+*
+3 0
+0
+VECTOR
+228.00 204.00
+228.00 220.00
+*
+6 0
+0
+VECTOR
+228.00 212.00
+256.00 212.00
+*
+6 0
+0
+VECTOR
+192.00 224.00
+192.00 212.00
+160.00 212.00
+*
+6 0
+0
+ARC
+160.00 214.00
+160.00 212.00
+160.00 212.00
+160.00 216.00
+158.00 214.00
+162.00 214.00
+*
+3 0
+0
+VECTOR
+164.00 224.00
+152.00 220.00
+*
+3 0
+0
+ARC
+160.00 226.00
+160.00 224.00
+160.00 224.00
+160.00 228.00
+158.00 226.00
+162.00 226.00
+*
+3 0
+0
+ARC
+194.00 224.00
+196.00 224.00
+196.00 224.00
+192.00 224.00
+194.00 226.00
+194.00 222.00
+*
+3 0
+0
+VECTOR
+204.00 220.00
+200.00 232.00
+*
+3 0
+0
+VECTOR
+152.00 220.00
+128.00 220.00
+*
+6 0
+0
+ARC
+96.00 214.00
+96.00 212.00
+96.00 212.00
+96.00 216.00
+98.00 214.00
+94.00 214.00
+*
+3 0
+0
+VECTOR
+92.00 224.00
+104.00 220.00
+*
+3 0
+0
+ARC
+96.00 226.00
+96.00 224.00
+96.00 224.00
+96.00 228.00
+98.00 226.00
+94.00 226.00
+*
+3 0
+0
+VECTOR
+124.00 212.00
+124.00 228.00
+*
+3 0
+0
+VECTOR
+128.00 212.00
+128.00 228.00
+*
+6 0
+0
+VECTOR
+104.00 220.00
+124.00 220.00
+*
+6 0
+0
+VECTOR
+96.00 212.00
+96.00 160.00
+40.00 160.00
+*
+6 0
+0
+VECTOR
+96.00 228.00
+76.00 228.00
+*
+6 0
+0
+ARC
+68.00 222.00
+68.00 220.00
+68.00 220.00
+68.00 224.00
+70.00 222.00
+66.00 222.00
+*
+3 0
+0
+VECTOR
+64.00 232.00
+76.00 228.00
+*
+3 0
+0
+ARC
+68.00 234.00
+68.00 232.00
+68.00 232.00
+68.00 236.00
+70.00 234.00
+66.00 234.00
+*
+3 0
+0
+TOPCENT
+228.00 200.00
+215.00 191.00
+228.00 191.00
+242.00 191.00
+*
+1 1
+6 $cc C$
+TOPCENT
+128.00 208.00
+116.00 199.00
+128.00 199.00
+141.00 199.00
+*
+1 1
+6 $cc S$
+CENTLEFT
+204.00 224.00
+204.00 220.00
+227.00 220.00
+250.00 220.00
+*
+1 1
+10 $DP sub 2$
+CENTRIGHT
+154.00 240.00
+129.00 236.00
+141.00 236.00
+154.00 236.00
+*
+1 1
+5 $ITS$
+CENTCENT
+94.00 240.00
+84.00 236.00
+94.00 236.00
+105.00 236.00
+*
+1 1
+4 $SP$
+TOPCENT
+68.00 216.00
+56.00 207.00
+68.00 207.00
+80.00 207.00
+*
+1 1
+4 $PN$
+ARC
+432.00 416.00
+432.00 415.00
+432.00 417.00
+432.00 415.00
+433.00 416.00
+431.00 416.00
+*
+3 0
+0
+ARC
+448.00 64.00
+448.00 63.00
+448.00 65.00
+448.00 63.00
+449.00 64.00
+447.00 64.00
+*
+3 0
+0
+VECTOR
+480.00 248.00
+480.00 232.00
+*
+6 0
+0
+CENTRIGHT
+452.00 240.00
+396.00 236.00
+424.00 236.00
+452.00 236.00
+*
+1 1
+12 $+ ^ vv REF$
+POLYGON
+452.00 244.00
+452.00 236.00
+456.00 236.00
+460.00 240.00
+456.00 244.00
+*
+3 21
+0
+VECTOR
+460.00 240.00
+480.00 240.00
+*
+6 0
+0
+ARC
+480.00 240.00
+480.00 241.00
+480.00 239.00
+480.00 241.00
+481.00 240.00
+479.00 240.00
+*
+3 0
+0
+VECTOR
+160.00 252.00
+160.00 228.00
+*
+6 0
+0
+VECTOR
+160.00 240.00
+224.00 240.00
+*
+6 0
+0
+ARC
+160.00 240.00
+160.00 239.00
+160.00 241.00
+160.00 239.00
+161.00 240.00
+159.00 240.00
+*
+3 0
+0
+ARC
+200.00 240.00
+200.00 239.00
+200.00 241.00
+200.00 239.00
+201.00 240.00
+199.00 240.00
+*
+3 0
+0
+CENTLEFT
+236.00 240.00
+236.00 236.00
+252.00 236.00
+268.00 236.00
+*
+1 1
+5 $GND$
+POLYGON
+232.00 244.00
+232.00 236.00
+228.00 236.00
+224.00 240.00
+228.00 244.00
+*
+3 21
+0
+TOPRIGHT
+540.00 172.00
+494.00 163.00
+517.00 163.00
+540.00 163.00
+*
+1 1
+10 $DP sub 1$
+BOTRIGHT
+540.00 308.00
+494.00 308.00
+517.00 308.00
+540.00 308.00
+*
+1 1
+10 $DP sub 1$
+VECTOR
+340.00 260.00
+340.00 220.00
+300.00 240.00
+340.00 260.00
+*
+3 0
+0
+VECTOR
+340.00 232.00
+384.00 232.00
+384.00 224.00
+*
+6 0
+0
+POLYGON
+380.00 224.00
+392.00 224.00
+384.00 216.00
+376.00 224.00
+*
+6 21
+0
+VECTOR
+340.00 248.00
+392.00 248.00
+*
+6 0
+0
+BOTLEFT
+396.00 256.00
+396.00 256.00
+416.00 256.00
+437.00 256.00
+*
+1 1
+8 $vv INC$
+POLYGON
+400.00 252.00
+400.00 244.00
+396.00 244.00
+392.00 248.00
+396.00 252.00
+*
+3 21
+0
+CENTRIGHT
+336.00 248.00
+319.00 244.00
+327.00 244.00
+336.00 244.00
+*
+1 1
+3 $-$
+CENTRIGHT
+336.00 232.00
+320.00 228.00
+328.00 228.00
+336.00 228.00
+*
+1 1
+3 $+$
+VECTOR
+784.00 192.00
+768.00 192.00
+768.00 160.00
+784.00 160.00
+*
+3 0
+0
+ARC
+784.00 176.00
+784.00 160.00
+784.00 192.00
+*
+3 180
+0
+VECTOR
+784.00 256.00
+768.00 256.00
+768.00 224.00
+784.00 224.00
+*
+3 0
+0
+ARC
+784.00 240.00
+784.00 224.00
+784.00 256.00
+*
+3 180
+0
+ARC
+832.00 312.00
+832.00 296.00
+832.00 328.00
+*
+3 180
+0
+VECTOR
+832.00 328.00
+816.00 328.00
+816.00 296.00
+832.00 296.00
+*
+3 0
+0
+VECTOR
+744.00 368.00
+744.00 312.00
+772.00 312.00
+*
+6 0
+0
+VECTOR
+744.00 312.00
+744.00 240.00
+768.00 240.00
+*
+6 0
+0
+VECTOR
+728.00 112.00
+744.00 112.00
+744.00 232.00
+768.00 232.00
+*
+6 0
+0
+VECTOR
+800.00 304.00
+816.00 304.00
+*
+6 0
+0
+VECTOR
+816.00 320.00
+800.00 320.00
+800.00 332.00
+720.00 332.00
+*
+6 0
+0
+CENTRIGHT
+708.00 332.00
+683.00 328.00
+695.00 328.00
+708.00 328.00
+*
+1 1
+5 $ITS$
+POLYGON
+712.00 336.00
+712.00 328.00
+716.00 328.00
+720.00 332.00
+716.00 336.00
+*
+3 21
+0
+VECTOR
+760.00 332.00
+760.00 184.00
+768.00 184.00
+*
+6 0
+0
+VECTOR
+760.00 248.00
+768.00 248.00
+*
+6 0
+0
+VECTOR
+752.00 128.00
+752.00 168.00
+768.00 168.00
+*
+6 0
+0
+CENTLEFT
+828.00 240.00
+828.00 236.00
+843.00 236.00
+858.00 236.00
+*
+1 1
+5 $ABP$
+POLYGON
+816.00 244.00
+816.00 236.00
+820.00 236.00
+824.00 240.00
+820.00 244.00
+*
+3 21
+0
+VECTOR
+800.00 240.00
+816.00 240.00
+*
+6 0
+0
+CENTLEFT
+828.00 176.00
+828.00 172.00
+844.00 172.00
+860.00 172.00
+*
+1 1
+5 $ABN$
+POLYGON
+816.00 180.00
+816.00 172.00
+820.00 172.00
+824.00 176.00
+820.00 180.00
+*
+3 21
+0
+VECTOR
+800.00 176.00
+816.00 176.00
+*
+6 0
+0
+VECTOR
+848.00 312.00
+864.00 312.00
+*
+6 0
+0
+POLYGON
+864.00 316.00
+864.00 308.00
+868.00 308.00
+872.00 312.00
+868.00 316.00
+*
+3 21
+0
+CENTLEFT
+876.00 312.00
+876.00 308.00
+891.00 308.00
+907.00 308.00
+*
+1 1
+5 $ABC$
+ARC
+760.00 332.00
+760.00 331.00
+760.00 333.00
+760.00 331.00
+761.00 332.00
+759.00 332.00
+*
+3 0
+0
+ARC
+744.00 368.00
+744.00 367.00
+744.00 369.00
+744.00 367.00
+745.00 368.00
+743.00 368.00
+*
+3 0
+0
+ARC
+744.00 312.00
+744.00 311.00
+744.00 313.00
+744.00 311.00
+745.00 312.00
+743.00 312.00
+*
+3 0
+0
+ARC
+760.00 248.00
+760.00 247.00
+760.00 249.00
+760.00 247.00
+761.00 248.00
+759.00 248.00
+*
+3 0
+0
+VECTOR
+752.00 168.00
+752.00 296.00
+772.00 296.00
+*
+6 0
+0
+ARC
+752.00 128.00
+752.00 127.00
+752.00 129.00
+752.00 127.00
+753.00 128.00
+751.00 128.00
+*
+3 0
+0
+ARC
+752.00 168.00
+752.00 167.00
+752.00 169.00
+752.00 167.00
+753.00 168.00
+751.00 168.00
+*
+3 0
+0
+ARC
+28.00 178.00
+28.00 180.00
+28.00 180.00
+28.00 176.00
+30.00 178.00
+26.00 178.00
+*
+3 0
+0
+VECTOR
+24.00 176.00
+40.00 160.00
+*
+3 0
+0
+ARC
+28.00 142.00
+28.00 144.00
+28.00 144.00
+28.00 140.00
+30.00 142.00
+26.00 142.00
+*
+3 0
+0
+ARC
+14.00 160.00
+12.00 160.00
+12.00 160.00
+16.00 160.00
+14.00 162.00
+14.00 158.00
+*
+3 0
+0
+VECTOR
+28.00 300.00
+0.00 300.00
+0.00 180.00
+28.00 180.00
+*
+6 0
+0
+VECTOR
+12.00 320.00
+-16.00 320.00
+-16.00 160.00
+12.00 160.00
+*
+6 0
+0
+VECTOR
+28.00 140.00
+-32.00 140.00
+-32.00 340.00
+28.00 340.00
+*
+6 0
+0
+CENTRIGHT
+-60.00 268.00
+-116.00 264.00
+-88.00 264.00
+-60.00 264.00
+*
+1 1
+12 $+ ^ vv REF$
+POLYGON
+-56.00 272.00
+-56.00 264.00
+-52.00 264.00
+-48.00 268.00
+-52.00 272.00
+*
+3 21
+0
+VECTOR
+-48.00 268.00
+-32.00 268.00
+*
+6 0
+0
+ARC
+-32.00 268.00
+-32.00 267.00
+-32.00 269.00
+-32.00 267.00
+-31.00 268.00
+-33.00 268.00
+*
+3 0
+0
+ARC
+-16.00 240.00
+-16.00 239.00
+-16.00 241.00
+-16.00 239.00
+-15.00 240.00
+-17.00 240.00
+*
+3 0
+0
+VECTOR
+-48.00 240.00
+-16.00 240.00
+*
+6 0
+0
+POLYGON
+-56.00 244.00
+-56.00 236.00
+-52.00 236.00
+-48.00 240.00
+-52.00 244.00
+*
+3 21
+0
+CENTRIGHT
+-60.00 240.00
+-100.00 236.00
+-80.00 236.00
+-60.00 236.00
+*
+1 1
+6 $AGND$
+CENTRIGHT
+-60.00 212.00
+-117.00 208.00
+-89.00 208.00
+-60.00 208.00
+*
+1 1
+12 $- ^ vv REF$
+POLYGON
+-56.00 216.00
+-56.00 208.00
+-52.00 208.00
+-48.00 212.00
+-52.00 216.00
+*
+3 21
+0
+VECTOR
+-48.00 212.00
+0.00 212.00
+*
+6 0
+0
+ARC
+0.00 212.00
+0.00 211.00
+0.00 213.00
+0.00 211.00
+1.00 212.00
+-1.00 212.00
+*
+3 0
+0
+BOTRIGHT
+24.00 344.00
+-6.00 344.00
+9.00 344.00
+24.00 344.00
+*
+1 1
+5 $ABP$
+BOTRIGHT
+12.00 324.00
+-19.00 324.00
+-4.00 324.00
+12.00 324.00
+*
+1 1
+5 $ABC$
+BOTRIGHT
+24.00 304.00
+-8.00 304.00
+8.00 304.00
+24.00 304.00
+*
+1 1
+5 $ABN$
+BOTRIGHT
+24.00 184.00
+-6.00 184.00
+9.00 184.00
+24.00 184.00
+*
+1 1
+5 $ABP$
+BOTRIGHT
+12.00 164.00
+-19.00 164.00
+-4.00 164.00
+12.00 164.00
+*
+1 1
+5 $ABC$
+BOTRIGHT
+24.00 144.00
+-8.00 144.00
+8.00 144.00
+24.00 144.00
+*
+1 1
+5 $ABN$
+VECTOR
+68.00 260.00
+52.00 260.00
+52.00 220.00
+68.00 220.00
+*
+6 0
+0
+VECTOR
+68.00 244.00
+68.00 236.00
+*
+6 0
+0
+VECTOR
+68.00 240.00
+40.00 240.00
+*
+6 0
+0
+VECTOR
+52.00 260.00
+40.00 260.00
+*
+6 0
+0
+CENTRIGHT
+32.00 260.00
+-21.00 256.00
+5.00 256.00
+32.00 256.00
+*
+1 1
+12 $+ ^ vv SIG$
+POLYGON
+32.00 264.00
+32.00 256.00
+36.00 256.00
+40.00 260.00
+36.00 264.00
+*
+3 21
+0
+POLYGON
+32.00 244.00
+32.00 236.00
+36.00 236.00
+40.00 240.00
+36.00 244.00
+*
+3 21
+0
+CENTRIGHT
+32.00 240.00
+-22.00 236.00
+5.00 236.00
+32.00 236.00
+*
+1 1
+12 $- ^ vv SIG$
+ARC
+52.00 260.00
+52.00 259.00
+52.00 261.00
+52.00 259.00
+53.00 260.00
+51.00 260.00
+*
+3 0
+0
+ARC
+68.00 240.00
+68.00 239.00
+68.00 241.00
+68.00 239.00
+69.00 240.00
+67.00 240.00
+*
+3 0
+0
+VECTOR
+64.00 112.00
+96.00 112.00
+96.00 96.00
+*
+6 0
+0
+VECTOR
+88.00 96.00
+104.00 96.00
+*
+3 0
+0
+VECTOR
+88.00 92.00
+104.00 92.00
+*
+6 0
+0
+VECTOR
+96.00 92.00
+96.00 76.00
+*
+6 0
+0
+ARC
+90.00 68.00
+88.00 68.00
+88.00 68.00
+92.00 68.00
+90.00 70.00
+90.00 66.00
+*
+3 0
+0
+VECTOR
+92.00 64.00
+96.00 76.00
+*
+3 0
+0
+ARC
+102.00 68.00
+100.00 68.00
+100.00 68.00
+104.00 68.00
+102.00 70.00
+102.00 66.00
+*
+3 0
+0
+VECTOR
+128.00 92.00
+128.00 4.00
+*
+6 0
+0
+VECTOR
+120.00 96.00
+136.00 96.00
+*
+3 0
+0
+VECTOR
+120.00 92.00
+136.00 92.00
+*
+6 0
+0
+BOTCENT
+128.00 124.00
+119.00 124.00
+128.00 124.00
+137.00 124.00
+*
+1 1
+3 $A$
+POLYGON
+132.00 120.00
+124.00 120.00
+124.00 116.00
+128.00 112.00
+132.00 116.00
+*
+3 21
+0
+VECTOR
+128.00 112.00
+128.00 96.00
+*
+6 0
+0
+VECTOR
+88.00 68.00
+76.00 68.00
+76.00 28.00
+88.00 28.00
+*
+6 0
+0
+VECTOR
+104.00 68.00
+116.00 68.00
+116.00 28.00
+104.00 28.00
+*
+6 0
+0
+BOTLEFT
+100.00 100.00
+100.00 100.00
+114.00 100.00
+128.00 100.00
+*
+1 1
+6 $cc Y$
+BOTLEFT
+132.00 100.00
+132.00 100.00
+145.00 100.00
+158.00 100.00
+*
+1 1
+6 $cc Z$
+BOTRIGHT
+92.00 72.00
+46.00 72.00
+69.00 72.00
+92.00 72.00
+*
+1 1
+10 $DP sub 1$
+CENTRIGHT
+52.00 112.00
+8.00 108.00
+30.00 108.00
+52.00 108.00
+*
+1 1
+10 $+ ^ vv O$
+POLYGON
+56.00 116.00
+56.00 108.00
+60.00 108.00
+64.00 112.00
+60.00 116.00
+*
+3 21
+0
+BOTCENT
+384.00 300.00
+362.00 300.00
+384.00 300.00
+406.00 300.00
+*
+1 1
+10 $+ ^ vv O$
+POLYGON
+388.00 288.00
+380.00 288.00
+380.00 292.00
+384.00 296.00
+388.00 292.00
+*
+3 21
+0
+VECTOR
+384.00 288.00
+384.00 268.00
+*
+6 0
+0
+ARC
+384.00 268.00
+384.00 267.00
+384.00 269.00
+384.00 267.00
+385.00 268.00
+383.00 268.00
+*
+3 0
+0
+TOPCENT
+384.00 180.00
+362.00 171.00
+384.00 171.00
+407.00 171.00
+*
+1 1
+10 $- ^ vv O$
+POLYGON
+388.00 192.00
+380.00 192.00
+380.00 188.00
+384.00 184.00
+388.00 188.00
+*
+3 21
+0
+VECTOR
+384.00 192.00
+384.00 212.00
+*
+6 0
+0
+ARC
+384.00 212.00
+384.00 213.00
+384.00 211.00
+384.00 213.00
+385.00 212.00
+383.00 212.00
+*
+3 0
+0
+TOPLEFT
+132.00 -4.00
+132.00 -13.00
+145.00 -13.00
+158.00 -13.00
+*
+1 1
+6 $cc Z$
+VECTOR
+64.00 -16.00
+96.00 -16.00
+96.00 0.00
+*
+6 0
+0
+VECTOR
+88.00 0.00
+104.00 0.00
+*
+3 0
+0
+VECTOR
+88.00 4.00
+104.00 4.00
+*
+6 0
+0
+VECTOR
+96.00 4.00
+96.00 20.00
+*
+6 0
+0
+ARC
+90.00 28.00
+88.00 28.00
+88.00 28.00
+92.00 28.00
+90.00 26.00
+90.00 30.00
+*
+3 0
+0
+VECTOR
+92.00 32.00
+96.00 20.00
+*
+3 0
+0
+ARC
+102.00 28.00
+100.00 28.00
+100.00 28.00
+104.00 28.00
+102.00 26.00
+102.00 30.00
+*
+3 0
+0
+VECTOR
+120.00 0.00
+136.00 0.00
+*
+3 0
+0
+VECTOR
+120.00 4.00
+136.00 4.00
+*
+6 0
+0
+TOPCENT
+128.00 -28.00
+120.00 -37.00
+128.00 -37.00
+136.00 -37.00
+*
+1 1
+3 $B$
+POLYGON
+132.00 -24.00
+124.00 -24.00
+124.00 -20.00
+128.00 -16.00
+132.00 -20.00
+*
+3 21
+0
+VECTOR
+128.00 -16.00
+128.00 0.00
+*
+6 0
+0
+TOPLEFT
+100.00 -4.00
+100.00 -13.00
+114.00 -13.00
+128.00 -13.00
+*
+1 1
+6 $cc Y$
+CENTRIGHT
+92.00 24.00
+46.00 20.00
+69.00 20.00
+92.00 20.00
+*
+1 1
+10 $DP sub 1$
+CENTRIGHT
+52.00 -16.00
+8.00 -20.00
+30.00 -20.00
+52.00 -20.00
+*
+1 1
+10 $+ ^ vv O$
+POLYGON
+56.00 -20.00
+56.00 -12.00
+60.00 -12.00
+64.00 -16.00
+60.00 -20.00
+*
+3 21
+0
+VECTOR
+116.00 48.00
+152.00 48.00
+*
+6 0
+0
+CENTLEFT
+164.00 48.00
+164.00 44.00
+184.00 44.00
+205.00 44.00
+*
+1 1
+8 $vv INC$
+POLYGON
+152.00 44.00
+152.00 52.00
+156.00 52.00
+160.00 48.00
+156.00 44.00
+*
+3 21
+0
+ARC
+116.00 48.00
+116.00 49.00
+116.00 47.00
+116.00 49.00
+117.00 48.00
+115.00 48.00
+*
+3 0
+0
+ARC
+128.00 48.00
+128.00 49.00
+128.00 47.00
+128.00 49.00
+129.00 48.00
+127.00 48.00
+*
+3 0
+0
+ARC
+76.00 48.00
+76.00 49.00
+76.00 47.00
+76.00 49.00
+77.00 48.00
+75.00 48.00
+*
+3 0
+0
+VECTOR
+56.00 48.00
+76.00 48.00
+*
+6 0
+0
+POLYGON
+48.00 52.00
+48.00 44.00
+52.00 44.00
+56.00 48.00
+52.00 52.00
+*
+3 21
+0
+CENTRIGHT
+48.00 48.00
+15.00 44.00
+31.00 44.00
+48.00 44.00
+*
+1 1
+7 $vv B1$
+-1
diff --git a/doc/grnexmpl.me b/doc/grnexmpl.me
new file mode 100644
index 0000000..641d15c
--- /dev/null
+++ b/doc/grnexmpl.me
@@ -0,0 +1,88 @@
+.nr pp 12
+.nr tp 12
+.nr sp 12
+.nr fi 0
+.ls 1
+.po 1i
+.pl 11i
+.EQ
+gsize 12
+delim $$
+define // 'over down 10'
+define sw 'phi sub'
+define aa 'A sub'
+define vv 'V sub'
+define mm 'M sub'
+define nn 'N sub'
+define cc 'C sub'
+define ll 'L sub'
+define rr 'R sub'
+define ss 'S sub'
+define gg 'g sub'
+define ff 'F sub'
+define qq 'Q sub'
+define qqq '{C prime} sub'
+define pp 'P sub'
+define tt 'T sub'
+define zz 'Z sub'
+define kk 'K sub'
+define ii 'I sub'
+define iis 'IC sub'
+define e2 '2 sup'
+define sunc '{ sin x } / x'
+define vddm1V 'vv DD - 1 ^ roman V'
+define vssp1V 'vv SS + 1 ^ roman V'
+.EN
+.pp
+The following slide shows the complete schematics of the
+fully-differential RIC. The operation includes a
+correlated-double-sampling phase that occurs once every 256
+clock periods, also called the
+.i "spreading ratio" .
+This reset phase is controlled by clocks $ DP sub 1 $ and $ DP
+sub 2 $ in which the integrator is initialized by totally
+removing the charge from $ cc F $ and storing the low-frequency
+noise of the op amp in $ cc C $. At the same time the comparison
+thresholds are set.
+.fl
+.po -0.2i
+.sp 2
+.lp
+.(b
+.EQ
+gsize -4
+.EN
+.GS
+roman 1
+italics 2
+bold 3
+special 4
+narrow 1
+medium 3
+thick 5
+width 5.5
+l mg
+file grnexmpl.g
+.GE
+.EQ
+gsize +4
+.EN
+.)b
+.fl
+.po +0.2i
+.pp
+The faster clocks are $ PN $, $ ITS $ and $ SP $. The sampling
+capacitor $ cc S $ performs the delayed subtraction of a sample
+of the input signal $ +- ^ vv SIG $ and a choice of $ - ^ vv REF
+$, $ AGND $ or $ + ^ vv REF $ according to the operations
+performed by the logic partially depicted operating on past
+results of the comparisons. The synchronous comparators are
+reset at this fast rates, thus performing one comparison for
+every fast clock cycle. The dynamic common-mode feedback
+arrangement operates synchronously with the reset time slot and
+its configuration is equivalent to that in the differential
+feedback path.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/doc/groff.css b/doc/groff.css
new file mode 100644
index 0000000..ea36359
--- /dev/null
+++ b/doc/groff.css
@@ -0,0 +1,17 @@
+
+body {
+ margin-top: 0%;
+ margin-left: 0%;
+ margin-right: 0%;
+ margin-bottom: 0%;
+ background-color: white;
+ color: black;
+}
+
+pre {
+ background-color: #E0E0E0;
+ color: black;
+ border: thin;
+ border-style: solid;
+}
+
diff --git a/doc/groff.dvi b/doc/groff.dvi
new file mode 100644
index 0000000..9efd1f6
--- /dev/null
+++ b/doc/groff.dvi
Binary files differ
diff --git a/doc/groff.html b/doc/groff.html
new file mode 100644
index 0000000..e085b9e
--- /dev/null
+++ b/doc/groff.html
@@ -0,0 +1,24945 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>The GNU Troff Manual</title>
+
+<meta name="description" content="The GNU Troff Manual">
+<meta name="keywords" content="The GNU Troff Manual">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="#Top" rel="start" title="Top">
+<link href="#Request-Index" rel="index" title="Request Index">
+<link href="#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="dir.html#Top" rel="up" title="(dir)">
+<link href="#Introduction" rel="next" title="Introduction">
+<link href="dir.html#Top" rel="prev" title="(dir)">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+a.summary-letter-printindex {text-decoration: none}
+div.center {text-align:center}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+p.flushright-paragraph {text-align:right}
+pre.display-preformatted {font-family: inherit}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+span.w-nolinebreak-text {white-space: nowrap}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+td.printindex-index-entry {vertical-align: top}
+td.printindex-index-section {vertical-align: top}
+th.entries-header-printindex {text-align:left}
+th.sections-header-printindex {text-align:left}
+ul.mark-bullet {list-style-type: disc}
+ul.toc-numbered-mark {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="top-level-extent" id="Top">
+<div class="nav-panel">
+<p>
+Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Previous: <a href="dir.html#Top" accesskey="p" rel="prev">(dir)</a>, Up: <a href="dir.html#Top" accesskey="u" rel="up">(dir)</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h1 class="top" id="GNU-troff">GNU <code class="code">troff</code></h1>
+
+
+<p>This manual documents GNU <code class="code">troff</code> version 1.23.0.
+</p>
+<p>Copyright &copy; 1994&ndash;2023 Free Software Foundation, Inc.
+</p>
+<blockquote class="quotation">
+<p>Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled &ldquo;GNU Free
+Documentation License&rdquo;.
+</p></blockquote>
+
+
+
+
+
+<div class="element-contents" id="SEC_Contents">
+<h2 class="contents-heading">Table of Contents</h2>
+
+<div class="contents">
+
+<ul class="toc-numbered-mark">
+ <li><a id="toc-Introduction-1" href="#Introduction">1 Introduction</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Background-1" href="#Background">1.1 Background</a></li>
+ <li><a id="toc-What-Is-groff_003f-1" href="#What-Is-groff_003f">1.2 What Is <code class="code">groff</code>?</a></li>
+ <li><a id="toc-groff-Capabilities-1" href="#groff-Capabilities">1.3 <code class="code">groff</code> Capabilities</a></li>
+ <li><a id="toc-Macro-Packages-1" href="#Macro-Package-Intro">1.4 Macro Packages</a></li>
+ <li><a id="toc-Preprocessors" href="#Preprocessor-Intro">1.5 Preprocessors</a></li>
+ <li><a id="toc-Output-Devices" href="#Output-Device-Intro">1.6 Output Devices</a></li>
+ <li><a id="toc-Installation-1" href="#Installation">1.7 Installation</a></li>
+ <li><a id="toc-Conventions-Used-in-This-Manual-1" href="#Conventions-Used-in-This-Manual">1.8 Conventions Used in This Manual</a></li>
+ <li><a id="toc-Credits-1" href="#Credits">1.9 Credits</a></li>
+ </ul></li>
+ <li><a id="toc-Invoking-groff-1" href="#Invoking-groff">2 Invoking <code class="code">groff</code></a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Options" href="#Groff-Options">2.1 Options</a></li>
+ <li><a id="toc-Environment-1" href="#Environment">2.2 Environment</a></li>
+ <li><a id="toc-Macro-Directories-1" href="#Macro-Directories">2.3 Macro Directories</a></li>
+ <li><a id="toc-Font-Directories-1" href="#Font-Directories">2.4 Font Directories</a></li>
+ <li><a id="toc-Paper-Format-1" href="#Paper-Format">2.5 Paper Format</a></li>
+ <li><a id="toc-Invocation-Examples-1" href="#Invocation-Examples">2.6 Invocation Examples</a></li>
+ </ul></li>
+ <li><a id="toc-Tutorial-for-Macro-Users-1" href="#Tutorial-for-Macro-Users">3 Tutorial for Macro Users</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Basics-1" href="#Basics">3.1 Basics</a></li>
+ <li><a id="toc-Common-Features-1" href="#Common-Features">3.2 Common Features</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Paragraphs-1" href="#Paragraphs">3.2.1 Paragraphs</a></li>
+ <li><a id="toc-Sections-and-Chapters-1" href="#Sections-and-Chapters">3.2.2 Sections and Chapters</a></li>
+ <li><a id="toc-Headers-and-Footers-1" href="#Headers-and-Footers">3.2.3 Headers and Footers</a></li>
+ <li><a id="toc-Page-Layout-1" href="#Page-Layout-Adjustment">3.2.4 Page Layout</a></li>
+ <li><a id="toc-Displays-and-Keeps-1" href="#Displays-and-Keeps">3.2.5 Displays and Keeps</a></li>
+ <li><a id="toc-Footnotes-and-Endnotes-1" href="#Footnotes-and-Endnotes">3.2.6 Footnotes and Endnotes</a></li>
+ <li><a id="toc-Table-of-Contents-1" href="#Table-of-Contents">3.2.7 Table of Contents</a></li>
+ <li><a id="toc-Indexing-1" href="#Indexing">3.2.8 Indexing</a></li>
+ <li><a id="toc-Document-Formats-1" href="#Document-Formats">3.2.9 Document Formats</a></li>
+ <li><a id="toc-Columnation-1" href="#Columnation">3.2.10 Columnation</a></li>
+ <li><a id="toc-Font-and-Size-Changes-1" href="#Font-and-Size-Changes">3.2.11 Font and Size Changes</a></li>
+ <li><a id="toc-Predefined-Text-1" href="#Predefined-Text">3.2.12 Predefined Text</a></li>
+ <li><a id="toc-Preprocessor-Support-1" href="#Preprocessor-Support">3.2.13 Preprocessor Support</a></li>
+ <li><a id="toc-Configuration-and-Customization-1" href="#Configuration-and-Customization">3.2.14 Configuration and Customization</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a id="toc-Macro-Packages-2" href="#Major-Macro-Packages">4 Macro Packages</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-man-1" href="#man">4.1 <samp class="file">man</samp></a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Optional-man-extensions-1" href="#Optional-man-extensions">4.1.1 Optional <samp class="file">man</samp> extensions</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Custom-headers-and-footers" href="#Custom-headers-and-footers">Custom headers and footers</a></li>
+ <li><a id="toc-Ultrix_002dspecific-man-macros" href="#Ultrix_002dspecific-man-macros">Ultrix-specific man macros</a></li>
+ <li><a id="toc-Simple-example" href="#Simple-example">Simple example</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a id="toc-mdoc-1" href="#mdoc">4.2 <samp class="file">mdoc</samp></a></li>
+ <li><a id="toc-me-1" href="#me">4.3 <samp class="file">me</samp></a></li>
+ <li><a id="toc-mm-1" href="#mm">4.4 <samp class="file">mm</samp></a></li>
+ <li><a id="toc-mom-1" href="#mom">4.5 <samp class="file">mom</samp></a></li>
+ <li><a id="toc-ms-1" href="#ms">4.6 <samp class="file">ms</samp></a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Introduction-2" href="#ms-Introduction">4.6.1 Introduction</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Basic-information" href="#ms-basic-information">4.6.1.1 Basic information</a></li>
+ </ul></li>
+ <li><a id="toc-Document-Structure" href="#ms-Document-Structure">4.6.2 Document Structure</a></li>
+ <li><a id="toc-Document-Control-Settings" href="#ms-Document-Control-Settings">4.6.3 Document Control Settings</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Margin-settings" href="#Margin-settings">Margin settings</a></li>
+ <li><a id="toc-Titles-_0028headers_002c-footers_0029" href="#Titles-_0028headers_002c-footers_0029">Titles (headers, footers)</a></li>
+ <li><a id="toc-Text-settings" href="#Text-settings">Text settings</a></li>
+ <li><a id="toc-Paragraph-settings" href="#Paragraph-settings">Paragraph settings</a></li>
+ <li><a id="toc-Heading-settings" href="#Heading-settings">Heading settings</a></li>
+ <li><a id="toc-Footnote-settings" href="#Footnote-settings">Footnote settings</a></li>
+ <li><a id="toc-Display-settings" href="#Display-settings">Display settings</a></li>
+ <li><a id="toc-Other-settings" href="#Other-settings">Other settings</a></li>
+ </ul></li>
+ <li><a id="toc-Document-Description-Macros" href="#ms-Document-Description-Macros">4.6.4 Document Description Macros</a></li>
+ <li><a id="toc-Body-Text" href="#ms-Body-Text">4.6.5 Body Text</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Text-settings-1" href="#Text-settings-in-ms">4.6.5.1 Text settings</a></li>
+ <li><a id="toc-Typographical-symbols" href="#Typographical-symbols-in-ms">4.6.5.2 Typographical symbols</a></li>
+ <li><a id="toc-Paragraphs-2" href="#Paragraphs-in-ms">4.6.5.3 Paragraphs</a></li>
+ <li><a id="toc-Headings" href="#Headings-in-ms">4.6.5.4 Headings</a></li>
+ <li><a id="toc-Typeface-and-decoration-1" href="#Typeface-and-decoration">4.6.5.5 Typeface and decoration</a></li>
+ <li><a id="toc-Lists" href="#Lists-in-ms">4.6.5.6 Lists</a></li>
+ <li><a id="toc-Indented-regions" href="#Indented-regions-in-ms">4.6.5.7 Indented regions</a></li>
+ <li><a id="toc-Keeps_002c-boxed-keeps_002c-and-displays" href="#ms-keeps-and-displays">4.6.5.8 Keeps, boxed keeps, and displays</a></li>
+ <li><a id="toc-Tables_002c-figures_002c-equations_002c-and-references" href="#ms-Insertions">4.6.5.9 Tables, figures, equations, and references</a></li>
+ <li><a id="toc-Footnotes" href="#ms-Footnotes">4.6.5.10 Footnotes</a></li>
+ <li><a id="toc-Language-and-localization" href="#ms-language-and-localization">4.6.5.11 Language and localization</a></li>
+ </ul></li>
+ <li><a id="toc-Page-layout" href="#ms-Page-Layout">4.6.6 Page layout</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Headers-and-footers" href="#ms-Headers-and-Footers">4.6.6.1 Headers and footers</a></li>
+ <li><a id="toc-Tab-stops" href="#Tab-Stops-in-ms">4.6.6.2 Tab stops</a></li>
+ <li><a id="toc-Margins" href="#ms-Margins">4.6.6.3 Margins</a></li>
+ <li><a id="toc-Multiple-columns" href="#ms-Multiple-Columns">4.6.6.4 Multiple columns</a></li>
+ <li><a id="toc-Creating-a-table-of-contents" href="#ms-TOC">4.6.6.5 Creating a table of contents</a></li>
+ </ul></li>
+ <li><a id="toc-Differences-from-AT_0026T-ms-1" href="#Differences-from-AT_0026T-ms">4.6.7 Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Unix-Version-7-ms-macros-not-implemented-by-groff-ms" href="#Missing-Unix-Version-7-ms-Macros">4.6.7.1 Unix Version 7 <samp class="file">ms</samp> macros not implemented by <code class="code">groff</code> <samp class="file">ms</samp></a></li>
+ </ul></li>
+ <li><a id="toc-Legacy-Features" href="#ms-Legacy-Features">4.6.8 Legacy Features</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-AT_0026T-accent-mark-strings" href="#AT_0026T-accent-mark-strings">AT&amp;T accent mark strings</a></li>
+ <li><a id="toc-Berkeley-accent-mark-and-glyph-strings" href="#Berkeley-accent-mark-and-glyph-strings">Berkeley accent mark and glyph strings</a></li>
+ </ul></li>
+ <li><a id="toc-Naming-Conventions" href="#ms-Naming-Conventions">4.6.9 Naming Conventions</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a id="toc-GNU-troff-Reference-1" href="#GNU-troff-Reference">5 GNU <code class="code">troff</code> Reference</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Text-1" href="#Text">5.1 Text</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Filling-1" href="#Filling">5.1.1 Filling</a></li>
+ <li><a id="toc-Sentences-1" href="#Sentences">5.1.2 Sentences</a></li>
+ <li><a id="toc-Hyphenation-1" href="#Hyphenation">5.1.3 Hyphenation</a></li>
+ <li><a id="toc-Breaking-1" href="#Breaking">5.1.4 Breaking</a></li>
+ <li><a id="toc-Adjustment-1" href="#Adjustment">5.1.5 Adjustment</a></li>
+ <li><a id="toc-Tabs-and-Leaders-1" href="#Tabs-and-Leaders">5.1.6 Tabs and Leaders</a></li>
+ <li><a id="toc-Requests-and-Macros-1" href="#Requests-and-Macros">5.1.7 Requests and Macros</a></li>
+ <li><a id="toc-Macro-Packages-3" href="#Macro-Packages">5.1.8 Macro Packages</a></li>
+ <li><a id="toc-Input-Encodings-1" href="#Input-Encodings">5.1.9 Input Encodings</a></li>
+ <li><a id="toc-Input-Conventions-1" href="#Input-Conventions">5.1.10 Input Conventions</a></li>
+ </ul></li>
+ <li><a id="toc-Page-Geometry-1" href="#Page-Geometry">5.2 Page Geometry</a></li>
+ <li><a id="toc-Measurements-1" href="#Measurements">5.3 Measurements</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Motion-Quanta-1" href="#Motion-Quanta">5.3.1 Motion Quanta</a></li>
+ <li><a id="toc-Default-Units-1" href="#Default-Units">5.3.2 Default Units</a></li>
+ </ul></li>
+ <li><a id="toc-Numeric-Expressions-1" href="#Numeric-Expressions">5.4 Numeric Expressions</a></li>
+ <li><a id="toc-Identifiers-1" href="#Identifiers">5.5 Identifiers</a></li>
+ <li><a id="toc-Formatter-Instructions-1" href="#Formatter-Instructions">5.6 Formatter Instructions</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Control-Characters-1" href="#Control-Characters">5.6.1 Control Characters</a></li>
+ <li><a id="toc-Invoking-Requests-1" href="#Invoking-Requests">5.6.2 Invoking Requests</a></li>
+ <li><a id="toc-Calling-Macros-1" href="#Calling-Macros">5.6.3 Calling Macros</a></li>
+ <li><a id="toc-Using-Escape-Sequences-1" href="#Using-Escape-Sequences">5.6.4 Using Escape Sequences</a></li>
+ <li><a id="toc-Delimiters-1" href="#Delimiters">5.6.5 Delimiters</a></li>
+ </ul></li>
+ <li><a id="toc-Comments-1" href="#Comments">5.7 Comments</a></li>
+ <li><a id="toc-Registers-1" href="#Registers">5.8 Registers</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Setting-Registers-1" href="#Setting-Registers">5.8.1 Setting Registers</a></li>
+ <li><a id="toc-Interpolating-Registers-1" href="#Interpolating-Registers">5.8.2 Interpolating Registers</a></li>
+ <li><a id="toc-Auto_002dincrement-1" href="#Auto_002dincrement">5.8.3 Auto-increment</a></li>
+ <li><a id="toc-Assigning-Register-Formats-1" href="#Assigning-Register-Formats">5.8.4 Assigning Register Formats</a></li>
+ <li><a id="toc-Built_002din-Registers-1" href="#Built_002din-Registers">5.8.5 Built-in Registers</a></li>
+ </ul></li>
+ <li><a id="toc-Manipulating-Filling-and-Adjustment-1" href="#Manipulating-Filling-and-Adjustment">5.9 Manipulating Filling and Adjustment</a></li>
+ <li><a id="toc-Manipulating-Hyphenation-1" href="#Manipulating-Hyphenation">5.10 Manipulating Hyphenation</a></li>
+ <li><a id="toc-Manipulating-Spacing-1" href="#Manipulating-Spacing">5.11 Manipulating Spacing</a></li>
+ <li><a id="toc-Tabs-and-Fields-1" href="#Tabs-and-Fields">5.12 Tabs and Fields</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Leaders-1" href="#Leaders">5.12.1 Leaders</a></li>
+ <li><a id="toc-Fields-1" href="#Fields">5.12.2 Fields</a></li>
+ </ul></li>
+ <li><a id="toc-Character-Translations-1" href="#Character-Translations">5.13 Character Translations</a></li>
+ <li><a id="toc-troff-and-nroff-Modes-1" href="#troff-and-nroff-Modes">5.14 <code class="code">troff</code> and <code class="code">nroff</code> Modes</a></li>
+ <li><a id="toc-Line-Layout-1" href="#Line-Layout">5.15 Line Layout</a></li>
+ <li><a id="toc-Line-Continuation-1" href="#Line-Continuation">5.16 Line Continuation</a></li>
+ <li><a id="toc-Page-Layout-2" href="#Page-Layout">5.17 Page Layout</a></li>
+ <li><a id="toc-Page-Control-1" href="#Page-Control">5.18 Page Control</a></li>
+ <li><a id="toc-Using-Fonts-1" href="#Using-Fonts">5.19 Using Fonts</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Selecting-Fonts-1" href="#Selecting-Fonts">5.19.1 Selecting Fonts</a></li>
+ <li><a id="toc-Font-Families-1" href="#Font-Families">5.19.2 Font Families</a></li>
+ <li><a id="toc-Font-Positions-1" href="#Font-Positions">5.19.3 Font Positions</a></li>
+ <li><a id="toc-Using-Symbols-1" href="#Using-Symbols">5.19.4 Using Symbols</a></li>
+ <li><a id="toc-Character-Classes-1" href="#Character-Classes">5.19.5 Character Classes</a></li>
+ <li><a id="toc-Special-Fonts-1" href="#Special-Fonts">5.19.6 Special Fonts</a></li>
+ <li><a id="toc-Artificial-Fonts-1" href="#Artificial-Fonts">5.19.7 Artificial Fonts</a></li>
+ <li><a id="toc-Ligatures-and-Kerning-1" href="#Ligatures-and-Kerning">5.19.8 Ligatures and Kerning</a></li>
+ <li><a id="toc-Italic-Corrections-1" href="#Italic-Corrections">5.19.9 Italic Corrections</a></li>
+ <li><a id="toc-Dummy-Characters-1" href="#Dummy-Characters">5.19.10 Dummy Characters</a></li>
+ </ul></li>
+ <li><a id="toc-Manipulating-Type-Size-and-Vertical-Spacing-1" href="#Manipulating-Type-Size-and-Vertical-Spacing">5.20 Manipulating Type Size and Vertical Spacing</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Changing-the-Type-Size-1" href="#Changing-the-Type-Size">5.20.1 Changing the Type Size</a></li>
+ <li><a id="toc-Changing-the-Vertical-Spacing-1" href="#Changing-the-Vertical-Spacing">5.20.2 Changing the Vertical Spacing</a></li>
+ <li><a id="toc-Using-Fractional-Type-Sizes-1" href="#Using-Fractional-Type-Sizes">5.20.3 Using Fractional Type Sizes</a></li>
+ </ul></li>
+ <li><a id="toc-Colors-1" href="#Colors">5.21 Colors</a></li>
+ <li><a id="toc-Strings-1" href="#Strings">5.22 Strings</a></li>
+ <li><a id="toc-Conditionals-and-Loops-1" href="#Conditionals-and-Loops">5.23 Conditionals and Loops</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Operators-in-Conditionals-1" href="#Operators-in-Conditionals">5.23.1 Operators in Conditionals</a></li>
+ <li><a id="toc-if_002dthen-1" href="#if_002dthen">5.23.2 if-then</a></li>
+ <li><a id="toc-if_002delse-1" href="#if_002delse">5.23.3 if-else</a></li>
+ <li><a id="toc-Conditional-Blocks-1" href="#Conditional-Blocks">5.23.4 Conditional Blocks</a></li>
+ <li><a id="toc-while-1" href="#while">5.23.5 while</a></li>
+ </ul></li>
+ <li><a id="toc-Writing-Macros-1" href="#Writing-Macros">5.24 Writing Macros</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Parameters-1" href="#Parameters">5.24.1 Parameters</a></li>
+ <li><a id="toc-Copy-Mode-1" href="#Copy-Mode">5.24.2 Copy Mode</a></li>
+ </ul></li>
+ <li><a id="toc-Page-Motions-1" href="#Page-Motions">5.25 Page Motions</a></li>
+ <li><a id="toc-Drawing-Geometric-Objects-1" href="#Drawing-Geometric-Objects">5.26 Drawing Geometric Objects</a></li>
+ <li><a id="toc-Deferring-Output-1" href="#Deferring-Output">5.27 Deferring Output</a></li>
+ <li><a id="toc-Traps-1" href="#Traps">5.28 Traps</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Vertical-Position-Traps-1" href="#Vertical-Position-Traps">5.28.1 Vertical Position Traps</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Page-Location-Traps-1" href="#Page-Location-Traps">5.28.1.1 Page Location Traps</a></li>
+ <li><a id="toc-The-Implicit-Page-Trap-1" href="#The-Implicit-Page-Trap">5.28.1.2 The Implicit Page Trap</a></li>
+ <li><a id="toc-Diversion-Traps-1" href="#Diversion-Traps">5.28.1.3 Diversion Traps</a></li>
+ </ul></li>
+ <li><a id="toc-Input-Line-Traps-1" href="#Input-Line-Traps">5.28.2 Input Line Traps</a></li>
+ <li><a id="toc-Blank-Line-Traps-1" href="#Blank-Line-Traps">5.28.3 Blank Line Traps</a></li>
+ <li><a id="toc-Leading-Space-Traps-1" href="#Leading-Space-Traps">5.28.4 Leading Space Traps</a></li>
+ <li><a id="toc-End_002dof_002dinput-Traps-1" href="#End_002dof_002dinput-Traps">5.28.5 End-of-input Traps</a></li>
+ </ul></li>
+ <li><a id="toc-Diversions-1" href="#Diversions">5.29 Diversions</a></li>
+ <li><a id="toc-Punning-Names-1" href="#Punning-Names">5.30 Punning Names</a></li>
+ <li><a id="toc-Environments-1" href="#Environments">5.31 Environments</a></li>
+ <li><a id="toc-Suppressing-Output-1" href="#Suppressing-Output">5.32 Suppressing Output</a></li>
+ <li><a id="toc-I_002fO-1" href="#I_002fO">5.33 I/O</a></li>
+ <li><a id="toc-Postprocessor-Access-1" href="#Postprocessor-Access">5.34 Postprocessor Access</a></li>
+ <li><a id="toc-Miscellaneous-1" href="#Miscellaneous">5.35 Miscellaneous</a></li>
+ <li><a id="toc-gtroff-Internals" href="#Gtroff-Internals">5.36 <code class="code">gtroff</code> Internals</a></li>
+ <li><a id="toc-Debugging-1" href="#Debugging">5.37 Debugging</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Warnings-1" href="#Warnings">5.37.1 Warnings</a></li>
+ </ul></li>
+ <li><a id="toc-Implementation-Differences-1" href="#Implementation-Differences">5.38 Implementation Differences</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Safer-Mode-1" href="#Safer-Mode">5.38.1 Safer Mode</a></li>
+ <li><a id="toc-Compatibility-Mode-1" href="#Compatibility-Mode">5.38.2 Compatibility Mode</a></li>
+ <li><a id="toc-Other-Differences-1" href="#Other-Differences">5.38.3 Other Differences</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a id="toc-File-Formats-1" href="#File-Formats">6 File Formats</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-gtroff-Output-1" href="#gtroff-Output">6.1 <code class="code">gtroff</code> Output</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Language-Concepts-1" href="#Language-Concepts">6.1.1 Language Concepts</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Separation-1" href="#Separation">6.1.1.1 Separation</a></li>
+ <li><a id="toc-Argument-Units-1" href="#Argument-Units">6.1.1.2 Argument Units</a></li>
+ <li><a id="toc-Document-Parts-1" href="#Document-Parts">6.1.1.3 Document Parts</a></li>
+ </ul></li>
+ <li><a id="toc-Command-Reference-1" href="#Command-Reference">6.1.2 Command Reference</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Comment-Command-1" href="#Comment-Command">6.1.2.1 Comment Command</a></li>
+ <li><a id="toc-Simple-Commands-1" href="#Simple-Commands">6.1.2.2 Simple Commands</a></li>
+ <li><a id="toc-Graphics-Commands-1" href="#Graphics-Commands">6.1.2.3 Graphics Commands</a></li>
+ <li><a id="toc-Device-Control-Commands-1" href="#Device-Control-Commands">6.1.2.4 Device Control Commands</a></li>
+ <li><a id="toc-Obsolete-Command-1" href="#Obsolete-Command">6.1.2.5 Obsolete Command</a></li>
+ </ul></li>
+ <li><a id="toc-Intermediate-Output-Examples-1" href="#Intermediate-Output-Examples">6.1.3 Intermediate Output Examples</a></li>
+ <li><a id="toc-Output-Language-Compatibility-1" href="#Output-Language-Compatibility">6.1.4 Output Language Compatibility</a></li>
+ </ul></li>
+ <li><a id="toc-Device-and-Font-Description-Files-1" href="#Device-and-Font-Description-Files">6.2 Device and Font Description Files</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-DESC-File-Format-1" href="#DESC-File-Format">6.2.1 <samp class="file">DESC</samp> File Format</a></li>
+ <li><a id="toc-Font-Description-File-Format-1" href="#Font-Description-File-Format">6.2.2 Font Description File Format</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a id="toc-Copying-This-Manual-1" href="#Copying-This-Manual">Appendix A Copying This Manual</a></li>
+ <li><a id="toc-Request-Index-1" href="#Request-Index" rel="index">Appendix B Request Index</a></li>
+ <li><a id="toc-Escape-Sequence-Index-1" href="#Escape-Sequence-Index" rel="index">Appendix C Escape Sequence Index</a></li>
+ <li><a id="toc-Operator-Index-1" href="#Operator-Index" rel="index">Appendix D Operator Index</a></li>
+ <li><a id="toc-Register-Index-1" href="#Register-Index" rel="index">Appendix E Register Index</a></li>
+ <li><a id="toc-Macro-Index-1" href="#Macro-Index" rel="index">Appendix F Macro Index</a></li>
+ <li><a id="toc-String-Index-1" href="#String-Index" rel="index">Appendix G String Index</a></li>
+ <li><a id="toc-File-Keyword-Index-1" href="#File-Keyword-Index" rel="index">Appendix H File Keyword Index</a></li>
+ <li><a id="toc-Program-and-File-Index-1" href="#Program-and-File-Index" rel="index">Appendix I Program and File Index</a></li>
+ <li><a id="toc-Concept-Index-1" href="#Concept-Index" rel="index">Appendix J Concept Index</a></li>
+</ul>
+</div>
+</div>
+<hr>
+<div class="chapter-level-extent" id="Introduction">
+<div class="nav-panel">
+<p>
+Next: <a href="#Invoking-groff" accesskey="n" rel="next">Invoking <code class="code">groff</code></a>, Previous: <a href="#Top" accesskey="p" rel="prev">GNU <code class="code">troff</code></a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="chapter" id="Introduction-1">1 Introduction</h2>
+<a class="index-entry-id" id="index-introduction"></a>
+
+<p>GNU <code class="code">roff</code> (or <code class="code">groff</code>) is a programming system for
+typesetting documents. It is highly flexible and has been used
+extensively for over thirty years.
+</p>
+
+
+
+<ul class="mini-toc">
+<li><a href="#Background" accesskey="1">Background</a></li>
+<li><a href="#What-Is-groff_003f" accesskey="2">What Is <code class="code">groff</code>?</a></li>
+<li><a href="#groff-Capabilities" accesskey="3"><code class="code">groff</code> Capabilities</a></li>
+<li><a href="#Macro-Package-Intro" accesskey="4">Macro Packages</a></li>
+<li><a href="#Preprocessor-Intro" accesskey="5">Preprocessors</a></li>
+<li><a href="#Output-Device-Intro" accesskey="6">Output Devices</a></li>
+<li><a href="#Installation" accesskey="7">Installation</a></li>
+<li><a href="#Conventions-Used-in-This-Manual" accesskey="8">Conventions Used in This Manual</a></li>
+<li><a href="#Credits" accesskey="9">Credits</a></li>
+</ul>
+<hr>
+<div class="section-level-extent" id="Background">
+<div class="nav-panel">
+<p>
+Next: <a href="#What-Is-groff_003f" accesskey="n" rel="next">What Is <code class="code">groff</code>?</a>, Previous: <a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Background-1">1.1 Background</h3>
+<a class="index-entry-id" id="index-background"></a>
+
+<p>M. Douglas McIlroy, formerly of AT&amp;T Bell Laboratories and present at
+the creation of the Unix operating system, offers an authoritative
+historical summary.
+</p>
+<blockquote class="quotation">
+<p>The prime reason for Unix was the desire of Ken [Thompson], Dennis
+[Ritchie], and Joe Ossanna to have a pleasant environment for software
+development. The fig leaf that got the nod from &hellip;
+management was that an early use would be to develop a &ldquo;stand-alone&rdquo;
+word-processing system for use in typing pools and secretarial offices.
+Perhaps they had in mind &ldquo;dedicated&rdquo;, as distinct from
+&ldquo;stand-alone&rdquo;; that&rsquo;s what eventuated in various cases, most notably
+in the legal/patent department and in the AT&amp;T CEO&rsquo;s office.
+</p>
+<p>Both those systems were targets of opportunity, not foreseen from the
+start. When Unix was up and running on the PDP-11, Joe got wind of
+the legal department having installed a commercial word processor.
+He went to pitch Unix as an alternative and clinched a trial by
+promising to make <code class="code">roff</code> able to number lines by tomorrow in order
+to fulfill a patent-office requirement that the commercial system did
+not support.
+</p>
+<p>Modems were installed so legal-department secretaries could try the
+Research machine. They liked it and Joe&rsquo;s superb customer service.
+Soon the legal department got a system of their own. Joe went on to
+create <code class="code">nroff</code> and <code class="code">troff</code>. Document preparation became a
+widespread use of Unix, but no stand-alone word-processing system was
+ever undertaken.
+</p></blockquote>
+
+<p>A history relating <code class="code">groff</code> to its predecessors <code class="code">roff</code>,
+<code class="code">nroff</code>, and <code class="code">troff</code> is available in the <cite class="cite">roff<span class="r">(7)</span></cite>
+man page.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="What-Is-groff_003f">
+<div class="nav-panel">
+<p>
+Next: <a href="#groff-Capabilities" accesskey="n" rel="next"><code class="code">groff</code> Capabilities</a>, Previous: <a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="What-Is-groff_003f-1">1.2 What Is <code class="code">groff</code>?</h3>
+<a class="index-entry-id" id="index-what-is-groff_003f"></a>
+<a class="index-entry-id" id="index-groff_002d_002d_002dwhat-is-it_003f"></a>
+
+<p><code class="code">groff</code> (GNU <code class="code">roff</code>) is a typesetting system that reads plain
+text input files that include formatting commands to produce output in
+PostScript, PDF, HTML, DVI, or other formats, or for display to a
+terminal. Formatting commands can be low-level typesetting primitives,
+macros from a supplied package, or user-defined macros. All three
+approaches can be combined.
+</p>
+<p>A reimplementation and extension of the typesetter from <abbr class="acronym">AT&amp;T</abbr>
+Unix, <code class="code">groff</code> is present on most <abbr class="acronym">POSIX</abbr> systems owing to
+its long association with Unix manuals (including man pages). It and
+its predecessor are notable for their production of several best-selling
+software engineering texts. <code class="code">groff</code> is capable of producing
+typographically sophisticated documents while consuming minimal system
+resources.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="groff-Capabilities">
+<div class="nav-panel">
+<p>
+Next: <a href="#Macro-Package-Intro" accesskey="n" rel="next">Macro Packages</a>, Previous: <a href="#What-Is-groff_003f" accesskey="p" rel="prev">What Is <code class="code">groff</code>?</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="groff-Capabilities-1">1.3 <code class="code">groff</code> Capabilities</h3>
+<a class="index-entry-id" id="index-groff-capabilities"></a>
+<a class="index-entry-id" id="index-capabilities-of-groff"></a>
+
+<p>GNU <code class="code">troff</code> is a typesetting document formatter; it provides a wide
+range of low-level text and page operations within the framework of a
+programming language. These operations compose to generate footnotes,
+tables of contents, mathematical equations, diagrams, multi-column text,
+and other elements of typeset works. Here is a survey of formatter
+features; all are under precise user control.
+</p>
+<ul class="itemize mark-bullet">
+<li>text filling, breaking, alignment to the left or right margin; centering
+
+</li><li>adjustment of inter-word space size to justify text, and of
+inter-sentence space size to suit local style conventions
+
+</li><li>automatic and manual determination of hyphenation break points
+
+</li><li>pagination
+
+</li><li>selection of any font available to the output device
+
+</li><li>adjustment of type size and vertical spacing (or &ldquo;leading&rdquo;)
+
+</li><li>configuration of line length and indentation amounts; columnation
+
+</li><li>drawing of geometric primitives (lines, arcs, polygons, circles,
+&hellip;)
+
+</li><li>setup of stroke and fill colors (where supported by the output
+device)
+
+</li><li>embedding of hyperlinks, images, document metadata, and other inclusions
+(where supported by the output device)
+</li></ul>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Macro-Package-Intro">
+<div class="nav-panel">
+<p>
+Next: <a href="#Preprocessor-Intro" accesskey="n" rel="next">Preprocessors</a>, Previous: <a href="#groff-Capabilities" accesskey="p" rel="prev"><code class="code">groff</code> Capabilities</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Macro-Packages-1">1.4 Macro Packages</h3>
+<a class="index-entry-id" id="index-macro-package_002c-introduction"></a>
+<a class="index-entry-id" id="index-package_002c-macro_002c-introduction"></a>
+
+<p>Elemental typesetting functions can be be challenging to use directly
+with complex documents. A <em class="dfn">macro</em> facility specifies how certain
+routine operations, such as starting paragraphs, or printing headers and
+footers, should be performed in terms of those low-level instructions.
+Macros can be specific to one document or collected together into a
+<em class="dfn">macro package</em> for use by many. Several macro packages available;
+the most widely used are provided with <code class="code">groff</code>. They are
+<samp class="file">man</samp>, <samp class="file">mdoc</samp>, <samp class="file">me</samp>, <samp class="file">mm</samp>, <samp class="file">mom</samp>, and
+<samp class="file">ms</samp>.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Preprocessor-Intro">
+<div class="nav-panel">
+<p>
+Next: <a href="#Output-Device-Intro" accesskey="n" rel="next">Output Devices</a>, Previous: <a href="#Macro-Package-Intro" accesskey="p" rel="prev">Macro Packages</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Preprocessors">1.5 Preprocessors</h3>
+<a class="index-entry-id" id="index-preprocessors"></a>
+
+<p>An alternative approach to complexity management, particularly when
+constructing tables, setting mathematics, or drawing diagrams, lies in
+preprocessing. A <em class="dfn">preprocessor</em> employs a domian-specific language
+to ease the generation of tables, equations, and so forth in terms that
+are convenient for human entry. Each preprocessor reads a document and
+translates the parts of it that apply to it into GNU <code class="code">troff</code> input.
+Command-line options to <code class="command">groff</code> tell it which preprocessors to
+use.
+</p>
+<p><code class="code">groff</code> provides preprocessors for laying out tables
+(<code class="command">gtbl</code>), typesetting equations (<code class="command">geqn</code>), drawing
+diagrams (<code class="command">gpic</code> and <code class="command">ggrn</code>), inserting bibliographic
+references (<code class="command">grefer</code>), and drawing chemical structures
+(<code class="command">gchem</code>). An associated program that is useful when dealing
+with preprocessors is <code class="command">gsoelim</code>.<a class="footnote" id="DOCF1" href="#FOOT1"><sup>1</sup></a>
+</p>
+<p><code class="code">groff</code> also supports <code class="code">grap</code>, a preprocessor for drawing
+graphs. A free implementation of it can be obtained separately.
+</p>
+<p>Unique to <code class="code">groff</code> is the <code class="code">preconv</code> preprocessor that enables
+<code class="code">groff</code> to handle documents in a variety of input encodings.
+</p>
+<p>Other preprocessors exist, but no free implementations
+are known. An example is <code class="command">ideal</code>, which draws diagrams using a
+mathematical constraint language.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Output-Device-Intro">
+<div class="nav-panel">
+<p>
+Next: <a href="#Installation" accesskey="n" rel="next">Installation</a>, Previous: <a href="#Preprocessor-Intro" accesskey="p" rel="prev">Preprocessors</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Output-Devices">1.6 Output Devices</h3>
+<a class="index-entry-id" id="index-postprocessors"></a>
+<a class="index-entry-id" id="index-output-devices"></a>
+<a class="index-entry-id" id="index-devices-for-output"></a>
+
+<p>GNU <code class="code">troff</code>&rsquo;s output is in a device-independent page description
+language, which is then read by an <em class="dfn">output driver</em> that translates
+this language into a file format or byte stream that a piece of
+(possibly emulated) hardware understands. <code class="code">groff</code> features output
+drivers for PostScript devices, terminal emulators (and other simple
+typewriter-like machines), X11 (for previewing), TeX DVI, HP
+LaserJet&nbsp;4/PCL5 and Canon LBP printers (which use <abbr class="acronym">CaPSL</abbr>),
+<abbr class="acronym">HTML</abbr>, <abbr class="acronym">XHTML</abbr>, and <abbr class="acronym">PDF</abbr>.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Installation">
+<div class="nav-panel">
+<p>
+Next: <a href="#Conventions-Used-in-This-Manual" accesskey="n" rel="next">Conventions Used in This Manual</a>, Previous: <a href="#Output-Device-Intro" accesskey="p" rel="prev">Output Devices</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Installation-1">1.7 Installation</h3>
+<a class="index-entry-id" id="index-installation"></a>
+
+<p>Locate installation instructions in the files <samp class="file">INSTALL</samp>,
+<samp class="file">INSTALL.extra</samp>, and <samp class="file">INSTALL.REPO</samp> in the <code class="code">groff</code> source
+distribution. Being a GNU project, <code class="code">groff</code> supports the familiar
+&lsquo;<samp class="samp">./configure &amp;&amp; make</samp>&rsquo; command sequence.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Conventions-Used-in-This-Manual">
+<div class="nav-panel">
+<p>
+Next: <a href="#Credits" accesskey="n" rel="next">Credits</a>, Previous: <a href="#Installation" accesskey="p" rel="prev">Installation</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Conventions-Used-in-This-Manual-1">1.8 Conventions Used in This Manual</h3>
+
+<p>We apply the term &ldquo;groff&rdquo; to the language documented here, the GNU
+implementation of the overall system, the project that develops that
+system, and the command of that name. In the first sense, <code class="code">groff</code>
+is an extended dialect of the <code class="code">roff</code> language, for which many
+similar implementations exist.
+</p>
+<p>The <code class="code">roff</code> language features several major categories for which
+many items are predefined. Presentations of these items feature the
+form in which the item is most commonly used on the left, and, aligned
+to the right margin, the name of the category in brackets.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bexample_005d"><span class="category-def">Register: </span><span><strong class="def-name">\n[example]</strong><a class="copiable-link" href='#index-_005cn_005bexample_005d'> &para;</a></span></dt>
+<dd><p>The register &lsquo;<samp class="samp">example</samp>&rsquo; is one that that <code class="code">groff</code> <em class="emph">doesn&rsquo;t</em>
+predefine. You can create it yourself, though; see <a class="ref" href="#Setting-Registers">Setting Registers</a>.
+</p></dd></dl>
+
+<p>To make this document useful as a reference and not merely amiable
+bedtime reading, we tend to present these syntax items in exhaustive
+detail when they arise. References to topics discussed later in the
+text are frequent; skip material you don&rsquo;t understand yet.
+</p>
+<p>We use Texinfo&rsquo;s &ldquo;result&rdquo; (&rArr;) and error&rarr; notations to
+present output written to the standard output and standard error
+streams, respectively. Diagnostic messages from the GNU <code class="code">troff</code>
+formatter and other programs are examples of the latter, but the
+formatter can also be directed to write user-specified messages to the
+standard error stream. The notation then serves to identify the
+output stream and does not necessarily mean that an error has
+occurred.<a class="footnote" id="DOCF2" href="#FOOT2"><sup>2</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ echo &quot;Twelve o'clock and&quot; | groff -Tascii | sed '/^$/d'
+ &rArr; Twelve o'clock and
+$ echo '.tm all is well.' | groff &gt; /dev/null
+ error&rarr; all is well.
+</pre></div></div>
+
+<p>Sometimes we use &rArr; somewhat abstractly to represent formatted
+text that you will need to use a PostScript or PDF viewer program (or a
+printer) to observe. While arguably an abuse of notation, we think this
+preferable to requiring the reader to understand the syntax of these
+page description languages.
+</p>
+<p>We also present diagnostic messages in an abbreviated form, often
+omitting the name of the program issuing them, the input file name, and
+line number or other positional information when such data do not serve
+to illuminate the topic under discussion.
+</p>
+<p>Most examples are of <code class="code">roff</code> language input that would be placed in
+a text file. Occasionally, we start an example with a &lsquo;<samp class="samp">$</samp>&rsquo;
+character to indicate a shell prompt, as seen above.
+</p>
+<p>You are encouraged to try the examples yourself, and to alter them to
+better learn <code class="code">groff</code>&rsquo;s behavior. Our examples frequently need to
+direct the formatter to set a line length (with &lsquo;<samp class="samp">.ll</samp>&rsquo;) that will
+fit within the page margins of this manual. We mention this so that you
+know why it is there before we discuss the <code class="code">ll</code> request
+formally.<a class="footnote" id="DOCF3" href="#FOOT3"><sup>3</sup></a>
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Credits">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Conventions-Used-in-This-Manual" accesskey="p" rel="prev">Conventions Used in This Manual</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Credits-1">1.9 Credits</h3>
+<a class="index-entry-id" id="index-credits"></a>
+
+<p>We adapted portions of this manual from existing documents. James
+Clark&rsquo;s man pages were an essential resource; we have updated them in
+parallel with the development of this manual. We based the tutorial for
+macro users on Eric Allman&rsquo;s introduction to his <samp class="file">me</samp> macro package
+(which we also provide, little altered from 4.4BSD). Larry Kollar
+contributed much of the material on the <samp class="file">ms</samp> macro package.
+</p>
+
+
+<hr>
+</div>
+</div>
+<div class="chapter-level-extent" id="Invoking-groff">
+<div class="nav-panel">
+<p>
+Next: <a href="#Tutorial-for-Macro-Users" accesskey="n" rel="next">Tutorial for Macro Users</a>, Previous: <a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="chapter" id="Invoking-groff-1">2 Invoking <code class="code">groff</code></h2>
+<a class="index-entry-id" id="index-invoking-groff"></a>
+<a class="index-entry-id" id="index-groff-invocation"></a>
+
+<p>This chapter focuses on how to invoke the <code class="code">groff</code> front end. This
+front end takes care of the details of constructing the pipeline among
+the preprocessors, <code class="code">gtroff</code> and the postprocessor.
+</p>
+<p>It has become a tradition that GNU programs get the prefix &lsquo;<samp class="samp">g</samp>&rsquo; to
+distinguish them from their original counterparts provided by the host
+(see <a class="pxref" href="#Environment">Environment</a>). Thus, for example, <code class="code">geqn</code> is GNU
+<code class="code">eqn</code>. On operating systems like GNU/Linux or the Hurd, which
+don&rsquo;t contain proprietary versions of <code class="code">troff</code>, and on
+MS-DOS/MS-Windows, where <code class="code">troff</code> and associated programs are not
+available at all, this prefix is omitted since GNU <code class="code">troff</code> is the
+only incarnation of <code class="code">troff</code> used. Exception: &lsquo;<samp class="samp">groff</samp>&rsquo; is never
+replaced by &lsquo;<samp class="samp">roff</samp>&rsquo;.
+</p>
+<p>In this document, we consequently say &lsquo;<samp class="samp">gtroff</samp>&rsquo; when talking about
+the GNU <code class="code">troff</code> program. All other implementations of <code class="code">troff</code> are called <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code>, which is the common origin of almost all <code class="code">troff</code>
+implementations<a class="footnote" id="DOCF4" href="#FOOT4"><sup>4</sup></a> (with more or less compatible changes). Similarly, we say
+&lsquo;<samp class="samp">gpic</samp>&rsquo;, &lsquo;<samp class="samp">geqn</samp>&rsquo;, and so on.
+</p>
+
+
+
+<ul class="mini-toc">
+<li><a href="#Groff-Options" accesskey="1">Options</a></li>
+<li><a href="#Environment" accesskey="2">Environment</a></li>
+<li><a href="#Macro-Directories" accesskey="3">Macro Directories</a></li>
+<li><a href="#Font-Directories" accesskey="4">Font Directories</a></li>
+<li><a href="#Paper-Format" accesskey="5">Paper Format</a></li>
+<li><a href="#Invocation-Examples" accesskey="6">Invocation Examples</a></li>
+</ul>
+<hr>
+<div class="section-level-extent" id="Groff-Options">
+<div class="nav-panel">
+<p>
+Next: <a href="#Environment" accesskey="n" rel="next">Environment</a>, Previous: <a href="#Invoking-groff" accesskey="p" rel="prev">Invoking <code class="code">groff</code></a>, Up: <a href="#Invoking-groff" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Options">2.1 Options</h3>
+<a class="index-entry-id" id="index-options"></a>
+
+<a class="index-entry-id" id="index-groff"></a>
+<a class="index-entry-id" id="index-gtroff"></a>
+<a class="index-entry-id" id="index-gpic"></a>
+<a class="index-entry-id" id="index-geqn"></a>
+<a class="index-entry-id" id="index-ggrn"></a>
+<a class="index-entry-id" id="index-grap"></a>
+<a class="index-entry-id" id="index-gtbl"></a>
+<a class="index-entry-id" id="index-gchem"></a>
+<a class="index-entry-id" id="index-grefer"></a>
+<a class="index-entry-id" id="index-gsoelim"></a>
+<a class="index-entry-id" id="index-preconv"></a>
+<p><code class="code">groff</code> normally runs the <code class="code">gtroff</code> program and a
+postprocessor appropriate for the selected device. The default device
+is &lsquo;<samp class="samp">ps</samp>&rsquo; (but it can be changed when <code class="code">groff</code> is configured and
+built). It can optionally preprocess with any of <code class="code">gpic</code>,
+<code class="code">geqn</code>, <code class="code">gtbl</code>, <code class="code">ggrn</code>, <code class="code">grap</code>, <code class="code">gchem</code>,
+<code class="code">grefer</code>, <code class="code">gsoelim</code>, or <code class="code">preconv</code>.
+</p>
+<p>This section documents only options to the <code class="code">groff</code> front end. Many
+of the arguments to <code class="code">groff</code> are passed on to <code class="code">gtroff</code>;
+therefore, those are also included. Arguments to preprocessors and
+output drivers can be found in the man pages <cite class="cite">gpic<span class="r">(1)</span></cite>,
+<cite class="cite">geqn<span class="r">(1)</span></cite>, <cite class="cite">gtbl<span class="r">(1)</span></cite>, <cite class="cite">ggrn<span class="r">(1)</span></cite>,
+<cite class="cite">grefer<span class="r">(1)</span></cite>, <cite class="cite">gchem<span class="r">(1)</span></cite>, <cite class="cite">gsoelim<span class="r">(1)</span></cite>,
+<cite class="cite">preconv<span class="r">(1)</span></cite>, <cite class="cite">grotty<span class="r">(1)</span></cite>, <cite class="cite">grops<span class="r">(1)</span></cite>,
+<cite class="cite">gropdf<span class="r">(1)</span></cite>, <cite class="cite">grohtml<span class="r">(1)</span></cite>, <cite class="cite">grodvi<span class="r">(1)</span></cite>,
+<cite class="cite">grolj4<span class="r">(1)</span></cite>, <cite class="cite">grolbp<span class="r">(1)</span></cite>, and <cite class="cite">gxditview<span class="r">(1)</span></cite>.
+</p>
+<p>The command-line format for <code class="code">groff</code> is:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff [ -abceghijklpstvzCEGNRSUVXZ ] [ -d<var class="var">cs</var> ] [ -D<var class="var">arg</var> ]
+ [ -f<var class="var">fam</var> ] [ -F<var class="var">dir</var> ] [ -I<var class="var">dir</var> ] [ -K<var class="var">arg</var> ]
+ [ -L<var class="var">arg</var> ] [ -m<var class="var">name</var> ] [ -M<var class="var">dir</var> ] [ -n<var class="var">num</var> ]
+ [ -o<var class="var">list</var> ] [ -P<var class="var">arg</var> ] [ -r<var class="var">cn</var> ] [ -T<var class="var">dev</var> ]
+ [ -w<var class="var">name</var> ] [ -W<var class="var">name</var> ] [ <var class="var">files</var>&hellip; ]
+</pre></div></div>
+
+<p>The command-line format for <code class="code">gtroff</code> is as follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">gtroff [ -abcivzCERU ] [ -d<var class="var">cs</var> ] [ -f<var class="var">fam</var> ] [ -F<var class="var">dir</var> ]
+ [ -m<var class="var">name</var> ] [ -M<var class="var">dir</var> ] [ -n<var class="var">num</var> ] [ -o<var class="var">list</var> ]
+ [ -r<var class="var">cn</var> ] [ -T<var class="var">name</var> ] [ -w<var class="var">name</var> ] [ -W<var class="var">name</var> ]
+ [ <var class="var">files</var>&hellip; ]
+</pre></div></div>
+
+<p>Obviously, many of the options to <code class="code">groff</code> are actually passed on to
+<code class="code">gtroff</code>.
+</p>
+<p>Options without an argument can be grouped behind a
+single&nbsp;<samp class="option">-</samp>. A filename of&nbsp;<samp class="file">-</samp> denotes the
+standard input. Whitespace is permitted between an option and its
+argument.
+</p>
+<p>The <code class="code">grog</code> command can be used to guess the correct <code class="code">groff</code>
+command to format a file. See its man page <cite class="cite">grog<span class="r">(1)</span></cite>; type
+&lsquo;<samp class="samp">man grog</samp>&rsquo; at the command line to view it.
+</p>
+<p><code class="command">groff</code>&rsquo;s command-line options are as follows.
+</p>
+<a class="index-entry-id" id="index-command_002dline-options"></a>
+<dl class="table">
+<dt id='index-plain-text-approximation-output-register-_0028_002eA_0029'><span>&lsquo;<samp class="samp">-a</samp>&rsquo;<a class="copiable-link" href='#index-plain-text-approximation-output-register-_0028_002eA_0029'> &para;</a></span></dt>
+<dd><p>Generate a plain text approximation of the typeset output. The
+read-only register <code class="code">.A</code> is set to&nbsp;1. See <a class="xref" href="#Built_002din-Registers">Built-in Registers</a>. This option produces a sort of abstract preview of the
+formatted output.
+</p>
+<ul class="itemize mark-bullet">
+<li>Page breaks are marked by a phrase in angle brackets; for example,
+&lsquo;<samp class="samp">&lt;beginning of page&gt;</samp>&rsquo;.
+
+</li><li>Lines are broken where they would be in the formatted output.
+
+</li><li>A horizontal motion of any size is represented as one space. Adjacent
+horizontal motions are not combined. Inter-sentence space nodes (those
+arising from the second argument to the <code class="code">ss</code> request) are not
+represented.
+
+</li><li>Vertical motions are not represented.
+
+</li><li>Special characters are rendered in angle brackets; for example, the
+default soft hyphen character appears as &lsquo;<samp class="samp">&lt;hy&gt;</samp>&rsquo;.
+</li></ul>
+
+<p>The above description should not be considered a specification; the
+details of <samp class="option">-a</samp> output are subject to change.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-b</samp>&rsquo;</dt>
+<dd><p>Write a backtrace reporting the state of <code class="command">gtroff</code>&rsquo;s input parser
+to the standard error stream with each diagnostic message. The line
+numbers given in the backtrace might not always be correct, because
+<code class="command">gtroff</code>&rsquo;s idea of line numbers can be confused by requests that
+append to
+macros.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-c</samp>&rsquo;</dt>
+<dd><p>Start with color output disabled.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-C</samp>&rsquo;</dt>
+<dd><p>Enable AT&amp;T <code class="command">troff</code> compatibility mode; implies <samp class="option">-c</samp>.
+See <a class="xref" href="#Implementation-Differences">Implementation Differences</a>, for the list of incompatibilities
+between <code class="command">groff</code> and <abbr class="acronym">AT&amp;T</abbr> <code class="command">troff</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-d<var class="var">c</var><var class="var">text</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">-d<var class="var">string</var>=<var class="var">text</var></samp>&rsquo;</dt>
+<dd><p>Define <code class="code">roff</code> string <var class="var">c</var> or <var class="var">string</var> as&nbsp;<var class="var">t</var> or
+<var class="var">text</var>. <var class="var">c</var>&nbsp;must be one character; <var class="var">string</var> can be
+of arbitrary length. Such string assignments happen before any macro
+file is loaded, including the startup file. Due to <code class="code">getopt_long</code>
+limitations, <var class="var">c</var>&nbsp;cannot be, and <var class="var">string</var> cannot contain, an
+equals sign, even though that is a valid character in a <code class="code">roff</code>
+identifier.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-D<var class="var">enc</var></samp>&rsquo;</dt>
+<dd><p>Set fallback input encoding used by <code class="command">preconv</code> to <var class="var">enc</var>;
+implies <samp class="option">-k</samp>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-e</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">geqn</code> preprocessor.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-E</samp>&rsquo;</dt>
+<dd><p>Inhibit <code class="command">gtroff</code> error messages. This option does <em class="emph">not</em>
+suppress messages sent to the standard error stream by documents or
+macro packages using <code class="code">tm</code> or related requests.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-f<var class="var">fam</var></samp>&rsquo;</dt>
+<dd><p>Use <var class="var">fam</var> as the default font family. See <a class="xref" href="#Font-Families">Font Families</a>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-F<var class="var">dir</var></samp>&rsquo;</dt>
+<dd><p>Search in directory <samp class="file"><var class="var">dir</var></samp> for the selected output device&rsquo;s
+directory of device and font description files. See the description of
+<code class="env">GROFF_FONT_PATH</code> in <a class="ref" href="#Environment">Environment</a> below for the default search
+locations and ordering.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-g</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">ggrn</code> preprocessor.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-G</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">grap</code> preprocessor; implies <samp class="option">-p</samp>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-h</samp>&rsquo;</dt>
+<dd><p>Display a usage message and exit.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-i</samp>&rsquo;</dt>
+<dd><p>Read the standard input after all the named input files have been
+processed.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-I<var class="var">dir</var></samp>&rsquo;</dt>
+<dd><p>Search the directory <var class="var">dir</var> for files named in several contexts;
+implies <samp class="option">-g</samp> and <samp class="option">-s</samp>.
+</p>
+<ul class="itemize mark-bullet">
+<li><code class="command">gsoelim</code> replaces <code class="code">so</code> requests with the contents of their
+file name arguments.
+
+</li><li><code class="command">gtroff</code> searches for files named as operands in its command
+line and as arguments to <code class="code">psbb</code>, <code class="code">so</code>, and <code class="code">soquiet</code>
+requests.
+
+</li><li>Output drivers may search for files; for instance, <code class="command">grops</code> looks
+for files named in &lsquo;<samp class="samp">\X'ps: import <span class="r">&hellip;</span>'</samp>&rsquo;, &lsquo;<samp class="samp">\X'ps: file
+<span class="r">&hellip;</span>'</samp>&rsquo;, and &lsquo;<samp class="samp">\X'pdf: pdfpic <span class="r">&hellip;</span>'</samp>&rsquo; device control
+escape sequences.
+</li></ul>
+
+<p>This option may be specified more than once; the directories are
+searched in the order specified. If you want to search the current
+directory before others, add &lsquo;<samp class="samp">-I .</samp>&rsquo; at the desired place. The
+current working directory is otherwise searched last. <samp class="option">-I</samp> works
+similarly to, and is named for, the &ldquo;include&rdquo; option of Unix C
+compilers.
+</p>
+<p><samp class="option">-I</samp> options are passed to <code class="command">gsoelim</code>, <code class="command">gtroff</code>,
+and output drivers; with the flag letter changed to <samp class="option">-M</samp>, they
+are also passed to <code class="command">ggrn</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-j</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">gchem</code> preprocessor. Implies <samp class="option">-p</samp>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-k</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">preconv</code> preprocessor. Refer to its man page for its
+behavior if neither of <code class="command">groff</code>&rsquo;s <samp class="option">-K</samp> or <samp class="option">-D</samp>
+options is also specified.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-K<var class="var">enc</var></samp>&rsquo;</dt>
+<dd><p>Set input encoding used by <code class="command">preconv</code> to <var class="var">enc</var>; implies
+<samp class="option">-k</samp>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-l</samp>&rsquo;</dt>
+<dd><p>Send the output to a spooler for printing. The <code class="code">print</code> directive
+in the device description file specifies the default command to be used;
+see <a class="ref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>.
+See options <samp class="option">-L</samp> and <samp class="option">-X</samp>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-L<var class="var">arg</var></samp>&rsquo;</dt>
+<dd><p>Pass <var class="var">arg</var> to the print spooler program. If multiple <var class="var">arg</var>s are
+required, pass each with a separate <samp class="option">-L</samp> option. <code class="command">groff</code>
+does not prefix an option dash to <var class="var">arg</var> before passing it to the
+spooler program.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-m<var class="var">name</var></samp>&rsquo;</dt>
+<dd><p>Process the file <samp class="file"><var class="var">name</var>.tmac</samp> prior to any input files.
+If not found, <samp class="file">tmac.<var class="var">name</var></samp> is attempted. <var class="var">name</var>
+(in both arrangements) is presumed to be a macro file; see the
+description of <code class="env">GROFF_TMAC_PATH</code> in <a class="ref" href="#Environment">Environment</a> below for the
+default search locations and ordering. This option and its argument are
+also passed to <code class="command">geqn</code>, <code class="command">grap</code>, and <code class="command">ggrn</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-M<var class="var">dir</var></samp>&rsquo;</dt>
+<dd><p>Search directory <samp class="file"><var class="var">dir</var></samp> for macro files; see the description
+of <code class="env">GROFF_TMAC_PATH</code> in <a class="ref" href="#Environment">Environment</a> below for the default
+search locations and ordering. This option and its argument are also
+passed to <code class="command">geqn</code>, <code class="command">grap</code>, and <code class="command">ggrn</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-n<var class="var">num</var></samp>&rsquo;</dt>
+<dd><p>Number the first page <var class="var">num</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-N</samp>&rsquo;</dt>
+<dd><p>Prohibit newlines between <code class="code">eqn</code> delimiters: pass <samp class="option">-N</samp> to
+<code class="command">geqn</code>.
+</p>
+</dd>
+<dt id='index-print-current-page-register-_0028_002eP_0029'><span>&lsquo;<samp class="samp">-o<var class="var">list</var></samp>&rsquo;<a class="copiable-link" href='#index-print-current-page-register-_0028_002eP_0029'> &para;</a></span></dt>
+<dd><p>Output only pages in <var class="var">list</var>, which is a comma-separated list of page
+ranges; &lsquo;<samp class="samp"><var class="var">n</var></samp>&rsquo; means page&nbsp;<var class="var">n</var>, &lsquo;<samp class="samp"><var class="var">m</var>-<var class="var">n</var></samp>&rsquo;
+means every page between <var class="var">m</var> and&nbsp;<var class="var">n</var>, &lsquo;<samp class="samp">-<var class="var">n</var></samp>&rsquo; means
+every page up to&nbsp;<var class="var">n</var>, &lsquo;<samp class="samp"><var class="var">n</var>-</samp>&rsquo; means every page from
+<var class="var">n</var>&nbsp;on. <code class="command">gtroff</code> stops processing and exits after
+formatting the last page enumerated in <var class="var">list</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-p</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">gpic</code> preprocessor.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-P<var class="var">arg</var></samp>&rsquo;</dt>
+<dd><p>Pass <var class="var">arg</var> to the postprocessor. If multiple <var class="var">arg</var>s are
+required, pass each with a separate <samp class="option">-P</samp> option. <code class="command">groff</code>
+does not prefix an option dash to <var class="var">arg</var> before passing it to the
+postprocessor.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-r<var class="var">c</var><var class="var">numeric-expression</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">-r<var class="var">register</var>=<var class="var">expr</var></samp>&rsquo;</dt>
+<dd><p>Set <code class="code">roff</code> register&nbsp;<var class="var">c</var> or <var class="var">register</var> to the value
+<var class="var">numeric-expression</var> (see <a class="pxref" href="#Numeric-Expressions">Numeric Expressions</a>).
+<var class="var">c</var>&nbsp;must be one character; <var class="var">register</var> can be of arbitrary
+length. Such register assignments happen before any macro file is
+loaded, including the startup file. Due to <code class="code">getopt_long</code>
+limitations, <var class="var">c</var>&nbsp;cannot be, and <var class="var">register</var> cannot contain,
+an equals sign, even though that is a valid character in a <code class="code">roff</code>
+identifier.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-R</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">grefer</code> preprocessor. No mechanism is provided for passing
+arguments to <code class="command">grefer</code> because most <code class="command">grefer</code> options have
+equivalent language elements that can be specified within the document.
+</p>
+<a class="index-entry-id" id="index-troffrc"></a>
+<a class="index-entry-id" id="index-troffrc_002dend"></a>
+<p><code class="command">gtroff</code> also accepts a <samp class="option">-R</samp> option, which is not
+accessible via <code class="command">groff</code>. This option prevents the loading of the
+<samp class="file">troffrc</samp> and <samp class="file">troffrc-end</samp> files.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-s</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">gsoelim</code> preprocessor.
+</p>
+</dd>
+<dt id='index-open-request_002c-and-safer-mode'><span>&lsquo;<samp class="samp">-S</samp>&rsquo;<a class="copiable-link" href='#index-open-request_002c-and-safer-mode'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-opena-request_002c-and-safer-mode"></a>
+<a class="index-entry-id" id="index-pso-request_002c-and-safer-mode"></a>
+<a class="index-entry-id" id="index-sy-request_002c-and-safer-mode"></a>
+<a class="index-entry-id" id="index-pi-request_002c-and-safer-mode"></a>
+<a class="index-entry-id" id="index-safer-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-safer"></a>
+<p>Operate in &ldquo;safer&rdquo; mode; see <samp class="option">-U</samp> below for its opposite. For
+security reasons, safer mode is enabled by default.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-t</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">gtbl</code> preprocessor.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-T<var class="var">dev</var></samp>&rsquo;</dt>
+<dd><p>Direct <code class="command">gtroff</code> to format the input for the output device
+<var class="var">dev</var>. <code class="command">groff</code> then calls an output driver to convert
+<code class="command">gtroff</code>&rsquo;s output to a form appropriate for <var class="var">dev</var>. The
+following output devices are available.
+</p>
+<dl class="table">
+<dt><code class="code">ps</code></dt>
+<dd><p>For PostScript printers and previewers.
+</p>
+</dd>
+<dt><code class="code">pdf</code></dt>
+<dd><p>For <abbr class="acronym">PDF</abbr> viewers or printers.
+</p>
+</dd>
+<dt><code class="code">dvi</code></dt>
+<dd><p>For TeX DVI format.
+</p>
+</dd>
+<dt><code class="code">X75</code></dt>
+<dd><p>For a 75<span class="dmn">dpi</span> X11 previewer.
+</p>
+</dd>
+<dt><code class="code">X75-12</code></dt>
+<dd><p>For a 75<span class="dmn">dpi</span> X11 previewer with a 12-point base font in the
+document.
+</p>
+</dd>
+<dt><code class="code">X100</code></dt>
+<dd><p>For a 100<span class="dmn">dpi</span> X11 previewer.
+</p>
+</dd>
+<dt><code class="code">X100-12</code></dt>
+<dd><p>For a 100<span class="dmn">dpi</span> X11 previewer with a 12-point base font in the
+document.
+</p>
+</dd>
+<dt id='index-encoding_002c-output_002c-ASCII'><span><code class="code">ascii</code><a class="copiable-link" href='#index-encoding_002c-output_002c-ASCII'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-encoding_002c-output_002c-ISO-646"></a>
+<a class="index-entry-id" id="index-ASCII-output-encoding"></a>
+<a class="index-entry-id" id="index-ISO-646-output-encoding"></a>
+<a class="index-entry-id" id="index-output-encoding_002c-ASCII"></a>
+<a class="index-entry-id" id="index-output-encoding_002c-ISO-646"></a>
+<p>For typewriter-like devices using the (7-bit) <abbr class="acronym">ASCII</abbr>
+(ISO&nbsp;646) character set.
+</p>
+</dd>
+<dt id='index-encoding_002c-output_002c-Latin_002d1-_0028ISO-8859_002d1_0029'><span><code class="code">latin1</code><a class="copiable-link" href='#index-encoding_002c-output_002c-Latin_002d1-_0028ISO-8859_002d1_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Latin_002d1-_0028ISO-8859_002d1_0029-output-encoding"></a>
+<a class="index-entry-id" id="index-ISO-8859_002d1-_0028Latin_002d1_0029-output-encoding"></a>
+<a class="index-entry-id" id="index-output-encoding_002c-Latin_002d1-_0028ISO-8859_002d1_0029"></a>
+<p>For typewriter-like devices that support the <span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->
+(ISO&nbsp;<span class="w-nolinebreak-text">8859-1</span><!-- /@w -->) character set.
+</p>
+</dd>
+<dt id='index-encoding_002c-output_002c-UTF_002d8'><span><code class="code">utf8</code><a class="copiable-link" href='#index-encoding_002c-output_002c-UTF_002d8'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-UTF_002d8-output-encoding"></a>
+<a class="index-entry-id" id="index-output-encoding_002c-UTF_002d8"></a>
+<p>For typewriter-like devices that use the Unicode (ISO&nbsp;10646)
+character set with <span class="w-nolinebreak-text">UTF-8</span><!-- /@w --> encoding.
+</p>
+</dd>
+<dt id='index-encoding_002c-output_002c-EBCDIC'><span><code class="code">cp1047</code><a class="copiable-link" href='#index-encoding_002c-output_002c-EBCDIC'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EBCDIC-output-encoding"></a>
+<a class="index-entry-id" id="index-output-encoding_002c-EBCDIC"></a>
+<a class="index-entry-id" id="index-encoding_002c-output_002c-code-page-1047"></a>
+<a class="index-entry-id" id="index-code-page-1047-output-encoding"></a>
+<a class="index-entry-id" id="index-output-encoding_002c-code-page-1047"></a>
+<a class="index-entry-id" id="index-IBM-code-page-1047-output-encoding"></a>
+<a class="index-entry-id" id="index-CCSID-1047-output-encoding-_0028EBCDIC_0029"></a>
+<p>For typewriter-like devices that use the <abbr class="acronym">EBCDIC</abbr> encoding IBM
+code page 1047.
+</p>
+</dd>
+<dt><code class="code">lj4</code></dt>
+<dd><p>For HP LaserJet4-compatible (or other PCL5-compatible) printers.
+</p>
+</dd>
+<dt><code class="code">lbp</code></dt>
+<dd><p>For Canon <abbr class="acronym">CaPSL</abbr> printers (<span class="w-nolinebreak-text">LBP-4</span><!-- /@w --> and <span class="w-nolinebreak-text">LBP-8</span><!-- /@w --> series laser
+printers).
+</p>
+<a class="index-entry-id" id="index-pre_002dgrohtml"></a>
+<a class="index-entry-id" id="index-post_002dgrohtml"></a>
+<a class="index-entry-id" id="index-grohtml_002c-the-program"></a>
+</dd>
+<dt><code class="code">html</code></dt>
+<dt><code class="code">xhtml</code></dt>
+<dd><p>To produce <abbr class="acronym">HTML</abbr> and <abbr class="acronym">XHTML</abbr> output, respectively.
+This driver consists of two parts, a preprocessor
+(<code class="command">pre-grohtml</code>) and a postprocessor (<code class="command">post-grohtml</code>).
+</p></dd>
+</dl>
+
+<a class="index-entry-id" id="index-output-device-name-string-_0028_002eT_0029"></a>
+<a class="index-entry-id" id="index-output-device-usage-register-_0028_002eT_0029"></a>
+<p>The predefined GNU <code class="code">troff</code> string <code class="code">.T</code> contains the name of
+the output device; the read-only register <code class="code">.T</code> is set to&nbsp;1 if
+this option is used (which is always true if <code class="command">groff</code> is used to
+call GNU <code class="command">troff</code>). See <a class="xref" href="#Built_002din-Registers">Built-in Registers</a>.
+</p>
+<p>The postprocessor to be used for a device is specified by the
+<code class="code">postpro</code> command in the device description file. (See <a class="xref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>.) This can be overridden with the
+<samp class="option">-X</samp> option.
+</p>
+</dd>
+<dt id='index-mode_002c-unsafe'><span>&lsquo;<samp class="samp">-U</samp>&rsquo;<a class="copiable-link" href='#index-mode_002c-unsafe'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-unsafe-mode"></a>
+<p>Operate in <em class="dfn">unsafe mode</em>, which enables the <code class="code">open</code>,
+<code class="code">opena</code>, <code class="code">pi</code>, <code class="code">pso</code>, and <code class="code">sy</code> requests. These
+requests are disabled by default because they allow an untrusted input
+document to write to arbitrary file names and run arbitrary commands.
+This option also adds the current directory to the macro package search
+path; see the <samp class="option">-m</samp> option above. <samp class="option">-U</samp> is passed to
+<code class="command">gpic</code> and <code class="command">gtroff</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-v</samp>&rsquo;</dt>
+<dd><p>Write version information for <code class="command">groff</code> and all programs run by it
+to the standard output stream; that is, the given command line is
+processed in the usual way, passing <samp class="option">-v</samp> to the formatter and any
+pre- or postprocessors invoked.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-V</samp>&rsquo;</dt>
+<dd><p>Output the pipeline that would be run by <code class="command">groff</code>
+(as a wrapper program) to the standard output stream, but do not execute
+it. If given more than once, the pipeline is both written to the
+standard error stream and run.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-w<var class="var">category</var></samp>&rsquo;</dt>
+<dd><p>Enable warnings in <var class="var">category</var>. Categories are listed in
+<a class="ref" href="#Warnings">Warnings</a>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-W<var class="var">category</var></samp>&rsquo;</dt>
+<dd><p>Inhibit warnings in <var class="var">category</var>. Categories are listed in
+<a class="ref" href="#Warnings">Warnings</a>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-X</samp>&rsquo;</dt>
+<dd><p>Use <code class="command">gxditview</code> instead of the usual postprocessor to (pre)view
+a document on an X11 display. Combining this option with
+<samp class="option">-Tps</samp> uses the font metrics of the PostScript device, whereas
+the <samp class="option">-TX75</samp> and <samp class="option">-TX100</samp> options use the metrics of X11
+fonts.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-z</samp>&rsquo;</dt>
+<dd><p>Suppress formatted output from <code class="command">gtroff</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-Z</samp>&rsquo;</dt>
+<dd><p>Disable postprocessing. <code class="command">gtroff</code> output will appear on the
+standard output stream (unless suppressed with <samp class="option">-z</samp>; see
+<a class="ref" href="#gtroff-Output"><code class="code">gtroff</code> Output</a> for a description of this format.
+</p></dd>
+</dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Environment">
+<div class="nav-panel">
+<p>
+Next: <a href="#Macro-Directories" accesskey="n" rel="next">Macro Directories</a>, Previous: <a href="#Groff-Options" accesskey="p" rel="prev">Options</a>, Up: <a href="#Invoking-groff" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Environment-1">2.2 Environment</h3>
+<a class="index-entry-id" id="index-environment-variables"></a>
+<a class="index-entry-id" id="index-variables-in-environment"></a>
+
+<p>There are also several environment variables (of the operating system,
+not within <code class="code">gtroff</code>) that can modify the behavior of <code class="code">groff</code>.
+</p>
+<dl class="table">
+<dt id='index-GROFF_005fBIN_005fPATH_002c-environment-variable'><span><code class="code">GROFF_BIN_PATH</code><a class="copiable-link" href='#index-GROFF_005fBIN_005fPATH_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>This search path, followed by <code class="code">PATH</code>, is used for commands executed
+by <code class="code">groff</code>.
+</p>
+</dd>
+<dt id='index-GROFF_005fCOMMAND_005fPREFIX_002c-environment-variable'><span><code class="code">GROFF_COMMAND_PREFIX</code><a class="copiable-link" href='#index-GROFF_005fCOMMAND_005fPREFIX_002c-environment-variable'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-command-prefix"></a>
+<a class="index-entry-id" id="index-prefix_002c-for-commands"></a>
+<p>If this is set to&nbsp;<var class="var">X</var>, then <code class="command">groff</code> runs
+<code class="command"><var class="var">X</var>troff</code> instead of <code class="command">gtroff</code>. This also applies
+to <code class="command">tbl</code>, <code class="command">pic</code>, <code class="command">eqn</code>, <code class="command">grn</code>,
+<code class="command">chem</code>, <code class="command">refer</code>, and <code class="command">soelim</code>. It does not
+apply to <code class="command">grops</code>, <code class="command">grodvi</code>, <code class="command">grotty</code>,
+<code class="command">pre-grohtml</code>, <code class="command">post-grohtml</code>, <code class="command">preconv</code>,
+<code class="command">grolj4</code>, <code class="command">gropdf</code>, and <code class="command">gxditview</code>.
+</p>
+<p>The default command prefix is determined during the installation
+process. If a non-GNU <code class="code">troff</code> system is found, prefix &lsquo;<samp class="samp">g</samp>&rsquo; is
+used, none otherwise.
+</p>
+</dd>
+<dt id='index-GROFF_005fENCODING_002c-environment-variable'><span><code class="code">GROFF_ENCODING</code><a class="copiable-link" href='#index-GROFF_005fENCODING_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>The value of this variable is passed to the <code class="code">preconv</code>
+preprocessor&rsquo;s <samp class="option">-e</samp> option to select the character encoding of
+input files. This variable&rsquo;s existence implies the <code class="code">groff</code> option
+<samp class="option">-k</samp>. If set but empty, <code class="code">groff</code> calls <code class="code">preconv</code>
+without an <samp class="option">-e</samp> option. <code class="code">groff</code>&rsquo;s <samp class="option">-K</samp> option
+overrides <code class="env">GROFF_ENCODING</code>. See the <cite class="cite">preconv<span class="r">(7)</span></cite> man page;
+type &lsquo;<samp class="samp">man preconv</samp>&rsquo; at the command line to view it.
+</p>
+</dd>
+<dt id='index-GROFF_005fFONT_005fPATH_002c-environment-variable'><span><code class="code">GROFF_FONT_PATH</code><a class="copiable-link" href='#index-GROFF_005fFONT_005fPATH_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>A list of directories in which to seek the selected output device&rsquo;s
+directory of device and font description files. GNU <code class="code">troff</code>
+will search directories given as arguments to any specified <samp class="option">-F</samp>
+options before these, and a built-in list of directories after them.
+See <a class="xref" href="#Font-Directories">Font Directories</a> and the <cite class="cite">troff<span class="r">(1)</span></cite> or
+<cite class="cite">gtroff<span class="r">(1)</span></cite> man pages.
+</p>
+</dd>
+<dt id='index-GROFF_005fTMAC_005fPATH_002c-environment-variable'><span><code class="code">GROFF_TMAC_PATH</code><a class="copiable-link" href='#index-GROFF_005fTMAC_005fPATH_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>A list of directories in which to seek macro files. GNU <code class="code">troff</code>
+will search directories given as arguments to any specified <samp class="option">-M</samp>
+options before these, and a built-in list of directories after them.
+See <a class="xref" href="#Macro-Directories">Macro Directories</a> and the <cite class="cite">troff<span class="r">(1)</span></cite> or
+<cite class="cite">gtroff<span class="r">(1)</span></cite> man pages.
+</p>
+</dd>
+<dt id='index-GROFF_005fTMPDIR_002c-environment-variable'><span><code class="code">GROFF_TMPDIR</code><a class="copiable-link" href='#index-GROFF_005fTMPDIR_002c-environment-variable'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TMPDIR_002c-environment-variable"></a>
+<p>The directory in which <code class="code">groff</code> creates temporary files. If this is
+not set and <code class="env">TMPDIR</code> is set, temporary files are created in that
+directory. Otherwise temporary files are created in a system-dependent
+default directory (on Unix and GNU/Linux systems, this is usually
+<samp class="file">/tmp</samp>). <code class="code">grops</code>, <code class="code">grefer</code>, <code class="code">pre-grohtml</code>, and
+<code class="code">post-grohtml</code> can create temporary files in this directory.
+</p>
+</dd>
+<dt id='index-GROFF_005fTYPESETTER_002c-environment-variable'><span><code class="code">GROFF_TYPESETTER</code><a class="copiable-link" href='#index-GROFF_005fTYPESETTER_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>Sets the default output device. If empty or not set, a build-time
+default (often <code class="code">ps</code>) is used. The <samp class="option">-T<var class="var">dev</var></samp> option
+overrides <code class="env">GROFF_TYPESETTER</code>.
+</p>
+</dd>
+<dt id='index-SOURCE_005fDATE_005fEPOCH_002c-environment-variable'><span><code class="code">SOURCE_DATE_EPOCH</code><a class="copiable-link" href='#index-SOURCE_005fDATE_005fEPOCH_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>A timestamp (expressed as seconds since the Unix epoch) to use as the
+output creation timestamp in place of the current time. The time is
+converted to human-readable form using <cite class="cite">localtime<span class="r">(3)</span></cite> when the
+formatter starts up and stored in registers usable by documents and
+macro packages (see <a class="pxref" href="#Built_002din-Registers">Built-in Registers</a>).
+</p>
+</dd>
+<dt id='index-TZ_002c-environment-variable'><span><code class="code">TZ</code><a class="copiable-link" href='#index-TZ_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>The time zone to use when converting the current time (or value of
+<code class="env">SOURCE_DATE_EPOCH</code>) to human-readable form; see
+<cite class="cite">tzset<span class="r">(3)</span></cite>.
+</p></dd>
+</dl>
+
+<p>MS-DOS and MS-Windows ports of <code class="code">groff</code> use semicolons, rather than
+colons, to separate the directories in the lists described above.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Macro-Directories">
+<div class="nav-panel">
+<p>
+Next: <a href="#Font-Directories" accesskey="n" rel="next">Font Directories</a>, Previous: <a href="#Environment" accesskey="p" rel="prev">Environment</a>, Up: <a href="#Invoking-groff" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Macro-Directories-1">2.3 Macro Directories</h3>
+<a class="index-entry-id" id="index-macro-directories"></a>
+<a class="index-entry-id" id="index-directories-for-macros"></a>
+<a class="index-entry-id" id="index-searching-macros"></a>
+<a class="index-entry-id" id="index-macros_002c-searching"></a>
+
+<p>A macro file must have a name in the form <code class="code"><var class="var">name</var>.tmac</code> or
+<code class="code">tmac.<var class="var">name</var></code> and be placed in a <em class="dfn">tmac directory</em> to be
+found by the <samp class="option">-m<var class="var">name</var></samp> command-line option.<a class="footnote" id="DOCF5" href="#FOOT5"><sup>5</sup></a>
+<a class="index-entry-id" id="index-tmac_002c-directory"></a>
+<a class="index-entry-id" id="index-directory_002c-for-tmac-files"></a>
+<a class="index-entry-id" id="index-tmac_002c-path"></a>
+<a class="index-entry-id" id="index-path_002c-for-tmac-files"></a>
+<a class="index-entry-id" id="index-locating-macro-files"></a>
+<a class="index-entry-id" id="index-macro-file-search-path"></a>
+<a class="index-entry-id" id="index-file_002c-macro_002c-search-path"></a>
+<a class="index-entry-id" id="index-locating-macro-packages"></a>
+<a class="index-entry-id" id="index-macro-package-search-path"></a>
+<a class="index-entry-id" id="index-package_002c-macro_002c-search-path"></a>
+Together, these directories constitute the <em class="dfn">tmac path</em>. Each
+directory is searched in the following order until the desired macro
+file is found or the list is exhausted.
+</p>
+<ul class="itemize mark-bullet">
+<li>Directories specified with GNU <code class="code">troff</code>&rsquo;s or <code class="code">groff</code>&rsquo;s
+<samp class="option">-M</samp> command-line option.
+
+</li><li><a class="index-entry-id" id="index-GROFF_005fTMAC_005fPATH_002c-environment-variable-1"></a>
+Directories listed in the <code class="env">GROFF_TMAC_PATH</code> environment variable.
+
+</li><li><a class="index-entry-id" id="index-safer-mode-1"></a>
+<a class="index-entry-id" id="index-mode_002c-safer-1"></a>
+<a class="index-entry-id" id="index-unsafe-mode-1"></a>
+<a class="index-entry-id" id="index-mode_002c-unsafe-1"></a>
+<a class="index-entry-id" id="index-current-directory"></a>
+<a class="index-entry-id" id="index-directory_002c-current"></a>
+The current working directory (only if in unsafe mode using the
+<samp class="option">-U</samp> command-line option).
+
+</li><li><a class="index-entry-id" id="index-home-directory"></a>
+<a class="index-entry-id" id="index-directory_002c-home"></a>
+The user&rsquo;s home directory, <code class="env">HOME</code>.
+
+</li><li><a class="index-entry-id" id="index-site_002dlocal-directory"></a>
+<a class="index-entry-id" id="index-directory_002c-site_002dlocal"></a>
+<a class="index-entry-id" id="index-platform_002dspecific-directory"></a>
+<a class="index-entry-id" id="index-directory_002c-platform_002dspecific"></a>
+A platform-dependent directory, a site-local (platform-independent)
+directory, and the main <i class="slanted">tmac</i> directory. The locations
+corresponding to your installation are listed in section &ldquo;Environment&rdquo;
+of <cite class="cite">gtroff<span class="r">(1)</span></cite>. If not otherwise configured, they are as
+follows.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">/usr/local/lib/groff/site-tmac
+/usr/local/share/groff/site-tmac
+/usr/local/share/groff/1.23.0/tmac
+</pre></div></div>
+
+<p>The foregoing assumes that the version of <code class="code">groff</code> is 1.23.0, and
+that the installation prefix was <samp class="file">/usr/local</samp>. It is possible to
+fine-tune these locations during the source configuration process.
+</p></li></ul>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Font-Directories">
+<div class="nav-panel">
+<p>
+Next: <a href="#Paper-Format" accesskey="n" rel="next">Paper Format</a>, Previous: <a href="#Macro-Directories" accesskey="p" rel="prev">Macro Directories</a>, Up: <a href="#Invoking-groff" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Font-Directories-1">2.4 Font Directories</h3>
+<a class="index-entry-id" id="index-font-directories"></a>
+<a class="index-entry-id" id="index-directories-for-fonts"></a>
+<a class="index-entry-id" id="index-searching-fonts"></a>
+<a class="index-entry-id" id="index-fonts_002c-searching"></a>
+
+<p><code class="code">groff</code> enforces few restrictions on how font description files are
+named. For its family/style mechanism to work (see <a class="pxref" href="#Font-Families">Font Families</a>),
+the names of fonts within a family should start with the family name,
+followed by the style. For example, the Times family uses &lsquo;<samp class="samp">T</samp>&rsquo; for
+the family name and &lsquo;<samp class="samp">R</samp>&rsquo;, &lsquo;<samp class="samp">B</samp>&rsquo;, &lsquo;<samp class="samp">I</samp>&rsquo;, and &lsquo;<samp class="samp">BI</samp>&rsquo; to
+indicate the styles &lsquo;roman&rsquo;, &lsquo;bold&rsquo;, &lsquo;italic&rsquo;, and &lsquo;bold italic&rsquo;,
+respectively. Thus the final font names are &lsquo;<samp class="samp">TR</samp>&rsquo;, &lsquo;<samp class="samp">TB</samp>&rsquo;,
+&lsquo;<samp class="samp">TI</samp>&rsquo;, and &lsquo;<samp class="samp">TBI</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-font-path"></a>
+<a class="index-entry-id" id="index-path_002c-for-font-files"></a>
+<p>Font description files are kept in <em class="dfn">font directories</em>, which
+together constitute the <em class="dfn">font path</em>. The search procedure
+always appends the directory <code class="code">dev</code><var class="var">name</var>, where <var class="var">name</var> is
+the name of the output device. Assuming TeX DVI output, and
+<samp class="file">/foo/bar</samp> as a font directory, the font description files for
+<code class="command">grodvi</code> must be in <samp class="file">/foo/bar/devdvi</samp>.
+Each directory in the font path is searched in the following order until
+the desired font description file is found or the list is exhausted.
+</p>
+<ul class="itemize mark-bullet">
+<li>Directories specified with GNU <code class="code">troff</code>&rsquo;s or <code class="code">groff</code>&rsquo;s
+<samp class="option">-f</samp> command-line option. All output drivers (and some
+preprocessors) support this option as well, because they require
+information about the glyphs to be rendered in the document.
+
+</li><li><a class="index-entry-id" id="index-GROFF_005fFONT_005fPATH_002c-environment-variable-1"></a>
+Directories listed in the <code class="env">GROFF_FONT_PATH</code> environment variable.
+
+</li><li><a class="index-entry-id" id="index-site_002dlocal-directory-1"></a>
+<a class="index-entry-id" id="index-directory_002c-site_002dlocal-1"></a>
+A site-local directory and the main font description directory.
+The locations corresponding to your installation are listed in section
+&ldquo;Environment&rdquo; of <cite class="cite">gtroff<span class="r">(1)</span></cite>. If not otherwise configured,
+they are as follows.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">/usr/local/share/groff/site-font
+/usr/local/share/groff/1.23.0/font
+</pre></div></div>
+
+<p>The foregoing assumes that the version of <code class="code">groff</code> is 1.23.0, and
+that the installation prefix was <samp class="file">/usr/local</samp>. It is possible to
+fine-tune these locations during the source configuration process.
+</p></li></ul>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Paper-Format">
+<div class="nav-panel">
+<p>
+Next: <a href="#Invocation-Examples" accesskey="n" rel="next">Invocation Examples</a>, Previous: <a href="#Font-Directories" accesskey="p" rel="prev">Font Directories</a>, Up: <a href="#Invoking-groff" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Paper-Format-1">2.5 Paper Format</h3>
+<a class="index-entry-id" id="index-paper-format"></a>
+<a class="index-entry-id" id="index-format_002c-paper"></a>
+<a class="index-entry-id" id="index-paper-size"></a>
+<a class="index-entry-id" id="index-size_002c-paper"></a>
+<a class="index-entry-id" id="index-landscape-page-orientation"></a>
+<a class="index-entry-id" id="index-orientation_002c-landscape"></a>
+<a class="index-entry-id" id="index-page-orientation_002c-landscape"></a>
+
+<p>In <code class="code">groff</code>, the page dimensions for the formatter GNU <code class="code">troff</code>
+and for output devices are handled separately. See <a class="xref" href="#Page-Layout">Page Layout</a>, for
+vertical manipulation of the page size, and See <a class="xref" href="#Line-Layout">Line Layout</a>, for
+horizontal changes.
+<a class="index-entry-id" id="index-papersize_002etmac"></a>
+<a class="index-entry-id" id="index-troffrc-1"></a>
+The <samp class="file">papersize</samp> macro package, normally loaded by <samp class="file">troffrc</samp> at
+startup, provides an interface for configuring page dimensions by
+convenient names, like &lsquo;<samp class="samp">letter</samp>&rsquo; or &lsquo;<samp class="samp">a4</samp>&rsquo;; see
+<cite class="cite">groff_tmac<span class="r">(5)</span></cite>. The default used by the formatter depends on
+its build configuration, but is usually one of the foregoing, as
+geographically appropriate.
+</p>
+<p>It is up to each macro package to respect the page dimensions configured
+in this way.
+</p>
+<p>For each output device, the size of the output medium can be set in its
+<samp class="file">DESC</samp> file. Most output drivers also recognize a command-line
+option <samp class="option">-p</samp> to override the default dimensions and an option
+<samp class="option">-l</samp> to use landscape orientation. See <a class="xref" href="#DESC-File-Format"><samp class="file">DESC</samp> File Format</a>, for
+a description of the <code class="code">papersize</code> keyword, which takes an argument
+of the same form as <samp class="option">-p</samp>. The output driver&rsquo;s man page, such as
+<cite class="cite">grops<span class="r">(1)</span></cite>, may also be helpful.
+</p>
+<p><code class="code">groff</code> uses the command-line option <samp class="option">-P</samp> to pass options to
+postprocessors; for example, use the following for PostScript output on
+A4 paper in landscape orientation.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms &gt; foo.ps
+</pre></div></div>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Invocation-Examples">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Paper-Format" accesskey="p" rel="prev">Paper Format</a>, Up: <a href="#Invoking-groff" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Invocation-Examples-1">2.6 Invocation Examples</h3>
+<a class="index-entry-id" id="index-invocation-examples"></a>
+<a class="index-entry-id" id="index-examples-of-invocation"></a>
+
+<p><code class="code">roff</code> systems are best known for formatting man pages. Once a
+<code class="command">man</code> librarian program has located a man page, it may execute
+a <code class="code">groff</code> command much like the following.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -t -man -Tutf8 /usr/share/man/man1/groff.1
+</pre></div></div>
+
+<p>The librarian will also pipe the output through a pager, which might not
+interpret the SGR terminal escape sequences <code class="command">groff</code> emits for
+boldface, underlining, or italics; see the <cite class="cite">grotty<span class="r">(1)</span></cite> man page
+for a discussion.
+</p>
+<p>To process a <code class="code">roff</code> input file using the preprocessors
+<code class="command">gtbl</code> and <code class="command">gpic</code> and the <samp class="file">me</samp> macro package in the
+way to which AT&amp;T <code class="code">troff</code> users were accustomed, one would type (or
+script) a pipeline.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">gpic foo.me | gtbl | gtroff -me -Tutf8 | grotty
+</pre></div></div>
+
+<p>Using <code class="command">groff</code>, this pipe can be shortened to an equivalent
+command.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -p -t -me -T utf8 foo.me
+</pre></div></div>
+
+<p>An even easier way to do this is to use <code class="command">grog</code> to guess the
+preprocessor and macro options and execute the result by using the
+command substitution feature of the shell.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$(grog -Tutf8 foo.me)
+</pre></div></div>
+
+<p>Each command-line option to a postprocessor must be specified with any
+required leading dashes &lsquo;<samp class="samp">-</samp>&rsquo;
+because <code class="command">groff</code> passes the arguments as-is to the postprocessor;
+this permits arbitrary arguments to be transmitted. For example, to
+pass a title to the <code class="command">gxditview</code> postprocessor,
+the shell commands
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -X -P -title -P 'trial run' mydoc.t
+</pre></div></div>
+
+<p>and
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -X -Z mydoc.t | gxditview -title 'trial run' -
+</pre></div></div>
+
+<p>are equivalent.
+</p>
+
+
+
+<hr>
+</div>
+</div>
+<div class="chapter-level-extent" id="Tutorial-for-Macro-Users">
+<div class="nav-panel">
+<p>
+Next: <a href="#Major-Macro-Packages" accesskey="n" rel="next">Macro Packages</a>, Previous: <a href="#Invoking-groff" accesskey="p" rel="prev">Invoking <code class="code">groff</code></a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="chapter" id="Tutorial-for-Macro-Users-1">3 Tutorial for Macro Users</h2>
+<a class="index-entry-id" id="index-tutorial-for-macro-users"></a>
+<a class="index-entry-id" id="index-macros_002c-tutorial-for-users"></a>
+<a class="index-entry-id" id="index-user_0027s-tutorial-for-macros"></a>
+<a class="index-entry-id" id="index-user_0027s-macro-tutorial"></a>
+
+<p>Most users of the <code class="code">roff</code> language employ a macro package to format
+their documents. Successful macro packages ease the composition
+process; their users need not have mastered the full formatting
+language, nor understand features like diversions, traps, and
+environments. This chapter aims to familiarize you with basic concepts
+and mechanisms common to many macro packages (like &ldquo;displays&rdquo;). If
+you prefer a meticulous and comprehensive presentation, try <a class="ref" href="#GNU-troff-Reference">GNU <code class="code">troff</code> Reference</a> instead.
+</p>
+
+
+
+<ul class="mini-toc">
+<li><a href="#Basics" accesskey="1">Basics</a></li>
+<li><a href="#Common-Features" accesskey="2">Common Features</a></li>
+</ul>
+<hr>
+<div class="section-level-extent" id="Basics">
+<div class="nav-panel">
+<p>
+Next: <a href="#Common-Features" accesskey="n" rel="next">Common Features</a>, Previous: <a href="#Tutorial-for-Macro-Users" accesskey="p" rel="prev">Tutorial for Macro Users</a>, Up: <a href="#Tutorial-for-Macro-Users" accesskey="u" rel="up">Tutorial for Macro Users</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Basics-1">3.1 Basics</h3>
+<a class="index-entry-id" id="index-basics-of-macro-package-usage"></a>
+<a class="index-entry-id" id="index-macro-package-usage_002c-basics-of"></a>
+
+<p>Let us first survey some basic concepts necessary to use a macro package
+fruitfully.<a class="footnote" id="DOCF6" href="#FOOT6"><sup>6</sup></a>
+References are made throughout to more detailed information.
+</p>
+<p>GNU <code class="code">troff</code> reads an input file prepared by the user and outputs a
+formatted document suitable for publication or framing. The input
+consists of text, or words to be printed, and embedded commands
+(<i class="slanted">requests</i> and <i class="slanted">escape sequences</i>), which tell GNU
+<code class="code">troff</code> how to format the output. See <a class="xref" href="#Formatter-Instructions">Formatter Instructions</a>.
+</p>
+<p>The word <i class="slanted">argument</i> is used in this chapter to mean a word or
+number that appears on the same line as a request, and which modifies
+the meaning of that request. For example, the request
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.sp
+</pre></div></div>
+
+<p>spaces one line, but
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.sp 4
+</pre></div></div>
+
+<p>spaces four lines. The number&nbsp;4 is an argument to the <code class="code">sp</code>
+request, which says to space four lines instead of one. Arguments are
+separated from the request and from each other by spaces (<em class="emph">not</em>
+tabs). See <a class="xref" href="#Invoking-Requests">Invoking Requests</a>.
+</p>
+<p>The primary function of GNU <code class="code">troff</code> is to collect words from input
+lines, fill output lines with those words, adjust the line to the
+right-hand margin by widening spaces, and output the result. For
+example, the input:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Now is the time
+for all good men
+to come to the aid
+of their party.
+Four score and seven
+years ago, etc.
+</pre></div></div>
+
+<p>is read, packed onto output lines, and justified to produce:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; Now is the time for all good men to come to the aid of
+ &rArr; their party. Four score and seven years ago, etc.
+</pre></div></div>
+
+<p>Sometimes a new output line should be started even though the current
+line is not yet full&mdash;for example, at the end of a paragraph. To do
+this it is possible to force a <i class="slanted">break</i>, starting a new output
+line. Some requests cause a break automatically, as do (normally) blank
+input lines and input lines beginning with a space or tab.
+</p>
+<p>Not all input lines are <i class="slanted">text lines</i>&mdash;words to be formatted.
+Some are <i class="slanted">control lines</i> that tell a macro package (or GNU
+<code class="code">troff</code> directly) how to format the text. Control lines start with
+a dot (&lsquo;<samp class="samp">.</samp>&rsquo;) or an apostrophe (&lsquo;<samp class="samp">'</samp>&rsquo;) as the first character, and
+can be followed by a <i class="slanted">macro call</i>.
+</p>
+<p>The formatter also does more complex things, such as automatically
+numbering pages, skipping over page boundaries, putting footnotes in the
+correct place, and so forth.
+</p>
+<p>Here are a few hints for preparing text for input to GNU <code class="code">troff</code>.
+</p>
+<ul class="itemize mark-bullet">
+<li>First, keep the input lines short. Short input lines are easier to
+edit, and GNU <code class="code">troff</code> packs words onto longer lines anyhow.
+
+</li><li>In keeping with this, it is helpful to begin a new line after every
+comma or phrase, since common corrections are to add or delete sentences
+or phrases.
+
+</li><li>End each sentence with two spaces&mdash;or better, start each sentence on a
+new line. GNU <code class="code">troff</code> recognizes characters that usually end a
+sentence, and inserts inter-sentence space accordingly.
+
+</li><li>Do not hyphenate words at the end of lines&mdash;GNU <code class="code">troff</code> is smart
+enough to hyphenate words as needed, but is not smart enough to take
+hyphens out and join a word back together. Also, words such as
+&ldquo;mother-in-law&rdquo; should not be broken over a line, since then a space
+can occur where not wanted, such as &ldquo;<span class="w-nolinebreak-text">mother-</span>&nbsp;in<!-- /@w -->-law&rdquo;.
+</li></ul>
+
+<p>We offer further advice in <a class="ref" href="#Input-Conventions">Input Conventions</a>.
+</p>
+<a class="index-entry-id" id="index-vertical-spacing-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-spacing_002c-vertical-_0028introduction_0029"></a>
+<p>GNU <code class="code">troff</code> permits alteration of the distance between lines of
+text. This is termed <i class="slanted">vertical spacing</i> and is expressed in the
+same units as the type size&mdash;the point. The default is 10-point type
+on 12-point spacing. To get <i class="slanted">double-spaced</i> text you would set
+the vertical spacing to 24 points. Some, but not all, macro packages
+expose a macro or register to configure the vertical spacing.
+</p>
+<p>A number of requests allow you to change the way the output is arranged
+on the page, sometimes called the <i class="slanted">layout</i> of the output page.
+Most macro packages don&rsquo;t supply macros for performing these (at least
+not without performing other actions besides), as they are such basic
+operations. The macro packages for writing man pages, <samp class="file">man</samp> and
+<samp class="file">mdoc</samp>, don&rsquo;t encourage explicit use of these requests at all.
+</p>
+<a class="index-entry-id" id="index-spacing-_0028introduction_0029"></a>
+<p>The request &lsquo;<samp class="samp">.sp&nbsp;<var class="var">N</var></samp>&rsquo;<!-- /@w --> leaves <var class="var">N</var>&nbsp;lines of blank
+space. <var class="var">N</var>&nbsp;can be omitted (skipping a single line) or can
+be of the form <var class="var">N</var>i (for <var class="var">N</var>&nbsp;inches) or <var class="var">N</var>c (for
+<var class="var">N</var>&nbsp;centimeters). For example, the input:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.sp 1.5i
+My thoughts on the subject
+.sp
+</pre></div></div>
+
+<p>leaves one and a half inches of space, followed by the line &ldquo;My
+thoughts on the subject&rdquo;, followed by a single blank line (more
+measurement units are available; see <a class="ref" href="#Measurements">Measurements</a>).
+</p>
+<p>If you seek precision in spacing, be advised when using a macro package
+that it might not honor <code class="code">sp</code> requests as you expect; it can use a
+formatter feature called <i class="slanted">no-space mode</i> to prevent excess space
+from accumulating. Macro packages typically offer registers to control
+spacing between paragraphs, before section headings, and around displays
+(discussed below); use these facilities preferentially.
+See <a class="xref" href="#Manipulating-Spacing">Manipulating Spacing</a>.
+</p>
+<a class="index-entry-id" id="index-centering-lines-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-lines_002c-centering-_0028introduction_0029"></a>
+<p>Text lines can be centered by using the <code class="code">ce</code> request. The line
+after <code class="code">ce</code> is centered (horizontally) on the page. To center more
+than one line, use &lsquo;<samp class="samp">.ce&nbsp;<var class="var">N</var></samp>&rsquo;<!-- /@w --> (where <var class="var">N</var> is the number
+of lines to center), followed by the <var class="var">N</var>&nbsp;lines. To center many
+lines without counting them, type:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ce 1000
+lines to center
+.ce 0
+</pre></div></div>
+
+<p>The &lsquo;<samp class="samp">.ce&nbsp;0</samp>&rsquo;<!-- /@w --> request tells GNU <code class="code">troff</code> to center zero more
+lines, in other words, stop centering.
+</p>
+<a class="index-entry-id" id="index-right_002daligning-lines-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-lines_002c-right_002daligning-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-right_002djustifying-lines-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-lines_002c-right_002djustifying-_0028introduction_0029"></a>
+<p>GNU <code class="code">troff</code> also offers the <code class="code">rj</code> request for right-aligning
+text. It works analogously to <code class="code">ce</code> and is convenient for setting
+epigraphs.
+</p>
+<a class="index-entry-id" id="index-page-break-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-break_002c-page-_0028introduction_0029"></a>
+<p>The <code class="code">bp</code> request starts a new page; this necessarily implies an
+ordinary (line) break.
+</p>
+<a class="index-entry-id" id="index-break-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-line-break-_0028introduction_0029"></a>
+<p>All of these requests cause a break; that is, they always start a new
+line. To start a new line without performing any other action, use
+<code class="code">br</code>. If you invoke them with the apostrophe &lsquo;<samp class="samp">'</samp>&rsquo;, the
+<i class="slanted">no-break control character</i>, the (initial) break they normally
+perform is suppressed. &lsquo;<samp class="samp">'br</samp>&rsquo; does nothing.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Common-Features">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Basics" accesskey="p" rel="prev">Basics</a>, Up: <a href="#Tutorial-for-Macro-Users" accesskey="u" rel="up">Tutorial for Macro Users</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Common-Features-1">3.2 Common Features</h3>
+<a class="index-entry-id" id="index-common-features"></a>
+<a class="index-entry-id" id="index-features_002c-common"></a>
+
+<p>GNU <code class="code">troff</code> provides low-level operations for formatting a
+document. Many routine operations are undertaken in nearly all
+documents that require a series of such primitive operations to be
+performed. These common tasks are grouped into <i class="slanted">macros</i>, which
+are then collected into a <i class="slanted">macro package</i>.
+</p>
+<p>Macro packages come in two varieties: &ldquo;major&rdquo; or &ldquo;full-service&rdquo;
+ones that manage page layout, and &ldquo;minor&rdquo; or &ldquo;auxiliary&rdquo; ones that
+do not, instead fulfilling narrow, specific tasks. Find a list in the
+<cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page. Type &lsquo;<samp class="samp">man groff_tmac</samp>&rsquo; at the
+command line to view it.
+</p>
+<p>We survey several capabilities of full-service macro package below.
+Each package employs its own macros to exercise them. For details,
+consult its man page or, for <samp class="file">ms</samp>, see <a class="ref" href="#ms"><samp class="file">ms</samp></a>.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#Paragraphs" accesskey="1">Paragraphs</a></li>
+<li><a href="#Sections-and-Chapters" accesskey="2">Sections and Chapters</a></li>
+<li><a href="#Headers-and-Footers" accesskey="3">Headers and Footers</a></li>
+<li><a href="#Page-Layout-Adjustment" accesskey="4">Page Layout</a></li>
+<li><a href="#Displays-and-Keeps" accesskey="5">Displays and Keeps</a></li>
+<li><a href="#Footnotes-and-Endnotes" accesskey="6">Footnotes and Endnotes</a></li>
+<li><a href="#Table-of-Contents" accesskey="7">Table of Contents</a></li>
+<li><a href="#Indexing" accesskey="8">Indexing</a></li>
+<li><a href="#Document-Formats" accesskey="9">Document Formats</a></li>
+<li><a href="#Columnation">Columnation</a></li>
+<li><a href="#Font-and-Size-Changes">Font and Size Changes</a></li>
+<li><a href="#Predefined-Text">Predefined Text</a></li>
+<li><a href="#Preprocessor-Support">Preprocessor Support</a></li>
+<li><a href="#Configuration-and-Customization">Configuration and Customization</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Paragraphs">
+<div class="nav-panel">
+<p>
+Next: <a href="#Sections-and-Chapters" accesskey="n" rel="next">Sections and Chapters</a>, Previous: <a href="#Common-Features" accesskey="p" rel="prev">Common Features</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Paragraphs-1">3.2.1 Paragraphs</h4>
+<a class="index-entry-id" id="index-paragraphs"></a>
+
+<p>Paragraphs can be separated and indented in various ways. Some start
+with a blank line and have a first-line indentation, like most of the
+ones in this manual. Block paragraphs omit the indentation.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; Some men look at constitutions with sanctimonious
+ &rArr; reverence, and deem them like the ark of the
+ &rArr; covenant, too sacred to be touched.
+</pre></div></div>
+
+<a class="index-entry-id" id="index-tags_002c-paragraph"></a>
+<a class="index-entry-id" id="index-tagged-paragraphs"></a>
+<a class="index-entry-id" id="index-lists"></a>
+<p>We also frequently encounter <i class="slanted">tagged</i> paragraphs, which begin
+with a tag or label at the left margin and indent the remaining text.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; one This is the first paragraph. Notice how the
+ &rArr; first line of the resulting paragraph lines
+ &rArr; up with the other lines in the paragraph.
+</pre></div></div>
+
+<p>If the tag is too wide for the indentation, the line is broken.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; longlabel
+ &rArr; The label does not align with the subsequent
+ &rArr; lines, but they align with each other.
+</pre></div></div>
+
+<p>A variation of the tagged paragraph is the itemized or enumerated
+paragraph, which might use punctuation or a digit for a tag,
+respectively. These are frequently used to construct lists.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; o This list item starts with a bullet. When
+ &rArr; producing output for a device using the ASCII
+ &rArr; character set, an 'o' is formatted instead.
+</pre></div></div>
+
+<p>Often, use of the same macro without a tag continues such a discussion.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; -xyz This option is recognized but ignored.
+ &rArr;
+ &rArr; It had a security hole that we don't discuss.
+</pre></div></div>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Sections-and-Chapters">
+<div class="nav-panel">
+<p>
+Next: <a href="#Headers-and-Footers" accesskey="n" rel="next">Headers and Footers</a>, Previous: <a href="#Paragraphs" accesskey="p" rel="prev">Paragraphs</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Sections-and-Chapters-1">3.2.2 Sections and Chapters</h4>
+
+<p>The simplest kind of section heading is unnumbered, set in a bold or
+italic style, and occupies a line by itself. Others possess
+automatically numbered multi-level headings and/or different typeface
+styles or sizes at different levels. More sophisticated macro packages
+supply macros for designating chapters and appendices.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Headers-and-Footers">
+<div class="nav-panel">
+<p>
+Next: <a href="#Page-Layout-Adjustment" accesskey="n" rel="next">Page Layout</a>, Previous: <a href="#Sections-and-Chapters" accesskey="p" rel="prev">Sections and Chapters</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Headers-and-Footers-1">3.2.3 Headers and Footers</h4>
+
+<p><i class="slanted">Headers</i> and <i class="slanted">footers</i> occupy the top and bottom of
+each page, respectively, and contain data like the page number and the
+article or chapter title. Their appearance is not affected by the
+running text. Some packages allow for different titles on even- and
+odd-numbered pages (for printed, bound material).
+</p>
+<p>Headers and footers are together called <i class="slanted">titles</i>, and comprise
+three parts: left-aligned, centered, and right-aligned. A &lsquo;<samp class="samp">%</samp>&rsquo;
+character appearing anywhere in a title is automatically replaced by the
+page number. See <a class="xref" href="#Page-Layout">Page Layout</a>.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Page-Layout-Adjustment">
+<div class="nav-panel">
+<p>
+Next: <a href="#Displays-and-Keeps" accesskey="n" rel="next">Displays and Keeps</a>, Previous: <a href="#Headers-and-Footers" accesskey="p" rel="prev">Headers and Footers</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Page-Layout-1">3.2.4 Page Layout</h4>
+
+<p>Most macro packages let the user specify the size of the page margins.
+The top and bottom margins are typically handled differently than the
+left and right margins; the latter two are derived from the
+<i class="slanted">page offset</i>, <i class="slanted">indentation</i>, and <i class="slanted">line length</i>.
+See <a class="xref" href="#Line-Layout">Line Layout</a>. Commonly, packages support registers to tune these
+values.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Displays-and-Keeps">
+<div class="nav-panel">
+<p>
+Next: <a href="#Footnotes-and-Endnotes" accesskey="n" rel="next">Footnotes and Endnotes</a>, Previous: <a href="#Page-Layout-Adjustment" accesskey="p" rel="prev">Page Layout</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Displays-and-Keeps-1">3.2.5 Displays and Keeps</h4>
+<a class="index-entry-id" id="index-displays"></a>
+
+<p><i class="slanted">Displays</i> are sections of text set off from the surrounding
+material (typically paragraphs), often differing in indentation, and/or
+spacing. Tables, block quotations, and figures are displayed.
+Equations and code examples, when not much shorter than an output line,
+often are. Lists may or may not be. Packages for setting man pages
+support example displays but not keeps.
+</p>
+<a class="index-entry-id" id="index-keeps-_0028introduction_0029"></a>
+<p>A <i class="slanted">keep</i> is a group of output lines, often a display, that is
+formatted on a single page if possible; it causes a page break to happen
+early so as to not interrupt the kept material.
+</p>
+<a class="index-entry-id" id="index-keep_002c-floating"></a>
+<a class="index-entry-id" id="index-floating-keep"></a>
+<p><i class="slanted">Floating keeps</i> can move, or &ldquo;float&rdquo;, relative to the text
+around them in the input. They are useful for displays that are
+captioned and referred to by name, as with &ldquo;See figure&nbsp;3&rdquo;.
+Depending on the package, a floating keep appears at the bottom of the
+current page if it fits, and at the top of the next otherwise.
+Alternatively, floating keeps might be deferred to the end of a section.
+Using a floating keep can avoid the large vertical spaces that may
+precede a tall keep of the ordinary sort when it won&rsquo;t fit on the page.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Footnotes-and-Endnotes">
+<div class="nav-panel">
+<p>
+Next: <a href="#Table-of-Contents" accesskey="n" rel="next">Table of Contents</a>, Previous: <a href="#Displays-and-Keeps" accesskey="p" rel="prev">Displays and Keeps</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Footnotes-and-Endnotes-1">3.2.6 Footnotes and Endnotes</h4>
+<a class="index-entry-id" id="index-footnotes"></a>
+<a class="index-entry-id" id="index-endnotes"></a>
+
+<p><i class="slanted">Footnotes</i> and <i class="slanted">endnotes</i> are forms of delayed
+formatting. They are recorded at their points of relevance in
+the input, but not formatted there. Instead, a <i class="slanted">mark</i> cues the
+reader to check the &ldquo;foot&rdquo;, or bottom, of the current page, or in the
+case of endnotes, an annotation list later in the document. Macro
+packages that support these features also supply a means of
+automatically numbering either type of annotation.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Table-of-Contents">
+<div class="nav-panel">
+<p>
+Next: <a href="#Indexing" accesskey="n" rel="next">Indexing</a>, Previous: <a href="#Footnotes-and-Endnotes" accesskey="p" rel="prev">Footnotes and Endnotes</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Table-of-Contents-1">3.2.7 Table of Contents</h4>
+<a class="index-entry-id" id="index-table-of-contents"></a>
+<a class="index-entry-id" id="index-contents_002c-table-of"></a>
+
+<p>A package may handle a <i class="slanted">table of contents</i> by directing section
+heading macros to save section heading text and the page number where it
+occurs for use in a later <i class="slanted">entry</i> for a table of contents. It
+writes the collected entries at the end of the document, once all are
+known, upon request. A row of dots (a <i class="slanted">leader</i>) bridges the
+text on the left with its location on the right. Other collections
+might work in this manner, providing lists of figures or tables.
+</p>
+<p>A table of contents is often found at the end of a GNU <code class="code">troff</code>
+document because the formatter processes the document in a single pass.
+The <code class="command">gropdf</code> output driver supports a PDF feature that relocates
+pages at the time the document is rendered; see the <cite class="cite">gropdf<span class="r">(1)</span></cite>
+man page. Type &lsquo;<samp class="samp">man gropdf</samp>&rsquo; at the command line to view it.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Indexing">
+<div class="nav-panel">
+<p>
+Next: <a href="#Document-Formats" accesskey="n" rel="next">Document Formats</a>, Previous: <a href="#Table-of-Contents" accesskey="p" rel="prev">Table of Contents</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Indexing-1">3.2.8 Indexing</h4>
+<a class="index-entry-id" id="index-index_002c-in-macro-package"></a>
+
+<a class="index-entry-id" id="index-makeindex"></a>
+<p>An index is similar to a table of contents, in that entry labels and
+locations must be collected, but poses a greater challenge because it
+needs to be sorted before it is output. Here, processing the document
+in multiple passes is inescapable, and tools like the <code class="code">makeindex</code>
+program are necessary.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Document-Formats">
+<div class="nav-panel">
+<p>
+Next: <a href="#Columnation" accesskey="n" rel="next">Columnation</a>, Previous: <a href="#Indexing" accesskey="p" rel="prev">Indexing</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Document-Formats-1">3.2.9 Document Formats</h4>
+<a class="index-entry-id" id="index-document-formats"></a>
+
+<p>Some macro packages supply stock configurations of certain documents,
+like business letters and memoranda. These often also have provision
+for a <i class="slanted">cover sheet</i>, which may be rigid in its format. With
+these features, it is even more important to use the package&rsquo;s macros in
+preference to the formatter requests presented earlier, where possible.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Columnation">
+<div class="nav-panel">
+<p>
+Next: <a href="#Font-and-Size-Changes" accesskey="n" rel="next">Font and Size Changes</a>, Previous: <a href="#Document-Formats" accesskey="p" rel="prev">Document Formats</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Columnation-1">3.2.10 Columnation</h4>
+
+<p>Macro packages apart from <samp class="file">man</samp> and <samp class="file">mdoc</samp> for man page
+formatting offer a facility for setting multiple columns on the page.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Font-and-Size-Changes">
+<div class="nav-panel">
+<p>
+Next: <a href="#Predefined-Text" accesskey="n" rel="next">Predefined Text</a>, Previous: <a href="#Columnation" accesskey="p" rel="prev">Columnation</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Font-and-Size-Changes-1">3.2.11 Font and Size Changes</h4>
+
+<p>The formatter&rsquo;s requests and escape sequences for setting the typeface
+and size are not always intuitive, so all macro packages provide macros
+to make these operations simpler. They also make it more convenient to
+change typefaces in the middle of a word and can handle italic
+corrections automatically. See <a class="xref" href="#Italic-Corrections">Italic Corrections</a>.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Predefined-Text">
+<div class="nav-panel">
+<p>
+Next: <a href="#Preprocessor-Support" accesskey="n" rel="next">Preprocessor Support</a>, Previous: <a href="#Font-and-Size-Changes" accesskey="p" rel="prev">Font and Size Changes</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Predefined-Text-1">3.2.12 Predefined Text</h4>
+
+<p>Most macro packages supply predefined strings to set prepared text like
+the date, or to perform operations like super- and subscripting.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Preprocessor-Support">
+<div class="nav-panel">
+<p>
+Next: <a href="#Configuration-and-Customization" accesskey="n" rel="next">Configuration and Customization</a>, Previous: <a href="#Predefined-Text" accesskey="p" rel="prev">Predefined Text</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Preprocessor-Support-1">3.2.13 Preprocessor Support</h4>
+
+<p>All macro packages provide support for various preprocessors and may
+extend their functionality by defining macros to set their contents in
+displays. Examples include <code class="code">TS</code> and <code class="code">TE</code> for <code class="command">gtbl</code>,
+<code class="code">EQ</code> and <code class="code">EN</code> for <code class="command">geqn</code>, and <code class="code">PS</code> and <code class="code">PE</code>
+for <code class="command">gpic</code>.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Configuration-and-Customization">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Preprocessor-Support" accesskey="p" rel="prev">Preprocessor Support</a>, Up: <a href="#Common-Features" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Configuration-and-Customization-1">3.2.14 Configuration and Customization</h4>
+
+<p>Packages provide means of customizing many of the details of how the
+package behaves. These range from setting the default type size to
+changing the appearance of section headers.
+</p>
+
+
+
+
+<hr>
+</div>
+</div>
+</div>
+<div class="chapter-level-extent" id="Major-Macro-Packages">
+<div class="nav-panel">
+<p>
+Next: <a href="#GNU-troff-Reference" accesskey="n" rel="next">GNU <code class="code">troff</code> Reference</a>, Previous: <a href="#Tutorial-for-Macro-Users" accesskey="p" rel="prev">Tutorial for Macro Users</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="chapter" id="Macro-Packages-2">4 Macro Packages</h2>
+<a class="index-entry-id" id="index-major-macro-package"></a>
+<a class="index-entry-id" id="index-package_002c-macro_002c-major"></a>
+<a class="index-entry-id" id="index-macro-package_002c-major"></a>
+
+<p>This chapter surveys the &ldquo;major&rdquo; macro packages that come with
+<code class="code">groff</code>. One, <samp class="file">ms</samp>, is presented in detail.
+</p>
+<a class="index-entry-id" id="index-full_002dservice-macro-package"></a>
+<a class="index-entry-id" id="index-package_002c-macro_002c-full_002dservice"></a>
+<a class="index-entry-id" id="index-macro-package_002c-full_002dservice"></a>
+<p>Major macro packages are also sometimes described as <em class="dfn">full-service</em>
+due to the breadth of features they provide and because more than one
+cannot be used by the same document; for example
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -m man foo.man -m ms bar.doc
+</pre></div></div>
+
+<p>doesn&rsquo;t work. Option arguments are processed before non-option
+arguments; the above (failing) sample is thus reordered to
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -m man -m ms foo.man bar.doc
+</pre></div></div>
+
+<a class="index-entry-id" id="index-minor-macro-package"></a>
+<a class="index-entry-id" id="index-package_002c-macro_002c-minor"></a>
+<a class="index-entry-id" id="index-macro-package_002c-minor"></a>
+<a class="index-entry-id" id="index-auxiliary-macro-package"></a>
+<a class="index-entry-id" id="index-package_002c-macro_002c-auxiliary"></a>
+<a class="index-entry-id" id="index-macro-package_002c-auxiliary"></a>
+<p>Many auxiliary, or &ldquo;minor&rdquo;, macro packages are also available. They
+may in general be used with any full-service macro package and handle a
+variety of tasks from character encoding selection, to language
+localization, to inlining of raster images. See the
+<cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page for a list. Type &lsquo;<samp class="samp">man
+groff_tmac</samp>&rsquo; at the command line to view it.
+</p>
+
+
+
+<ul class="mini-toc">
+<li><a href="#man" accesskey="1"><samp class="file">man</samp></a></li>
+<li><a href="#mdoc" accesskey="2"><samp class="file">mdoc</samp></a></li>
+<li><a href="#me" accesskey="3"><samp class="file">me</samp></a></li>
+<li><a href="#mm" accesskey="4"><samp class="file">mm</samp></a></li>
+<li><a href="#mom" accesskey="5"><samp class="file">mom</samp></a></li>
+<li><a href="#ms" accesskey="6"><samp class="file">ms</samp></a></li>
+</ul>
+<hr>
+<div class="section-level-extent" id="man">
+<div class="nav-panel">
+<p>
+Next: <a href="#mdoc" accesskey="n" rel="next"><samp class="file">mdoc</samp></a>, Previous: <a href="#Major-Macro-Packages" accesskey="p" rel="prev">Macro Packages</a>, Up: <a href="#Major-Macro-Packages" accesskey="u" rel="up">Macro Packages</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="man-1">4.1 <samp class="file">man</samp></h3>
+<a class="index-entry-id" id="index-manual-pages"></a>
+<a class="index-entry-id" id="index-man-pages"></a>
+<a class="index-entry-id" id="index-an_002etmac"></a>
+<a class="index-entry-id" id="index-man_002etmac"></a>
+
+<p>The <code class="code">man</code> macro package is the most widely used and probably the
+most important ever developed for <code class="code">troff</code>. It is easy to use, and
+a vast majority of manual pages (&ldquo;man pages&rdquo;) are written in it.
+</p>
+<p><code class="code">groff</code>&rsquo;s implementation is documented in the
+<cite class="cite">groff_man<span class="r">(7)</span></cite> man page. Type &lsquo;<samp class="samp">man groff_man</samp>&rsquo; at the
+command line to view it.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#Optional-man-extensions" accesskey="1">Optional <samp class="file">man</samp> extensions</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Optional-man-extensions">
+<div class="nav-panel">
+<p>
+Up: <a href="#man" accesskey="u" rel="up"><samp class="file">man</samp></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Optional-man-extensions-1">4.1.1 Optional <samp class="file">man</samp> extensions</h4>
+
+<a class="index-entry-id" id="index-man_002elocal"></a>
+<p>Use the file <samp class="file">man.local</samp> for local extensions to the <code class="code">man</code>
+macros or for style changes.
+</p>
+<ul class="mini-toc">
+<li><a href="#Custom-headers-and-footers" accesskey="1">Custom headers and footers</a></li>
+<li><a href="#Ultrix_002dspecific-man-macros" accesskey="2">Ultrix-specific man macros</a></li>
+<li><a href="#Simple-example" accesskey="3">Simple example</a></li>
+</ul>
+<div class="unnumberedsubsubsec-level-extent" id="Custom-headers-and-footers">
+<h4 class="unnumberedsubsubsec">Custom headers and footers</h4>
+<a class="index-entry-id" id="index-man-macros_002c-custom-headers-and-footers"></a>
+
+<p>In <code class="code">groff</code> versions 1.18.2 and later, you can specify custom
+headers and footers by redefining the following macros in
+<samp class="file">man.local</samp>.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002ePT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PT</code></strong><a class="copiable-link" href='#index-_002ePT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PT-_005bman_005d"></a>
+<p>Control the content of the headers. Normally, the header prints the
+command name and section number on either side, and the optional fifth
+argument to <code class="code">TH</code> in the center.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eBT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.BT</code></strong><a class="copiable-link" href='#index-_002eBT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-BT-_005bman_005d"></a>
+<p>Control the content of the footers. Normally, the footer prints the
+page number and the third and fourth arguments to <code class="code">TH</code>.
+</p>
+<p>Use the <code class="code">FT</code> register to specify the footer position. The default
+is &minus;0.5<span class="dmn">i</span>.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Ultrix_002dspecific-man-macros">
+<h4 class="unnumberedsubsubsec">Ultrix-specific man macros</h4>
+<a class="index-entry-id" id="index-Ultrix_002dspecific-man-macros"></a>
+<a class="index-entry-id" id="index-man-macros_002c-Ultrix_002dspecific"></a>
+
+<a class="index-entry-id" id="index-man_002eultrix"></a>
+<p>The <code class="code">groff</code> source distribution includes a file named
+<samp class="file">man.ultrix</samp>, containing macros compatible with the Ultrix variant
+of <code class="code">man</code>. Copy this file into <samp class="file">man.local</samp> (or use the
+<code class="code">mso</code> request to load it) to enable the following macros.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eCT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.CT</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">key</i></span></var><a class="copiable-link" href='#index-_002eCT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-CT-_005bman_005d"></a>
+<p>Print &lsquo;<samp class="samp">&lt;CTRL/<var class="var">key</var>&gt;</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eCW"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.CW</code></strong><a class="copiable-link" href='#index-_002eCW'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-CW-_005bman_005d"></a>
+<p>Print subsequent text using a &ldquo;constant-width&rdquo; (monospaced) typeface
+(Courier roman).
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDs"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.Ds</code></strong><a class="copiable-link" href='#index-_002eDs'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Ds-_005bman_005d"></a>
+<p>Begin a non-filled display.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDe"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.De</code></strong><a class="copiable-link" href='#index-_002eDe'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-De-_005bman_005d"></a>
+<p>End a non-filled display started with <code class="code">Ds</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eEX"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EX</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">indent</i></span>]</var><a class="copiable-link" href='#index-_002eEX'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EX-_005bman_005d"></a>
+<p>Begin a non-filled display using a monospaced typeface (Courier roman).
+Use the optional <var class="var">indent</var> argument to indent the display.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eEE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EE</code></strong><a class="copiable-link" href='#index-_002eEE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EE-_005bman_005d"></a>
+<p>End a non-filled display started with <code class="code">EX</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eG"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.G</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eG'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-G-_005bman_005d"></a>
+<p>Set <var class="var">text</var> in Helvetica. If no text is present on the line where
+the macro is called, then the text of the next line appears in
+Helvetica.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eGL"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.GL</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eGL'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-GL-_005bman_005d"></a>
+<p>Set <var class="var">text</var> in Helvetica oblique. If no text is present on the line
+where the macro is called, then the text of the next line appears in
+Helvetica Oblique.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eHB"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.HB</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eHB'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-HB-_005bman_005d"></a>
+<p>Set <var class="var">text</var> in Helvetica bold. If no text is present on the line
+where the macro is called, then all text up to the next <code class="code">HB</code>
+appears in Helvetica bold.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eTB"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TB</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eTB'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TB-_005bman_005d"></a>
+<p>Identical to <code class="code">HB</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eMS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.MS</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">title</i></span> <span class="r"><i class="slanted">sect</i></span> [<span class="r"><i class="slanted">punct</i></span>]</var><a class="copiable-link" href='#index-_002eMS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MS-_005bman_005d"></a>
+<p>Set a man page reference in Ultrix format. The <var class="var">title</var> is in
+Courier instead of italic. Optional punctuation follows the section
+number without an intervening space.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eNT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NT</code></strong> <var class="def-var-arguments">[<code class="code">C</code>] [<span class="r"><i class="slanted">title</i></span>]</var><a class="copiable-link" href='#index-_002eNT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-NT-_005bman_005d"></a>
+<p>Begin a note. Print the optional <span class="r"><i class="slanted">title</i></span>, or the word &ldquo;Note&rdquo;,
+centered on the page. Text following the macro makes up the body of the
+note, and is indented on both sides. If the first argument is <code class="code">C</code>,
+the body of the note is printed centered (the second argument replaces
+the word &ldquo;Note&rdquo; if specified).
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eNE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NE</code></strong><a class="copiable-link" href='#index-_002eNE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-NE-_005bman_005d"></a>
+<p>End a note begun with <code class="code">NT</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002ePN"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PN</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">path</i></span> [<span class="r"><i class="slanted">punct</i></span>]</var><a class="copiable-link" href='#index-_002ePN'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PN-_005bman_005d"></a>
+<p>Set the path name in a monospaced typeface (Courier roman), followed by
+optional punctuation.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002ePn"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.Pn</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">punct</i></span>] <span class="r"><i class="slanted">path</i></span> [<span class="r"><i class="slanted">punct</i></span>]</var><a class="copiable-link" href='#index-_002ePn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Pn-_005bman_005d"></a>
+<p>If called with two arguments, identical to <code class="code">PN</code>. If called with
+three arguments, set the second argument in a monospaced typeface
+(Courier roman), bracketed by the first and third arguments in the
+current font.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eR"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.R</code></strong><a class="copiable-link" href='#index-_002eR'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-R-_005bman_005d"></a>
+<p>Switch to roman font and turn off any underlining in effect.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eRN"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RN</code></strong><a class="copiable-link" href='#index-_002eRN'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RN-_005bman_005d"></a>
+<p>Print the string &lsquo;<samp class="samp">&lt;RETURN&gt;</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eVS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.VS</code></strong> <var class="def-var-arguments">[<code class="code">4</code>]</var><a class="copiable-link" href='#index-_002eVS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-VS-_005bman_005d"></a>
+<p>Start printing a change bar in the margin if the number&nbsp;<code class="code">4</code> is
+specified. Otherwise, this macro does nothing.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eVE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.VE</code></strong><a class="copiable-link" href='#index-_002eVE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-VE-_005bman_005d"></a>
+<p>End printing the change bar begun by <code class="code">VS</code>.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Simple-example">
+<h4 class="unnumberedsubsubsec">Simple example</h4>
+
+<p>The following example <samp class="file">man.local</samp> file alters the <code class="code">SH</code> macro
+to add some extra vertical space before printing the heading. Headings
+are printed in Helvetica bold.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; Make the heading fonts Helvetica
+.ds HF HB
+.
+.\&quot; Put more space in front of headings.
+.rn SH SH-orig
+.de SH
+. if t .sp (u;\\n[PD]*2)
+. SH-orig \\$*
+..
+</pre></div></div>
+
+
+
+<hr>
+</div>
+</div>
+</div>
+<div class="section-level-extent" id="mdoc">
+<div class="nav-panel">
+<p>
+Next: <a href="#me" accesskey="n" rel="next"><samp class="file">me</samp></a>, Previous: <a href="#man" accesskey="p" rel="prev"><samp class="file">man</samp></a>, Up: <a href="#Major-Macro-Packages" accesskey="u" rel="up">Macro Packages</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="mdoc-1">4.2 <samp class="file">mdoc</samp></h3>
+<a class="index-entry-id" id="index-mdoc-macros"></a>
+
+<p><code class="code">groff</code>&rsquo;s implementation of the BSD <samp class="file">doc</samp> package for man
+pages is documented in the <cite class="cite">groff_mdoc<span class="r">(7)</span></cite> man page. Type
+&lsquo;<samp class="samp">man groff_mdoc</samp>&rsquo; at the command line to view it.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="me">
+<div class="nav-panel">
+<p>
+Next: <a href="#mm" accesskey="n" rel="next"><samp class="file">mm</samp></a>, Previous: <a href="#mdoc" accesskey="p" rel="prev"><samp class="file">mdoc</samp></a>, Up: <a href="#Major-Macro-Packages" accesskey="u" rel="up">Macro Packages</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="me-1">4.3 <samp class="file">me</samp></h3>
+<a class="index-entry-id" id="index-me-macro-package"></a>
+
+<p><code class="code">groff</code>&rsquo;s implementation of the BSD <samp class="file">me</samp> macro package is
+documented using itself. A tutorial, <samp class="file">meintro.me</samp>, and reference,
+<samp class="file">meref.me</samp>, are available in <code class="code">groff</code>&rsquo;s documentation
+directory. A <cite class="cite">groff_me<span class="r">(7)</span></cite> man page is also available and
+identifies the installation path for these documents. Type &lsquo;<samp class="samp">man
+groff_me</samp>&rsquo; at the command line to view it.
+</p>
+<p>A French translation of the tutorial is available as
+<samp class="file">meintro_fr.me</samp> and installed parallel to the English version.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="mm">
+<div class="nav-panel">
+<p>
+Next: <a href="#mom" accesskey="n" rel="next"><samp class="file">mom</samp></a>, Previous: <a href="#me" accesskey="p" rel="prev"><samp class="file">me</samp></a>, Up: <a href="#Major-Macro-Packages" accesskey="u" rel="up">Macro Packages</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="mm-1">4.4 <samp class="file">mm</samp></h3>
+<a class="index-entry-id" id="index-mm-macro-package"></a>
+
+<p><code class="code">groff</code>&rsquo;s implementation of the <abbr class="acronym">AT&amp;T</abbr> memorandum macro
+package is documented in the <cite class="cite">groff_mm<span class="r">(7)</span></cite> man page. Type
+&lsquo;<samp class="samp">man groff_mm</samp>&rsquo; at the command line) to view it.
+</p>
+<p>A Swedish localization of <samp class="file">mm</samp> is also available; see
+<cite class="cite">groff_mmse<span class="r">(7)</span></cite>.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="mom">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms" accesskey="n" rel="next"><samp class="file">ms</samp></a>, Previous: <a href="#mm" accesskey="p" rel="prev"><samp class="file">mm</samp></a>, Up: <a href="#Major-Macro-Packages" accesskey="u" rel="up">Macro Packages</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="mom-1">4.5 <samp class="file">mom</samp></h3>
+<a class="index-entry-id" id="index-mom-macro-package"></a>
+
+<p>The main documentation files for the <samp class="file">mom</samp> macros are in
+<abbr class="acronym">HTML</abbr> format. Additional, useful documentation is in
+<abbr class="acronym">PDF</abbr> format. See the <cite class="cite">groff<span class="r">(1)</span></cite> man page, section
+&ldquo;Installation Directories&rdquo;, for their location.
+</p>
+<ul class="itemize mark-bullet">
+<li><samp class="file">toc.html</samp>
+Entry point to the full mom manual.
+
+</li><li><samp class="file">macrolist.html</samp>
+Hyperlinked index of macros with brief descriptions, arranged by
+category.
+
+</li><li><samp class="file">mom-pdf.pdf</samp>
+<abbr class="acronym">PDF</abbr> features and usage.
+</li></ul>
+
+<p>The mom macros are in active development between <code class="code">groff</code> releases.
+The most recent version, along with up-to-date documentation, is
+available at <a class="uref" href="http://www.schaffter.ca/mom/mom-05.html">http://www.schaffter.ca/mom/mom-05.html</a>.
+</p>
+<p>The <cite class="cite">groff_mom<span class="r">(7)</span></cite> man page (type &lsquo;<samp class="samp">man groff_mom</samp>&rsquo; at
+the command line) contains a partial list of available macros, however
+their usage is best understood by consulting the <abbr class="acronym">HTML</abbr>
+documentation.
+</p>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="ms">
+<div class="nav-panel">
+<p>
+Previous: <a href="#mom" accesskey="p" rel="prev"><samp class="file">mom</samp></a>, Up: <a href="#Major-Macro-Packages" accesskey="u" rel="up">Macro Packages</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="ms-1">4.6 <samp class="file">ms</samp></h3>
+<a class="index-entry-id" id="index-ms-macros"></a>
+
+<p>The <samp class="file">ms</samp> (&ldquo;manuscript&rdquo;) package is suitable for the preparation
+of letters, memoranda, reports, and books. These <code class="code">groff</code>
+macros feature cover page and table of contents generation,
+automatically numbered headings, several paragraph styles, a variety of
+text styling options, footnotes, and multi-column page layouts.
+<samp class="file">ms</samp> supports the <code class="command">tbl</code>, <code class="command">eqn</code>, <code class="command">pic</code>, and
+<code class="command">refer</code> preprocessors for inclusion of tables, mathematical
+equations, diagrams, and standardized bibliographic citations. This
+implementation is mostly compatible with the documented interface and
+behavior of AT&amp;T Unix Version&nbsp;7 <samp class="file">ms</samp>. Many extensions from
+4.2BSD (Berkeley)
+and Tenth Edition Research Unix have been recreated.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#ms-Introduction" accesskey="1">Introduction</a></li>
+<li><a href="#ms-Document-Structure" accesskey="2">Document Structure</a></li>
+<li><a href="#ms-Document-Control-Settings" accesskey="3">Document Control Settings</a></li>
+<li><a href="#ms-Document-Description-Macros" accesskey="4">Document Description Macros</a></li>
+<li><a href="#ms-Body-Text" accesskey="5">Body Text</a></li>
+<li><a href="#ms-Page-Layout" accesskey="6">Page layout</a></li>
+<li><a href="#Differences-from-AT_0026T-ms" accesskey="7">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a></li>
+<li><a href="#ms-Legacy-Features" accesskey="8">Legacy Features</a></li>
+<li><a href="#ms-Naming-Conventions" accesskey="9">Naming Conventions</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="ms-Introduction">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Document-Structure" accesskey="n" rel="next">Document Structure</a>, Previous: <a href="#ms" accesskey="p" rel="prev"><samp class="file">ms</samp></a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Introduction-2">4.6.1 Introduction</h4>
+
+<p>The <samp class="file">ms</samp> macros are the oldest surviving package for <code class="code">roff</code>
+systems.<a class="footnote" id="DOCF7" href="#FOOT7"><sup>7</sup></a> While the <samp class="file">man</samp>
+package was designed for brief reference documents, the <samp class="file">ms</samp> macros
+are also suitable for longer works intended for printing and possible
+publication.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#ms-basic-information" accesskey="1">Basic information</a></li>
+</ul>
+<hr>
+<div class="subsubsection-level-extent" id="ms-basic-information">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Document-Structure" accesskey="n" rel="next">Document Structure</a>, Previous: <a href="#ms-Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#ms-Introduction" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Basic-information">4.6.1.1 Basic information</h4>
+
+<p><samp class="file">ms</samp> documents are plain text files; prepare them with your
+preferred text editor. If you&rsquo;re in a hurry to start, know that
+<samp class="file">ms</samp> needs one of its macros called at the beginning of a document
+so that it can initialize. A <em class="dfn">macro</em> is a formatting instruction to
+<samp class="file">ms</samp>. Put a macro call on a line by itself. Use &lsquo;<samp class="samp">.PP</samp>&rsquo; if you
+want your paragraph&rsquo;s first line to be indented, or &lsquo;<samp class="samp">.LP</samp>&rsquo; if you
+don&rsquo;t.
+</p>
+<p>After that, start typing normally. It is a good practice to start each
+sentence on a new line, or to put two spaces after sentence-ending
+punctuation, so that the formatter knows where the sentence boundaries
+are. You can separate paragraphs with further paragraphing macros, or
+with blank lines, and you can indent with tabs. When you need one of
+the features mentioned earlier (see <a class="pxref" href="#ms"><samp class="file">ms</samp></a>), return to this part of the
+manual.
+</p>
+<p>Format the document with the <code class="command">groff</code> command. <code class="command">nroff</code>
+can be useful for previewing.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">$ editor radical.ms
+$ nroff -ww -z -ms radical.ms # check for errors
+$ nroff -ms radical.ms | less -R
+$ groff -T ps -ms radical.ms &gt; radical.ps
+$ see radical.ps
+</pre></div>
+</td></tr></table>
+
+<p>Our <samp class="file">radical.ms</samp> document might look like this.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.LP
+Radical novelties are so disturbing that they tend to be
+suppressed or ignored, to the extent that even the
+possibility of their existence in general is more often
+denied than admitted.
+
+&rarr;That's what Dijkstra said, anyway.
+</pre></div>
+</td></tr></table>
+
+<p><samp class="file">ms</samp> exposes many aspects of document layout to user control via
+<code class="code">groff</code>&rsquo;s <em class="dfn">registers</em> and <em class="dfn">strings</em>, which store numbers
+and text, respectively. Measurements in <code class="code">groff</code> are expressed with
+a suffix called a <em class="dfn">scaling unit</em>.
+</p>
+<dl class="table">
+<dt><code class="code">i</code></dt>
+<dd><p>inches
+</p>
+</dd>
+<dt><code class="code">c</code></dt>
+<dd><p>centimeters
+</p>
+</dd>
+<dt><code class="code">p</code></dt>
+<dd><p>points (1/72 inch)
+</p>
+</dd>
+<dt><code class="code">P</code></dt>
+<dd><p>picas (1/6 inch)
+</p>
+</dd>
+<dt><code class="code">v</code></dt>
+<dd><p>vees; current vertical spacing
+</p>
+</dd>
+<dt><code class="code">m</code></dt>
+<dd><p>ems; width of an &ldquo;M&rdquo; in the current font
+</p>
+</dd>
+<dt><code class="code">n</code></dt>
+<dd><p>ens; one-half em
+</p></dd>
+</dl>
+
+<p>Set registers with the <code class="code">nr</code> request and strings with the <code class="code">ds</code>
+request. <em class="dfn">Requests</em> are like macro calls; they go on lines by
+themselves and start with the <em class="dfn">control character</em>, a dot (<code class="code">.</code>).
+The difference is that they directly instruct the formatter program,
+rather than the macro package. We&rsquo;ll discuss a few as applicable. It
+is wise to specify a scaling unit when setting any register that
+represents a length, size, or distance.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.nr PS 10.5p \&quot; Use 10.5-point type.
+.ds FAM P \&quot; Use Palatino font family.
+</pre></div>
+</td></tr></table>
+
+<p>In the foregoing, we see that <code class="code">\&quot;</code> begins a comment. This is an
+example of an <em class="dfn">escape sequence</em>, the other kind of formatting
+instruction. Escape sequences can appear anywhere. They begin with the
+escape character (<code class="code">\</code>) and are followed by at least one more
+character. <samp class="file">ms</samp> documents
+tend to use only a few of <code class="code">groff</code>&rsquo;s many requests and escape
+sequences; see <a class="ref" href="#Request-Index">Request Index</a> and <a class="ref" href="#Escape-Sequence-Index">Escape Sequence Index</a> or
+the <cite class="cite">groff<span class="r">(7)</span></cite> man page for complete lists.
+</p>
+<dl class="table">
+<dt><code class="code">\&quot;</code></dt>
+<dd><p>Begin comment; ignore remainder of line.
+</p>
+</dd>
+<dt><code class="code">\n[<var class="var">reg</var>]</code></dt>
+<dd><p>Interpolate value of register <var class="var">reg</var>.
+</p>
+</dd>
+<dt><code class="code">\*[<var class="var">str</var>]</code></dt>
+<dd><p>Interpolate contents of string <var class="var">str</var>.
+</p>
+</dd>
+<dt><code class="code">\*<var class="var">s</var></code></dt>
+<dd><p>abbreviation of <code class="code">\*[<var class="var">s</var>]</code>; the name <var class="var">s</var> must be only one
+character
+</p>
+</dd>
+<dt><code class="code">\[<var class="var">char</var>]</code></dt>
+<dd><p>Interpolate glyph of special character named <var class="var">char</var>.
+</p>
+</dd>
+<dt><code class="code">\&amp;</code></dt>
+<dd><p>dummy character
+</p>
+</dd>
+<dt><code class="code">\~</code></dt>
+<dd><p>Insert an unbreakable space that is adjustable like a normal space.
+</p>
+</dd>
+<dt><code class="code">\|</code></dt>
+<dd><p>Move horizontally by one-sixth em (&ldquo;thin space&rdquo;).
+</p></dd>
+</dl>
+
+<p>Prefix any words that start with a dot &lsquo;<samp class="samp">.</samp>&rsquo; or neutral apostrophe
+&lsquo;<samp class="samp">'</samp>&rsquo; with <code class="code">\&amp;</code> if they are at the beginning of an input line
+(or might become that way in editing) to prevent them from being
+interpreted as macro calls or requests. Suffix &lsquo;<samp class="samp">.</samp>&rsquo;, &lsquo;<samp class="samp">?</samp>&rsquo;, and
+&lsquo;<samp class="samp">!</samp>&rsquo; with <code class="code">\&amp;</code> when needed to cancel end-of-sentence detection.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">My exposure was \&amp;.5 to \&amp;.6 Sv of neutrons, said Dr.\&amp;
+Wallace after the criticality incident.
+</pre></div>
+</td></tr></table>
+
+
+<hr>
+</div>
+</div>
+<div class="subsection-level-extent" id="ms-Document-Structure">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Document-Control-Settings" accesskey="n" rel="next">Document Control Settings</a>, Previous: <a href="#ms-Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Document-Structure">4.6.2 Document Structure</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-general-structure"></a>
+
+<p>The <samp class="file">ms</samp> macro package expects a certain amount of structure:
+a well-formed document contains at least one paragraphing or heading
+macro call. Longer documents have a structure as follows.
+</p>
+<dl class="table">
+<dt><strong class="strong">Document type</strong></dt>
+<dd><p>Calling the <code class="code">RP</code> macro at the beginning of your document puts the
+document description (see below) on a cover page. Otherwise, <samp class="file">ms</samp>
+places the information (if any) on the first page, followed immediately
+by the body text. Some document types found in other <samp class="file">ms</samp>
+implementations are specific to <abbr class="acronym">AT&amp;T</abbr> or Berkeley, and are not
+supported by <code class="code">groff</code> <samp class="file">ms</samp>.
+</p>
+</dd>
+<dt><strong class="strong">Format and layout</strong></dt>
+<dd><p>By setting registers and strings, you can configure your document&rsquo;s
+typeface, margins, spacing, headers and footers, and footnote
+arrangement. See <a class="xref" href="#ms-Document-Control-Settings">Document Control Settings</a>.
+</p>
+</dd>
+<dt><strong class="strong">Document description</strong></dt>
+<dd><p>A document description consists of any of: a title, one or more authors&rsquo;
+names and affiliated institutions, an abstract, and a date or other
+identifier. See <a class="xref" href="#ms-Document-Description-Macros">Document Description Macros</a>.
+</p>
+</dd>
+<dt><strong class="strong">Body text</strong></dt>
+<dd><p>The main matter of your document follows its description (if any).
+<samp class="file">ms</samp> supports highly structured text consisting of paragraphs
+interspersed with multi-level headings (chapters, sections, subsections,
+and so forth) and augmented by lists, footnotes, tables, diagrams, and
+similar material. See <a class="xref" href="#ms-Body-Text">Body Text</a>.
+</p>
+</dd>
+<dt><strong class="strong">Tables of contents</strong></dt>
+<dd><p>Macros enable the collection of entries for a table of contents (or
+index) as the material they discuss appears in the document. You then
+call a macro to emit the table of contents at the end of your document.
+The table of contents must necessarily follow the rest of the text since
+GNU <code class="code">troff</code> is a single-pass formatter; it thus cannot determine
+the page number of a division of the text until it has been set and
+output. Since <samp class="file">ms</samp> was designed for the production of hard copy,
+the traditional procedure was to manually relocate the pages containing
+the table of contents between the cover page and the body text. Today,
+page resequencing is more often done in the digital domain. An index
+works similarly, but because it typically needs to be sorted after
+collection, its preparation requires separate processing.
+</p></dd>
+</dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="ms-Document-Control-Settings">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Document-Description-Macros" accesskey="n" rel="next">Document Description Macros</a>, Previous: <a href="#ms-Document-Structure" accesskey="p" rel="prev">Document Structure</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Document-Control-Settings">4.6.3 Document Control Settings</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-document-control-settings"></a>
+
+<p><samp class="file">ms</samp> exposes many aspects of document layout to user control via
+<code class="code">groff</code> requests. To use them, you must understand how to define
+registers and strings.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">reg value</var><a class="copiable-link" href='#index-_002enr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nr"></a>
+<p>Set register <var class="var">reg</var> to <var class="var">value</var>. If <var class="var">reg</var> doesn&rsquo;t exist, GNU
+<code class="code">troff</code> creates it.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eds"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ds</code></strong> <var class="def-var-arguments">name contents</var><a class="copiable-link" href='#index-_002eds'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ds"></a>
+<p>Set string <var class="var">name</var> to <var class="var">contents</var>.
+</p></dd></dl>
+
+<p>A list of document control registers and strings follows. For any
+parameter whose default is unsatisfactory, define its register or string
+before calling any <samp class="file">ms</samp> macro other than <code class="code">RP</code>.
+</p>
+<ul class="mini-toc">
+<li><a href="#Margin-settings" accesskey="1">Margin settings</a></li>
+<li><a href="#Titles-_0028headers_002c-footers_0029" accesskey="2">Titles (headers, footers)</a></li>
+<li><a href="#Text-settings" accesskey="3">Text settings</a></li>
+<li><a href="#Paragraph-settings" accesskey="4">Paragraph settings</a></li>
+<li><a href="#Heading-settings" accesskey="5">Heading settings</a></li>
+<li><a href="#Footnote-settings" accesskey="6">Footnote settings</a></li>
+<li><a href="#Display-settings" accesskey="7">Display settings</a></li>
+<li><a href="#Other-settings" accesskey="8">Other settings</a></li>
+</ul>
+<div class="unnumberedsubsubsec-level-extent" id="Margin-settings">
+<h4 class="unnumberedsubsubsec">Margin settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bPO_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PO]</code></strong><a class="copiable-link" href='#index-_005cn_005bPO_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PO-_005bms_005d"></a>
+<p>Defines the page offset (i.e., the left margin).
+</p>
+<p>Effective: next page.
+</p>
+<p>Default: Varies by output device and paper format; 1<span class="dmn">i</span> is used for
+typesetters using U.S. letter paper, and zero for terminals.
+See <a class="xref" href="#Paper-Format">Paper Format</a>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bLL_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[LL]</code></strong><a class="copiable-link" href='#index-_005cn_005bLL_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LL-_005bms_005d"></a>
+<p>Defines the line length (i.e., the width of the body text).
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: Varies by output device and paper format; 6.5<span class="dmn">i</span> is used
+for typesetters using U.S. letter paper (see <a class="pxref" href="#Paper-Format">Paper Format</a>) and
+65<span class="dmn">n</span> on terminals.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bLT_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[LT]</code></strong><a class="copiable-link" href='#index-_005cn_005bLT_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LT-_005bms_005d"></a>
+<p>Defines the title line length (i.e., the header and footer width). This
+is usually the same as <code class="code">LL</code>, but need not be.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: Varies by output device and paper format; 6.5<span class="dmn">i</span> is used
+for typesetters using U.S. letter paper (see <a class="pxref" href="#Paper-Format">Paper Format</a>) and
+65<span class="dmn">n</span> on terminals.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bHM_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[HM]</code></strong><a class="copiable-link" href='#index-_005cn_005bHM_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-HM-_005bms_005d"></a>
+<p>Defines the header margin height at the top of the page.
+</p>
+<p>Effective: next page.
+</p>
+<p>Default: 1<span class="dmn">i</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bFM_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FM]</code></strong><a class="copiable-link" href='#index-_005cn_005bFM_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FM-_005bms_005d"></a>
+<p>Defines the footer margin height at the bottom of the page.
+</p>
+<p>Effective: next page.
+</p>
+<p>Default: 1<span class="dmn">i</span>.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Titles-_0028headers_002c-footers_0029">
+<h4 class="unnumberedsubsubsec">Titles (headers, footers)</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bLH_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[LH]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bLH_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LH-_005bms_005d"></a>
+<p>Defines the text displayed in the left header position.
+</p>
+<p>Effective: next header.
+</p>
+<p>Default: empty.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bCH_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[CH]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bCH_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-CH-_005bms_005d"></a>
+<p>Defines the text displayed in the center header position.
+</p>
+<p>Effective: next header.
+</p>
+<p>Default: &lsquo;<samp class="samp">-\n[%]-</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bRH_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[RH]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bRH_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RH-_005bms_005d"></a>
+<p>Defines the text displayed in the right header position.
+</p>
+<p>Effective: next header.
+</p>
+<p>Default: empty.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bLF_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[LF]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bLF_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LF-_005bms_005d"></a>
+<p>Defines the text displayed in the left footer position.
+</p>
+<p>Effective: next footer.
+</p>
+<p>Default: empty.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bCF_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[CF]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bCF_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-CF-_005bms_005d"></a>
+<p>Defines the text displayed in the center footer position.
+</p>
+<p>Effective: next footer.
+</p>
+<p>Default: empty.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bRF_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[RF]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bRF_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RF-_005bms_005d"></a>
+<p>Defines the text displayed in the right footer position.
+</p>
+<p>Effective: next footer.
+</p>
+<p>Default: empty.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Text-settings">
+<h4 class="unnumberedsubsubsec">Text settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bPS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PS]</code></strong><a class="copiable-link" href='#index-_005cn_005bPS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PS-_005bms_005d-1"></a>
+<p>Defines the type size of the body text.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 10<span class="dmn">p</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bVS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[VS]</code></strong><a class="copiable-link" href='#index-_005cn_005bVS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-VS-_005bms_005d"></a>
+<p>Defines the vertical spacing (type size plus leading).
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 12<span class="dmn">p</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bHY_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[HY]</code></strong><a class="copiable-link" href='#index-_005cn_005bHY_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-HY-_005bms_005d"></a>
+<p>Defines the automatic hyphenation mode used with the <code class="code">hy</code> request.
+Setting <code class="code">HY</code> to&nbsp;0 is equivalent to using the <code class="code">nh</code>
+request. This is a Tenth Edition Research Unix extension.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 6.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bFAM_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[FAM]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bFAM_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FAM-_005bms_005d"></a>
+<p>Defines the font family used to typeset the document. This is a GNU
+extension.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: defined by the output device; often &lsquo;<samp class="samp">T</samp>&rsquo; (see <a class="pxref" href="#ms-Body-Text">Body Text</a>)
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Paragraph-settings">
+<h4 class="unnumberedsubsubsec">Paragraph settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bPI_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PI]</code></strong><a class="copiable-link" href='#index-_005cn_005bPI_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PI-_005bms_005d"></a>
+<p>Defines the indentation amount used by the <code class="code">PP</code>, <code class="code">IP</code> (unless
+overridden by an optional argument), <code class="code">XP</code>, and <code class="code">RS</code> macros.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 5<span class="dmn">n</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bPD_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PD]</code></strong><a class="copiable-link" href='#index-_005cn_005bPD_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PD-_005bms_005d"></a>
+<p>Defines the space between paragraphs.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 0.3<span class="dmn">v</span> (1<span class="dmn">v</span> on low-resolution devices).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bQI_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[QI]</code></strong><a class="copiable-link" href='#index-_005cn_005bQI_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-QI-_005bms_005d"></a>
+<p>Defines the indentation amount used on both sides of a paragraph set
+with the <code class="code">QP</code> or between the <code class="code">QS</code> and <code class="code">QE</code> macros.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 5<span class="dmn">n</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bPORPHANS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PORPHANS]</code></strong><a class="copiable-link" href='#index-_005cn_005bPORPHANS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PORPHANS-_005bms_005d"></a>
+<p>Defines the minimum number of initial lines of any paragraph that must
+be kept together to avoid isolated lines at the bottom of a page. If a
+new paragraph is started close to the bottom of a page, and there is
+insufficient space to accommodate <code class="code">PORPHANS</code> lines before an
+automatic page break, then a page break is forced before the start of
+the paragraph. This is a GNU extension.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 1.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Heading-settings">
+<h4 class="unnumberedsubsubsec">Heading settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bPSINCR_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PSINCR]</code></strong><a class="copiable-link" href='#index-_005cn_005bPSINCR_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PSINCR-_005bms_005d"></a>
+<p>Defines an increment in type size to be applied to a heading at a
+lesser depth than that specified in <code class="code">GROWPS</code>. The value of
+<code class="code">PSINCR</code> should be specified in points with the <span class="dmn">p</span> scaling
+unit and may include a fractional component; for example, &lsquo;<samp class="samp">.nr&nbsp;PSINCR&nbsp;1.5p</samp>&rsquo;<!-- /@w --> sets a type size increment of 1.5<span class="dmn">p</span>. This is a GNU
+extension.
+</p>
+<p>Effective: next heading.
+</p>
+<p>Default: 1<span class="dmn">p</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bGROWPS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[GROWPS]</code></strong><a class="copiable-link" href='#index-_005cn_005bGROWPS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-GROWPS-_005bms_005d"></a>
+<p>Defines the heading depth above which the type size increment set by
+<code class="code">PSINCR</code> becomes effective. For each heading depth less than the
+value of <code class="code">GROWPS</code>, the type size is increased by <code class="code">PSINCR</code>.
+Setting <code class="code">GROWPS</code> to any value less than&nbsp;2 disables the
+incremental heading size feature. This is a GNU extension.
+</p>
+<p>Effective: next heading.
+</p>
+<p>Default: 0.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bHORPHANS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[HORPHANS]</code></strong><a class="copiable-link" href='#index-_005cn_005bHORPHANS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-HORPHANS-_005bms_005d"></a>
+<p>Defines the minimum number of lines of an immediately succeeding
+paragraph that should be kept together with any heading introduced by
+the <code class="code">NH</code> or <code class="code">SH</code> macros. If a heading is placed close to the
+bottom of a page, and there is insufficient space to accommodate both
+the heading and at least <code class="code">HORPHANS</code> lines of the following
+paragraph, before an automatic page break, then the page break is forced
+before the heading. This is a GNU extension.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 1.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bSN_002dSTYLE_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN-STYLE]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_002dSTYLE_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SN_002dSTYLE-_005bms_005d"></a>
+<p>Defines the style used to print numbered headings. See <a class="xref" href="#Headings-in-ms">Headings</a>. This is a GNU extension.
+</p>
+<p>Effective: next heading.
+</p>
+<p>Default: alias of <code class="code">SN-DOT</code>
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Footnote-settings">
+<h4 class="unnumberedsubsubsec">Footnote settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bFI_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FI]</code></strong><a class="copiable-link" href='#index-_005cn_005bFI_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FI-_005bms_005d"></a>
+<p>Defines the footnote indentation. This is a Berkeley extension.
+</p>
+<p>Effective: next footnote.
+</p>
+<p>Default: 2<span class="dmn">n</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bFF_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FF]</code></strong><a class="copiable-link" href='#index-_005cn_005bFF_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FF-_005bms_005d"></a>
+<p>Defines the format of automatically numbered footnotes,
+and those for which the <code class="code">FS</code> request is given a marker argument, at
+the bottom of a column or page. This is a Berkeley extension.
+</p><dl class="table">
+<dt><code class="code">0</code></dt>
+<dd><p>Set an automatic number<a class="footnote" id="DOCF8" href="#FOOT8"><sup>8</sup></a> as a
+superscript (on typesetter devices) or surrounded by square brackets (on
+terminals). The footnote paragraph is indented as with <code class="code">PP</code> if
+there is an <code class="code">FS</code> argument or an automatic number, and as with
+<code class="code">LP</code> otherwise. This is the default.
+</p>
+</dd>
+<dt><code class="code">1</code></dt>
+<dd><p>As <code class="code">0</code>, but set the marker as regular text and follow an
+automatic number with a period.
+</p>
+</dd>
+<dt><code class="code">2</code></dt>
+<dd><p>As <code class="code">1</code>, but without indentation (like <code class="code">LP</code>).
+</p>
+</dd>
+<dt><code class="code">3</code></dt>
+<dd><p>As <code class="code">1</code>, but set the footnote paragraph with the marker hanging
+(like <code class="code">IP</code>).
+</p></dd>
+</dl>
+
+<p>Effective: next footnote.
+</p>
+<p>Default: 0.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bFPS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FPS]</code></strong><a class="copiable-link" href='#index-_005cn_005bFPS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FPS-_005bms_005d"></a>
+<p>Defines the footnote type size.
+</p>
+<p>Effective: next footnote.
+</p>
+<p>Default: <code class="code">\n[PS] - 2p</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bFVS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FVS]</code></strong><a class="copiable-link" href='#index-_005cn_005bFVS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FVS-_005bms_005d"></a>
+<p>Defines the footnote vertical spacing.
+</p>
+<p>Effective: next footnote.
+</p>
+<p>Default: <code class="code">\n[FPS] + 2p</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bFPD_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FPD]</code></strong><a class="copiable-link" href='#index-_005cn_005bFPD_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FPD-_005bms_005d"></a>
+<p>Defines the footnote paragraph spacing. This is a GNU extension.
+</p>
+<p>Effective: next footnote.
+</p>
+<p>Default: <code class="code">\n[PD] / 2</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bFR_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[FR]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bFR_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FR-_005bms_005d"></a>
+<p>Defines the ratio of the footnote line length to the current line
+length. This is a GNU extension.
+</p>
+<p>Effective: next footnote in single-column arrangements, next page
+otherwise.
+</p>
+<p>Default: <code class="code">11/12</code>.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Display-settings">
+<h4 class="unnumberedsubsubsec">Display settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bDD_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[DD]</code></strong><a class="copiable-link" href='#index-_005cn_005bDD_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DD-_005bms_005d"></a>
+<p>Sets the display distance&mdash;the vertical spacing before and after a
+display, a <code class="code">tbl</code> table, an <code class="code">eqn</code> equation, or a <code class="code">pic</code>
+image. This is a Berkeley extension.
+</p>
+<p>Effective: next display boundary.
+</p>
+<p>Default: 0.5<span class="dmn">v</span> (1<span class="dmn">v</span> on low-resolution devices).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bDI_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[DI]</code></strong><a class="copiable-link" href='#index-_005cn_005bDI_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DI-_005bms_005d"></a>
+<p>Sets the default amount by which to indent a display started with
+<code class="code">DS</code> and <code class="code">ID</code> without arguments, to &lsquo;<samp class="samp">.DS&nbsp;I</samp>&rsquo; without
+an indentation argument, and to equations set with &lsquo;<samp class="samp">.EQ&nbsp;I</samp>&rsquo;.
+This is a GNU extension.
+</p>
+<p>Effective: next indented display.
+</p>
+<p>Default: 0.5<span class="dmn">i</span>.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Other-settings">
+<h4 class="unnumberedsubsubsec">Other settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bMINGW_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[MINGW]</code></strong><a class="copiable-link" href='#index-_005cn_005bMINGW_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MINGW-_005bms_005d"></a>
+<p>Defines the default minimum width between columns in a multi-column
+document. This is a GNU extension.
+</p>
+<p>Effective: next page.
+</p>
+<p>Default: 2<span class="dmn">n</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bTC_002dMARGIN_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[TC-MARGIN]</code></strong><a class="copiable-link" href='#index-_005cn_005bTC_002dMARGIN_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TC_002dMARGIN-_005bms_005d"></a>
+<p>Defines the width of the field in which page numbers are set in a table
+of contents entry; the right margin thus moves inboard by this amount.
+This is a GNU extension.
+</p>
+<p>Effective: next <code class="code">PX</code> call.
+</p>
+<p>Default: <code class="code">\w'000'</code>
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+</div>
+<div class="subsection-level-extent" id="ms-Document-Description-Macros">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Body-Text" accesskey="n" rel="next">Body Text</a>, Previous: <a href="#ms-Document-Control-Settings" accesskey="p" rel="prev">Document Control Settings</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Document-Description-Macros">4.6.4 Document Description Macros</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-document-description"></a>
+<a class="index-entry-id" id="index-document-description-macros_002c-_005bms_005d"></a>
+
+<p>Only the simplest document lacks a title.<a class="footnote" id="DOCF9" href="#FOOT9"><sup>9</sup></a> As its level of sophistication (or
+complexity) increases, it tends to acquire a date of revision,
+explicitly identified authors, sponsoring institutions for authors, and,
+at the rarefied heights, an abstract of its content. Define these
+data by calling the macros below in the order shown; <code class="code">DA</code> or
+<code class="code">ND</code> can be called to set the document date (or other identifier)
+at any time before (a) the abstract, if present, or (b) its information
+is required in a header or footer. Use of these macros is optional,
+except that <code class="code">TL</code> is mandatory if any of <code class="code">RP</code>, <code class="code">AU</code>,
+<code class="code">AI</code>, or <code class="code">AB</code> is called, and <code class="code">AE</code> is mandatory if
+<code class="code">AB</code> is called.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eRP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RP</code></strong> <var class="def-var-arguments">[<code class="code">no-repeat-info</code>] [<code class="code">no-renumber</code>]</var><a class="copiable-link" href='#index-_002eRP'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RP-_005bms_005d"></a>
+<p>Use the &ldquo;report&rdquo; (<abbr class="acronym">AT&amp;T</abbr>: &ldquo;released paper&rdquo;) format for your
+document, creating a separate cover page. The default arrangement is to
+place most of the document description (title, author names and
+institutions, and abstract, but not the date) at the top of the first
+page. If the optional <code class="code">no-repeat-info</code> argument is given,
+<samp class="file">ms</samp> produces a cover page but does not repeat any of its
+information subsequently (but see the <code class="code">DA</code> macro below regarding
+the date). Normally, <code class="code">RP</code> sets the page number following the cover
+page to&nbsp;1. Specifying the optional <code class="code">no-renumber</code> argument
+suppresses this alteration. Optional arguments can occur in any order.
+<code class="code">no</code> is recognized as a synonym of <code class="code">no-repeat-info</code> for
+<code class="code">AT&amp;T</code> compatibility.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eTL"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TL</code></strong><a class="copiable-link" href='#index-_002eTL'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TL-_005bms_005d"></a>
+<p>Specify the document title. <samp class="file">ms</samp> collects text on input lines
+following this call into the title until reaching <code class="code">AU</code>, <code class="code">AB</code>,
+or a heading or paragraphing macro call.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eAU"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AU</code></strong><a class="copiable-link" href='#index-_002eAU'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-AU-_005bms_005d"></a>
+<p>Specify an author&rsquo;s name. <samp class="file">ms</samp> collects text on input lines
+following this call into the author&rsquo;s name until reaching <code class="code">AI</code>,
+<code class="code">AB</code>, another <code class="code">AU</code>, or a heading or paragraphing macro call.
+Call it repeatedly to specify multiple authors.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eAI"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AI</code></strong><a class="copiable-link" href='#index-_002eAI'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-AI-_005bms_005d"></a>
+<p>Specify the preceding author&rsquo;s institution. An <code class="code">AU</code> call is
+usefully followed by at most one <code class="code">AI</code> call; if there are more, the
+last <code class="code">AI</code> call controls. <samp class="file">ms</samp> collects text on input lines
+following this call into the author&rsquo;s institution until reaching
+<code class="code">AU</code>, <code class="code">AB</code>, or a heading or paragraphing macro call.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDA"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DA</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">x</i></span> &hellip;]</var><a class="copiable-link" href='#index-_002eDA'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DA-_005bms_005d"></a>
+<p>Typeset the current date, or any arguments <var class="var">x</var>, in the center
+footer, and, if <code class="code">RP</code> is also called, left-aligned at the end of the
+description information on the cover page.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eND"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.ND</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">x</i></span> &hellip;]</var><a class="copiable-link" href='#index-_002eND'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ND-_005bms_005d"></a>
+<p>Typeset the current date, or any arguments <var class="var">x</var>, if <code class="code">RP</code> is also
+called, left-aligned at the end of the document description on the cover
+page. This is <code class="code">groff</code> <samp class="file">ms</samp>&rsquo;s default.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eAB"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AB</code></strong> <var class="def-var-arguments">[<code class="code">no</code>]</var><a class="copiable-link" href='#index-_002eAB'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-AB-_005bms_005d"></a>
+<p>Begin the abstract. <samp class="file">ms</samp> collects text on input lines following
+this call into the abstract until reaching an <code class="code">AE</code> call. By
+default, <samp class="file">ms</samp> places the word &ldquo;ABSTRACT&rdquo; centered and in italics
+above the text of the abstract. The optional argument <code class="code">no</code>
+suppresses this heading.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eAE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AE</code></strong><a class="copiable-link" href='#index-_002eAE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-AE-_005bms_005d"></a>
+<p>End the abstract.
+</p></dd></dl>
+
+<p>An example document description, using a cover page, follows.
+<a class="index-entry-id" id="index-cover-page-in-_005bms_005d_002c-example-markup"></a>
+<a class="index-entry-id" id="index-example-markup_002c-cover-page-in-_005bms_005d"></a>
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.RP
+.TL
+The Inevitability of Code Bloat
+in Commercial and Free Software
+.AU
+J.\&amp; Random Luser
+.AI
+University of West Bumblefuzz
+.AB
+This report examines the long-term growth of the code
+bases in two large,
+popular software packages;
+the free Emacs and the commercial Microsoft Word.
+While differences appear in the type or order of
+features added,
+due to the different methodologies used,
+the results are the same in the end.
+.PP
+The free software approach is shown to be superior in
+that while free software can become as bloated as
+commercial offerings,
+free software tends to have fewer serious bugs and the
+added features are more in line with user demand.
+.AE
+
+<span class="r">&hellip;the rest of the paper&hellip;</span>
+</pre></div>
+</td></tr></table>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="ms-Body-Text">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Page-Layout" accesskey="n" rel="next">Page layout</a>, Previous: <a href="#ms-Document-Description-Macros" accesskey="p" rel="prev">Document Description Macros</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Body-Text">4.6.5 Body Text</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-body-text"></a>
+
+<p>A variety of macros, registers, and strings can be used to structure and
+style the body of your document. They organize your text into
+paragraphs, headings, footnotes, and inclusions of material such as
+tables and figures.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#Text-settings-in-ms" accesskey="1">Text settings</a></li>
+<li><a href="#Typographical-symbols-in-ms" accesskey="2">Typographical symbols</a></li>
+<li><a href="#Paragraphs-in-ms" accesskey="3">Paragraphs</a></li>
+<li><a href="#Headings-in-ms" accesskey="4">Headings</a></li>
+<li><a href="#Typeface-and-decoration" accesskey="5">Typeface and decoration</a></li>
+<li><a href="#Lists-in-ms" accesskey="6">Lists</a></li>
+<li><a href="#Indented-regions-in-ms" accesskey="7">Indented regions</a></li>
+<li><a href="#ms-keeps-and-displays" accesskey="8">Keeps, boxed keeps, and displays</a></li>
+<li><a href="#ms-Insertions" accesskey="9">Tables, figures, equations, and references</a></li>
+<li><a href="#ms-Footnotes">Footnotes</a></li>
+<li><a href="#ms-language-and-localization">Language and localization</a></li>
+</ul>
+<hr>
+<div class="subsubsection-level-extent" id="Text-settings-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="#Typographical-symbols-in-ms" accesskey="n" rel="next">Typographical symbols</a>, Previous: <a href="#ms-Body-Text" accesskey="p" rel="prev">Body Text</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Text-settings-1">4.6.5.1 Text settings</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-text-settings"></a>
+
+<p>The <code class="code">FAM</code> string, a GNU extension, sets the font family for body
+text; the default is &lsquo;<samp class="samp">T</samp>&rsquo;. The <code class="code">PS</code> and <code class="code">VS</code> registers
+set the type size and vertical spacing (distance between text
+baselines), respectively. The font family and type size are ignored on
+terminal devices. Setting these parameters before the first call of a
+heading, paragraphing, or (non-date) document description macro also
+applies them to headers, footers, and (for <code class="code">FAM</code>) footnotes.
+</p>
+<p>Which font families are available depends on the output device; as a
+convention, <code class="code">T</code> selects a serif family (&ldquo;Times&rdquo;), <code class="code">H</code> a
+sans-serif family (&ldquo;Helvetica&rdquo;), and <code class="code">C</code> a monospaced family
+(&ldquo;Courier&rdquo;). The man page for the output driver documents its font
+repertoire. Consult the <cite class="cite">groff<span class="r">(1)</span></cite> man page for lists of
+available output devices and their drivers.
+</p>
+<p>The hyphenation mode (as used by the <code class="code">hy</code> request) is set from the
+<code class="code">HY</code> register. Setting <code class="code">HY</code> to &lsquo;<samp class="samp">0</samp>&rsquo; is equivalent to
+using the <code class="code">nh</code> request. This is a Tenth Edition Research Unix
+extension.
+</p>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Typographical-symbols-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="#Paragraphs-in-ms" accesskey="n" rel="next">Paragraphs</a>, Previous: <a href="#Text-settings-in-ms" accesskey="p" rel="prev">Text settings</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Typographical-symbols">4.6.5.2 Typographical symbols</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-obtaining-typographical-symbols"></a>
+
+<p><samp class="file">ms</samp> provides a few strings to obtain typographical symbols not
+easily entered with the keyboard. These and many others are available
+as special character escape sequences&mdash;see the <cite class="cite">groff_char<span class="r">(7)</span></cite>
+man page.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002d_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[-]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002d_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002d-_005bms_005d"></a>
+<p>Interpolate an em dash.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bQ_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[Q]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bQ_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Q-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bU_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[U]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bU_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-U-_005bms_005d"></a>
+<p>Interpolate typographer&rsquo;s quotation marks where available, and neutral
+double quotes otherwise. <code class="code">\*Q</code> is the left quote and <code class="code">\*U</code>
+the right.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Paragraphs-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="#Headings-in-ms" accesskey="n" rel="next">Headings</a>, Previous: <a href="#Typographical-symbols-in-ms" accesskey="p" rel="prev">Typographical symbols</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Paragraphs-2">4.6.5.3 Paragraphs</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-paragraph-handling"></a>
+
+<p>Paragraphing macros <em class="dfn">break</em>, or terminate, any pending output line
+so that a new paragraph can begin. Several paragraph types are
+available, differing in how indentation applies to them: to left, right,
+or both margins; to the first output line of the paragraph, all output
+lines, or all but the first. All paragraphing macro calls cause the
+insertion of vertical space in the amount stored in the <code class="code">PD</code>
+register, except at page or column breaks. Alternatively, a blank input
+line breaks the output line and vertically spaces by one vee.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eLP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.LP</code></strong><a class="copiable-link" href='#index-_002eLP'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LP-_005bms_005d"></a>
+<p>Set a paragraph without any (additional) indentation.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002ePP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PP</code></strong><a class="copiable-link" href='#index-_002ePP'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PP-_005bms_005d"></a>
+<p>Set a paragraph with a first-line left indentation in the amount stored
+in the <code class="code">PI</code> register.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eIP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.IP</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">marker</i></span> [<span class="r"><i class="slanted">width</i></span>]]</var><a class="copiable-link" href='#index-_002eIP'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-IP-_005bms_005d"></a>
+<p>Set a paragraph with a left indentation. The optional <var class="var">marker</var> is
+not indented and is empty by default. It has several applications;
+see <a class="ref" href="#Lists-in-ms">Lists</a>. <var class="var">width</var> overrides the indentation amount
+stored in the <code class="code">PI</code> register; its default unit is &lsquo;<samp class="samp">n</samp>&rsquo;. Once
+specified, <var class="var">width</var> applies to further <code class="code">IP</code> calls until
+specified again or a heading or different paragraphing macro is called.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eQP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.QP</code></strong><a class="copiable-link" href='#index-_002eQP'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-QP-_005bms_005d"></a>
+<p>Set a paragraph indented from both left and right margins by the amount
+stored in the <code class="code">QI</code> register.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eQS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.QS</code></strong><a class="copiable-link" href='#index-_002eQS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-QS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eQE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.QE</code></strong><a class="copiable-link" href='#index-_002eQE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-QE-_005bms_005d"></a>
+<p>Begin (<code class="code">QS</code>) and end (<code class="code">QE</code>) a region where each paragraph is
+indented from both margins by the amount stored in the <code class="code">QI</code>
+register. The text between <code class="code">QS</code> and <code class="code">QE</code> can be structured
+further by use of other paragraphing macros.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eXP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XP</code></strong><a class="copiable-link" href='#index-_002eXP'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XP-_005bms_005d"></a>
+<p>Set an &ldquo;exdented&rdquo; paragraph&mdash;one with a left indentation in the
+amount stored in the <code class="code">PI</code> register on every line <em class="emph">except</em> the
+first (also known as a hanging indent). This is a Berkeley extension.
+</p></dd></dl>
+
+<p>The following example illustrates the use of paragraphing macros.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.NH 2
+Cases used in the 2001 study
+.LP
+Two software releases were considered for this report.
+.PP
+The first is commercial software;
+the second is free.
+.IP \[bu]
+Microsoft Word for Windows,
+starting with version 1.0 through the current version
+(Word 2000).
+.IP \[bu]
+GNU Emacs,
+from its first appearance as a standalone editor through
+the current version (v20).
+See [Bloggs 2002] for details.
+.QP
+Franklin's Law applied to software:
+software expands to outgrow both RAM and disk space over
+time.
+.SH
+Bibliography
+.XP
+Bloggs, Joseph R.,
+.I &quot;Everyone's a Critic&quot; ,
+Underground Press, March 2002.
+A definitive work that answers all questions and
+criticisms about the quality and usability of free
+software.
+</pre></div>
+</td></tr></table>
+
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Headings-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="#Typeface-and-decoration" accesskey="n" rel="next">Typeface and decoration</a>, Previous: <a href="#Paragraphs-in-ms" accesskey="p" rel="prev">Paragraphs</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Headings">4.6.5.4 Headings</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-headings"></a>
+
+<p>Use headings to create a sequential or hierarchical structure for your
+document. The <samp class="file">ms</samp> macros print headings in <strong class="strong">bold</strong> using
+the same font family and, by default, type size as the body text.
+Headings are available with and without automatic numbering. Text on
+input lines following the macro call becomes the heading&rsquo;s title. Call
+a paragraphing macro to end the heading text and start the section&rsquo;s
+content.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eNH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NH</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">depth</i></span>]</var><a class="copiable-link" href='#index-_002eNH'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-NH-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eNH-1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NH</code></strong> <var class="def-var-arguments"><code class="t">S</code> <span class="r"><i class="slanted">heading-depth-index</i></span> &hellip;</var><a class="copiable-link" href='#index-_002eNH-1'> &para;</a></span></dt>
+<dd><p>Set an automatically numbered heading.
+</p>
+<p><samp class="file">ms</samp> produces a numbered heading the form <var class="var">a.b.c&hellip;</var>, to
+any depth desired, with the numbering of each depth increasing
+automatically and being reset to zero when a more significant level is
+increased. &ldquo;1&rdquo;&nbsp;is the most significant or coarsest division of
+the document. Only non-zero values are output. If <var class="var">depth</var> is
+omitted, it is taken to be &lsquo;<samp class="samp">1</samp>&rsquo;.
+</p>
+<p>If you specify <var class="var">depth</var> such that an ascending gap occurs relative to
+the previous <code class="code">NH</code> call&mdash;that is, you &ldquo;skip a depth&rdquo;, as by
+&lsquo;<samp class="samp">.NH 1</samp>&rsquo; and then &lsquo;<samp class="samp">.NH 3</samp>&rsquo;&mdash;<code class="code">groff</code> <samp class="file">ms</samp> emits a
+warning on the standard error stream.
+</p>
+<p>Alternatively, you can give <code class="code">NH</code> a first argument of&nbsp;<code class="code">S</code>,
+followed by integers to number the heading depths explicitly. Further
+automatic numbering, if used, resumes using the specified indices as
+their predecessors.
+This feature is a Berkeley extension.
+</p></dd></dl>
+
+<p>An example may be illustrative.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.NH 1
+Animalia
+.NH 2
+Arthropoda
+.NH 3
+Crustacea
+.NH 2
+Chordata
+.NH S 6 6 6
+Daimonia
+.NH 1
+Plantae
+</pre></div>
+</td></tr></table>
+
+<p>The above results in numbering as follows; the vertical space that
+normally precedes each heading is omitted.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">1. Animalia
+1.1. Arthropoda
+1.1.1. Crustacea
+1.2. Chordata
+6.6.6. Daimonia
+7. Plantae
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bSN_002dSTYLE_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN-STYLE]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_002dSTYLE_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SN_002dSTYLE-_005bms_005d-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bSN_002dDOT_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN-DOT]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_002dDOT_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SN_002dDOT-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bSN_002dNO_002dDOT_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN-NO-DOT]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_002dNO_002dDOT_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SN_002dNO_002dDOT-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bSN_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SN-_005bms_005d"></a>
+<p>After <code class="code">NH</code> is called, the assigned number is made available in the
+strings <code class="code">SN-DOT</code> (as it appears in a printed heading with default
+formatting, followed by a terminating period) and <code class="code">SN-NO-DOT</code> (with
+the terminating period omitted). These are GNU extensions.
+</p>
+<p>You can control the style used to print numbered headings by defining an
+appropriate alias for the string <code class="code">SN-STYLE</code>. By default,
+<code class="code">SN-STYLE</code> is aliased to <code class="code">SN-DOT</code>. If you prefer to omit the
+terminating period from numbers appearing in numbered headings, you may
+define the alias as follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.als SN-STYLE SN-NO-DOT
+</pre></div></div>
+
+<p>Any such change in numbering style becomes effective from the next use
+of <code class="code">NH</code> following redefinition of the alias for <code class="code">SN-STYLE</code>.
+The formatted number of the current heading is available in the
+<code class="code">SN</code> string (a feature first documented by Berkeley), which
+facilitates its inclusion in, for example, table captions, equation
+labels, and <code class="code">XS</code>/<code class="code">XA</code>/<code class="code">XE</code> table of contents entries.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eSH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.SH</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">depth</i></span>]</var><a class="copiable-link" href='#index-_002eSH'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SH-_005bms_005d"></a>
+<p>Set an unnumbered heading.
+</p>
+<p>The optional <var class="var">depth</var> argument is a GNU extension indicating the
+heading depth corresponding to the <var class="var">depth</var> argument of <code class="code">NH</code>.
+It matches the type size at which the heading is set to that of a
+numbered heading at the same depth when the <code class="code">GROWPS</code> and
+<code class="code">PSINCR</code> heading size adjustment mechanism is in effect.
+</p></dd></dl>
+
+<p>If the <code class="code">GROWPS</code> register is set to a value greater than the
+<var class="var">level</var> argument to <code class="code">NH</code> or <code class="code">SH</code>, the type size of a
+heading produced by these macros increases by <code class="code">PSINCR</code> units over
+the size specified by <code class="code">PS</code> multiplied by the difference of
+<code class="code">GROWPS</code> and <var class="var">level</var>. The value stored in <code class="code">PSINCR</code> is
+interpreted in <code class="code">groff</code> basic units; the <code class="code">p</code> scaling unit
+should be employed when assigning a value specified in points. For
+example, the sequence
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.nr PS 10
+.nr GROWPS 3
+.nr PSINCR 1.5p
+.NH 1
+Carnivora
+.NH 2
+Felinae
+.NH 3
+Felis catus
+.SH 2
+Machairodontinae
+</pre></div>
+</td></tr></table>
+
+<p>will cause &ldquo;1. Carnivora&rdquo; to be printed in 13-point text, followed by
+&ldquo;1.1. Felinae&rdquo; in 11.5-point text, while &ldquo;1.1.1. Felis catus&rdquo; and
+all more deeply nested heading levels will remain in the 10-point text
+specified by the <code class="code">PS</code> register. &ldquo;Machairodontinae&rdquo; is printed at
+11.5 points, since it corresponds to heading level&nbsp;2.
+</p>
+<p>The <code class="code">HORPHANS</code> register operates in conjunction with the <code class="code">NH</code>
+and <code class="code">SH</code> macros to inhibit the printing of isolated headings at the
+bottom of a page; it specifies the minimum number of lines of an
+immediately subsequent paragraph that must be kept on the same page as
+the heading. If insufficient space remains on the current page to
+accommodate the heading and this number of lines of paragraph text, a
+page break is forced before the heading is printed. Any display macro
+call or <code class="code">tbl</code>, <code class="code">pic</code>, or <code class="code">eqn</code> region between the heading
+and the subsequent paragraph suppresses this grouping. See <a class="xref" href="#ms-keeps-and-displays">Keeps, boxed keeps, and displays</a> and <a class="ref" href="#ms-Insertions">Tables, figures, equations, and references</a>.
+</p>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Typeface-and-decoration">
+<div class="nav-panel">
+<p>
+Next: <a href="#Lists-in-ms" accesskey="n" rel="next">Lists</a>, Previous: <a href="#Headings-in-ms" accesskey="p" rel="prev">Headings</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Typeface-and-decoration-1">4.6.5.5 Typeface and decoration</h4>
+
+<p>The <samp class="file">ms</samp> macros provide a variety of ways to style text.
+Attend closely to the ordering of arguments labeled <var class="var">pre</var> and
+<var class="var">post</var>, which is not intuitive. Support for <var class="var">pre</var>
+arguments is a GNU extension.<a class="footnote" id="DOCF10" href="#FOOT10"><sup>10</sup></a>
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eB"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.B</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eB'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-B-_005bms_005d"></a>
+<p>Style <var class="var">text</var> in <b class="b">bold</b>, followed by <var class="var">post</var> in the previous
+font style without intervening space, and preceded by <var class="var">pre</var>
+similarly. Without arguments, <samp class="file">ms</samp> styles subsequent text in bold
+until the next paragraphing, heading, or no-argument typeface macro
+call.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eR-1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.R</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eR-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-R-_005bms_005d"></a>
+<p>As <code class="code">B</code>, but use the roman style (upright text of normal weight)
+instead of bold. Argument recognition is a GNU extension.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eI"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.I</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eI'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-I-_005bms_005d"></a>
+<p>As <code class="code">B</code>, but use an <i class="i">italic</i> or oblique style instead of bold.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eBI"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.BI</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eBI'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-BI-_005bms_005d"></a>
+<p>As <code class="code">B</code>, but use a bold italic or bold oblique style instead of
+upright bold. This is a Tenth Edition Research Unix extension.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eCW-1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.CW</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eCW-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-CW-_005bms_005d"></a>
+<p>As <code class="code">B</code>, but use a <code class="t">constant-width</code> (monospaced) roman typeface
+instead of bold. This is a Tenth Edition Research Unix extension.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eBX"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.BX</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eBX'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-BX-_005bms_005d"></a>
+<p>Typeset <var class="var">text</var> and draw a box around it. On terminal devices,
+reverse video is used instead. If you want <var class="var">text</var> to contain space,
+use unbreakable space or horizontal motion escape sequences (<code class="code">\~</code>,
+<code class="code">\<kbd class="key">SP</kbd></code>, <code class="code">\^</code>, <code class="code">\|</code>, <code class="code">\0</code> or <code class="code">\h</code>).
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eUL"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.UL</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span>]]</var><a class="copiable-link" href='#index-_002eUL'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-UL-_005bms_005d"></a>
+<p>Typeset <var class="var">text</var> with an underline. <var class="var">post</var>, if present, is set
+after <var class="var">text</var> with no intervening space.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eLG"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.LG</code></strong><a class="copiable-link" href='#index-_002eLG'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LG-_005bms_005d"></a>
+<p>Set subsequent text in larger type (two points larger than the
+current size) until the next type size, paragraphing, or heading macro
+call. You can specify this macro multiple times to enlarge the type
+size as needed.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eSM"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.SM</code></strong><a class="copiable-link" href='#index-_002eSM'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SM-_005bms_005d"></a>
+<p>Set subsequent text in smaller type (two points smaller than the current
+size) until the next type size, paragraphing, or heading macro call.
+You can specify this macro multiple times to reduce the type size as
+needed.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eNL"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NL</code></strong><a class="copiable-link" href='#index-_002eNL'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-NL-_005bms_005d"></a>
+<p>Set subsequent text at the normal type size (the amount in the <code class="code">PS</code>
+register).
+</p></dd></dl>
+
+<p><var class="var">pre</var> and <var class="var">post</var> arguments are typically used to simplify the
+attachment of punctuation to styled words. When <var class="var">pre</var> is used,
+a hyphenation control escape sequence <code class="code">\%</code> that would ordinarily
+start <var class="var">text</var> must start <var class="var">pre</var> instead to have the desired
+effect.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">The CS course's students found one C language keyword
+.CW static ) \%(
+most troublesome.
+</pre></div>
+</td></tr></table>
+
+<p>The foregoing example produces output as follows.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted"><span class="r">The CS course&rsquo;s students found one C language keyword (<code class="t">static</code>)
+most troublesome.</span>
+</pre></div>
+</td></tr></table>
+
+<p>You can use the output line continuation escape sequence <code class="code">\c</code> to
+achieve the same result (see <a class="pxref" href="#Line-Continuation">Line Continuation</a>). It is also
+portable to older <samp class="file">ms</samp> implementations.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">The CS course's students found one C language keyword
+\%(\c
+.CW \%static )
+most troublesome.
+</pre></div>
+</td></tr></table>
+
+<p><code class="code">groff</code> <samp class="file">ms</samp> also offers strings to begin and end super- and
+subscripting. These are GNU extensions.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_007b_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[{]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_007b_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_007b-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005b_007d_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[}]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_007d_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_007d-_005bms_005d"></a>
+<p>Begin and end superscripting, respectively.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_003c_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[&lt;]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003c_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_003c-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005b_003e_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[&gt;]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003e_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_003e-_005bms_005d"></a>
+<p>Begin and end subscripting, respectively.
+</p></dd></dl>
+
+<p>Rather than calling the <code class="code">CW</code> macro, in <code class="code">groff</code> <samp class="file">ms</samp> you
+might prefer to change the font family to Courier by setting the
+<code class="code">FAM</code> string to &lsquo;<samp class="samp">C</samp>&rsquo;. You can then use all four style macros
+above, returning to the default family (Times) with &lsquo;<samp class="samp">.ds FAM T</samp>&rsquo;.
+Because changes to <code class="code">FAM</code> take effect only at the next paragraph,
+<code class="code">CW</code> remains useful to &ldquo;inline&rdquo; a change to the font family,
+similarly to the practice of this document in noting syntactical
+elements of <samp class="file">ms</samp> and <code class="code">groff</code>.
+</p>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Lists-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="#Indented-regions-in-ms" accesskey="n" rel="next">Indented regions</a>, Previous: <a href="#Typeface-and-decoration" accesskey="p" rel="prev">Typeface and decoration</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Lists">4.6.5.6 Lists</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-lists"></a>
+
+<p>The <var class="var">marker</var> argument to the <code class="code">IP</code> macro can be employed to
+present a variety of lists; for instance, you can use a bullet glyph
+(<code class="code">\[bu]</code>) for unordered lists, a number (or auto-incrementing
+register) for numbered lists, or a word or phrase for glossary-style or
+definition lists. If you set the paragraph indentation register
+<code class="code">PI</code> before calling <code class="code">IP</code>, you can later reorder the items in
+the list without having to ensure that a <var class="var">width</var> argument remains
+affixed to the first call.
+</p>
+<p>The following is an example of a bulleted list.
+<a class="index-entry-id" id="index-example-markup_002c-bulleted-list-_005bms_005d"></a>
+<a class="index-entry-id" id="index-bulleted-list_002c-example-markup-_005bms_005d"></a>
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.nr PI 2n
+A bulleted list:
+.IP \[bu]
+lawyers
+.IP \[bu]
+guns
+.IP \[bu]
+money
+</pre></div>
+</td></tr></table>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">A bulleted list:
+
+&bull; lawyers
+
+&bull; guns
+
+&bull; money
+</pre></div></div>
+
+<p>The following is an example of a numbered list.
+<a class="index-entry-id" id="index-example-markup_002c-numbered-list-_005bms_005d"></a>
+<a class="index-entry-id" id="index-numbered-list_002c-example-markup-_005bms_005d"></a>
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.nr step 0 1
+.nr PI 3n
+A numbered list:
+.IP \n+[step]
+lawyers
+.IP \n+[step]
+guns
+.IP \n+[step]
+money
+</pre></div>
+</td></tr></table>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">A numbered list:
+
+1. lawyers
+
+2. guns
+
+3. money
+</pre></div></div>
+
+<p>Here we have employed the <code class="code">nr</code> request to create a register of our
+own, &lsquo;<samp class="samp">step</samp>&rsquo;. We initialized it to zero and assigned it an
+auto-increment of 1. Each time we use the escape sequence
+&lsquo;<samp class="samp">\n+[PI]</samp>&rsquo; (note the plus sign), the formatter applies the increment
+just before interpolating the register&rsquo;s value. Preparing the <code class="code">PI</code>
+register as well enables us to rearrange the list without the tedium of
+updating macro calls.
+</p>
+<p>The next example illustrates a glossary-style list.
+<a class="index-entry-id" id="index-example-markup_002c-glossary_002dstyle-list-_005bms_005d"></a>
+<a class="index-entry-id" id="index-glossary_002dstyle-list_002c-example-markup-_005bms_005d"></a>
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">A glossary-style list:
+.IP lawyers 0.4i
+Two or more attorneys.
+.IP guns
+Firearms,
+preferably large-caliber.
+.IP money
+Gotta pay for those
+lawyers and guns!
+</pre></div>
+</td></tr></table>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">A glossary-style list:
+
+lawyers
+ Two or more attorneys.
+
+guns Firearms, preferably large-caliber.
+
+money
+ Gotta pay for those lawyers and guns!
+</pre></div></div>
+
+<p>In the previous example, observe how the <code class="code">IP</code> macro places the
+definition on the same line as the term if it has enough space. If this
+is not what you want, there are a few workarounds we will illustrate by
+modifying the example. First, you can use a <code class="code">br</code> request to force
+a break after printing the term or label.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.IP guns
+.br
+Firearms,
+</pre></div>
+</td></tr></table>
+
+<p>Second, you could apply the <code class="code">\p</code> escape sequence to force a break.
+The space following the escape sequence is important; if you omit it,
+<code class="code">groff</code> prints the first word of the paragraph text on the same
+line as the term or label (if it fits) <em class="emph">then</em> breaks the line.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.IP guns
+\p Firearms,
+</pre></div>
+</td></tr></table>
+
+<p>Finally, you may append a horizontal motion to the marker with the
+<code class="code">\h</code> escape sequence; using the same amount as the indentation will
+ensure that the marker is too wide for <code class="code">groff</code> to treat it as
+&ldquo;fitting&rdquo; on the same line as the paragraph text.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.IP guns\h'0.4i'
+Firearms,
+</pre></div>
+</td></tr></table>
+
+<p>In each case, the result is the same.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">A glossary-style list:
+
+lawyers
+ Two or more attorneys.
+
+guns
+ Firearms, preferably large-caliber.
+
+money
+ Gotta pay for those lawyers and guns!
+</pre></div></div>
+
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Indented-regions-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-keeps-and-displays" accesskey="n" rel="next">Keeps, boxed keeps, and displays</a>, Previous: <a href="#Lists-in-ms" accesskey="p" rel="prev">Lists</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Indented-regions">4.6.5.7 Indented regions</h4>
+
+<p>You may need to indent a region of text while otherwise formatting it
+normally. Indented regions can be nested; you can change <code class="code">\n[PI]</code>
+before each call to vary the amount of inset.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eRS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RS</code></strong><a class="copiable-link" href='#index-_002eRS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RS-_005bms_005d"></a>
+<p>Begin a region where headings, paragraphs, and displays are indented
+(further) by the amount stored in the <code class="code">PI</code> register.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eRE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RE</code></strong><a class="copiable-link" href='#index-_002eRE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RE-_005bms_005d"></a>
+<p>End the (next) most recent indented region.
+</p></dd></dl>
+
+<p>This feature enables you to easily line up text under hanging and
+indented paragraphs.
+<a class="index-entry-id" id="index-ms-macros_002c-nested-lists"></a>
+<a class="index-entry-id" id="index-nested-lists-_005bms_005d"></a>
+For example, you may wish to structure lists hierarchically.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.IP \[bu] 2
+Lawyers:
+.RS
+.IP \[bu]
+Dewey,
+.IP \[bu]
+Cheatham,
+and
+.IP \[bu]
+and Howe.
+.RE
+.IP \[bu]
+Guns
+</pre></div>
+</td></tr></table>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">&bull; Lawyers:
+
+ &bull; Dewey,
+
+ &bull; Cheatham, and
+
+ &bull; Howe.
+
+&bull; Guns
+</pre></div></div>
+
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="ms-keeps-and-displays">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Insertions" accesskey="n" rel="next">Tables, figures, equations, and references</a>, Previous: <a href="#Indented-regions-in-ms" accesskey="p" rel="prev">Indented regions</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Keeps_002c-boxed-keeps_002c-and-displays">4.6.5.8 Keeps, boxed keeps, and displays</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-displays"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-keeps"></a>
+<a class="index-entry-id" id="index-keeps-_005bms_005d"></a>
+
+<p>On occasion, you may want to <em class="dfn">keep</em> several lines of text, or a
+region of a document, together on a single page, preventing an automatic
+page break within certain boundaries. This can cause a page break to
+occur earlier than it normally would. For example, you may want to keep
+two paragraphs together, or a paragraph that refers to a table, list, or
+figure adjacent to the item it discusses. <samp class="file">ms</samp> provides the
+<code class="code">KS</code> and <code class="code">KE</code> macros for this purpose.
+</p>
+<p>You can alternatively specify a <em class="dfn">floating keep</em>: if a keep cannot
+fit on the current page, <samp class="file">ms</samp> holds its contents and
+allows material following the keep (in the source document) to fill the
+remainder of the current page. When the page breaks, whether by
+reaching the end or <code class="code">bp</code> request, <samp class="file">ms</samp> puts the floating keep
+at the beginning of the next page. This is useful for placing large
+graphics or tables that do not need to appear exactly where they occur
+in the source document.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eKS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.KS</code></strong><a class="copiable-link" href='#index-_002eKS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-KS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eKF"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.KF</code></strong><a class="copiable-link" href='#index-_002eKF'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-KF-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eKE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.KE</code></strong><a class="copiable-link" href='#index-_002eKE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-KE-_005bms_005d"></a>
+<p><code class="code">KS</code> begins a keep, <code class="code">KF</code> a floating keep, and <code class="code">KE</code> ends a
+keep of either kind.
+</p></dd></dl>
+
+<p>As an alternative to the keep mechanism, the <code class="code">ne</code> request forces a
+page break if there is not at least the amount of vertical space
+specified in its argument remaining on the page (see <a class="pxref" href="#Page-Control">Page Control</a>).
+One application of <code class="code">ne</code> is to reserve space on the page for a
+figure or illustration to be included later.
+</p>
+<a class="index-entry-id" id="index-boxes-_005bms_005d"></a>
+<p>A <em class="dfn">boxed keep</em> has a frame drawn around it.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eB1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.B1</code></strong><a class="copiable-link" href='#index-_002eB1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-B1-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eB2"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.B2</code></strong><a class="copiable-link" href='#index-_002eB2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-B2-_005bms_005d"></a>
+<p><code class="code">B1</code> begins a keep with a box drawn around it. <code class="code">B2</code> ends a
+boxed keep.
+</p></dd></dl>
+
+<p>Boxed keep macros cause breaks; if you need to box a word or phrase
+within a line, see the <code class="code">BX</code> macro in <a class="ref" href="#Typeface-and-decoration">Typeface and decoration</a>.
+Box lines are drawn as close as possible to the text they enclose so
+that they are usable within paragraphs. If you wish to box one or more
+paragraphs, you may improve the appearance by calling <code class="code">B1</code> after
+the first paragraphing macro, and by adding a small amount of vertical
+space before calling <code class="code">B2</code>.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.LP
+.B1
+.I Warning:
+Happy Fun Ball may suddenly accelerate to dangerous
+speeds.
+.sp \n[PD]/2 \&quot; space by half the inter-paragraph distance
+.B2
+</pre></div>
+</td></tr></table>
+
+<p>If you want a boxed keep to float, you will need to enclose the
+<code class="code">B1</code> and <code class="code">B2</code> calls within a pair of <code class="code">KF</code> and <code class="code">KE</code>
+calls.
+</p>
+<a class="index-entry-id" id="index-displays-_005bms_005d"></a>
+<p><em class="dfn">Displays</em> turn off filling; lines of verse or program code are
+shown with their lines broken as in the source document without
+requiring <code class="code">br</code> requests between lines. Displays can be kept on a
+single page or allowed to break across pages. The <code class="code">DS</code> macro
+begins a kept display of the layout specified in its first argument;
+non-kept displays are begun with dedicated macros corresponding to their
+layout.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments"><code class="t">L</code></var><a class="copiable-link" href='#index-_002eDS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eLD"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.LD</code></strong><a class="copiable-link" href='#index-_002eLD'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LD-_005bms_005d"></a>
+<p>Begin (<code class="code">DS</code>: kept) left-aligned display.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDS-1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments">[<code class="t">I</code> [<span class="r"><i class="slanted">indent</i></span>]]</var><a class="copiable-link" href='#index-_002eDS-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DS-_005bms_005d-1"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eID"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.ID</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">indent</i></span>]</var><a class="copiable-link" href='#index-_002eID'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ID-_005bms_005d"></a>
+<p>Begin (<code class="code">DS</code>: kept) display indented by <var class="var">indent</var> if specified,
+and by the amount of the <code class="code">DI</code> register otherwise.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDS-2"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments"><code class="t">B</code></var><a class="copiable-link" href='#index-_002eDS-2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DS-_005bms_005d-2"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eBD"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.BD</code></strong><a class="copiable-link" href='#index-_002eBD'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-BD-_005bms_005d"></a>
+<p>Begin a (<code class="code">DS</code>: kept) a block display: the entire display is
+left-aligned, but indented such that the longest line in the display
+is centered on the page.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDS-3"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments"><code class="t">C</code></var><a class="copiable-link" href='#index-_002eDS-3'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DS-_005bms_005d-3"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eCD"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.CD</code></strong><a class="copiable-link" href='#index-_002eCD'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-CD-_005bms_005d"></a>
+<p>Begin a (<code class="code">DS</code>: kept) centered display: each line in the display
+is centered.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDS-4"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments"><code class="t">R</code></var><a class="copiable-link" href='#index-_002eDS-4'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DS-_005bms_005d-4"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eRD"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RD</code></strong><a class="copiable-link" href='#index-_002eRD'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RD-_005bms_005d"></a>
+<p>Begin a (<code class="code">DS</code>: kept) right-aligned display. This is a GNU
+extension.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DE</code></strong><a class="copiable-link" href='#index-_002eDE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DE-_005bms_005d"></a>
+<p>End any display.
+</p></dd></dl>
+
+<p>The distance stored in the <code class="code">DD</code> register is inserted before and
+after each pair of display macros; this is a Berkeley extension. In
+<code class="code">groff</code> <samp class="file">ms</samp>, this distance replaces any adjacent
+inter-paragraph distance or subsequent spacing prior to a section
+heading. The <code class="code">DI</code> register is a GNU extension; its value is an
+indentation applied to displays created with &lsquo;<samp class="samp">.DS</samp>&rsquo; and &lsquo;<samp class="samp">.ID</samp>&rsquo;
+without arguments, to &lsquo;<samp class="samp">.DS I</samp>&rsquo; without an indentation argument, and
+to indented equations set with &lsquo;<samp class="samp">.EQ</samp>&rsquo;. Changes to either register
+take effect at the next display boundary.
+</p>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="ms-Insertions">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Footnotes" accesskey="n" rel="next">Footnotes</a>, Previous: <a href="#ms-keeps-and-displays" accesskey="p" rel="prev">Keeps, boxed keeps, and displays</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Tables_002c-figures_002c-equations_002c-and-references">4.6.5.9 Tables, figures, equations, and references</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-tables"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-figures"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-equations"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-references"></a>
+<a class="index-entry-id" id="index-tables-_005bms_005d"></a>
+<a class="index-entry-id" id="index-figures-_005bms_005d"></a>
+<a class="index-entry-id" id="index-equations-_005bms_005d"></a>
+<a class="index-entry-id" id="index-references-_005bms_005d"></a>
+
+<p>The <samp class="file">ms</samp> package is often used with the <code class="code">tbl</code>, <code class="code">pic</code>,
+<code class="code">eqn</code>, and <code class="code">refer</code> preprocessors.
+<a class="index-entry-id" id="index-tbl"></a>
+<a class="index-entry-id" id="index-pic"></a>
+<a class="index-entry-id" id="index-eqn"></a>
+<a class="index-entry-id" id="index-refer"></a>
+Mark text meant for preprocessors by enclosing it in pairs of tokens
+as follows, with nothing between the dot and the macro name. The
+preprocessors match these tokens only at the start of an input line.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eTS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TS</code></strong> <var class="def-var-arguments">[<code class="code">H</code>]</var><a class="copiable-link" href='#index-_002eTS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eTE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TE</code></strong><a class="copiable-link" href='#index-_002eTE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TE-_005bms_005d"></a>
+<p>Demarcate a table to be processed by the <code class="code">tbl</code> preprocessor. The
+optional argument&nbsp;<code class="code">H</code> to <code class="code">TS</code> instructs <samp class="file">ms</samp> to
+repeat table rows (often column headings) at the top of each new page
+the table spans, if applicable; calling the <code class="code">TH</code> macro marks the
+end of such rows. The GNU <cite class="cite">tbl<span class="r">(1)</span></cite> man page provides a
+comprehensive reference to the preprocessor and offers examples of its
+use.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002ePS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PS</code></strong><a class="copiable-link" href='#index-_002ePS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002ePE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PE</code></strong><a class="copiable-link" href='#index-_002ePE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PE-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002ePF"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PF</code></strong><a class="copiable-link" href='#index-_002ePF'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PF-_005bms_005d"></a>
+<p><code class="code">PS</code> begins a picture to be processed by the <code class="command">gpic</code>
+preprocessor; either of <code class="code">PE</code> or <code class="code">PF</code> ends it, the latter with
+&ldquo;flyback&rdquo; to the vertical position at its top. You can create
+<code class="code">pic</code> input manually or with a program such as <code class="code">xfig</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eEQ"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EQ</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">align</i></span> [<span class="r"><i class="slanted">label</i></span>]]</var><a class="copiable-link" href='#index-_002eEQ'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EQ-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eEN"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EN</code></strong><a class="copiable-link" href='#index-_002eEN'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EN-_005bms_005d"></a>
+<p>Demarcate an equation to be processed by the <code class="code">eqn</code> preprocessor.
+The equation is centered by default; <var class="var">align</var> can be &lsquo;<samp class="samp">C</samp>&rsquo;,
+&lsquo;<samp class="samp">L</samp>&rsquo;, or &lsquo;<samp class="samp">I</samp>&rsquo; to (explicitly) center, left-align, or indent it
+by the amount stored in the <code class="code">DI</code> register, respectively. If
+specified, <var class="var">label</var> is set right-aligned.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002e_005b"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.[</code></strong><a class="copiable-link" href='#index-_002e_005b'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005b-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002e_005d"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.]</code></strong><a class="copiable-link" href='#index-_002e_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005d-_005bms_005d"></a>
+<p>Demarcate a bibliographic citation to be processed by the <code class="code">refer</code>
+preprocessor. The GNU <cite class="cite">refer<span class="r">(1)</span></cite> man page provides a
+comprehensive reference to the preprocessor and the format of its
+bibliographic database. Type &lsquo;<samp class="samp">man refer</samp>&rsquo; at the command line to
+view it.
+</p></dd></dl>
+
+<p>When <code class="code">refer</code> emits collected references (as might be done on a
+&ldquo;Works Cited&rdquo; page), it interpolates the <code class="code">REFERENCES</code> string as
+an unnumbered heading (<code class="code">SH</code>).
+</p>
+<a class="index-entry-id" id="index-table_002c-multi_002dpage_002c-example-_005bms_005d"></a>
+<a class="index-entry-id" id="index-multi_002dpage-table-example-_005bms_005d"></a>
+<p>The following is an example of how to set up a table that may print
+across two or more pages.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.TS H
+allbox;
+Cb | Cb .
+Part&rarr;Description
+_
+.TH
+.T&amp;
+GH-1978&rarr;Fribulating gonkulator
+<span class="r">&hellip;the rest of the table follows&hellip;</span>
+.TE
+</pre></div>
+</td></tr></table>
+
+<p>Attempting to place a multi-page table inside a keep can lead to
+unpleasant results, particularly if the <code class="code">tbl</code> <code class="code">allbox</code> option
+is used.
+</p>
+<a class="index-entry-id" id="index-equation-example-_005bms_005d"></a>
+<p>Mathematics can be typeset using the language of the <code class="code">eqn</code>
+preprocessor.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.EQ C (\*[SN-NO-DOT]a)
+p ~ = ~ q sqrt { ( 1 + ~ ( x / q sup 2 ) }
+.EN
+</pre></div>
+</td></tr></table>
+
+<p>This input formats a labelled equation. We used the <code class="code">SN-NO-DOT</code>
+string to base the equation label on the current heading number, giving
+us more flexibility to reorganize the document.
+</p>
+<p>Use <code class="command">groff</code> options to run preprocessors on the input:
+<samp class="option">-e</samp> for <code class="command">geqn</code>, <samp class="option">-p</samp> for <code class="command">gpic</code>,
+<samp class="option">-R</samp> for <code class="command">grefer</code>, and <samp class="option">-t</samp> for <code class="command">gtbl</code>.
+</p>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="ms-Footnotes">
+<div class="nav-panel">
+<p>
+Previous: <a href="#ms-Insertions" accesskey="p" rel="prev">Tables, figures, equations, and references</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Footnotes">4.6.5.10 Footnotes</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-footnotes"></a>
+<a class="index-entry-id" id="index-footnotes-_005bms_005d"></a>
+
+<a class="index-entry-id" id="index-footnote-marker-_005bms_005d"></a>
+<a class="index-entry-id" id="index-marker_002c-footnote-_005bms_005d"></a>
+<p>A footnote is typically anchored to a place in the text with a
+<em class="dfn">marker</em>, which is a small integer, a symbol such as a dagger, or
+arbitrary user-specified text.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002a_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[*]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002a_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002a-_005bms_005d"></a>
+<p>Place an <em class="dfn">automatic number</em>, an automatically generated numeric
+footnote marker, in the text. Each time this string is interpolated,
+the number it produces increments by one. Automatic numbers start at 1.
+This is a Berkeley extension.
+</p></dd></dl>
+
+<p>Enclose the footnote text in <code class="code">FS</code> and <code class="code">FE</code> macro calls to set
+it at the nearest available &ldquo;foot&rdquo;, or bottom, of a text column or
+page.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eFS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.FS</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">marker</i></span>]</var><a class="copiable-link" href='#index-_002eFS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eFE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.FE</code></strong><a class="copiable-link" href='#index-_002eFE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FE-_005bms_005d"></a>
+<p>Begin (<code class="code">FS</code>) and end (<code class="code">FE</code>) a footnote. <code class="code">FS</code> calls
+<code class="code">FS-MARK</code> with any supplied <var class="var">marker</var> argument, which is then
+also placed at the beginning of the footnote text. If <var class="var">marker</var> is
+omitted, the next pending automatic footnote number enqueued by
+interpolation of the <code class="code">*</code> string is used, and if none exists,
+nothing is prefixed.
+</p></dd></dl>
+
+<p>You may not desire automatically numbered footnotes in spite of their
+convenience. You can indicate a footnote with a symbol or other text by
+specifying its marker at the appropriate place (for example, by using
+<code class="code">\[dg]</code> for the dagger glyph) <em class="emph">and</em> as an argument to the
+<code class="code">FS</code> macro. Such manual marks should be repeated as arguments to
+<code class="code">FS</code> or as part of the footnote text to disambiguate their
+correspondence. You may wish to use <code class="code">\*{</code> and <code class="code">\*}</code> to
+superscript the marker at the anchor point, in the footnote text, or
+both.
+</p>
+<p><code class="code">groff</code> <samp class="file">ms</samp> provides a hook macro, <code class="code">FS-MARK</code>, for
+user-determined operations to be performed when the <code class="code">FS</code> macro is
+called. It is passed the same arguments as <code class="code">FS</code> itself. An
+application of <code class="code">FS-MARK</code> is anchor placement for a hyperlink
+reference, so that a footnote can link back to its referential
+context.<a class="footnote" id="DOCF11" href="#FOOT11"><sup>11</sup></a> By default, this macro has an empty definition.
+<code class="code">FS-MARK</code> is a GNU extension.
+</p>
+<a class="index-entry-id" id="index-footnotes_002c-and-keeps-_005bms_005d"></a>
+<a class="index-entry-id" id="index-keeps_002c-and-footnotes-_005bms_005d"></a>
+<a class="index-entry-id" id="index-footnotes_002c-and-displays-_005bms_005d"></a>
+<a class="index-entry-id" id="index-displays_002c-and-footnotes-_005bms_005d"></a>
+<p>Footnotes can be safely used within keeps and displays, but you should
+avoid using automatically numbered footnotes within floating keeps. You
+can place a second <code class="code">\**</code> interpolation between a <code class="code">\**</code> and its
+corresponding <code class="code">FS</code> call as long as each <code class="code">FS</code> call occurs
+<em class="emph">after</em> the corresponding <code class="code">\**</code> and occurrences of <code class="code">FS</code>
+are in the same order as corresponding occurrences of <code class="code">\**</code>.
+</p>
+<p>Footnote text is formatted as paragraphs are, using analogous
+parameters. The registers <code class="code">FI</code>, <code class="code">FPD</code>, <code class="code">FPS</code>, and
+<code class="code">FVS</code> correspond to <code class="code">PI</code>, <code class="code">PD</code>, <code class="code">PS</code>, and <code class="code">CS</code>,
+respectively; <code class="code">FPD</code>, <code class="code">FPS</code>, and <code class="code">FVS</code> are GNU extensions.
+</p>
+<p>The <code class="code">FF</code> register controls the formatting of automatically numbered
+footnote paragraphs and those for which <code class="code">FS</code> is given a marker
+argument. See <a class="xref" href="#ms-Document-Control-Settings">Document Control Settings</a>.
+</p>
+<p>The default footnote line length is 11/12ths of the normal line length
+for compatibility with the expectations of historical <samp class="file">ms</samp>
+documents; you may wish to set the <code class="code">FR</code> string to &lsquo;<samp class="samp">1</samp>&rsquo; to align
+with contemporary typesetting practices. In the
+past,<a class="footnote" id="DOCF12" href="#FOOT12"><sup>12</sup></a> an <code class="code">FL</code> register
+was used for the line length in footnotes; however, setting this
+register at document initialization time had no effect on the footnote
+line length in multi-column arrangements.<a class="footnote" id="DOCF13" href="#FOOT13"><sup>13</sup></a>
+</p>
+<p><code class="code">FR</code> should be used in preference to the old <code class="code">FL</code> register in
+contemporary documents. The footnote line length is effectively
+computed as &lsquo;<samp class="samp"><i class="slanted">column-width</i> * \*[FR]</samp>&rsquo;. If an absolute
+footnote line length is required, recall that arithmetic expressions in
+<code class="code">roff</code> input are evaluated strictly from left to right, with no
+operator precedence (parentheses are honored).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds FR 0+3i \&quot; Set footnote line length to 3 inches.
+</pre></div></div>
+
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="ms-language-and-localization">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Page-Layout" accesskey="n" rel="next">Page layout</a>, Previous: <a href="#ms-Footnotes" accesskey="p" rel="prev">Footnotes</a>, Up: <a href="#ms-Body-Text" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Language-and-localization">4.6.5.11 Language and localization</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-language"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-localization"></a>
+<a class="index-entry-id" id="index-language-_005bms_005d"></a>
+<a class="index-entry-id" id="index-localization-_005bms_005d"></a>
+
+<p><code class="code">groff</code> <samp class="file">ms</samp> provides several strings that you can customize
+for your own purposes, or redefine to adapt the macro package to
+languages other than English. It is already localized for
+Czech, German, French, Italian, and Swedish. Load the desired
+localization macro package after <samp class="file">ms</samp>; see the
+<cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">$ groff -ms -mfr bienvenue.ms
+</pre></div>
+</td></tr></table>
+
+<p>The following strings are available.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bREFERENCES_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[REFERENCES]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bREFERENCES_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-REFERENCES-_005bms_005d"></a>
+<p>Contains the string printed at the beginning of a references
+(bibliography) page produced with GNU <cite class="cite">refer<span class="r">(1)</span></cite>. The default
+is &lsquo;<samp class="samp">References</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bABSTRACT_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[ABSTRACT]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bABSTRACT_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ABSTRACT-_005bms_005d"></a>
+<p>Contains the string printed at the beginning of the abstract. The
+default is &lsquo;<samp class="samp">\f[I]ABSTRACT\f[]</samp>&rsquo;; it includes font selection escape
+sequences to set the word in italics.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bTOC_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[TOC]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bTOC_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TOC-_005bms_005d"></a>
+<p>Contains the string printed at the beginning of the table of contents.
+The default is &lsquo;<samp class="samp">Table of Contents</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bMONTH1_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH1]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH1_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH1-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH2_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH2]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH2_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH2-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH3_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH3]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH3_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH3-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH4_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH4]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH4_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH4-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH5_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH5]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH5_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH5-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH6_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH6]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH6_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH6-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH7_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH7]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH7_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH7-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH8_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH8]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH8_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH8-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH9_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH9]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH9_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH9-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH10_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH10]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH10_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH10-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH11_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH11]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH11_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH11-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH12_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH12]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH12_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH12-_005bms_005d"></a>
+<p>Contain the full names of the calendar months. The defaults are in
+English: &lsquo;<samp class="samp">January</samp>&rsquo;, &lsquo;<samp class="samp">February</samp>&rsquo;, and so on.
+</p></dd></dl>
+
+
+<hr>
+</div>
+</div>
+<div class="subsection-level-extent" id="ms-Page-Layout">
+<div class="nav-panel">
+<p>
+Next: <a href="#Differences-from-AT_0026T-ms" accesskey="n" rel="next">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a>, Previous: <a href="#ms-Body-Text" accesskey="p" rel="prev">Body Text</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Page-layout">4.6.6 Page layout</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-page-layout"></a>
+<a class="index-entry-id" id="index-page-layout-_005bms_005d"></a>
+
+<p><samp class="file">ms</samp>&rsquo;s default page layout arranges text in a single column with
+the page number between hyphens centered in a header on each page except
+the first, and produces no footers. You can customize this arrangement.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#ms-Headers-and-Footers" accesskey="1">Headers and footers</a></li>
+<li><a href="#Tab-Stops-in-ms" accesskey="2">Tab stops</a></li>
+<li><a href="#ms-Margins" accesskey="3">Margins</a></li>
+<li><a href="#ms-Multiple-Columns" accesskey="4">Multiple columns</a></li>
+<li><a href="#ms-TOC" accesskey="5">Creating a table of contents</a></li>
+</ul>
+<hr>
+<div class="subsubsection-level-extent" id="ms-Headers-and-Footers">
+<div class="nav-panel">
+<p>
+Next: <a href="#Tab-Stops-in-ms" accesskey="n" rel="next">Tab stops</a>, Previous: <a href="#ms-Page-Layout" accesskey="p" rel="prev">Page layout</a>, Up: <a href="#ms-Page-Layout" accesskey="u" rel="up">Page layout</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Headers-and-footers">4.6.6.1 Headers and footers</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-headers"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-footers"></a>
+<a class="index-entry-id" id="index-headers-_005bms_005d"></a>
+<a class="index-entry-id" id="index-footers-_005bms_005d"></a>
+
+<p>There are multiple ways to produce headers and footers. One is to
+define the strings <code class="code">LH</code>, <code class="code">CH</code>, and <code class="code">RH</code> to set the left,
+center, and right headers, respectively; and <code class="code">LF</code>, <code class="code">CF</code>, and
+<code class="code">RF</code> to set the left, center, and right footers. This approach
+suffices for documents that do not distinguish odd- and even-numbered
+pages.
+</p>
+<p>Another method is to call macros that set headers or footers for odd- or
+even-numbered pages. Each such macro takes a delimited argument
+separating the left, center, and right header or footer texts from each
+other. You can replace the neutral apostrophes (<code class="code">'</code>) shown below
+with any character not appearing in the header or footer text. These
+macros are Berkeley extensions.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eOH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.OH</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002eOH'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-OH-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eEH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EH</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002eEH'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EH-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eOF"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.OF</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002eOF'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-OF-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eEF"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EF</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002eEF'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EF-_005bms_005d"></a>
+<p>The <code class="code">OH</code> and <code class="code">EH</code> macros define headers for odd- (recto)
+and even-numbered (verso) pages, respectively; the <code class="code">OF</code> and
+<code class="code">EF</code> macros define footers for them.
+</p></dd></dl>
+
+<p>With either method, a percent sign <code class="code">%</code> in header or footer text is
+replaced by the current page number. By default, <samp class="file">ms</samp> places no
+header on a page numbered &ldquo;1&rdquo; (regardless of its number format).
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eP1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.P1</code></strong><a class="copiable-link" href='#index-_002eP1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-P1-_005bms_005d"></a>
+<p>Typeset the header even on page&nbsp;1. To be effective, this macro
+must be called before the header trap is sprung on any page numbered
+&ldquo;1&rdquo;; in practice, unless your page numbering is unusual, this means
+that you should call it early, before <code class="code">TL</code> or any heading or
+paragraphing macro. This is a Berkeley extension.
+</p></dd></dl>
+
+<p>For even greater flexibility, <samp class="file">ms</samp> is designed to permit the
+redefinition of the macros that are called when the <code class="code">groff</code> traps
+that ordinarily cause the headers and footers to be output are sprung.
+<code class="code">PT</code> (&ldquo;page trap&rdquo;) is called by <samp class="file">ms</samp> when the header is to
+be written, and <code class="code">BT</code> (&ldquo;bottom trap&rdquo;) when the footer is to be.
+The <code class="code">groff</code> page location trap that <samp class="file">ms</samp> sets up to format the
+header also calls the (normally undefined) <code class="code">HD</code> macro after
+<code class="code">PT</code>; you can define <code class="code">HD</code> if you need additional processing
+after setting the header (for example, to draw a line below it).
+The <code class="code">HD</code> hook is a Berkeley extension. Any such macros you
+(re)define must implement any desired specialization for odd-, even-, or
+first numbered pages.
+</p>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Tab-Stops-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Margins" accesskey="n" rel="next">Margins</a>, Previous: <a href="#ms-Headers-and-Footers" accesskey="p" rel="prev">Headers and footers</a>, Up: <a href="#ms-Page-Layout" accesskey="u" rel="up">Page layout</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Tab-stops">4.6.6.2 Tab stops</h4>
+
+<p>Use the <code class="code">ta</code> request to define tab stops as needed. See <a class="xref" href="#Tabs-and-Fields">Tabs and Fields</a>.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eTA"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TA</code></strong><a class="copiable-link" href='#index-_002eTA'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TA-_005bms_005d"></a>
+<p>Reset the tab stops to the <samp class="file">ms</samp> default (every 5 ens).
+Redefine this macro to create a different set of default tab stops.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="ms-Margins">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Multiple-Columns" accesskey="n" rel="next">Multiple columns</a>, Previous: <a href="#Tab-Stops-in-ms" accesskey="p" rel="prev">Tab stops</a>, Up: <a href="#ms-Page-Layout" accesskey="u" rel="up">Page layout</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Margins">4.6.6.3 Margins</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-margins"></a>
+
+<p>Control margins using the registers summarized in &ldquo;Margin settings&rdquo; in
+<a class="ref" href="#ms-Document-Control-Settings">Document Control Settings</a> above. There is no setting for the
+right margin; the combination of page offset <code class="code">\n[PO]</code> and line
+length <code class="code">\n[LL]</code> determines it.
+</p>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="ms-Multiple-Columns">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-TOC" accesskey="n" rel="next">Creating a table of contents</a>, Previous: <a href="#ms-Margins" accesskey="p" rel="prev">Margins</a>, Up: <a href="#ms-Page-Layout" accesskey="u" rel="up">Page layout</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Multiple-columns">4.6.6.4 Multiple columns</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-multiple-columns"></a>
+<a class="index-entry-id" id="index-multiple-columns-_005bms_005d"></a>
+
+<p><samp class="file">ms</samp> can set text in as many columns as reasonably fit on the page.
+The following macros force a page break if a multi-column layout is
+active when they are called. The <code class="code">MINGW</code> register stores the
+default minimum gutter width; it is a GNU extension. When multiple
+columns are in use, keeps and the <code class="code">HORPHANS</code> and <code class="code">PORPHANS</code>
+registers work with respect to column breaks instead of page breaks.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002e1C"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.1C</code></strong><a class="copiable-link" href='#index-_002e1C'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-1C-_005bms_005d"></a>
+<p>Arrange page text in a single column (the default).
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002e2C"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.2C</code></strong><a class="copiable-link" href='#index-_002e2C'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-2C-_005bms_005d"></a>
+<p>Arrange page text in two columns.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eMC"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.MC</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">column-width</i></span> [<span class="r"><i class="slanted">gutter-width</i></span>]]</var><a class="copiable-link" href='#index-_002eMC'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MC-_005bms_005d"></a>
+<p>Arrange page text in multiple columns. If you specify no arguments, it
+is equivalent to the <code class="code">2C</code> macro. Otherwise, <var class="var">column-width</var> is
+the width of each column and <var class="var">gutter-width</var> is the minimum distance
+between columns.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="ms-TOC">
+<div class="nav-panel">
+<p>
+Next: <a href="#Differences-from-AT_0026T-ms" accesskey="n" rel="next">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a>, Previous: <a href="#ms-Multiple-Columns" accesskey="p" rel="prev">Multiple columns</a>, Up: <a href="#ms-Page-Layout" accesskey="u" rel="up">Page layout</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Creating-a-table-of-contents">4.6.6.5 Creating a table of contents</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-creating-table-of-contents"></a>
+<a class="index-entry-id" id="index-table-of-contents_002c-creating-_005bms_005d"></a>
+
+<p>Because <code class="code">roff</code> formatters process their input in a single pass,
+material on page 50, for example, cannot influence what appears on
+page&nbsp;1&mdash;this poses a challenge for a table of contents at its
+traditional location in front matter, if you wish to avoid manually
+maintaining it. <samp class="file">ms</samp> enables the collection of material to be
+presented in the table of contents as it appears, saving its page number
+along with it, and then emitting the collected contents on demand toward
+the end of the document. The table of contents can then be resequenced
+to its desired location by physically rearranging the pages of a printed
+document, or as part of post-processing&mdash;with a <cite class="cite">sed<span class="r">(1)</span></cite>
+script to reorder the pages in <code class="command">troff</code>&rsquo;s output, with
+<cite class="cite">pdfjam<span class="r">(1)</span></cite>, or with <cite class="cite">gropdf<span class="r">(1)</span></cite>&rsquo;s
+&lsquo;<samp class="samp">.pdfswitchtopage</samp>&rsquo; feature, for example.
+</p>
+<p>Define an entry to appear in the table of contents by bracketing its
+text between calls to the <code class="code">XS</code> and <code class="code">XE</code> macros. A typical
+application is to call them immediately after <code class="code">NH</code> or <code class="code">SH</code> and
+repeat the heading text within them. The <code class="code">XA</code> macro, used within
+&lsquo;<samp class="samp">.XS</samp>&rsquo;/&lsquo;<samp class="samp">.XE</samp>&rsquo; pairs, supplements an entry&mdash;for instance, when
+it requires multiple output lines, whether because a heading is too long
+to fit or because style dictates that page numbers not be repeated. You
+may wish to indent the text thus wrapped to correspond to its heading
+depth; this can be done in the entry text by prefixing it with tabs or
+horizontal motion escape sequences, or by providing a second argument to
+the <code class="code">XA</code> macro. <code class="code">XS</code> and <code class="code">XA</code> automatically associate
+the page number where they are called with the text following them, but
+they accept arguments to override this behavior. At the end of the
+document, call <code class="code">TC</code> or <code class="code">PX</code> to emit the table of contents;
+<code class="code">TC</code> resets the page number to &lsquo;<samp class="samp">i</samp>&rsquo; (Roman numeral one), and
+then calls <code class="code">PX</code>. All of these macros are Berkeley extensions.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eXS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XS</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">page-number</i></span>]</var><a class="copiable-link" href='#index-_002eXS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXA"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XA</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">page-number</i></span> [<span class="r"><i class="slanted">indentation</i></span>]]</var><a class="copiable-link" href='#index-_002eXA'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XA-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XE</code></strong><a class="copiable-link" href='#index-_002eXE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XE-_005bms_005d"></a>
+<p>Begin, supplement, and end a table of contents entry. Each entry is
+associated with <var class="var">page-number</var> (otherwise the current page number); a
+<var class="var">page-number</var> of &lsquo;<samp class="samp">no</samp>&rsquo; prevents a leader and page number from
+being emitted for that entry. Use of <code class="code">XA</code> within
+<code class="code">XS</code>/<code class="code">XE</code> is optional; it can be repeated. If
+<var class="var">indentation</var> is present, a supplemental entry is indented by that
+amount; ens are assumed if no unit is indicated. Text on input lines
+between <code class="code">XS</code> and <code class="code">XE</code> is stored for later recall by <code class="code">PX</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002ePX"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PX</code></strong> <var class="def-var-arguments">[<code class="code">no</code>]</var><a class="copiable-link" href='#index-_002ePX'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PX-_005bms_005d"></a>
+<p>Switch to single-column layout. Unless <code class="code">no</code> is specified, center
+and interpolate the <code class="code">TOC</code> string in bold and two points larger than
+the body text. Emit the table of contents entries.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eTC"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TC</code></strong> <var class="def-var-arguments">[<code class="code">no</code>]</var><a class="copiable-link" href='#index-_002eTC'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TC-_005bms_005d"></a>
+<p>Set the page number to&nbsp;1, the page number format to lowercase Roman
+numerals, and call <code class="code">PX</code> (with a <code class="code">no</code> argument, if present).
+</p></dd></dl>
+
+<p>Here&rsquo;s an example of typical <samp class="file">ms</samp> table of contents preparation.
+We employ horizontal escape sequences <code class="code">\h</code> to indent the entries by
+sectioning depth.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.NH 1
+Introduction
+.XS
+Introduction
+.XE
+<span class="r">&hellip;</span>
+.NH 2
+Methodology
+.XS
+\h'2n'Methodology
+.XA
+\h'4n'Fassbinder's Approach
+\h'4n'Kahiu's Approach
+.XE
+<span class="r">&hellip;</span>
+.NH 1
+Findings
+.XS
+Findings
+.XE
+<span class="r">&hellip;</span>
+.TC
+</pre></div>
+</td></tr></table>
+
+<p>The remaining features in this subsubsection are GNU extensions.
+<code class="code">groff</code> <samp class="file">ms</samp> obviates the need to repeat heading text after
+<code class="code">XS</code> calls. Call <code class="code">XN</code> and <code class="code">XH</code> after <code class="code">NH</code> and
+<code class="code">SH</code>, respectively.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eXN"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XN</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXN'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XN-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XH</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">depth</i></span> <span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXH'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XH-_005bms_005d"></a>
+<p>Format <var class="var">heading-text</var> and create a corresponding table of contents
+entry. <code class="code">XN</code> computes the indentation from the depth of the
+preceding <code class="code">NH</code> call; <code class="code">XH</code> requires a <var class="var">depth</var> argument to
+do so.
+</p></dd></dl>
+
+<p><code class="code">groff</code> <samp class="file">ms</samp> encourages customization of table of contents
+entry production.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eXN_002dREPLACEMENT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XN-REPLACEMENT</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXN_002dREPLACEMENT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XN_002dREPLACEMENT-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXH_002dREPLACEMENT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XH-REPLACEMENT</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">depth</i></span> <span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXH_002dREPLACEMENT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XH_002dREPLACEMENT-_005bms_005d"></a>
+<p>These hook macros implement <code class="code">XN</code> and <code class="code">XH</code>, respectively.
+They call <code class="code">XN-INIT</code> and pass their <var class="var">heading-text</var> arguments to
+<code class="code">XH-UPDATE-TOC</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eXN_002dINIT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XN-INIT</code></strong><a class="copiable-link" href='#index-_002eXN_002dINIT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XN_002dINIT-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXH_002dUPDATE_002dTOC"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XH-UPDATE-TOC</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">depth</i></span> <span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXH_002dUPDATE_002dTOC'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XH_002dUPDATE_002dTOC-_005bms_005d"></a>
+<p>The <code class="code">XN-INIT</code> hook macro does nothing by default.
+<code class="code">XH-UPDATE-TOC</code> brackets <var class="var">heading-text</var> with <code class="code">XS</code> and
+<code class="code">XE</code> calls, indenting it by 2 ens per level of <var class="var">depth</var> beyond
+the first.
+</p></dd></dl>
+
+<p>We could therefore produce a table of contents similar to that in the
+previous example with fewer macro calls. (The difference is that this
+input follows the &ldquo;Approach&rdquo; entries with leaders and page numbers.)
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.NH 1
+.XN Introduction
+<span class="r">&hellip;</span>
+.NH 2
+.XN Methodology
+.XH 3 &quot;Fassbinder's Approach&quot;
+.XH 3 &quot;Kahiu's Approach&quot;
+<span class="r">&hellip;</span>
+.NH 1
+.XN Findings
+<span class="r">&hellip;</span>
+</pre></div>
+</td></tr></table>
+
+<p>To get the section number of the numbered headings into the table of
+contents entries, we might define <code class="code">XN-REPLACEMENT</code> as follows.
+(We obtain the heading depth from <code class="code">groff</code> <samp class="file">ms</samp>&rsquo;s internal
+register <code class="code">nh*hl</code>.)
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.de XN-REPLACEMENT
+.XN-INIT
+.XH-UPDATE-TOC \\n[nh*hl] \\$@
+\&amp;\\*[SN] \\$*
+..
+</pre></div>
+</td></tr></table>
+
+<p>You can change the style of the leader that bridges each table of
+contents entry with its page number; define the <code class="code">TC-LEADER</code> special
+character by using the <code class="code">char</code> request. A typical leader combines
+the dot glyph &lsquo;<samp class="samp">.</samp>&rsquo; with a horizontal motion escape sequence to
+spread the dots. The width of the page number field is stored in the
+<code class="code">TC-MARGIN</code> register.
+</p>
+
+<hr>
+</div>
+</div>
+<div class="subsection-level-extent" id="Differences-from-AT_0026T-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Naming-Conventions" accesskey="n" rel="next">Naming Conventions</a>, Previous: <a href="#ms-Page-Layout" accesskey="p" rel="prev">Page layout</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Differences-from-AT_0026T-ms-1">4.6.7 Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></h4>
+<a class="index-entry-id" id="index-ms-macros_002c-groff-differences-from-AT_0026T"></a>
+<a class="index-entry-id" id="index-AT_0026T-ms_002c-macro-package-differences"></a>
+
+<p>The <code class="code">groff</code> <samp class="file">ms</samp> macros are an independent reimplementation,
+using no <abbr class="acronym">AT&amp;T</abbr> code. Since they take advantage of the extended
+features of <code class="code">groff</code>, they cannot be used with <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code>. <code class="code">groff</code> <samp class="file">ms</samp> supports features described above
+as Berkeley and Tenth Edition Research Unix extensions, and adds several
+of its own.
+</p>
+<ul class="itemize mark-bullet">
+<li>The internals of <code class="code">groff</code> <samp class="file">ms</samp> differ from the internals of
+<abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp>. Documents that depend upon implementation
+details of <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp> may not format properly with
+<code class="code">groff</code> <samp class="file">ms</samp>. Such details include macros whose function was
+not documented in the <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp>
+manual.<a class="footnote" id="DOCF14" href="#FOOT14"><sup>14</sup></a>
+
+</li><li>The error-handling policy of <code class="code">groff</code> <samp class="file">ms</samp> is to detect and
+report errors, rather than to ignore them silently.
+
+</li><li>Tenth Edition Research Unix supported <code class="code">P1</code>/<code class="code">P2</code> macros to bracket code
+examples; <code class="code">groff</code> <samp class="file">ms</samp> does not.
+
+</li><li><code class="code">groff</code> <samp class="file">ms</samp> does not work in GNU <code class="code">troff</code>&rsquo;s
+<abbr class="acronym">AT&amp;T</abbr> compatibility mode. If loaded when that mode is enabled,
+it aborts processing with a diagnostic message.
+
+</li><li>Multiple line spacing is not supported. Use a larger vertical spacing
+instead.
+
+</li><li><code class="code">groff</code> <samp class="file">ms</samp> uses the same header and footer defaults in both
+<code class="code">nroff</code> and <code class="code">troff</code> modes as <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp> does in
+<code class="code">troff</code> mode; <abbr class="acronym">AT&amp;T</abbr>&rsquo;s default in <code class="code">nroff</code> mode is to
+put the date, in U.S. traditional format (e.g., &ldquo;January 1, 2021&rdquo;),
+in the center footer (the <code class="code">CF</code> string).
+
+</li><li>Many <code class="code">groff</code> <samp class="file">ms</samp> macros, including those for paragraphs,
+headings, and displays, cause a reset of paragraph rendering parameters,
+and may change the indentation; they do so not by incrementing or
+decrementing it, but by setting it absolutely. This can cause problems
+for documents that define additional macros of their own that try to
+manipulate indentation. Use the <samp class="file">ms</samp> <code class="code">RS</code> and <code class="code">RE</code>
+macros instead of the <code class="code">in</code> request.
+
+</li><li><a class="index-entry-id" id="index-fractional-type-sizes-in-ms-macros"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-fractional-type-sizes-in"></a>
+<abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp> interpreted the values of the registers
+<code class="code">PS</code> and <code class="code">VS</code> in points, and did not support the use of
+scaling units with them. <code class="code">groff</code> <samp class="file">ms</samp> interprets values of
+the registers <code class="code">PS</code>, <code class="code">VS</code>, <code class="code">FPS</code>, and <code class="code">FVS</code> equal to
+or larger than&nbsp;1,000 (one thousand) as decimal fractions multiplied
+by&nbsp;1,000.<a class="footnote" id="DOCF15" href="#FOOT15"><sup>15</sup></a> This threshold makes use of a
+scaling unit with these parameters practical for high-resolution
+devices while preserving backward compatibility. It also permits
+expression of non-integral type sizes. For example, &lsquo;<samp class="samp">groff
+-rPS=10.5p</samp>&rsquo; at the shell prompt is equivalent to placing &lsquo;<samp class="samp">.nr PS
+10.5p</samp>&rsquo; at the beginning of the document.
+
+</li><li><abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp>&rsquo;s <code class="code">AU</code> macro supported arguments used with
+some document types; <code class="code">groff</code> <samp class="file">ms</samp> does not.
+
+</li><li>Right-aligned displays are available. The <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp>
+manual observes that &ldquo;it is tempting to assume that &lsquo;<samp class="samp">.DS R</samp>&rsquo; will
+right adjust lines, but it doesn&rsquo;t work&rdquo;. In <code class="code">groff</code> <samp class="file">ms</samp>,
+it does.
+
+</li><li>To make <code class="code">groff</code> <samp class="file">ms</samp> use the default page offset (which also
+specifies the left margin), the <code class="code">PO</code> register must stay undefined
+until the first <samp class="file">ms</samp> macro is called.
+
+<p>This implies that &lsquo;<samp class="samp">\n[PO]</samp>&rsquo; should not be used early in the
+document, unless it is changed also: accessing an undefined register
+automatically defines it.
+</p>
+</li><li><code class="code">groff</code> <samp class="file">ms</samp> supports the <code class="code">PN</code> register, but it is not
+necessary; you can access the page number via the usual <code class="code">%</code>
+register and invoke the <code class="code">af</code> request to assign a different format
+to it if desired.<a class="footnote" id="DOCF16" href="#FOOT16"><sup>16</sup></a>
+
+</li><li>The <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp> manual documents registers <code class="code">CW</code> and
+<code class="code">GW</code> as setting the default column width and &ldquo;intercolumn gap&rdquo;,
+respectively, and which applied when <code class="code">MC</code> was called with fewer
+than two arguments. <code class="code">groff</code> <samp class="file">ms</samp> instead treats <code class="code">MC</code>
+without arguments as synonymous with <code class="code">2C</code>; there is thus no
+occasion for a default column width register. Further, the <code class="code">MINGW</code>
+register and the second argument to <code class="code">MC</code> specify a <em class="emph">minimum</em>
+space between columns, not the fixed gutter width of <abbr class="acronym">AT&amp;T</abbr>
+<samp class="file">ms</samp>.
+
+</li><li>The <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp> manual did not document the <code class="code">QI</code>
+register; Berkeley and <code class="code">groff</code> <samp class="file">ms</samp> do.
+</li></ul>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bGS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[GS]</code></strong><a class="copiable-link" href='#index-_005cn_005bGS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-GS-_005bms_005d"></a>
+<p>The register <code class="code">GS</code> is set to&nbsp;1 by the <code class="code">groff</code> <samp class="file">ms</samp>
+macros, but is not used by the <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp> package.
+Documents that need to determine whether they are being formatted with
+<code class="code">groff</code> <samp class="file">ms</samp> or another implementation should test this
+register.
+</p></dd></dl>
+
+
+
+<ul class="mini-toc">
+<li><a href="#Missing-Unix-Version-7-ms-Macros" accesskey="1">Unix Version 7 <samp class="file">ms</samp> macros not implemented by <code class="code">groff</code> <samp class="file">ms</samp></a></li>
+</ul>
+<hr>
+<div class="subsubsection-level-extent" id="Missing-Unix-Version-7-ms-Macros">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Differences-from-AT_0026T-ms" accesskey="p" rel="prev">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a>, Up: <a href="#Differences-from-AT_0026T-ms" accesskey="u" rel="up">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Unix-Version-7-ms-macros-not-implemented-by-groff-ms">4.6.7.1 Unix Version 7 <samp class="file">ms</samp> macros not implemented by <code class="code">groff</code> <samp class="file">ms</samp></h4>
+
+<p>Several macros described in the Unix Version&nbsp;7 <samp class="file">ms</samp>
+documentation are unimplemented by <code class="code">groff</code> <samp class="file">ms</samp> because they
+are specific to the requirements of documents produced internally by
+Bell Laboratories, some of which also require a glyph for the Bell
+System logo that <code class="code">groff</code> does not support. These macros
+implemented several document type formats
+(<code class="code">EG</code>, <code class="code">IM</code>, <code class="code">MF</code>, <code class="code">MR</code>, <code class="code">TM</code>, <code class="code">TR</code>), were meaningful only in conjunction with the use of certain document
+types
+(<code class="code">AT</code>, <code class="code">CS</code>, <code class="code">CT</code>, <code class="code">OK</code>, <code class="code">SG</code>), stored the postal addresses of Bell Labs sites
+(<code class="code">HO</code>, <code class="code">IH</code>, <code class="code">MH</code>, <code class="code">PY</code>, <code class="code">WH</code>), or lacked a stable definition over time
+(<code class="code">UX</code>). To compatibly render historical <samp class="file">ms</samp> documents using these macros,
+we advise your documents to invoke the <code class="code">rm</code> request to remove any
+such macros it uses and then define replacements with an authentically
+typeset original at hand.<a class="footnote" id="DOCF17" href="#FOOT17"><sup>17</sup></a> For
+informal purposes, a simple definition of <code class="code">UX</code> should maintain the
+readability of the document&rsquo;s substance.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.rm UX
+.ds UX Unix\&quot;
+</pre></div>
+</td></tr></table>
+
+
+<hr>
+</div>
+</div>
+<div class="subsection-level-extent" id="ms-Legacy-Features">
+<div class="nav-panel">
+<p>
+Next: <a href="#ms-Naming-Conventions" accesskey="n" rel="next">Naming Conventions</a>, Previous: <a href="#Differences-from-AT_0026T-ms" accesskey="p" rel="prev">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Legacy-Features">4.6.8 Legacy Features</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-strings"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-special-characters"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-accent-marks"></a>
+<a class="index-entry-id" id="index-accent-marks-_005bms_005d"></a>
+<a class="index-entry-id" id="index-special-characters-_005bms_005d"></a>
+<a class="index-entry-id" id="index-strings-_005bms_005d"></a>
+
+<p><code class="code">groff</code> <samp class="file">ms</samp> retains some legacy features solely to support
+formatting of historical documents; contemporary ones should not use
+them because they can render poorly. See the <cite class="cite">groff_char<span class="r">(7)</span></cite>
+man page.
+</p>
+<ul class="mini-toc">
+<li><a href="#AT_0026T-accent-mark-strings" accesskey="1">AT&amp;T accent mark strings</a></li>
+<li><a href="#Berkeley-accent-mark-and-glyph-strings" accesskey="2">Berkeley accent mark and glyph strings</a></li>
+</ul>
+<div class="unnumberedsubsubsec-level-extent" id="AT_0026T-accent-mark-strings">
+<h4 class="unnumberedsubsubsec">AT&amp;T accent mark strings</h4>
+
+<p>AT&amp;T <samp class="file">ms</samp> defined accent mark strings as follows.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_0027_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<code class="code">'</code>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0027_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_0027-_005bms_005d"></a>
+<p>Apply acute accent to subsequent glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_0060_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<code class="code">`</code>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0060_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_0060-_005bms_005d"></a>
+<p>Apply grave accent to subsequent glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_003a_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[:]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003a_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_003a-_005bms_005d"></a>
+<p>Apply dieresis (umlaut) to subsequent glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_005e_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[^]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_005e_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005e-_005bms_005d"></a>
+<p>Apply circumflex accent to subsequent glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_007e_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[~]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_007e_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_007e-_005bms_005d"></a>
+<p>Apply tilde accent to subsequent glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bC_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[C]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bC_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-C-_005bms_005d"></a>
+<p>Apply caron to subsequent glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002c_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[,]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002c_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002c-_005bms_005d"></a>
+<p>Apply cedilla to subsequent glyph.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Berkeley-accent-mark-and-glyph-strings">
+<h4 class="unnumberedsubsubsec">Berkeley accent mark and glyph strings</h4>
+
+<p>Berkeley <samp class="file">ms</samp> offered an <code class="code">AM</code> macro; calling it redefined the
+AT&amp;T accent mark strings (except for &lsquo;<samp class="samp">\*C</samp>&rsquo;), applied them to the
+<em class="emph">preceding</em> glyph, and defined additional strings, some for spacing
+glyphs.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eAM"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AM</code></strong><a class="copiable-link" href='#index-_002eAM'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-AM-_005bms_005d"></a>
+<p>Enable alternative accent mark and glyph-producing strings.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_0027_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<code class="code">'</code>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0027_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_0027-_005bms_005d-1"></a>
+<p>Apply acute accent to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_0060_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<code class="code">`</code>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0060_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_0060-_005bms_005d-1"></a>
+<p>Apply grave accent to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_003a_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[:]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003a_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_003a-_005bms_005d-1"></a>
+<p>Apply dieresis (umlaut) to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_005e_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[^]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_005e_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005e-_005bms_005d-1"></a>
+<p>Apply circumflex accent to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_007e_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[~]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_007e_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_007e-_005bms_005d-1"></a>
+<p>Apply tilde accent to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002c_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[,]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002c_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002c-_005bms_005d-1"></a>
+<p>Apply cedilla to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002f_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[/]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002f_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002f-_005bms_005d"></a>
+<p>Apply stroke (slash) to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bv_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[v]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bv_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-v-_005bms_005d"></a>
+<p>Apply caron to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_005f_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[_]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_005f_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005f-_005bms_005d"></a>
+<p>Apply macron to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002e_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[.]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002e_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002e-_005bms_005d"></a>
+<p>Apply underdot to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bo_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[o]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bo_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-o-_005bms_005d"></a>
+<p>Apply ring accent to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_003f_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[?]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003f_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_003f-_005bms_005d"></a>
+<p>Interpolate inverted question mark.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_0021_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[!]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0021_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_0021-_005bms_005d"></a>
+<p>Interpolate inverted exclamation mark.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b8_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[8]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b8_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-8-_005bms_005d"></a>
+<p>Interpolate small letter sharp s.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bq_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[q]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bq_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-q-_005bms_005d"></a>
+<p>Interpolate small letter o with hook accent (ogonek).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b3_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[3]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b3_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-3-_005bms_005d"></a>
+<p>Interpolate small letter yogh.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bd_002d_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[d-]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bd_002d_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-d_002d-_005bms_005d"></a>
+<p>Interpolate small letter eth.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bD_002d_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[D-]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bD_002d_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-D_002d-_005bms_005d"></a>
+<p>Interpolate capital letter eth.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bth_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[th]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bth_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-th-_005bms_005d"></a>
+<p>Interpolate small letter thorn.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bTh_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[Th]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bTh_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Th-_005bms_005d"></a>
+<p>Interpolate capital letter thorn.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bae_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[ae]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bae_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ae-_005bms_005d"></a>
+<p>Interpolate small æ ligature.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bAe_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[Ae]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bAe_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Ae-_005bms_005d"></a>
+<p>Interpolate capital Æ ligature.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005boe_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[oe]</code></strong><a class="copiable-link" href='#index-_005c_002a_005boe_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-oe-_005bms_005d"></a>
+<p>Interpolate small oe ligature.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bOE_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[OE]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bOE_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-OE-_005bms_005d"></a>
+<p>Interpolate capital OE ligature.
+</p></dd></dl>
+
+
+<hr>
+</div>
+</div>
+<div class="subsection-level-extent" id="ms-Naming-Conventions">
+<div class="nav-panel">
+<p>
+Previous: <a href="#ms-Legacy-Features" accesskey="p" rel="prev">Legacy Features</a>, Up: <a href="#ms" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Naming-Conventions">4.6.9 Naming Conventions</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-naming-conventions"></a>
+<a class="index-entry-id" id="index-naming-conventions_002c-ms-macros"></a>
+
+<p>The following conventions are used for names of macros, strings, and
+registers. External names available to documents that use the
+<code class="code">groff</code> <samp class="file">ms</samp> macros contain only uppercase letters and digits.
+</p>
+<p>Internally, the macros are divided into modules. Conventions for
+identifier names are as follows.
+</p>
+<ul class="itemize mark-bullet">
+<li>Names used only within one module are of the form
+<var class="var">module</var><code class="code">*</code><var class="var">name</var>.
+
+</li><li>Names used outside the module in which they are defined are of the form
+<var class="var">module</var><code class="code">@</code><var class="var">name</var>.
+
+</li><li>Names associated with a particular environment are of the form
+<var class="var">environment</var><code class="code">:</code><var class="var">name</var>; these are used only within the
+<code class="code">par</code> module.
+
+</li><li><var class="var">name</var> does not have a module prefix.
+
+</li><li>Constructed names used to implement arrays are of the form
+<var class="var">array</var><code class="code">!</code><var class="var">index</var>.
+</li></ul>
+
+<p>Thus the <code class="code">groff</code> <samp class="file">ms</samp> macros reserve the following names.
+</p>
+<ul class="itemize mark-bullet">
+<li>Names containing the characters <code class="code">*</code>, <code class="code">@</code>, and&nbsp;<code class="code">:</code>.
+
+</li><li>Names containing only uppercase letters and digits.
+</li></ul>
+
+
+
+<hr>
+</div>
+</div>
+</div>
+<div class="chapter-level-extent" id="GNU-troff-Reference">
+<div class="nav-panel">
+<p>
+Next: <a href="#File-Formats" accesskey="n" rel="next">File Formats</a>, Previous: <a href="#Major-Macro-Packages" accesskey="p" rel="prev">Macro Packages</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="chapter" id="GNU-troff-Reference-1">5 GNU <code class="code">troff</code> Reference</h2>
+<a class="index-entry-id" id="index-reference_002c-gtroff"></a>
+<a class="index-entry-id" id="index-gtroff_002c-reference"></a>
+
+<p>This chapter covers <em class="emph">all</em> of the facilities of the GNU
+<code class="code">troff</code> formatting engine. Users of macro packages may skip it if
+not interested in details.
+</p>
+
+
+
+
+<ul class="mini-toc">
+<li><a href="#Text" accesskey="1">Text</a></li>
+<li><a href="#Page-Geometry" accesskey="2">Page Geometry</a></li>
+<li><a href="#Measurements" accesskey="3">Measurements</a></li>
+<li><a href="#Numeric-Expressions" accesskey="4">Numeric Expressions</a></li>
+<li><a href="#Identifiers" accesskey="5">Identifiers</a></li>
+<li><a href="#Formatter-Instructions" accesskey="6">Formatter Instructions</a></li>
+<li><a href="#Comments" accesskey="7">Comments</a></li>
+<li><a href="#Registers" accesskey="8">Registers</a></li>
+<li><a href="#Manipulating-Filling-and-Adjustment" accesskey="9">Manipulating Filling and Adjustment</a></li>
+<li><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></li>
+<li><a href="#Manipulating-Spacing">Manipulating Spacing</a></li>
+<li><a href="#Tabs-and-Fields">Tabs and Fields</a></li>
+<li><a href="#Character-Translations">Character Translations</a></li>
+<li><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></li>
+<li><a href="#Line-Layout">Line Layout</a></li>
+<li><a href="#Line-Continuation">Line Continuation</a></li>
+<li><a href="#Page-Layout">Page Layout</a></li>
+<li><a href="#Page-Control">Page Control</a></li>
+<li><a href="#Using-Fonts">Using Fonts</a></li>
+<li><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></li>
+<li><a href="#Colors">Colors</a></li>
+<li><a href="#Strings">Strings</a></li>
+<li><a href="#Conditionals-and-Loops">Conditionals and Loops</a></li>
+<li><a href="#Writing-Macros">Writing Macros</a></li>
+<li><a href="#Page-Motions">Page Motions</a></li>
+<li><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></li>
+<li><a href="#Deferring-Output">Deferring Output</a></li>
+<li><a href="#Traps">Traps</a></li>
+<li><a href="#Diversions">Diversions</a></li>
+<li><a href="#Punning-Names">Punning Names</a></li>
+<li><a href="#Environments">Environments</a></li>
+<li><a href="#Suppressing-Output">Suppressing Output</a></li>
+<li><a href="#I_002fO">I/O</a></li>
+<li><a href="#Postprocessor-Access">Postprocessor Access</a></li>
+<li><a href="#Miscellaneous">Miscellaneous</a></li>
+<li><a href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a></li>
+<li><a href="#Debugging">Debugging</a></li>
+<li><a href="#Implementation-Differences">Implementation Differences</a></li>
+</ul>
+<hr>
+<div class="section-level-extent" id="Text">
+<div class="nav-panel">
+<p>
+Next: <a href="#Measurements" accesskey="n" rel="next">Measurements</a>, Previous: <a href="#GNU-troff-Reference" accesskey="p" rel="prev">GNU <code class="code">troff</code> Reference</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Text-1">5.1 Text</h3>
+<a class="index-entry-id" id="index-text_002c-GNU-troff-processing"></a>
+
+<p><abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> was designed to take input as it would be
+composed on a typewriter, including the teletypewriters used as early
+computer terminals, and relieve the user drafting a document of concern
+with details like line length, hyphenation breaking, and the achievement
+of straight margins. Early in its development, the program gained the
+ability to prepare output for a phototypesetter; a document could then
+be prepared for output to either a teletypewriter, a phototypesetter, or
+both. GNU <code class="code">troff</code> continues this tradition of permitting an author
+to compose a single master version of a document which can then be
+rendered for a variety of output formats or devices.
+</p>
+<p><code class="code">roff</code> input files contain text interspersed with instructions to
+control the formatter. Even in the absence of such instructions, GNU
+<code class="code">troff</code> still processes its input in several ways, by filling,
+hyphenating, breaking, and adjusting it, and supplementing it with
+inter-sentence space.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#Filling" accesskey="1">Filling</a></li>
+<li><a href="#Sentences" accesskey="2">Sentences</a></li>
+<li><a href="#Hyphenation" accesskey="3">Hyphenation</a></li>
+<li><a href="#Breaking" accesskey="4">Breaking</a></li>
+<li><a href="#Adjustment" accesskey="5">Adjustment</a></li>
+<li><a href="#Tabs-and-Leaders" accesskey="6">Tabs and Leaders</a></li>
+<li><a href="#Requests-and-Macros" accesskey="7">Requests and Macros</a></li>
+<li><a href="#Macro-Packages" accesskey="8">Macro Packages</a></li>
+<li><a href="#Input-Encodings" accesskey="9">Input Encodings</a></li>
+<li><a href="#Input-Conventions">Input Conventions</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Filling">
+<div class="nav-panel">
+<p>
+Next: <a href="#Sentences" accesskey="n" rel="next">Sentences</a>, Previous: <a href="#Text" accesskey="p" rel="prev">Text</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Filling-1">5.1.1 Filling</h4>
+
+<p>When GNU <code class="code">troff</code> starts up, it obtains information about the device
+for which it is preparing output.<a class="footnote" id="DOCF18" href="#FOOT18"><sup>18</sup></a> An essential property is the length of the output
+line, such as &ldquo;6.5 inches&rdquo;.
+</p>
+<a class="index-entry-id" id="index-word_002c-definition-of"></a>
+<a class="index-entry-id" id="index-filling"></a>
+<p>GNU <code class="code">troff</code> interprets plain text files employing the Unix
+line-ending convention. It reads input a character at a time,
+collecting words as it goes, and fits as many words together on an
+output line as it can&mdash;this is known as <em class="dfn">filling</em>. To GNU
+<code class="code">troff</code>, a <em class="dfn">word</em> is any sequence of one or more characters
+that aren&rsquo;t spaces or newlines. The exceptions separate
+words.<a class="footnote" id="DOCF19" href="#FOOT19"><sup>19</sup></a> To disable filling, see
+<a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">It is a truth universally acknowledged
+that a single man in possession of a
+good fortune must be in want of a wife.
+ &rArr; It is a truth universally acknowledged that a
+ &rArr; single man in possession of a good fortune must
+ &rArr; be in want of a wife.
+</pre></div></div>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Sentences">
+<div class="nav-panel">
+<p>
+Next: <a href="#Hyphenation" accesskey="n" rel="next">Hyphenation</a>, Previous: <a href="#Filling" accesskey="p" rel="prev">Filling</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Sentences-1">5.1.2 Sentences</h4>
+<a class="index-entry-id" id="index-sentences"></a>
+
+<p>A passionate debate has raged for decades among writers of the English
+language over whether more space should appear between adjacent
+sentences than between words within a sentence, and if so, how much, and
+what other circumstances should influence this spacing.<a class="footnote" id="DOCF20" href="#FOOT20"><sup>20</sup></a>
+GNU <code class="code">troff</code> follows the example of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>;
+it attempts to detect the boundaries between sentences, and supplies
+additional inter-sentence space between them.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Hello, world!
+Welcome to groff.
+ &rArr; Hello, world! Welcome to groff.
+</pre></div></div>
+
+<a class="index-entry-id" id="index-end_002dof_002dsentence-characters"></a>
+<a class="index-entry-id" id="index-sentence-space"></a>
+<a class="index-entry-id" id="index-space-between-sentences"></a>
+<a class="index-entry-id" id="index-French-spacing"></a>
+<p>GNU <code class="code">troff</code> flags certain characters (normally &lsquo;<samp class="samp">!</samp>&rsquo;, &lsquo;<samp class="samp">?</samp>&rsquo;,
+and &lsquo;<samp class="samp">.</samp>&rsquo;) as potentially ending a sentence. When GNU <code class="code">troff</code>
+encounters one of these <em class="dfn">end-of-sentence characters</em> at the end of
+an input line, or one of them is followed by two (unescaped) spaces on
+the same input line, it appends an inter-word space followed by an
+inter-sentence space in the output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">R. Harper subscribes to a maxim of P. T. Barnum.
+ &rArr; R. Harper subscribes to a maxim of P. T. Barnum.
+</pre></div></div>
+
+<p>In the above example, inter-sentence space is not added after &lsquo;<samp class="samp">P.</samp>&rsquo;
+or &lsquo;<samp class="samp">T.</samp>&rsquo; because the periods do not occur at the end of an input
+line, nor are they followed by two or more spaces. Let&rsquo;s imagine that
+we&rsquo;ve heard something about defamation from Mr. Harper&rsquo;s attorney,
+recast the sentence, and reflowed it in our text editor.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">I submit that R. Harper subscribes to a maxim of P. T.
+Barnum.
+ &rArr; I submit that R. Harper subscribes to a maxim of
+ &rArr; P. T. Barnum.
+</pre></div></div>
+
+<p>&ldquo;Barnum&rdquo; doesn&rsquo;t begin a sentence! What to do? Let us meet our first
+<em class="dfn">escape sequence</em>, a series of input characters that give
+instructions to GNU <code class="code">troff</code> instead of being used to construct
+output device glyphs.<a class="footnote" id="DOCF21" href="#FOOT21"><sup>21</sup></a> An escape sequence begins with the backslash character <code class="code">\</code>
+by default, an uncommon character in natural language text, and is
+<em class="emph">always</em> followed by at least one other character, hence the term
+&ldquo;sequence&rdquo;.
+</p>
+<a class="index-entry-id" id="index-_005c_0026_002c-at-end-of-sentence"></a>
+<p>The dummy character escape sequence <code class="code">\&amp;</code> can be used after an
+end-of-sentence character to defeat end-of-sentence detection on a
+per-instance basis. We can therefore rewrite our input more
+defensively.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">I submit that R.\&amp; Harper subscribes to a maxim of P.\&amp;
+T.\&amp; Barnum.
+ &rArr; I submit that R. Harper subscribes to a maxim of
+ &rArr; P. T. Barnum.
+</pre></div></div>
+
+<p>Adding text caused our input to wrap; now, we don&rsquo;t need <code class="code">\&amp;</code> after
+&lsquo;<samp class="samp">T.</samp>&rsquo; but we do after &lsquo;<samp class="samp">P.</samp>&rsquo;. Consistent use of the escape
+sequence ensures that potential sentence boundaries are robust to
+editing activities. Further advice along these lines will follow in
+<a class="ref" href="#Input-Conventions">Input Conventions</a>.
+</p>
+<a class="index-entry-id" id="index-end_002dof_002dsentence-transparent-characters"></a>
+<a class="index-entry-id" id="index-characters_002c-end_002dof_002dsentence-transparent"></a>
+<a class="index-entry-id" id="index-dg-glyph_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-dd-glyph_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-rq-glyph_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-cq-glyph_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-_0022_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-_0027_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-_0029_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-_005d_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-_002a_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-special-characters"></a>
+<a class="index-entry-id" id="index-characters_002c-special"></a>
+<p>Normally, the occurrence of a visible non-end-of-sentence character (as
+opposed to a space or tab) immediately after an end-of-sentence
+character cancels detection of the end of a sentence. For example, it
+would be incorrect for GNU <code class="code">troff</code> to infer the end of a sentence
+after the dot in &lsquo;<samp class="samp">3.14159</samp>&rsquo;. However, several characters are
+treated <em class="emph">transparently</em> after the occurrence of an end-of-sentence
+character. That is, GNU <code class="code">troff</code> does not cancel end-of-sentence
+detection when it processes them. This is because such characters are
+often used as footnote markers or to close quotations and
+parentheticals. The default set is &lsquo;<samp class="samp">&quot;</samp>&rsquo;, &lsquo;<samp class="samp">'</samp>&rsquo;, &lsquo;<samp class="samp">)</samp>&rsquo;,
+&lsquo;<samp class="samp">]</samp>&rsquo;, &lsquo;<samp class="samp">*</samp>&rsquo;, <code class="code">\[dg]</code>, <code class="code">\[dd]</code>, <code class="code">\[rq]</code>, and
+<code class="code">\[cq]</code>. The last four are examples of <em class="dfn">special characters</em>,
+escape sequences whose purpose is to obtain glyphs that are not easily
+typed at the keyboard, or which have special meaning to GNU <code class="code">troff</code>
+(like <code class="code">\</code> itself).<a class="footnote" id="DOCF22" href="#FOOT22"><sup>22</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">\[lq]The idea that the poor should have leisure has always
+been shocking to the rich.\[rq]
+(Bertrand Russell, 1935)
+ &rArr; &quot;The idea that the poor should have
+ &rArr; leisure has always been shocking to
+ &rArr; the rich.&quot; (Bertrand Russell, 1935)
+</pre></div></div>
+
+<p>The sets of characters that potentially end sentences or are transparent
+to sentence endings are configurable. See the <code class="code">cflags</code> request in
+<a class="ref" href="#Using-Symbols">Using Symbols</a>. To change the additional inter-sentence space
+amount&mdash;even to remove it entirely&mdash;see <a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Hyphenation">
+<div class="nav-panel">
+<p>
+Next: <a href="#Breaking" accesskey="n" rel="next">Breaking</a>, Previous: <a href="#Sentences" accesskey="p" rel="prev">Sentences</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Hyphenation-1">5.1.3 Hyphenation</h4>
+<a class="index-entry-id" id="index-hyphenation"></a>
+
+<p>When an output line is nearly full, it is uncommon for the next word
+collected from the input to exactly fill it&mdash;typically, there is room
+left over only for part of the next word. The process of splitting a
+word so that it appears partially on one line (with a hyphen to indicate
+to the reader that the word has been broken) with its remainder on the
+next is <em class="dfn">hyphenation</em>. Hyphenation points can be manually
+specified; GNU <code class="code">troff</code> also uses a hyphenation algorithm and
+language-specific pattern files (based on those used in TeX) to
+decide which words can be hyphenated and where.
+</p>
+<p>Hyphenation does not always occur even when the hyphenation rules for a
+word allow it; it can be disabled, and when not disabled there are
+several parameters that can prevent it in certain circumstances.
+See <a class="xref" href="#Manipulating-Hyphenation">Manipulating Hyphenation</a>.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Breaking">
+<div class="nav-panel">
+<p>
+Next: <a href="#Adjustment" accesskey="n" rel="next">Adjustment</a>, Previous: <a href="#Hyphenation" accesskey="p" rel="prev">Hyphenation</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Breaking-1">5.1.4 Breaking</h4>
+<a class="index-entry-id" id="index-break"></a>
+<a class="index-entry-id" id="index-implicit-line-break"></a>
+<a class="index-entry-id" id="index-line-break_002c-output"></a>
+<a class="index-entry-id" id="index-output-line-break"></a>
+
+<p>Once an output line is full, the next word (or remainder of a hyphenated
+one) is placed on a different output line; this is called a <em class="dfn">break</em>.
+In this manual and in <code class="code">roff</code> discussions generally, a &ldquo;break&rdquo; if
+not further qualified always refers to the termination of an output
+line. When the formatter is filling text, it introduces breaks
+automatically to keep output lines from exceeding the configured line
+length. After an automatic break, GNU <code class="code">troff</code> adjusts the line if
+applicable (see below), and then resumes collecting and filling text on
+the next output line.
+</p>
+<p>Sometimes, a line cannot be broken automatically. This usually does
+not happen with natural language text unless the output line length has
+been manipulated to be extremely short, but it can with specialized
+text like program source code. We can use <code class="code">perl</code> at the shell
+prompt to contrive an example of failure to break the line. We also
+employ the <samp class="option">-z</samp> option to suppress normal output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ perl -e 'print &quot;#&quot; x 80, &quot;\n&quot;;' | nroff -z
+ error&rarr; warning: cannot break line
+</pre></div></div>
+
+<p>The remedy for these cases is to tell GNU <code class="code">troff</code> where the line
+may be broken without hyphens. This is done with the non-printing break
+point escape sequence &lsquo;<samp class="samp">\:</samp>&rsquo;; see <a class="ref" href="#Manipulating-Hyphenation">Manipulating Hyphenation</a>.
+</p>
+<a class="index-entry-id" id="index-blank-line"></a>
+<a class="index-entry-id" id="index-empty-line"></a>
+<a class="index-entry-id" id="index-line_002c-blank"></a>
+<a class="index-entry-id" id="index-blank-line-macro-_0028blm_0029"></a>
+<p>What if the document author wants to stop filling lines temporarily, for
+instance to start a new paragraph? There are several solutions. A
+blank input line not only causes a break, but by default it also outputs
+a one-line vertical space (effectively a blank output line). This
+behavior can be modified; see <a class="ref" href="#Blank-Line-Traps">Blank Line Traps</a>. Macro packages
+may discourage or disable the blank line method of paragraphing in favor
+of their own macros.
+</p>
+<a class="index-entry-id" id="index-leading-spaces"></a>
+<a class="index-entry-id" id="index-spaces_002c-leading-and-trailing"></a>
+<a class="index-entry-id" id="index-trailing-spaces-on-text-lines"></a>
+<a class="index-entry-id" id="index-leading-space-macro-_0028lsm_0029"></a>
+<p>A line that begins with one or more spaces causes a break. The spaces
+are output at the beginning of the next line without being
+<em class="emph">adjusted</em> (see below); however, this behavior can be modified
+(see <a class="pxref" href="#Leading-Space-Traps">Leading Space Traps</a>). Again, macro packages may provide other
+methods of producing indented paragraphs. Trailing spaces on text lines
+are discarded.<a class="footnote" id="DOCF23" href="#FOOT23"><sup>23</sup></a>
+</p>
+<p>What if the file ends before enough words have been collected to fill an
+output line? Or the output line is exactly full but not yet broken, and
+there is no more input? GNU <code class="code">troff</code> interprets the end of input as
+a break. Certain requests also cause breaks, implicitly or explicitly.
+This is discussed in <a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Adjustment">
+<div class="nav-panel">
+<p>
+Next: <a href="#Tabs-and-Leaders" accesskey="n" rel="next">Tabs and Leaders</a>, Previous: <a href="#Breaking" accesskey="p" rel="prev">Breaking</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Adjustment-1">5.1.5 Adjustment</h4>
+
+<a class="index-entry-id" id="index-extra-spaces-between-words"></a>
+<p>After GNU <code class="code">troff</code> performs an automatic break, it may then
+<em class="dfn">adjust</em> the line, widening inter-word spaces until the text reaches
+the right margin. Extra spaces between words are preserved. Leading
+and trailing spaces are handled as noted above. Text can be aligned to
+the left or right margin only, or centered; see <a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Tabs-and-Leaders">
+<div class="nav-panel">
+<p>
+Next: <a href="#Input-Conventions" accesskey="n" rel="next">Input Conventions</a>, Previous: <a href="#Adjustment" accesskey="p" rel="prev">Adjustment</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Tabs-and-Leaders-1">5.1.6 Tabs and Leaders</h4>
+
+<a class="index-entry-id" id="index-horizontal-tab-character"></a>
+<a class="index-entry-id" id="index-tab-character"></a>
+<a class="index-entry-id" id="index-character_002c-horizontal-tab"></a>
+<a class="index-entry-id" id="index-leader-character"></a>
+<a class="index-entry-id" id="index-character_002c-leader"></a>
+<a class="index-entry-id" id="index-tab-stops"></a>
+<a class="index-entry-id" id="index-stops_002c-tab"></a>
+<p>GNU <code class="code">troff</code> translates input horizontal tab characters (&ldquo;tabs&rdquo;)
+and <kbd class="key">Control+A</kbd> characters (&ldquo;leaders&rdquo;) into movements to the next
+tab stop. Tabs simply move to the next tab stop; leaders place enough
+periods to fill the space. Tab stops are by default located every half
+inch measured from the drawing position corresponding to the beginning
+of the input line; see <a class="ref" href="#Page-Geometry">Page Geometry</a>. Tabs and leaders do not
+cause breaks and therefore do not interrupt filling. Below, we use
+arrows &rarr; and bullets &bull; to indicate input tabs and
+leaders, respectively.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">1
+&rarr; 2 &rarr; 3 &bull; 4
+&rarr; &bull; 5
+&rArr; 1 2 3.......4 ........5
+</pre></div></div>
+
+<p>Tabs and leaders lend themselves to table construction.<a class="footnote" id="DOCF24" href="#FOOT24"><sup>24</sup></a> The tab and leader glyphs can be
+configured, and further facilities for sophisticated table composition
+are available; see <a class="ref" href="#Tabs-and-Fields">Tabs and Fields</a>. There are many details to
+track when using such low-level features, so most users turn to the
+<cite class="cite">tbl<span class="r">(1)</span></cite> preprocessor to lay out tables.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Requests-and-Macros">
+<div class="nav-panel">
+<p>
+Next: <a href="#Macro-Packages" accesskey="n" rel="next">Macro Packages</a>, Previous: <a href="#Tabs-and-Leaders" accesskey="p" rel="prev">Tabs and Leaders</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Requests-and-Macros-1">5.1.7 Requests and Macros</h4>
+
+<p>We have now encountered almost all of the syntax there is in the
+<code class="code">roff</code> language, with an exception already noted in passing.
+<a class="index-entry-id" id="index-request"></a>
+<a class="index-entry-id" id="index-control-character-_0028_002e_0029"></a>
+<a class="index-entry-id" id="index-character_002c-control-_0028_002e_0029"></a>
+<a class="index-entry-id" id="index-no_002dbreak-control-character-_0028_0027_0029"></a>
+<a class="index-entry-id" id="index-character_002c-no_002dbreak-control-_0028_0027_0029"></a>
+<a class="index-entry-id" id="index-control-character_002c-no_002dbreak-_0028_0027_0029"></a>
+A <em class="dfn">request</em> is an instruction to the formatter that occurs after a
+<em class="dfn">control character</em>, which is recognized at the beginning of an
+input line. The regular control character is a dot (<code class="code">.</code>). Its
+counterpart, the <em class="dfn">no-break control character</em>, a neutral apostrophe
+(<code class="code">'</code>), suppresses the break that is implied by some requests.
+These characters were chosen because it is uncommon for lines of text in
+natural languages to begin with them.
+<a class="index-entry-id" id="index-dummy-character-_0028_005c_0026_0029_002c-as-control-character-suppressor"></a>
+<a class="index-entry-id" id="index-character_002c-dummy-_0028_005c_0026_0029_002c-as-control-character-suppressor"></a>
+If you require a formatted period or apostrophe (closing single
+quotation mark) where GNU <code class="code">troff</code> is expecting a control character,
+prefix the dot or neutral apostrophe with the dummy character escape
+sequence, &lsquo;<samp class="samp">\&amp;</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-control-line"></a>
+<p>An input line beginning with a control character is called a
+<em class="dfn">control line</em>.
+<a class="index-entry-id" id="index-text-line"></a>
+Every line of input that is not a control line is a <em class="dfn">text
+line</em>.<a class="footnote" id="DOCF25" href="#FOOT25"><sup>25</sup></a>
+</p>
+<a class="index-entry-id" id="index-argument"></a>
+<p>Requests often take <em class="dfn">arguments</em>, words (separated from the request
+name and each other by spaces) that specify details of the action GNU
+<code class="code">troff</code> is expected to perform. If a request is meaningless
+without arguments, it is typically ignored.
+</p>
+<p>GNU <code class="code">troff</code>&rsquo;s requests and escape sequences comprise the control
+language of the formatter. Of key importance are the requests that
+define macros. Macros are invoked like requests, enabling the request
+repertoire to be extended or overridden.<a class="footnote" id="DOCF26" href="#FOOT26"><sup>26</sup></a>
+</p>
+<a class="index-entry-id" id="index-macro"></a>
+<a class="index-entry-id" id="index-calling-a-macro"></a>
+<a class="index-entry-id" id="index-interpolation"></a>
+<p>A <em class="dfn">macro</em> can be thought of as an abbreviation you can define for a
+collection of control and text lines. When the macro is <em class="dfn">called</em> by
+giving its name after a control character, it is replaced with what it
+stands for. The process of textual replacement is known as
+<em class="dfn">interpolation</em>.<a class="footnote" id="DOCF27" href="#FOOT27"><sup>27</sup></a> Interpolations are handled as soon as they are
+recognized, and once performed, a <code class="code">roff</code> formatter scans the
+replacement for further requests, macro calls, and escape sequences.
+</p>
+<p>In <code class="code">roff</code> systems, the <code class="code">de</code> request defines a
+macro.<a class="footnote" id="DOCF28" href="#FOOT28"><sup>28</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de DATE
+2020-11-14
+..
+</pre></div></div>
+
+<p>The foregoing input produces no output by itself; all we have done is
+store some information. Observe the pair of dots that ends the macro
+definition. This is a default; you can specify your own terminator for
+the macro definition as the second argument to the <code class="code">de</code> request.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de NAME ENDNAME
+Heywood Jabuzzoff
+.ENDNAME
+</pre></div></div>
+
+<p>In fact, the ending marker is itself the name of a macro to be
+called, or a request to be invoked, if it is defined at the time its
+control line is read.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de END
+Big Rip
+..
+.de START END
+Big Bang
+.END
+.START
+ &rArr; Big Rip Big Bang
+</pre></div></div>
+
+<p>In the foregoing example, &ldquo;Big Rip&rdquo; printed before &ldquo;Big Bang&rdquo;
+because its macro was <em class="emph">called</em> first. Consider what would happen
+if we dropped <code class="code">END</code> from the &lsquo;<samp class="samp">.de START</samp>&rsquo; line and added
+<code class="code">..</code> after <code class="code">.END</code>. Would the order change?
+</p>
+<p>Let us consider a more elaborate example.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de DATE
+2020-10-05
+..
+.
+.de BOSS
+D.\&amp; Kruger,
+J.\&amp; Peterman
+..
+.
+.de NOTICE
+Approved:
+.DATE
+by
+.BOSS
+..
+.
+Insert tedious regulatory compliance paragraph here.
+
+.NOTICE
+
+Insert tedious liability disclaimer paragraph here.
+
+.NOTICE
+ &rArr; Insert tedious regulatory compliance paragraph here.
+ &rArr;
+ &rArr; Approved: 2020-10-05 by D. Kruger, J. Peterman
+ &rArr;
+ &rArr; Insert tedious liability disclaimer paragraph here.
+ &rArr;
+ &rArr; Approved: 2020-10-05 by D. Kruger, J. Peterman
+</pre></div></div>
+
+<p>The above document started with a series of control lines. Three macros
+were defined, with a <code class="code">de</code> request declaring each macro&rsquo;s name, and
+the &ldquo;body&rdquo; of the macro starting on the next line and continuing until
+a line with two dots &lsquo;<samp class="samp"><code class="code">..</code></samp>&rsquo; marked its end. The text proper
+began only after the macros were defined; this is a common pattern.
+Only the <code class="code">NOTICE</code> macro was called &ldquo;directly&rdquo; by the document;
+<code class="code">DATE</code> and <code class="code">BOSS</code> were called only by <code class="code">NOTICE</code> itself.
+Escape sequences were used in <code class="code">BOSS</code>, two levels of macro
+interpolation deep.
+</p>
+<p>The advantage in typing and maintenance economy may not be obvious from
+such a short example, but imagine a much longer document with dozens of
+such paragraphs, each requiring a notice of managerial approval.
+Consider what must happen if you are in charge of generating a new
+version of such a document with a different date, for a different boss.
+With well-chosen macros, you only have to change each datum in one
+place.
+</p>
+<p>In practice, we would probably use strings (see <a class="pxref" href="#Strings">Strings</a>) instead of
+macros for such simple interpolations; what is important here is to
+glimpse the potential of macros and the power of recursive
+interpolation.
+</p>
+<p>We could have defined <code class="code">DATE</code> and <code class="code">BOSS</code> in the opposite order;
+perhaps less obviously, we could also have defined them <em class="emph">after</em>
+<code class="code">NOTICE</code>. &ldquo;Forward references&rdquo; like this are acceptable because
+the body of a macro definition is not (completely) interpreted, but
+stored instead (see <a class="pxref" href="#Copy-Mode">Copy Mode</a>). While a macro is being defined (or
+appended to), requests are not interpreted and macros not interpolated,
+whereas some commonly used escape sequences <em class="emph">are</em> interpreted.
+<code class="code">roff</code> systems also support recursive macro calls, as long as you
+have a way to break the recursion (see <a class="pxref" href="#Conditionals-and-Loops">Conditionals and Loops</a>).
+Maintainable <code class="code">roff</code> documents tend to arrange macro definitions to
+minimize forward references.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Macro-Packages">
+<div class="nav-panel">
+<p>
+Next: <a href="#Input-Encodings" accesskey="n" rel="next">Input Encodings</a>, Previous: <a href="#Requests-and-Macros" accesskey="p" rel="prev">Requests and Macros</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Macro-Packages-3">5.1.8 Macro Packages</h4>
+<a class="index-entry-id" id="index-macro-package"></a>
+<a class="index-entry-id" id="index-package_002c-macro"></a>
+
+<p>Macro definitions can be collected into <em class="dfn">macro files</em>, <code class="code">roff</code>
+input files designed to produce no output themselves but instead ease
+the preparation of other <code class="code">roff</code> documents. There is no syntactical
+difference between a macro file and any other <code class="code">roff</code> document; only
+its purpose distinguishes it. When a macro file is installed at a
+standard location and suitable for use by a general audience, it is
+often termed a <em class="dfn">macro package</em>.<a class="footnote" id="DOCF29" href="#FOOT29"><sup>29</sup></a> Macro packages can be
+loaded by supplying the <samp class="option">-m</samp> option to GNU <code class="command">troff</code> or a
+<code class="code">groff</code> front end. Alternatively, a document requiring a macro
+package can load it with the <code class="code">mso</code> (&ldquo;macro source&rdquo;) request.
+</p>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Input-Encodings">
+<div class="nav-panel">
+<p>
+Next: <a href="#Input-Conventions" accesskey="n" rel="next">Input Conventions</a>, Previous: <a href="#Macro-Packages" accesskey="p" rel="prev">Macro Packages</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Input-Encodings-1">5.1.9 Input Encodings</h4>
+
+<p>The <code class="command">groff</code> command&rsquo;s <samp class="option">-k</samp> option calls the
+<code class="command">preconv</code> preprocessor to perform input character encoding
+conversions. Input to the GNU <code class="code">troff</code> formatter itself, on the
+other hand, must be in one of two encodings it can recognize.
+</p>
+<dl class="table">
+<dt id='index-encoding_002c-input_002c-EBCDIC'><span><code class="code">cp1047</code><a class="copiable-link" href='#index-encoding_002c-input_002c-EBCDIC'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EBCDIC_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-input-encoding_002c-EBCDIC"></a>
+<a class="index-entry-id" id="index-encoding_002c-input_002c-code-page-1047"></a>
+<a class="index-entry-id" id="index-code-page-1047_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-input-encoding_002c-code-page-1047"></a>
+<a class="index-entry-id" id="index-IBM-code-page-1047-input-encoding"></a>
+<a class="index-entry-id" id="index-cp1047_002etmac"></a>
+<p>The code page 1047 input encoding works only on <abbr class="acronym">EBCDIC</abbr>
+platforms (and conversely, the other input encodings don&rsquo;t work with
+<abbr class="acronym">EBCDIC</abbr>); the file <samp class="file">cp1047.tmac</samp> is loaded at startup.
+</p>
+</dd>
+<dt id='index-encoding_002c-input_002c-Latin_002d1-_0028ISO-8859_002d1_0029'><span><code class="code">latin1</code><a class="copiable-link" href='#index-encoding_002c-input_002c-Latin_002d1-_0028ISO-8859_002d1_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Latin_002d1-_0028ISO-8859_002d1_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-ISO-8859_002d1-_0028Latin_002d1_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-input-encoding_002c-Latin_002d1-_0028ISO-8859_002d1_0029"></a>
+<a class="index-entry-id" id="index-latin1_002etmac"></a>
+<p>ISO <span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->, an encoding for Western European languages, is the
+default input encoding on non-<abbr class="acronym">EBCDIC</abbr> platforms; the file
+<samp class="file">latin1.tmac</samp> is loaded at startup.
+</p></dd>
+</dl>
+
+<p>Any document that is encoded in ISO 646:1991 (a descendant of USAS
+<span class="w-nolinebreak-text">X3.4-1968</span><!-- /@w --> or &ldquo;US-ASCII&rdquo;), or, equivalently, uses only code points
+from the &ldquo;C0 Controls&rdquo; and &ldquo;Basic Latin&rdquo; parts of the Unicode
+character set is also a valid ISO <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> document; the standards
+are interchangeable in their first 128 code points.<a class="footnote" id="DOCF30" href="#FOOT30"><sup>30</sup></a>
+</p>
+<p>Other encodings are supported by means of macro packages.
+</p>
+<dl class="table">
+<dt id='index-encoding_002c-input_002c-Latin_002d2-_0028ISO-8859_002d2_0029'><span><code class="code">latin2</code><a class="copiable-link" href='#index-encoding_002c-input_002c-Latin_002d2-_0028ISO-8859_002d2_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Latin_002d2-_0028ISO-8859_002d2_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-ISO-8859_002d2-_0028Latin_002d2_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-input-encoding_002c-Latin_002d2-_0028ISO-8859_002d2_0029"></a>
+<a class="index-entry-id" id="index-latin2_002etmac"></a>
+<p>To use ISO <span class="w-nolinebreak-text">Latin-2</span><!-- /@w -->, an encoding for Central and Eastern European
+languages, invoke &lsquo;<samp class="samp">.mso&nbsp;latin2.tmac</samp>&rsquo;<!-- /@w --> at the beginning of your
+document or supply &lsquo;<samp class="samp">-mlatin2</samp>&rsquo; as a command-line argument to
+<code class="code">groff</code>.
+</p>
+</dd>
+<dt id='index-encoding_002c-input_002c-Latin_002d5-_0028ISO-8859_002d9_0029'><span><code class="code">latin5</code><a class="copiable-link" href='#index-encoding_002c-input_002c-Latin_002d5-_0028ISO-8859_002d9_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Latin_002d5-_0028ISO-8859_002d9_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-ISO-8859_002d9-_0028Latin_002d5_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-input-encoding_002c-Latin_002d5-_0028ISO-8859_002d9_0029"></a>
+<a class="index-entry-id" id="index-latin5_002etmac"></a>
+<p>To use ISO <span class="w-nolinebreak-text">Latin-5</span><!-- /@w -->, an encoding for the Turkish language, invoke
+&lsquo;<samp class="samp">.mso&nbsp;latin5.tmac</samp>&rsquo;<!-- /@w --> at the beginning of your document or
+supply &lsquo;<samp class="samp">-mlatin5</samp>&rsquo; as a command-line argument to <code class="code">groff</code>.
+</p>
+</dd>
+<dt id='index-encoding_002c-input_002c-Latin_002d9-_0028ISO-8859_002d15_0029'><span><code class="code">latin9</code><a class="copiable-link" href='#index-encoding_002c-input_002c-Latin_002d9-_0028ISO-8859_002d15_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Latin_002d9-_0028ISO-8859_002d15_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-ISO-8859_002d15-_0028Latin_002d9_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-input-encoding_002c-Latin_002d9-_0028ISO-8859_002d15_0029"></a>
+<a class="index-entry-id" id="index-latin9_002etmac"></a>
+<p>ISO <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> succeeds <span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->; it includes a Euro sign and better
+glyph coverage for French. To use this encoding, invoke &lsquo;<samp class="samp">.mso&nbsp;latin9.tmac</samp>&rsquo;<!-- /@w --> at the beginning of your document or supply
+&lsquo;<samp class="samp">-mlatin9</samp>&rsquo; as a command-line argument to <code class="code">groff</code>.
+</p></dd>
+</dl>
+
+<p>Some characters from an input encoding may not be available with a
+particular output driver, or their glyphs may not have representation in
+the font used. For terminal devices, fallbacks are defined, like
+&lsquo;<samp class="samp">EUR</samp>&rsquo; for the Euro sign and &lsquo;<samp class="samp">(C)</samp>&rsquo; for the copyright sign. For
+typesetter devices, you may need to &ldquo;mount&rdquo; fonts that support glyphs
+required by the document. See <a class="xref" href="#Font-Positions">Font Positions</a>.
+</p>
+<a class="index-entry-id" id="index-freeeuro_002epfa"></a>
+<a class="index-entry-id" id="index-ec_002etmac"></a>
+<p>Because a Euro glyph was not historically defined in PostScript fonts,
+<code class="code">groff</code> comes with a font called <samp class="file">freeeuro.pfa</samp> that provides
+the Euro in several styles. Standard PostScript fonts contain the
+glyphs from <span class="w-nolinebreak-text">Latin-5</span><!-- /@w --> and <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> that <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> lacks, so these
+encodings are supported for the <samp class="option">ps</samp> and <samp class="option">pdf</samp> output
+devices as <code class="code">groff</code> ships, while <span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> is not.
+</p>
+<p>Unicode supports characters from all other input encodings; the
+<samp class="option">utf8</samp> output driver for terminals therefore does as well. The
+DVI output driver supports the <span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> and <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> encodings if
+the command-line option <samp class="option">-mec</samp> is used as well. <a class="footnote" id="DOCF31" href="#FOOT31"><sup>31</sup></a>
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Input-Conventions">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Input-Encodings" accesskey="p" rel="prev">Input Encodings</a>, Up: <a href="#Text" accesskey="u" rel="up">Text</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Input-Conventions-1">5.1.10 Input Conventions</h4>
+<a class="index-entry-id" id="index-input-conventions"></a>
+<a class="index-entry-id" id="index-conventions-for-input"></a>
+
+<p>Since GNU <code class="code">troff</code> fills text automatically, it is common practice
+in the <code class="code">roff</code> language to avoid visual composition of text in input
+files: the esthetic appeal of the formatted output is what matters.
+Therefore, <code class="code">roff</code> input should be arranged such that it is easy for
+authors and maintainers to compose and develop the document, understand
+the syntax of <code class="code">roff</code> requests, macro calls, and preprocessor
+languages used, and predict the behavior of the formatter. Several
+traditions have accrued in service of these goals.
+</p>
+<ul class="itemize mark-bullet">
+<li>Follow sentence endings in the input with newlines to ease their
+recognition (see <a class="pxref" href="#Sentences">Sentences</a>). It is frequently convenient to end
+text lines after colons and semicolons as well, as these typically
+precede independent clauses. Consider doing so after commas; they often
+occur in lists that become easy to scan when itemized by line, or
+constitute supplements to the sentence that are added, deleted, or
+updated to clarify it. Parenthetical and quoted phrases are also good
+candidates for placement on text lines by themselves.
+
+</li><li>Set your text editor&rsquo;s line length to 72 characters or
+fewer.<a class="footnote" id="DOCF32" href="#FOOT32"><sup>32</sup></a>
+This limit, combined with the previous item of advice, makes it less
+common that an input line will wrap in your text editor, and thus will
+help you perceive excessively long constructions in your text. Recall
+that natural languages originate in speech, not writing, and that
+punctuation is correlated with pauses for breathing and changes in
+prosody.
+
+</li><li>Use <code class="code">\&amp;</code> after &lsquo;<samp class="samp">!</samp>&rsquo;, &lsquo;<samp class="samp">?</samp>&rsquo;, and &lsquo;<samp class="samp">.</samp>&rsquo; if they are
+followed by space, tab, or newline characters and don&rsquo;t end a sentence.
+
+</li><li>In filled text lines, use <code class="code">\&amp;</code> before &lsquo;<samp class="samp">.</samp>&rsquo; and &lsquo;<samp class="samp">'</samp>&rsquo; if they
+are preceded by space, so that reflowing the input doesn&rsquo;t turn them
+into control lines.
+
+</li><li>Do not use spaces to perform indentation or align columns of a table.
+Leading spaces are reliable when text is not being filled.
+
+</li><li>Comment your document. It is never too soon to apply comments to
+record information of use to future document maintainers (including your
+future self). We thus introduce another escape sequence, <code class="code">\&quot;</code>,
+which causes GNU <code class="code">troff</code> to ignore the remainder of the input line.
+
+</li><li>Use the empty request&mdash;a control character followed immediately by a
+newline&mdash;to visually manage separation of material in input files.
+Many of the <code class="code">groff</code> project&rsquo;s own documents use an empty request
+between sentences, after macro definitions, and where a break is
+expected, and two empty requests between paragraphs or other requests or
+macro calls that will introduce vertical space into the document.
+
+<p>You can combine the empty request with the comment escape sequence to
+include whole-line comments in your document, and even &ldquo;comment out&rdquo;
+sections of it.
+</p></li></ul>
+
+<p>We conclude this section with an example sufficiently long to illustrate
+most of the above suggestions in practice. For the purpose of fitting
+the example between the margins of this manual with the font used for
+its typeset version, we have shortened the input line length to 56
+columns. As before, an arrow &rarr; indicates a tab character.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.\&quot; nroff this_file.roff | less
+.\&quot; groff -T ps this_file.roff &gt; this_file.ps
+&rarr;The theory of relativity is intimately connected with
+the theory of space and time.
+.
+I shall therefore begin with a brief investigation of
+the origin of our ideas of space and time,
+although in doing so I know that I introduce a
+controversial subject. \&quot; remainder of paragraph elided
+.
+.
+
+&rarr;The experiences of an individual appear to us arranged
+in a series of events;
+in this series the single events which we remember
+appear to be ordered according to the criterion of
+\[lq]earlier\[rq] and \[lq]later\[rq], \&quot; punct swapped
+which cannot be analysed further.
+.
+There exists,
+therefore,
+for the individual,
+an I-time,
+or subjective time.
+.
+This itself is not measurable.
+.
+I can,
+indeed,
+associate numbers with the events,
+in such a way that the greater number is associated with
+the later event than with an earlier one;
+but the nature of this association may be quite
+arbitrary.
+.
+This association I can define by means of a clock by
+comparing the order of events furnished by the clock
+with the order of a given series of events.
+.
+We understand by a clock something which provides a
+series of events which can be counted,
+and which has other properties of which we shall speak
+later.
+.\&quot; Albert Einstein, _The Meaning of Relativity_, 1922
+</pre></div>
+</td></tr></table>
+
+<hr>
+</div>
+</div>
+<div class="section-level-extent" id="Page-Geometry">
+<div class="nav-panel">
+<p>
+Next: <a href="#Measurements" accesskey="n" rel="next">Measurements</a>, Previous: <a href="#Text" accesskey="p" rel="prev">Text</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Page-Geometry-1">5.2 Page Geometry</h3>
+<a class="index-entry-id" id="index-page_002c-geometry-of"></a>
+<a class="index-entry-id" id="index-geometry_002c-page"></a>
+
+<p><code class="code">roff</code> systems format text under certain assumptions about the size
+of the output medium, or page. For the formatter to correctly break a
+line it is filling, it must know the line length, which it derives from
+the page width (see <a class="pxref" href="#Line-Layout">Line Layout</a>). For it to decide whether to write
+an output line to the current page or wait until the next one, it must
+know the page length (see <a class="pxref" href="#Page-Layout">Page Layout</a>).
+</p>
+<a class="index-entry-id" id="index-device-resolution"></a>
+<a class="index-entry-id" id="index-resolution_002c-device"></a>
+<a class="index-entry-id" id="index-basic-units"></a>
+<a class="index-entry-id" id="index-units_002c-basic"></a>
+<a class="index-entry-id" id="index-machine-units"></a>
+<a class="index-entry-id" id="index-units_002c-machine"></a>
+<p>A device&rsquo;s <em class="dfn">resolution</em> converts practical units like inches or
+centimeters to <em class="dfn">basic units</em>, a convenient length measure for the
+output device or file format. The formatter and output driver use basic
+units to reckon page measurements. The device description file defines
+its resolution and page dimensions (see <a class="pxref" href="#DESC-File-Format"><samp class="file">DESC</samp> File Format</a>).
+</p>
+<a class="index-entry-id" id="index-page"></a>
+<p>A <em class="dfn">page</em> is a two-dimensional structure upon which a <code class="code">roff</code>
+system imposes a rectangular coordinate system with its upper left
+corner as the origin. Coordinate values are in basic units and increase
+down and to the right. Useful ones are therefore always positive and
+within numeric ranges corresponding to the page boundaries.
+</p>
+<a class="index-entry-id" id="index-drawing-position"></a>
+<a class="index-entry-id" id="index-position_002c-drawing"></a>
+<p>While the formatter (and, later, output driver) is processing a page, it
+keeps track of its <em class="dfn">drawing position</em>, which is the location at
+which the next glyph will be written, from which the next motion will be
+measured, or where a geometric object will commence rendering.
+<a class="index-entry-id" id="index-text-baseline"></a>
+<a class="index-entry-id" id="index-baseline_002c-text"></a>
+Notionally, glyphs are drawn from the text baseline upward and to the
+right.<a class="footnote" id="DOCF33" href="#FOOT33"><sup>33</sup></a> The <em class="dfn">text baseline</em> is a (usually invisible) line upon
+which the glyphs of a typeface are aligned. A glyph therefore
+&ldquo;starts&rdquo; at its bottom-left corner. If drawn at the origin, a typical
+letter glyph would lie partially or wholly off the page, depending on
+whether, like &ldquo;g&rdquo;, it features a descender below the baseline.
+</p>
+<a class="index-entry-id" id="index-page-offset"></a>
+<a class="index-entry-id" id="index-offset_002c-page"></a>
+<p>Such a situation is nearly always undesirable. It is furthermore
+conventional not to write or draw at the extreme edges of the page.
+Therefore the initial drawing position of a <code class="code">roff</code> formatter is not
+at the origin, but below and to the right of it. This rightward shift
+from the left edge is known as the <em class="dfn">page
+offset</em>.<a class="footnote" id="DOCF34" href="#FOOT34"><sup>34</sup></a> The downward shift leaves room for a text output
+line.
+</p>
+<p>Text is arranged on a one-dimensional lattice of text baselines from the
+top to the bottom of the page.
+<a class="index-entry-id" id="index-vertical-spacing"></a>
+<a class="index-entry-id" id="index-spacing_002c-vertical"></a>
+<a class="index-entry-id" id="index-vee"></a>
+<em class="dfn">Vertical spacing</em> is the distance between adjacent text baselines.
+Typographic tradition sets this quantity to 120% of the type size. The
+initial drawing position is one unit of vertical spacing below the page
+top. Typographers term this unit a <i class="slanted">vee</i>.
+</p>
+<a class="index-entry-id" id="index-page-break"></a>
+<a class="index-entry-id" id="index-break_002c-page"></a>
+<a class="index-entry-id" id="index-page-ejection"></a>
+<a class="index-entry-id" id="index-ejection_002c-page"></a>
+<p>Vertical spacing has an impact on page-breaking decisions. Generally,
+when a break occurs, the formatter moves the drawing position to the
+next text baseline automatically. If the formatter were already writing
+to the last line that would fit on the page, advancing by one vee would
+place the next text baseline off the page. Rather than let that happen,
+<code class="code">roff</code> formatters instruct the output driver to eject the page,
+start a new one, and again set the drawing position to one vee below the
+page top; this is a <em class="dfn">page break</em>.
+</p>
+<p>When the last line of input text corresponds to the last output line
+that fits on the page, the break caused by the end of input will also
+break the page, producing a useless blank one. Macro packages keep
+users from having to confront this difficulty by setting &ldquo;traps&rdquo;
+(see <a class="pxref" href="#Traps">Traps</a>); moreover, all but the simplest page layouts tend to
+have headers and footers, or at least bear vertical margins larger than
+one vee.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Measurements">
+<div class="nav-panel">
+<p>
+Next: <a href="#Numeric-Expressions" accesskey="n" rel="next">Numeric Expressions</a>, Previous: <a href="#Text" accesskey="p" rel="prev">Text</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Measurements-1">5.3 Measurements</h3>
+<a class="index-entry-id" id="index-measurements"></a>
+<a class="index-entry-id" id="index-scaling-indicator"></a>
+<a class="index-entry-id" id="index-indicator_002c-scaling"></a>
+
+<a class="index-entry-id" id="index-units-of-measurement"></a>
+<a class="index-entry-id" id="index-measurement-units"></a>
+<p>The formatter sometimes requires the input of numeric parameters to
+specify measurements. These are specified as integers or decimal
+fractions with an optional <em class="dfn">scaling unit</em> suffixed. A scaling unit
+is a letter that immediately follows the last digit of a number. Digits
+after the decimal point are optional. Measurement expressions include
+&lsquo;<samp class="samp">10.5p</samp>&rsquo;, &lsquo;<samp class="samp">11i</samp>&rsquo;, and &lsquo;<samp class="samp">3.c</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-basic-units_002c-conversion-to"></a>
+<a class="index-entry-id" id="index-units_002c-basic_002c-conversion-to"></a>
+<a class="index-entry-id" id="index-conversion-to-basic-units"></a>
+<p>Measurements are scaled by the scaling unit and stored internally (with
+any fractional part discarded) in basic units.
+<a class="index-entry-id" id="index-device-resolution_002c-obtaining-in-the-formatter"></a>
+<a class="index-entry-id" id="index-resolution_002c-device_002c-obtaining-in-the-formatter"></a>
+The device resolution can therefore be obtained by storing a value of
+&lsquo;<samp class="samp">1i</samp>&rsquo; to a register. The only constraint on the basic unit is that
+it is at least as small as any other unit.
+</p>
+<dl class="table">
+<dd><a class="index-entry-id" id="index-basic-scaling-unit-_0028u_0029"></a>
+<a class="index-entry-id" id="index-u-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-u"></a>
+<a class="index-entry-id" id="index-scaling-unit-u"></a>
+</dd>
+<dt><code class="code">u</code></dt>
+<dd><p>Basic unit.
+</p>
+</dd>
+<dt id='index-inch-scaling-unit-_0028i_0029'><span><code class="code">i</code><a class="copiable-link" href='#index-inch-scaling-unit-_0028i_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-i-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-i"></a>
+<a class="index-entry-id" id="index-scaling-unit-i"></a>
+<p>Inch; defined as 2.54&nbsp;centimeters.
+</p>
+</dd>
+<dt id='index-centimeter-scaling-unit-_0028c_0029'><span><code class="code">c</code><a class="copiable-link" href='#index-centimeter-scaling-unit-_0028c_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-c-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-c"></a>
+<a class="index-entry-id" id="index-scaling-unit-c"></a>
+<p>Centimeter; a centimeter is about 0.3937&nbsp;inches.
+</p>
+</dd>
+<dt id='index-point-scaling-unit-_0028p_0029'><span><code class="code">p</code><a class="copiable-link" href='#index-point-scaling-unit-_0028p_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-p-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-p"></a>
+<a class="index-entry-id" id="index-scaling-unit-p"></a>
+<p>Point; a typesetter&rsquo;s unit used for measuring type size.
+There are 72&nbsp;points to an inch.
+</p>
+</dd>
+<dt id='index-pica-scaling-unit-_0028P_0029'><span><code class="code">P</code><a class="copiable-link" href='#index-pica-scaling-unit-_0028P_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-P-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-P"></a>
+<a class="index-entry-id" id="index-scaling-unit-P"></a>
+<p>Pica; another typesetter&rsquo;s unit. There are 6&nbsp;picas to an inch and
+12&nbsp;points to a pica.
+</p>
+</dd>
+<dt><code class="code">s</code></dt>
+<dt><code class="code">z</code></dt>
+<dd><p>See <a class="xref" href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a>, for a discussion of these units.
+</p>
+</dd>
+<dt><code class="code">f</code></dt>
+<dd><p>GNU <code class="code">troff</code> defines this unit to scale decimal fractions in the
+interval [0, 1] to 16-bit unsigned integers. It multiplies a quantity
+by 65,536. See <a class="xref" href="#Colors">Colors</a>, for usage.
+</p></dd>
+</dl>
+
+<p>The magnitudes of other scaling units depend on the text formatting
+parameters in effect. These are useful when specifying measurements
+that need to scale with the typeface or vertical spacing.
+</p>
+<dl class="table">
+<dt id='index-em-scaling-unit-_0028m_0029'><span><code class="code">m</code><a class="copiable-link" href='#index-em-scaling-unit-_0028m_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-m-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-m"></a>
+<a class="index-entry-id" id="index-scaling-unit-m"></a>
+<p>Em; an em is equal to the current type size in points. It is named thus
+because it is approximately the width of the letter&nbsp;&lsquo;<samp class="samp">M</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-en-scaling-unit-_0028n_0029'><span><code class="code">n</code><a class="copiable-link" href='#index-en-scaling-unit-_0028n_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-n-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-n"></a>
+<a class="index-entry-id" id="index-scaling-unit-n"></a>
+<p>En; an en is one-half em.
+</p>
+</dd>
+<dt id='index-vertical-space-unit-_0028v_0029'><span><code class="code">v</code><a class="copiable-link" href='#index-vertical-space-unit-_0028v_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-space_002c-vertical_002c-unit-_0028v_0029"></a>
+<a class="index-entry-id" id="index-vee-scaling-unit-_0028v_0029"></a>
+<a class="index-entry-id" id="index-v-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-v"></a>
+<a class="index-entry-id" id="index-scaling-unit-v"></a>
+<p>Vee; recall <a class="ref" href="#Page-Geometry">Page Geometry</a>.
+</p>
+</dd>
+<dt id='index-M-scaling-unit'><span><code class="code">M</code><a class="copiable-link" href='#index-M-scaling-unit'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-unit_002c-scaling_002c-M"></a>
+<a class="index-entry-id" id="index-scaling-unit-M"></a>
+<p>Hundredth of an em.
+</p></dd>
+</dl>
+
+
+
+<ul class="mini-toc">
+<li><a href="#Motion-Quanta" accesskey="1">Motion Quanta</a></li>
+<li><a href="#Default-Units" accesskey="2">Default Units</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Motion-Quanta">
+<div class="nav-panel">
+<p>
+Next: <a href="#Default-Units" accesskey="n" rel="next">Default Units</a>, Previous: <a href="#Measurements" accesskey="p" rel="prev">Measurements</a>, Up: <a href="#Measurements" accesskey="u" rel="up">Measurements</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Motion-Quanta-1">5.3.1 Motion Quanta</h4>
+<a class="index-entry-id" id="index-motion-quanta"></a>
+<a class="index-entry-id" id="index-quanta_002c-motion"></a>
+
+<p>An output device&rsquo;s basic unit <code class="code">u</code> is not necessarily its smallest
+addressable length; <code class="code">u</code> can be smaller to avoid problems with
+integer roundoff. The minimum distances that a device can work with in
+the horizontal and vertical directions are termed its <em class="dfn">motion
+quanta</em>. Measurements are rounded to applicable motion quanta.
+Half-quantum fractions round toward zero.
+</p>
+<a class="index-entry-id" id="index-horizontal-motion-quantum-register-_0028_002eH_0029"></a>
+<a class="index-entry-id" id="index-motion-quantum_002c-horizontal_002c-register-_0028_002eH_0029"></a>
+<a class="index-entry-id" id="index-horizontal-resolution-register-_0028_002eH_0029"></a>
+<a class="index-entry-id" id="index-resolution_002c-horizontal_002c-register-_0028_002eH_0029"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002eH_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.H]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eH_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eH"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eV_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.V]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eV_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eV"></a>
+<p>These read-only registers interpolate the horizontal and vertical motion
+quanta, respectively, of the output device in basic units.
+</p></dd></dl>
+
+<p>For example, we might draw short baseline rules on a terminal device as
+follows. See <a class="xref" href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tm \n[.H]
+ error&rarr; 24
+.nf
+\l'36u' 36u
+\l'37u' 37u
+ &rArr; _ 36u
+ &rArr; __ 37u
+</pre></div></div>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Default-Units">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Motion-Quanta" accesskey="p" rel="prev">Motion Quanta</a>, Up: <a href="#Measurements" accesskey="u" rel="up">Measurements</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Default-Units-1">5.3.2 Default Units</h4>
+<a class="index-entry-id" id="index-default-units"></a>
+<a class="index-entry-id" id="index-units_002c-default"></a>
+
+<p>A general-purpose register (one created or updated with the <code class="code">nr</code>
+request; see see <a class="pxref" href="#Registers">Registers</a>) is implicitly dimensionless, or reckoned
+in basic units if interpreted in a measurement context. But it is
+convenient for many requests and escape sequences to infer a scaling
+unit for an argument if none is specified. An explicit scaling unit
+(not after a closing parenthesis) can override an undesirable default.
+Effectively, the default unit is suffixed to the expression if a scaling
+unit is not already present. GNU <code class="code">troff</code>&rsquo;s use of integer
+arithmetic should also be kept in mind (see <a class="pxref" href="#Numeric-Expressions">Numeric Expressions</a>).
+</p>
+<p>The <code class="code">ll</code> request interprets its argument in ems by default.
+Consider several attempts to set a line length of 3.5&nbsp;inches when
+the type size is 10&nbsp;points on a terminal device with a resolution
+of 240 basic units and horizontal motion quantum of 24. Some
+expressions become zero; the request clamps them to that quantum.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 3.5i \&quot; 3.5i (= 840u)
+.ll 7/2 \&quot; 7u/2u -&gt; 3u -&gt; 3m -&gt; 0, clamped to 24u
+.ll (7 / 2)u \&quot; 7u/2u -&gt; as above
+.ll 7/2i \&quot; 7u/2i -&gt; 7u/480u -&gt; 0 -&gt; as above
+.ll 7i/2 \&quot; 7i/2u -&gt; 1680u/2m -&gt; 1680u/24u -&gt; 35u
+.ll 7i/2u \&quot; 3.5i (= 840u)
+</pre></div></div>
+
+<a class="index-entry-id" id="index-measurements_002c-specifying-safely"></a>
+<p>The safest way to specify measurements is to attach a scaling unit. To
+multiply or divide by a dimensionless quantity, use &lsquo;<samp class="samp">u</samp>&rsquo; as its
+scaling unit.
+</p>
+
+
+<hr>
+</div>
+</div>
+<div class="section-level-extent" id="Numeric-Expressions">
+<div class="nav-panel">
+<p>
+Next: <a href="#Identifiers" accesskey="n" rel="next">Identifiers</a>, Previous: <a href="#Measurements" accesskey="p" rel="prev">Measurements</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Numeric-Expressions-1">5.4 Numeric Expressions</h3>
+<a class="index-entry-id" id="index-numeric-expressions"></a>
+<a class="index-entry-id" id="index-expressions_002c-numeric"></a>
+
+<p>A <em class="dfn">numeric expression</em> evaluates to an integer: it can be as
+simple as a literal &lsquo;<samp class="samp">0</samp>&rsquo; or it can be a complex sequence of register
+and string interpolations interleaved with measurements and operators.
+</p>
+<p>GNU <code class="code">troff</code> provides a set of mathematical and logical operators
+familiar to programmers&mdash;as well as some unusual ones&mdash;but supports
+only integer arithmetic.<a class="footnote" id="DOCF35" href="#FOOT35"><sup>35</sup></a> The internal data type
+used for computing results is usually a 32-bit signed integer, which
+suffices to represent magnitudes within a range of ±2
+billion.<a class="footnote" id="DOCF36" href="#FOOT36"><sup>36</sup></a>
+</p>
+<a class="index-entry-id" id="index-arithmetic-operators"></a>
+<a class="index-entry-id" id="index-operators_002c-arithmetic"></a>
+<a class="index-entry-id" id="index-truncating-division"></a>
+<a class="index-entry-id" id="index-addition"></a>
+<a class="index-entry-id" id="index-subtraction"></a>
+<a class="index-entry-id" id="index-multiplication"></a>
+<a class="index-entry-id" id="index-division_002c-truncating"></a>
+<a class="index-entry-id" id="index-modulus"></a>
+<a class="index-entry-id" id="index-_002b"></a>
+<a class="index-entry-id" id="index-_002d"></a>
+<a class="index-entry-id" id="index-_002a"></a>
+<a class="index-entry-id" id="index-_002f"></a>
+<a class="index-entry-id" id="index-_0025"></a>
+<p>Arithmetic infix operators perform a function on the numeric expressions
+to their left and right; they are <code class="code">+</code> (addition), <code class="code">-</code>
+(subtraction), <code class="code">*</code> (multiplication), <code class="code">/</code> (truncating
+division), and <code class="code">%</code> (modulus). <em class="dfn">Truncating division</em> rounds to
+the integer nearer to zero, no matter how large the fractional portion.
+Overflow and division (or modulus) by zero are errors and abort
+evaluation of a numeric expression.
+<a class="index-entry-id" id="index-unary-arithmetic-operators"></a>
+<a class="index-entry-id" id="index-operators_002c-unary-arithmetic"></a>
+<a class="index-entry-id" id="index-negation"></a>
+<a class="index-entry-id" id="index-assertion-_0028arithmetic-operator_0029"></a>
+<a class="index-entry-id" id="index-_002d-1"></a>
+<a class="index-entry-id" id="index-_002b-1"></a>
+<a class="index-entry-id" id="index-if-request_002c-and-the-_0021-operator"></a>
+<a class="index-entry-id" id="index-while-request_002c-and-the-_0021-operator"></a>
+</p>
+<p>Arithmetic unary operators operate on the numeric expression to their
+right; they are <code class="code">-</code> (negation) and <code class="code">+</code> (assertion&mdash;for
+completeness; it does nothing). The unary minus must often be used
+with parentheses to avoid confusion with the decrementation operator,
+discussed below.
+</p>
+<p>Observe the rounding behavior and effect of negative operands on the
+modulus and truncating division operators.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr T 199/100
+.nr U 5/2
+.nr V (-5)/2
+.nr W 5/-2
+.nr X 5%2
+.nr Y (-5)%2
+.nr Z 5%-2
+T=\n[T] U=\n[U] V=\n[V] W=\n[W] X=\n[X] Y=\n[Y] Z=\n[Z]
+ &rArr; T=1 U=2 V=-2 W=-2 X=1 Y=-1 Z=1
+</pre></div></div>
+
+<p>The sign of the modulus of operands of mixed signs is determined by the
+sign of the first. Division and modulus operators satisfy the following
+property: given a dividend&nbsp;<var class="var">a</var> and a divisor&nbsp;<var class="var">b</var>, a
+quotient&nbsp;<var class="var">q</var> formed by &lsquo;<samp class="samp">(a / b)</samp>&rsquo; and a
+remainder&nbsp;<var class="var">r</var> by &lsquo;<samp class="samp">(a % b)</samp>&rsquo;, then <em class="math">qb + r = a</em>.
+</p>
+<a class="index-entry-id" id="index-scaling-operator"></a>
+<a class="index-entry-id" id="index-operator_002c-scaling"></a>
+<a class="index-entry-id" id="index-_003b"></a>
+<p>GNU <code class="code">troff</code>&rsquo;s scaling operator, used with parentheses as
+<code class="code">(<var class="var">c</var>;<var class="var">e</var>)</code>, evaluates a numeric expression&nbsp;<var class="var">e</var>
+using&nbsp;<var class="var">c</var> as the default scaling unit. If <var class="var">c</var> is omitted,
+scaling units are ignored in the evaluation of&nbsp;<var class="var">e</var>. This
+operator can save typing by avoiding the attachment of scaling units to
+every operand out of caution. Your macros can select a sensible default
+unit in case the user neglects to supply one.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; Indent by amount given in first argument; assume ens.
+.de Indent
+. in (n;\\$1)
+..
+</pre></div></div>
+
+<p>Without the scaling operator, the foregoing macro would, if called with
+a unitless argument, cause indentation by the <code class="code">in</code> request&rsquo;s
+default scaling unit (ems). The result would be twice as much
+indentation as expected.
+</p>
+<a class="index-entry-id" id="index-extremum-operators-_0028_003e_003f_002c-_003c_003f_0029"></a>
+<a class="index-entry-id" id="index-operators_002c-extremum-_0028_003e_003f_002c-_003c_003f_0029"></a>
+<a class="index-entry-id" id="index-maximum-operator"></a>
+<a class="index-entry-id" id="index-minimum-operator"></a>
+<a class="index-entry-id" id="index-_003e_003f"></a>
+<a class="index-entry-id" id="index-_003c_003f"></a>
+<p>GNU <code class="code">troff</code> also provides a pair of operators to compute the
+extrema of two operands: <code class="code">&gt;?</code> (maximum) and <code class="code">&lt;?</code> (minimum).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr slots 5
+.nr candidates 3
+.nr salaries (\n[slots] &lt;? \n[candidates])
+Looks like we'll end up paying \n[salaries] salaries.
+ &rArr; Looks like we'll end up paying 3 salaries.
+</pre></div></div>
+
+<a class="index-entry-id" id="index-comparison-operators"></a>
+<a class="index-entry-id" id="index-operators_002c-comparison"></a>
+<a class="index-entry-id" id="index-greater-than-_0028or-equal-to_0029-operator"></a>
+<a class="index-entry-id" id="index-less-than-_0028or-equal-to_0029-operator"></a>
+<a class="index-entry-id" id="index-equality-operator"></a>
+<a class="index-entry-id" id="index-_003c"></a>
+<a class="index-entry-id" id="index-_003e"></a>
+<a class="index-entry-id" id="index-_003e_003d"></a>
+<a class="index-entry-id" id="index-_003c_003d"></a>
+<a class="index-entry-id" id="index-_003d"></a>
+<a class="index-entry-id" id="index-_003d_003d"></a>
+<p>Comparison operators comprise <code class="code">&lt;</code> (less than), <code class="code">&gt;</code> (greater
+than), <code class="code">&lt;=</code> (less than or equal), <code class="code">&gt;=</code> (greater than or
+equal), and <code class="code">=</code> (equal). <code class="code">==</code> is a synonym for <code class="code">=</code>.
+When evaluated, a comparison is replaced with &lsquo;<samp class="samp">0</samp>&rsquo; if it is false
+and &lsquo;<samp class="samp">1</samp>&rsquo; if true. In the <code class="code">roff</code> language, positive values are
+true, others false.
+</p>
+<a class="index-entry-id" id="index-logical-operators"></a>
+<a class="index-entry-id" id="index-operators_002c-logical"></a>
+<a class="index-entry-id" id="index-logical-_0060_0060and_0027_0027-operator"></a>
+<a class="index-entry-id" id="index-logical-conjunction-operator"></a>
+<a class="index-entry-id" id="index-logical-_0060_0060or_0027_0027-operator"></a>
+<a class="index-entry-id" id="index-logical-disjunction-operator"></a>
+<a class="index-entry-id" id="index-_0026"></a>
+<a class="index-entry-id" id="index-_003a"></a>
+<p>We can operate on truth values with the logical operators <code class="code">&amp;</code>
+(logical conjunction or &ldquo;and&rdquo;) and <code class="code">:</code> (logical disjunction or
+&ldquo;or&rdquo;). They evaluate as comparison operators do.
+</p>
+<a class="index-entry-id" id="index-_0021"></a>
+<a class="index-entry-id" id="index-complementation_002c-logical"></a>
+<a class="index-entry-id" id="index-logical-complementation-operator"></a>
+<a class="index-entry-id" id="index-logical-not_002c-limitation-in-expression"></a>
+<a class="index-entry-id" id="index-expression_002c-limitation-of-logical-not-in"></a>
+<p>A logical complementation (&ldquo;not&rdquo;) operator, <code class="code">!</code>, works only
+within <code class="code">if</code>, <code class="code">ie</code>, and <code class="code">while</code> requests.
+Furthermore, <code class="code">!</code> is recognized only at the beginning of a numeric
+expression not contained by another numeric expression. In other words,
+it must be the &ldquo;outermost&rdquo; operator. Including it elsewhere in the
+expression produces a warning in the &lsquo;<samp class="samp">number</samp>&rsquo; category
+(see <a class="pxref" href="#Warnings">Warnings</a>), and its expression evaluates false. This
+unfortunate limitation maintains compatibility with <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code>. Test a numeric expression for falsity by
+comparing it to a false value.<a class="footnote" id="DOCF37" href="#FOOT37"><sup>37</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr X 1
+.nr Y 0
+.\&quot; This does not work as expected.
+.if (\n[X])&amp;(!\n[Y]) .nop A: X is true, Y is false
+.
+.\&quot; Use this construct instead.
+.if (\n[X])&amp;(\n[Y]&lt;=0) .nop B: X is true, Y is false
+ error&rarr; warning: expected numeric expression, got '!'
+ &rArr; B: X is true, Y is false
+</pre></div></div>
+
+<a class="index-entry-id" id="index-parentheses"></a>
+<a class="index-entry-id" id="index-order-of-evaluation-in-expressions"></a>
+<a class="index-entry-id" id="index-expression_002c-order-of-evaluation"></a>
+<a class="index-entry-id" id="index-_0028"></a>
+<a class="index-entry-id" id="index-_0029"></a>
+<p>The <code class="code">roff</code> language has no operator precedence: expressions are
+evaluated strictly from left to right, in contrast to schoolhouse
+arithmetic. Use parentheses <code class="code">(</code> <code class="code">)</code> to impose a desired
+precedence upon subexpressions.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr X 3+5*4
+.nr Y (3+5)*4
+.nr Z 3+(5*4)
+X=\n[X] Y=\n[Y] Z=\n[Z]
+ &rArr; X=32 Y=32 Z=23
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_002b_002c-and-page-motion"></a>
+<a class="index-entry-id" id="index-_002d_002c-and-page-motion"></a>
+<a class="index-entry-id" id="index-motion-operators"></a>
+<a class="index-entry-id" id="index-operators_002c-motion"></a>
+<a class="index-entry-id" id="index-_002b-_0028unary_0029"></a>
+<a class="index-entry-id" id="index-_002d-_0028unary_0029"></a>
+<p>For many requests and escape sequences that cause motion on the page,
+the unary operators <code class="code">+</code> and <code class="code">-</code> work differently when leading
+a numeric expression. They then indicate a motion relative to the
+drawing position: positive is down in vertical contexts, right in
+horizontal ones.
+</p>
+<a class="index-entry-id" id="index-bp-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-in-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-ll-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-lt-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-nm-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-nr-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-pl-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-pn-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-po-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-ps-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-pvs-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-rt-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-ti-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-_005cH_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-_005cR_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-_005cs_002c-using-_002b-and-_002d-with"></a>
+<p><code class="code">+</code> and <code class="code">-</code> are also treated differently by the following
+requests and escape sequences: <code class="code">bp</code>, <code class="code">in</code>, <code class="code">ll</code>,
+<code class="code">lt</code>, <code class="code">nm</code>, <code class="code">nr</code>, <code class="code">pl</code>, <code class="code">pn</code>, <code class="code">po</code>,
+<code class="code">ps</code>, <code class="code">pvs</code>, <code class="code">rt</code>, <code class="code">ti</code>, <code class="code">\H</code>, <code class="code">\R</code>, and
+<code class="code">\s</code>. Here, leading plus and minus signs serve as incrementation
+and decrementation operators, respectively. To negate an expression,
+subtract it from zero or include the unary minus in parentheses with its
+argument. See <a class="xref" href="#Setting-Registers">Setting Registers</a>, for examples.
+</p>
+<a class="index-entry-id" id="index-_007c"></a>
+<a class="index-entry-id" id="index-_007c_002c-and-page-motion"></a>
+<a class="index-entry-id" id="index-absolute-_0028sic_0029-position-operator-_0028_007c_0029"></a>
+<a class="index-entry-id" id="index-position_002c-absolute-_0028sic_0029-operator-_0028_007c_0029"></a>
+<a class="index-entry-id" id="index-boundary_002drelative-motion-operator-_0028_007c_0029"></a>
+<p>A leading <code class="code">|</code> operator indicates a motion relative not to the
+drawing position but to a boundary. For horizontal motions, the
+measurement specifies a distance relative to a drawing position
+corresponding to the beginning of the <em class="emph">input</em> line. By default,
+tab stops reckon movements in this way. Most escape sequences do not;
+<code class="code">|</code> tells them to do so.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Mind the \h'1.2i'gap.
+.br
+Mind the \h'|1.2i'gap.
+.br
+Mind the
+\h'|1.2i'gap.
+ &rArr; Mind the gap.
+ &rArr; Mind the gap.
+ &rArr; Mind the gap.
+</pre></div></div>
+
+<p>One use of this feature is to define macros whose scope is limited to
+the output they format.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; underline word $1 with trailing punctuation $2
+.de Underline
+. nop \\$1\l'|0\[ul]'\\$2
+..
+Typographical emphasis is best used
+.Underline sparingly .
+</pre></div></div>
+
+<p>In the above example, &lsquo;<samp class="samp">|0</samp>&rsquo; specifies a negative motion from the
+current position (at the end of the argument just emitted, <code class="code">\$1</code>)
+to the beginning of the input line. Thus, the <code class="code">\l</code> escape sequence
+in this case draws a line from right to left. A macro call occurs at
+the beginning of an input line;<a class="footnote" id="DOCF38" href="#FOOT38"><sup>38</sup></a> if the <code class="code">|</code>
+operator were omitted, then the underline would be drawn at zero
+distance from the current position, producing device-dependent, and
+likely undesirable, results. On the &lsquo;<samp class="samp">ps</samp>&rsquo; output device, it
+underlines the period.
+</p>
+<p>For vertical motions, the <code class="code">|</code> operator specifies a distance from
+the first text baseline on the page or in the current
+diversion,<a class="footnote" id="DOCF39" href="#FOOT39"><sup>39</sup></a> using the current vertical
+spacing.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">A
+.br
+B \Z'C'\v'|0'D
+ &rArr; A D
+ &rArr; B C
+</pre></div></div>
+
+<p>In the foregoing example, we&rsquo;ve used the <code class="code">\Z</code> escape sequence
+(see <a class="pxref" href="#Page-Motions">Page Motions</a>) to restore the drawing position after formatting
+&lsquo;<samp class="samp">C</samp>&rsquo;, then moved vertically to the first text baseline on the page.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cB_0027anything_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\B<code class="code">'</code></code><span class="r"><i class="slanted">anything</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cB_0027anything_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cB"></a>
+<a class="index-entry-id" id="index-numeric-expression_002c-valid"></a>
+<a class="index-entry-id" id="index-valid-numeric-expression"></a>
+<p>Interpolate&nbsp;1 if <var class="var">anything</var> is a valid numeric expression,
+and&nbsp;0 otherwise. The delimiter need not be a neutral apostrophe;
+see <a class="ref" href="#Delimiters">Delimiters</a>.
+</p></dd></dl>
+
+<p>You might use <code class="code">\B</code> along with the <code class="code">if</code> request to filter out
+invalid macro or string arguments. See <a class="xref" href="#Conditionals-and-Loops">Conditionals and Loops</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; Indent by amount given in first argument; assume ens.
+.de Indent
+. if \B'\\$1' .in (n;\\$1)
+..
+</pre></div></div>
+
+<p>A register interpolated as an operand in a numeric expression must have
+an Arabic format; luckily, this is the default. See <a class="xref" href="#Assigning-Register-Formats">Assigning Register Formats</a>.
+</p>
+<a class="index-entry-id" id="index-space-characters_002c-in-expressions"></a>
+<a class="index-entry-id" id="index-expressions_002c-and-space-characters"></a>
+<p>Because spaces separate arguments to requests, spaces are not allowed in
+numeric expressions unless the (sub)expression containing them is
+surrounded by parentheses. See <a class="xref" href="#Invoking-Requests">Invoking Requests</a>, and
+<a class="ref" href="#Conditionals-and-Loops">Conditionals and Loops</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nf
+.nr a 1+2 + 2+1
+\na
+ error&rarr; expected numeric expression, got a space
+ &rArr; 3
+.nr a 1+(2 + 2)+1
+\na
+ &rArr; 6
+</pre></div></div>
+
+<p>The <code class="code">nr</code> request (see <a class="pxref" href="#Setting-Registers">Setting Registers</a>) expects its second and
+optional third arguments to be numeric expressions; a bare <code class="code">+</code> does
+not qualify, so our first attempt got a warning.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Identifiers">
+<div class="nav-panel">
+<p>
+Next: <a href="#Formatter-Instructions" accesskey="n" rel="next">Formatter Instructions</a>, Previous: <a href="#Numeric-Expressions" accesskey="p" rel="prev">Numeric Expressions</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Identifiers-1">5.5 Identifiers</h3>
+<a class="index-entry-id" id="index-identifiers"></a>
+
+<p>An <em class="dfn">identifier</em> labels a GNU <code class="code">troff</code> datum such as a register,
+name (macro, string, or diversion), typeface, color, special character,
+character class, environment, or stream. Valid identifiers consist of
+one or more ordinary characters.
+<a class="index-entry-id" id="index-ordinary-character"></a>
+<a class="index-entry-id" id="index-character_002c-ordinary"></a>
+An <i class="slanted">ordinary character</i> is an input character that is not the
+escape character, a leader, tab, newline, or invalid as GNU <code class="code">troff</code>
+input.
+</p>
+<a class="index-entry-id" id="index-invalid-input-characters"></a>
+<a class="index-entry-id" id="index-input-characters_002c-invalid"></a>
+<a class="index-entry-id" id="index-characters_002c-invalid-input"></a>
+<a class="index-entry-id" id="index-Unicode"></a>
+<p>Invalid input characters are a subset of control characters (from the
+sets &ldquo;C0 Controls&rdquo; and &ldquo;C1 Controls&rdquo; as Unicode describes them).
+When GNU <code class="code">troff</code> encounters one in an identifier, it produces a
+warning in category &lsquo;<samp class="samp">input</samp>&rsquo; (see <a class="pxref" href="#Warnings">Warnings</a>). They are removed
+during interpretation: an identifier &lsquo;<samp class="samp">foo</samp>&rsquo;, followed by an invalid
+character and then &lsquo;<samp class="samp">bar</samp>&rsquo;, is processed as &lsquo;<samp class="samp">foobar</samp>&rsquo;.
+</p>
+<p>On a machine using the ISO 646, 8859, or 10646 character encodings,
+invalid input characters are <code class="code">0x00</code>, <code class="code">0x08</code>, <code class="code">0x0B</code>,
+<code class="code">0x0D</code>&ndash;<code class="code">0x1F</code>, and <code class="code">0x80</code>&ndash;<code class="code">0x9F</code>. On an
+<abbr class="acronym">EBCDIC</abbr> host, they are <code class="code">0x00</code>&ndash;<code class="code">0x01</code>, <code class="code">0x08</code>,
+<code class="code">0x09</code>, <code class="code">0x0B</code>, <code class="code">0x0D</code>&ndash;<code class="code">0x14</code>,
+<code class="code">0x17</code>&ndash;<code class="code">0x1F</code>, and
+<code class="code">0x30</code>&ndash;<code class="code">0x3F</code>.<a class="footnote" id="DOCF40" href="#FOOT40"><sup>40</sup></a> Some of these code points are used
+by GNU <code class="code">troff</code> internally, making it non-trivial to extend the
+program to accept UTF-8 or other encodings that use characters from
+these ranges.<a class="footnote" id="DOCF41" href="#FOOT41"><sup>41</sup></a>
+</p>
+<p>Thus, the identifiers &lsquo;<samp class="samp">br</samp>&rsquo;, &lsquo;<samp class="samp">PP</samp>&rsquo;, &lsquo;<samp class="samp">end-list</samp>&rsquo;,
+&lsquo;<samp class="samp">ref*normal-print</samp>&rsquo;, &lsquo;<samp class="samp">|</samp>&rsquo;, &lsquo;<samp class="samp">@_</samp>&rsquo;, and &lsquo;<samp class="samp">!&quot;#$%'()*+,-./</samp>&rsquo;
+are all valid. Discretion should be exercised to prevent confusion.
+Identifiers starting with &lsquo;<samp class="samp">(</samp>&rsquo; or &lsquo;<samp class="samp">[</samp>&rsquo; require care.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr x 9
+.nr y 1
+.nr (x 2
+.nr [y 3
+.nr sum1 (\n(x + \n[y])
+ error&rarr; a space character is not allowed in an escape
+ error&rarr; sequence parameter
+A:2+3=\n[sum1]
+.nr sum2 (\n((x + \n[[y])
+B:2+3=\n[sum2]
+.nr sum3 (\n[(x] + \n([y)
+C:2+3=\n[sum3]
+ &rArr; A:2+3=1 B:2+3=5 C:2+3=5
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_005d_002c-as-part-of-an-identifier"></a>
+<p>An identifier with a closing bracket (&lsquo;<samp class="samp">]</samp>&rsquo;) in its name can&rsquo;t be
+accessed with bracket-form escape sequences that expect an identifier as
+a parameter. For example, &lsquo;<samp class="samp">\[foo]]</samp>&rsquo; accesses the glyph &lsquo;<samp class="samp">foo</samp>&rsquo;,
+followed by &lsquo;<samp class="samp">]</samp>&rsquo; in whatever the surrounding context is, whereas
+&lsquo;<samp class="samp">\C'foo]'</samp>&rsquo; formats a glyph named &lsquo;<samp class="samp">foo]</samp>&rsquo;. Similarly, the
+identifier &lsquo;<samp class="samp">(</samp>&rsquo; can&rsquo;t be interpolated <em class="emph">except</em> with bracket
+forms.
+</p>
+<a class="index-entry-id" id="index-refer_002c-and-macro-names-starting-with-_005b-or-_005d"></a>
+<a class="index-entry-id" id="index-_005b_002c-macro-names-starting-with_002c-and-refer"></a>
+<a class="index-entry-id" id="index-_005d_002c-macro-names-starting-with_002c-and-refer"></a>
+<a class="index-entry-id" id="index-macro-names_002c-starting-with-_005b-or-_005d_002c-and-refer"></a>
+<p>If you begin a macro, string, or diversion name with either of the
+characters &lsquo;<samp class="samp">[</samp>&rsquo; or &lsquo;<samp class="samp">]</samp>&rsquo;, you foreclose use of the <code class="code">grefer</code>
+preprocessor, which recognizes &lsquo;<samp class="samp">.[</samp>&rsquo; and &lsquo;<samp class="samp">.]</samp>&rsquo; as bibliographic
+reference delimiters.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cA_0027anything_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\A<code class="code">'</code></code><span class="r"><i class="slanted">anything</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cA_0027anything_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cA"></a>
+<p>Interpolate&nbsp;1 if <var class="var">anything</var> is a valid identifier, and&nbsp;0
+otherwise. The delimiter need not be a neutral apostrophe; see
+<a class="ref" href="#Delimiters">Delimiters</a>. Because invalid input characters are removed (see
+above), invalid identifiers are empty or contain spaces, tabs, or
+newlines.
+</p>
+<p>You can employ <code class="code">\A</code> to validate a macro argument before using it to
+construct another escape sequence or identifier.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; usage: .init-coordinate-pair name val1 val2
+.\&quot; Create a coordinate pair where name!x=val1 and
+.\&quot; name!y=val2.
+.de init-coordinate-pair
+. if \A'\\$1' \{\
+. if \B'\\$2' .nr \\$1!x \\$2
+. if \B'\\$3' .nr \\$1!y \\$3
+. \}
+..
+.init-coordinate-pair center 5 10
+The center is at (\n[center!x], \n[center!y]).
+.init-coordinate-pair &quot;poi&rarr;nt&quot; trash garbage \&quot; ignored
+.init-coordinate-pair point trash garbage \&quot; ignored
+ &rArr; The center is at (5, 10).
+</pre></div></div>
+
+<p>In this example, we also validated the numeric arguments; the registers
+&lsquo;<samp class="samp">point!x</samp>&rsquo; and &lsquo;<samp class="samp">point!y</samp>&rsquo; remain undefined. See <a class="xref" href="#Numeric-Expressions">Numeric Expressions</a> for the <code class="code">\B</code> escape sequence.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-undefined-identifiers"></a>
+<a class="index-entry-id" id="index-identifiers_002c-undefined"></a>
+<p>How GNU <code class="code">troff</code> handles the interpretation of an undefined
+identifier depends on the context. There is no way to invoke an
+undefined request; such syntax is interpreted as a macro call instead.
+If the identifier is interpreted as a string, macro, or diversion, GNU
+<code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">mac</samp>&rsquo;, defines it as
+empty, and interpolates nothing. If the identifier is interpreted as a
+register, GNU <code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">reg</samp>&rsquo;,
+initializes it to zero, and interpolates that value. See <a class="xref" href="#Warnings">Warnings</a>,
+<a class="ref" href="#Interpolating-Registers">Interpolating Registers</a>, and <a class="ref" href="#Strings">Strings</a>. Attempting to use an
+undefined typeface, special character, color, character class,
+environment, or stream generally provokes an error diagnostic.
+</p>
+<a class="index-entry-id" id="index-name-space_002c-common_002c-of-macros_002c-diversions_002c-and-strings"></a>
+<a class="index-entry-id" id="index-common-name-space-of-macros_002c-diversions_002c-and-strings"></a>
+<a class="index-entry-id" id="index-macros_002c-shared-name-space-with-strings-and-diversions"></a>
+<a class="index-entry-id" id="index-strings_002c-shared-name-space-with-macros-and-diversions"></a>
+<a class="index-entry-id" id="index-diversions_002c-shared-name-space-with-macros-and-strings"></a>
+<p>Identifiers for requests, macros, strings, and diversions share one name
+space; special characters and character classes another. No other
+object types do.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de xxx
+. nop foo
+..
+.di xxx
+bar
+.br
+.di
+.
+.xxx
+ &rArr; bar
+</pre></div></div>
+
+<p>The foregoing example shows that GNU <code class="code">troff</code> reuses the identifier
+&lsquo;<samp class="samp">xxx</samp>&rsquo;, changing it from a macro to a diversion. No warning is
+emitted, and the previous contents of &lsquo;<samp class="samp">xxx</samp>&rsquo; are lost.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Formatter-Instructions">
+<div class="nav-panel">
+<p>
+Next: <a href="#Registers" accesskey="n" rel="next">Registers</a>, Previous: <a href="#Identifiers" accesskey="p" rel="prev">Identifiers</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Formatter-Instructions-1">5.6 Formatter Instructions</h3>
+<a class="index-entry-id" id="index-formatter-instructions"></a>
+<a class="index-entry-id" id="index-instructing-the-formatter"></a>
+
+<p>To support documents that require more than filling, automatic line
+breaking and hyphenation, adjustment, and supplemental inter-sentence
+space, the <code class="code">roff</code> language offers two means of embedding
+instructions to the formatter.
+</p>
+<a class="index-entry-id" id="index-request-1"></a>
+<p>One is a <em class="dfn">request</em>, which begins with a control character and takes
+up the remainder of the input line. Requests often perform relatively
+large-scale operations such as setting the page length, breaking the
+line, or starting a new page. They also conduct internal operations
+like defining macros.
+</p>
+<a class="index-entry-id" id="index-escape-sequence"></a>
+<a class="index-entry-id" id="index-sequence_002c-escape"></a>
+<p>The other is an <em class="dfn">escape sequence</em>, which begins with the escape
+character and can be embedded anywhere in the input, even in arguments
+to requests and other escape sequences. Escape sequences interpolate
+special characters, strings, or registers, and handle comparatively
+minor formatting tasks like sub- and superscripting.
+</p>
+<p>Some operations, such as font selection and type size alteration, are
+available via both requests and escape sequences.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#Control-Characters" accesskey="1">Control Characters</a></li>
+<li><a href="#Invoking-Requests" accesskey="2">Invoking Requests</a></li>
+<li><a href="#Calling-Macros" accesskey="3">Calling Macros</a></li>
+<li><a href="#Using-Escape-Sequences" accesskey="4">Using Escape Sequences</a></li>
+<li><a href="#Delimiters" accesskey="5">Delimiters</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Control-Characters">
+<div class="nav-panel">
+<p>
+Next: <a href="#Invoking-Requests" accesskey="n" rel="next">Invoking Requests</a>, Previous: <a href="#Formatter-Instructions" accesskey="p" rel="prev">Formatter Instructions</a>, Up: <a href="#Formatter-Instructions" accesskey="u" rel="up">Formatter Instructions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Control-Characters-1">5.6.1 Control Characters</h4>
+<a class="index-entry-id" id="index-control-characters"></a>
+<a class="index-entry-id" id="index-configuring-control-characters"></a>
+<a class="index-entry-id" id="index-changing-control-characters"></a>
+
+<p>The mechanism of using <code class="code">roff</code>&rsquo;s control characters to invoke
+requests and call macros was introduced in <a class="ref" href="#Requests-and-Macros">Requests and Macros</a>.
+Control characters are recognized only at the beginning of an input
+line, or at the beginning of the branch of a control structure request;
+see <a class="ref" href="#Conditionals-and-Loops">Conditionals and Loops</a>.
+</p>
+<p>A few requests cause a break implicitly; use the no-break control
+character to prevent the break. Break suppression is its sole
+behavioral distinction. Employing the no-break control character to
+invoke requests that don&rsquo;t cause breaks is harmless but poor style.
+See <a class="xref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>.
+</p>
+<a class="index-entry-id" id="index-control-character_002c-changing-_0028cc_0029"></a>
+<a class="index-entry-id" id="index-character_002c-control_002c-changing-_0028cc_0029"></a>
+<a class="index-entry-id" id="index-no_002dbreak-control-character_002c-changing-_0028c2_0029"></a>
+<a class="index-entry-id" id="index-character_002c-no_002dbreak-control_002c-changing-_0028c2_0029"></a>
+<a class="index-entry-id" id="index-control-character_002c-no_002dbreak_002c-changing-_0028c2_0029"></a>
+<p>The control &lsquo;<samp class="samp">.</samp>&rsquo; and no-break control &lsquo;<samp class="samp">'</samp>&rsquo; characters can each
+be changed to any ordinary character<a class="footnote" id="DOCF42" href="#FOOT42"><sup>42</sup></a>
+with the <code class="code">cc</code> and <code class="code">c2</code> requests, respectively.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">o</i></span>]</var><a class="copiable-link" href='#index-_002ecc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-cc"></a>
+<p>Recognize the ordinary character&nbsp;<var class="var">o</var> as the control character.
+If&nbsp;<var class="var">o</var> is absent or invalid, the default control character
+&lsquo;<samp class="samp">.</samp>&rsquo; is selected. The identity of the control character is
+associated with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ec2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.c2</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">o</i></span>]</var><a class="copiable-link" href='#index-_002ec2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-c2"></a>
+<p>Recognize the ordinary character&nbsp;<var class="var">o</var> as the no-break control
+character. If&nbsp;<var class="var">o</var> is absent or invalid, the default no-break
+control character &lsquo;<samp class="samp">'</samp>&rsquo; is selected. The identity of the no-break
+control character is associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>).
+</p></dd></dl>
+
+<p>When writing a macro, you might wish to know which control character was
+used to call it.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002ebr_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.br]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ebr_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ebr-1"></a>
+<p>This read-only register interpolates&nbsp;1 if the currently executing
+macro was called using the normal control character and&nbsp;0
+otherwise. If a macro is interpolated as a string, the <code class="code">.br</code>
+register&rsquo;s value is inherited from the context of the string
+interpolation. See <a class="xref" href="#Strings">Strings</a>.
+</p>
+<a class="index-entry-id" id="index-intercepting-requests"></a>
+<a class="index-entry-id" id="index-requests_002c-intercepting"></a>
+<a class="index-entry-id" id="index-modifying-requests"></a>
+<a class="index-entry-id" id="index-requests_002c-modifying"></a>
+<p>Use this register to reliably intercept requests that imply breaks.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.als bp*orig bp
+.de bp
+. ie \\n[.br] .bp*orig
+. el 'bp*orig
+..
+</pre></div></div>
+
+<p>Testing the <code class="code">.br</code> register outside of a macro definition makes no
+sense.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Invoking-Requests">
+<div class="nav-panel">
+<p>
+Next: <a href="#Calling-Macros" accesskey="n" rel="next">Calling Macros</a>, Previous: <a href="#Control-Characters" accesskey="p" rel="prev">Control Characters</a>, Up: <a href="#Formatter-Instructions" accesskey="u" rel="up">Formatter Instructions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Invoking-Requests-1">5.6.2 Invoking Requests</h4>
+<a class="index-entry-id" id="index-invoking-requests"></a>
+<a class="index-entry-id" id="index-requests_002c-invoking"></a>
+
+<p>A control character is optionally followed by tabs and/or spaces and
+then an identifier naming a request or macro. The invocation of an
+unrecognized request is interpreted as a macro call. Defining a macro
+with the same name as a request replaces the request. Deleting a
+request name with the <code class="code">rm</code> request makes it unavailable. The
+<code class="code">als</code> request can alias requests, permitting them to be wrapped or
+non-destructively replaced. See <a class="xref" href="#Strings">Strings</a>.
+</p>
+<a class="index-entry-id" id="index-request-arguments"></a>
+<a class="index-entry-id" id="index-arguments-to-requests"></a>
+<a class="index-entry-id" id="index-tabs_002c-and-macro-arguments"></a>
+<a class="index-entry-id" id="index-macro-arguments_002c-and-tabs"></a>
+<a class="index-entry-id" id="index-arguments-to-macros_002c-and-tabs"></a>
+<a class="index-entry-id" id="index-tabs_002c-and-request-arguments"></a>
+<a class="index-entry-id" id="index-request-arguments_002c-and-tabs"></a>
+<a class="index-entry-id" id="index-arguments-to-requests_002c-and-tabs"></a>
+<p>There is no inherent limit on argument length or quantity. Most
+requests take one or more arguments, and ignore any they do not expect.
+A request may be separated from its arguments by tabs or spaces, but
+only spaces can separate an argument from its successor. Only one
+between arguments is necessary; any excess is ignored. GNU <code class="code">troff</code>
+does not allow tabs for argument separation.<a class="footnote" id="DOCF43" href="#FOOT43"><sup>43</sup></a>
+</p>
+<p>Generally, a space <em class="emph">within</em> a request argument is not relevant, not
+meaningful, or is supported by bespoke provisions, as with the <code class="code">tl</code>
+request&rsquo;s delimiters (see <a class="pxref" href="#Page-Layout">Page Layout</a>). Some requests, like
+<code class="code">ds</code>, interpret the remainder of the control line as a single
+argument. See <a class="xref" href="#Strings">Strings</a>.
+</p>
+<a class="index-entry-id" id="index-structuring-source-code-of-documents-or-macro-packages"></a>
+<a class="index-entry-id" id="index-documents_002c-structuring-the-source-of"></a>
+<a class="index-entry-id" id="index-macro-package_002c-structuring-the-source-of"></a>
+<a class="index-entry-id" id="index-package_002c-package_002c-structuring-the-source-of"></a>
+<a class="index-entry-id" id="index-indentation_002c-of-roff-source-code"></a>
+<p>Spaces and tabs immediately after a control character are ignored.
+Commonly, authors structure the source of documents or macro files with
+them.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de center
+. if \\n[.br] \
+. br
+. ce \\$1
+..
+.
+.
+.de right-align
+.&rarr;if \\n[.br] \
+.&rarr;&rarr;br
+.&rarr;rj \\$1
+..
+</pre></div></div>
+
+<a class="index-entry-id" id="index-blank-line-trap-_0028blm_0029"></a>
+<a class="index-entry-id" id="index-blank-line-macro-_0028blm_0029-1"></a>
+<p>If you assign an empty blank line trap, you can separate macro
+definitions (or any input lines) with blank lines.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de do-nothing
+..
+.blm do-nothing \&quot; activate blank line trap
+
+.de center
+. if \\n[.br] \
+. br
+. ce \\$1
+..
+
+
+.de right-align
+.&rarr;if \\n[.br] \
+.&rarr;&rarr;br
+.&rarr;rj \\$1
+..
+
+.blm \&quot; deactivate blank line trap
+</pre></div></div>
+
+<p>See <a class="xref" href="#Blank-Line-Traps">Blank Line Traps</a>.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Calling-Macros">
+<div class="nav-panel">
+<p>
+Next: <a href="#Using-Escape-Sequences" accesskey="n" rel="next">Using Escape Sequences</a>, Previous: <a href="#Invoking-Requests" accesskey="p" rel="prev">Invoking Requests</a>, Up: <a href="#Formatter-Instructions" accesskey="u" rel="up">Formatter Instructions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Calling-Macros-1">5.6.3 Calling Macros</h4>
+<a class="index-entry-id" id="index-calling-macros"></a>
+<a class="index-entry-id" id="index-macro-arguments"></a>
+<a class="index-entry-id" id="index-arguments-to-macros"></a>
+
+<p>If a macro of the desired name does not exist when called, it is
+created, assigned an empty definition, and a warning in category
+&lsquo;<samp class="samp">mac</samp>&rsquo; is emitted. Calling an undefined macro <em class="emph">does</em> end a
+macro definition naming it as its end macro (see <a class="pxref" href="#Writing-Macros">Writing Macros</a>).
+</p>
+<a class="index-entry-id" id="index-spaces_002c-in-a-macro-argument"></a>
+<p>To embed spaces <em class="emph">within</em> a macro argument, enclose the argument in
+neutral double quotes <code class="code">&quot;</code>. Horizontal motion escape sequences are
+sometimes a better choice for arguments to be formatted as text.
+</p>
+<p>Consider calls to a hypothetical section heading macro &lsquo;<samp class="samp">uh</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.uh The Mouse Problem
+.uh &quot;The Mouse Problem&quot;
+.uh The\~Mouse\~Problem
+.uh The\ Mouse\ Problem
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_005c_007e_002c-difference-from-_005cSP"></a>
+<a class="index-entry-id" id="index-_005cSP_002c-difference-from-_005c_007e"></a>
+<p>The first line calls <code class="code">uh</code> with three arguments: &lsquo;<samp class="samp">The</samp>&rsquo;,
+&lsquo;<samp class="samp">Mouse</samp>&rsquo;, and &lsquo;<samp class="samp">Problem</samp>&rsquo;. The remainder call the <code class="code">uh</code>
+macro with one argument, &lsquo;<samp class="samp">The Mouse Problem</samp>&rsquo;. The last solution,
+using escaped spaces, can be found in documents prepared for
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>. It can cause surprise when text is
+adjusted, because <code class="code">\<kbd class="key">SP</kbd></code> inserts a <em class="emph">fixed-width</em>,
+non-breaking space. GNU <code class="code">troff</code>&rsquo;s <code class="code">\~</code> escape sequence
+inserts an adjustable, non-breaking space.<a class="footnote" id="DOCF44" href="#FOOT44"><sup>44</sup></a>
+</p>
+<a class="index-entry-id" id="index-_0022_002c-embedding-in-a-macro-argument"></a>
+<a class="index-entry-id" id="index-double-quote_002c-embedding-in-a-macro-argument"></a>
+<a class="index-entry-id" id="index-_005c_002c-embedding-in-a-macro-argument"></a>
+<a class="index-entry-id" id="index-backslash_002c-embedding-in-a-macro-argument"></a>
+<p>The foregoing raises the question of how to embed neutral double quotes
+or backslashes in macro arguments when <em class="emph">those</em> characters are
+desired as literals. In GNU <code class="code">troff</code>, the special character escape
+sequence <code class="code">\[rs]</code> produces a backslash and <code class="code">\[dq]</code> a neutral
+double quote.
+</p>
+<p>In GNU <code class="code">troff</code>&rsquo;s <abbr class="acronym">AT&amp;T</abbr> compatibility mode, these
+characters remain available as <code class="code">\(rs</code> and <code class="code">\(dq</code>,
+respectively. <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> did not consistently define
+these special characters,
+but its descendants can be made to support them. See <a class="xref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>.
+</p>
+<p>If even that is not feasible, options remain. To obtain a literal
+escape character in a macro argument, you can simply type it if you
+change or disable the escape character first. See <a class="xref" href="#Using-Escape-Sequences">Using Escape Sequences</a>. Otherwise, you must escape the escape character repeatedly
+to a context-dependent extent. See <a class="xref" href="#Copy-Mode">Copy Mode</a>.
+</p>
+<p>For the (neutral) double quote, you have recourse to an obscure
+syntactical feature of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>. Because a double
+quote can begin a macro argument, the formatter keeps track of whether
+the current argument was started thus, and doesn&rsquo;t require a space after
+the double quote that ends it.<a class="footnote" id="DOCF45" href="#FOOT45"><sup>45</sup></a> In
+the argument list to a macro, a double quote that <em class="emph">isn&rsquo;t</em> preceded
+by a space <em class="emph">doesn&rsquo;t</em> start a macro argument. If not preceded by a
+double quote that began an argument, this double quote becomes part of
+the argument. Furthermore, within a quoted argument, a pair of adjacent
+double quotes becomes a literal double quote.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de eq
+. tm arg1:\\$1 arg2:\\$2 arg3:\\$3
+. tm arg4:\\$4 arg5:\\$5 arg6:\\$6
+.. \&quot; 4 backslashes on the next line
+.eq a&quot; &quot;b c&quot; &quot;de&quot;f\\\\g&quot; h&quot;&quot;i &quot;j&quot;&quot;k&quot;
+ error&rarr; arg1:a&quot; arg2:b c arg3:de
+ error&rarr; arg4:f\g&quot; arg5:h&quot;&quot;i arg6:j&quot;k
+</pre></div></div>
+
+<p>Apart from the complexity of the rules, this traditional solution has
+the disadvantage that double quotes don&rsquo;t survive repeated argument
+expansion in <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> or GNU <code class="code">troff</code>&rsquo;s
+compatibility mode. This can frustrate efforts to pass such arguments
+intact through multiple macro calls.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.cp 1
+.de eq
+. tm arg1:\\$1 arg2:\\$2 arg3:\\$3
+. tm arg4:\\$4 arg5:\\$5 arg6:\\$6
+..
+.de xe
+. eq \\$1 \\$2 \\$3 \\$4 \\$5 \\$6
+.. \&quot; 8 backslashes on the next line
+.xe a&quot; &quot;b c&quot; &quot;de&quot;f\\\\\\\\g&quot; h&quot;&quot;i &quot;j&quot;&quot;k&quot;
+ error&rarr; arg1:a&quot; arg2:b arg3:c
+ error&rarr; arg4:de arg5:f\g&quot; arg6:h&quot;&quot;i
+</pre></div></div>
+
+<a class="index-entry-id" id="index-input-level"></a>
+<a class="index-entry-id" id="index-level_002c-input"></a>
+<a class="index-entry-id" id="index-interpolation-depth"></a>
+<a class="index-entry-id" id="index-depth_002c-interpolation"></a>
+<p>Outside of compatibility mode, GNU <code class="code">troff</code> doesn&rsquo;t exhibit this
+problem because it tracks the nesting depth of interpolations.
+See <a class="xref" href="#Implementation-Differences">Implementation Differences</a>.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Using-Escape-Sequences">
+<div class="nav-panel">
+<p>
+Next: <a href="#Delimiters" accesskey="n" rel="next">Delimiters</a>, Previous: <a href="#Calling-Macros" accesskey="p" rel="prev">Calling Macros</a>, Up: <a href="#Formatter-Instructions" accesskey="u" rel="up">Formatter Instructions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Using-Escape-Sequences-1">5.6.4 Using Escape Sequences</h4>
+<a class="index-entry-id" id="index-using-escape-sequences"></a>
+<a class="index-entry-id" id="index-escape-sequences"></a>
+
+<p>Whereas requests must occur on control lines, escape sequences can occur
+intermixed with text and may appear in arguments to requests, macros,
+and other escape sequences.
+<a class="index-entry-id" id="index-_005c"></a>
+An escape sequence is introduced by the escape character, a backslash
+<code class="code">\</code> (but see the <code class="code">ec</code> request below). The next character
+selects the escape&rsquo;s function.
+</p>
+<p>Escape sequences vary in length. Some take an argument, and of those,
+some have different syntactical forms for a one-character,
+two-character, or arbitrary-length argument. Others accept <em class="emph">only</em>
+an arbitrary-length argument. In the former scheme, a one-character
+argument follows the function character immediately, an opening
+parenthesis &lsquo;<samp class="samp">(</samp>&rsquo; introduces a two-character argument (no closing
+parenthesis is used), and an argument of arbitrary length is enclosed in
+brackets &lsquo;<samp class="samp">[]</samp>&rsquo;. In the latter scheme, the user selects a delimiter
+character. A few escape sequences are idiosyncratic, and support both
+of the foregoing conventions (<code class="code">\s</code>), designate their own
+termination sequence (<code class="code">\?</code>), consume input until the next newline
+(<code class="code">\!</code>, <code class="code">\&quot;</code>, <code class="code">\#</code>), or support an additional modifier
+character (<code class="code">\s</code> again, and <code class="code">\n</code>). As with requests, use of
+some escape sequences in source documents may interact poorly with a
+macro package you use; consult its documentation to learn of &ldquo;safe&rdquo;
+sequences or alternative facilities it provides to achieve the desired
+result.
+</p>
+<p>If an escape character is followed by a character that does not
+identify a defined operation, the escape character is ignored (producing
+a diagnostic of the &lsquo;<samp class="samp">escape</samp>&rsquo; warning category, which is not enabled
+by default) and the following character is processed normally.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ groff -Tps -ww
+.nr N 12
+.ds co white
+.ds animal elephant
+I have \fI\nN \*(co \*[animal]s,\f[]
+said \P.\&amp;\~Pseudo Pachyderm.
+ error&rarr; warning: escape character ignored before 'P'
+ &rArr; I have <i class="slanted">12 white elephants,</i> said P. Pseudo Pachyderm.
+</pre></div></div>
+
+<p>Escape sequence interpolation is of higher precedence than escape
+sequence argument interpretation. This rule affords flexibility in
+using escape sequences to construct parameters to other escape
+sequences.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds family C\&quot; Courier
+.ds style I\&quot; oblique
+Choice a typeface \f(\*[family]\*[style]wisely.
+ &rArr; Choose a typeface <i class="slanted">wisely.</i>
+</pre></div></div>
+
+<p>In the above, the syntax form &lsquo;<samp class="samp">\f(</samp>&rsquo; accepts only two characters for
+an argument; the example works because the subsequent escape sequences
+are interpolated before the selection escape sequence argument is
+processed, and strings <code class="code">family</code> and <code class="code">style</code> interpolate one
+character each.<a class="footnote" id="DOCF46" href="#FOOT46"><sup>46</sup></a>
+</p>
+<p>The escape character is nearly always interpreted when encountered; it
+is therefore desirable to have a way to interpolate it, disable it, or
+change it.
+</p>
+<a class="index-entry-id" id="index-formatting-the-escape-character-_0028_005ce_0029"></a>
+<a class="index-entry-id" id="index-escape-character_002c-formatting-_0028_005ce_0029"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005ce-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\e</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ce-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005ce"></a>
+<p>Interpolate the escape character.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-formatting-a-backslash-glyph-_0028_005c_005brs_005d_0029"></a>
+<a class="index-entry-id" id="index-backslash-glyph_002c-formatting-_0028_005c_005brs_005d_0029"></a>
+<p>The <code class="code">\[rs]</code> special character escape sequence formats a backslash
+glyph. In macro and string definitions, the input sequences <code class="code">\\</code>
+and <code class="code">\E</code> defer interpretation of escape sequences. See <a class="xref" href="#Copy-Mode">Copy Mode</a>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eeo"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.eo</code></strong><a class="copiable-link" href='#index-_002eeo'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-eo"></a>
+<a class="index-entry-id" id="index-disabling-_005c-_0028eo_0029"></a>
+<a class="index-entry-id" id="index-_005c_002c-disabling-_0028eo_0029"></a>
+<p>Disable the escape mechanism except in copy mode. Once this request is
+invoked, no input character is recognized as starting an escape
+sequence in interpretation mode.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eec"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ec</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">o</i></span>]</var><a class="copiable-link" href='#index-_002eec'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ec"></a>
+<a class="index-entry-id" id="index-escape-character_002c-changing-_0028ec_0029"></a>
+<a class="index-entry-id" id="index-character_002c-escape_002c-changing-_0028ec_0029"></a>
+<p>Recognize the ordinary character&nbsp;<var class="var">o</var> as the escape character.
+If&nbsp;<var class="var">o</var> is absent or invalid, the default escape character
+&lsquo;<samp class="samp">\</samp>&rsquo; is selected.
+</p></dd></dl>
+
+<p>Switching escape sequence interpretation off to define a macro and back
+on afterward can obviate the need to double the escape character within
+the definition. See <a class="xref" href="#Writing-Macros">Writing Macros</a>. This technique is not available
+if your macro needs to interpolate values at the time it is
+<em class="emph">defined</em>&mdash;but many do not.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; simplified `BR` macro from the man(7) macro package
+.eo
+.de BR
+. ds result \&amp;
+. while (\n[.$] &gt;= 2) \{\
+. as result \fB\$1\fR\$2\&quot;
+. shift 2
+. \}
+. if \n[.$] .as result \fB\$1\&quot;
+\*[result]
+. rm result
+. ft R
+..
+.ec
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eecs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ecs</code></strong><a class="copiable-link" href='#index-_002eecs'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ecs"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eecr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ecr</code></strong><a class="copiable-link" href='#index-_002eecr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ecr"></a>
+<p>The <code class="code">ecs</code> request stores the escape character for recall with
+<code class="code">ecr</code>. <code class="code">ecr</code> sets the escape character to &lsquo;<samp class="samp">\</samp>&rsquo; if none
+has been saved.
+</p>
+<p>Use these requests together to temporarily change the escape character.
+</p></dd></dl>
+
+<p>Using a different escape character, or disabling it, when calling macros
+not under your control will likely cause errors, since GNU <code class="code">troff</code>
+has no mechanism to &ldquo;intern&rdquo; macros&mdash;that is, to convert a macro
+definition into a form independent of its
+representation.<a class="footnote" id="DOCF47" href="#FOOT47"><sup>47</sup></a> When a
+macro is called, its contents are interpreted literally.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Delimiters">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Using-Escape-Sequences" accesskey="p" rel="prev">Using Escape Sequences</a>, Up: <a href="#Formatter-Instructions" accesskey="u" rel="up">Formatter Instructions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Delimiters-1">5.6.5 Delimiters</h4>
+<a class="index-entry-id" id="index-delimiting-escape-sequence-arguments"></a>
+<a class="index-entry-id" id="index-escape-sequence-argument-delimiters"></a>
+<a class="index-entry-id" id="index-delimiters_002c-for-escape-sequence-arguments"></a>
+<a class="index-entry-id" id="index-arguments_002c-to-escape-sequences_002c-delimiting"></a>
+
+<a class="index-entry-id" id="index-_0027_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_0022_002c-as-delimiter"></a>
+<p>Some escape sequences that require parameters use delimiters. The
+neutral apostrophe <code class="code">'</code> is a popular choice and shown in this
+document. The neutral double quote <code class="code">&quot;</code> is also commonly seen.
+Letters, numerals, and leaders can be used. Punctuation characters
+are likely better choices, except for those defined as infix operators
+in numeric expressions; see below.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">\l'1.5i\[bu]' \&quot; draw 1.5 inches of bullet glyphs
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_005c_0025_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cSP_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_007c_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_005e_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_007b_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_007d_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_0027_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_0060_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_002d_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_005f_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_0021_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_003f_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_0029_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_002f_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_002c_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_0026_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_003a_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_007e_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c0_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005ca_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cc_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cd_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005ce_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cE_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cp_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cr_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005ct_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cu_002c-as-delimiter"></a>
+<p>The following escape sequences don&rsquo;t take arguments and thus are allowed
+as delimiters:
+<code class="code">\<kbd class="key">SP</kbd></code>, <code class="code">\%</code>, <code class="code">\|</code>, <code class="code">\^</code>, <code class="code">\{</code>,
+<code class="code">\}</code>, <code class="code">\'</code>, <code class="code">\`</code>, <code class="code">\-</code>, <code class="code">\_</code>, <code class="code">\!</code>,
+<code class="code">\?</code>, <code class="code">\)</code>, <code class="code">\/</code>, <code class="code">\,</code>, <code class="code">\&amp;</code>, <code class="code">\:</code>,
+<code class="code">\~</code>, <code class="code">\0</code>, <code class="code">\a</code>, <code class="code">\c</code>, <code class="code">\d</code>, <code class="code">\e</code>,
+<code class="code">\E</code>, <code class="code">\p</code>, <code class="code">\r</code>, <code class="code">\t</code>, and <code class="code">\u</code>. However,
+using them this way is discouraged; they can make the input confusing to
+read.
+</p>
+<a class="index-entry-id" id="index-_005cA_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cb_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005co_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cw_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cX_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cZ_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-newline_002c-as-delimiter"></a>
+<p>A few escape sequences,
+<code class="code">\A</code>,
+<code class="code">\b</code>,
+<code class="code">\o</code>,
+<code class="code">\w</code>,
+<code class="code">\X</code>,
+and <code class="code">\Z</code>, accept a newline as a delimiter. Newlines that serve
+as delimiters continue to be recognized as input line terminators.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">A caf\o
+e\(aa
+in Paris
+ &rArr; A café in Paris
+</pre></div></div>
+
+<p>Use of newlines as delimiters in escape sequences is also discouraged.
+</p>
+<a class="index-entry-id" id="index-_005cD_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005ch_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cH_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cl_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cL_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cN_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cR_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cs_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cS_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cv_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cx_002c-delimiters-allowed-by"></a>
+<p>Finally, the escape sequences <code class="code">\D</code>, <code class="code">\h</code>, <code class="code">\H</code>,
+<code class="code">\l</code>, <code class="code">\L</code>, <code class="code">\N</code>, <code class="code">\R</code>, <code class="code">\s</code>, <code class="code">\S</code>,
+<code class="code">\v</code>, and <code class="code">\x</code> prohibit many delimiters.
+</p>
+<ul class="itemize mark-bullet">
+<li><a class="index-entry-id" id="index-numerals_002c-as-delimiters"></a>
+<a class="index-entry-id" id="index-digits_002c-as-delimiters"></a>
+<a class="index-entry-id" id="index-_002e_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-decimal-point_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-dot_002c-as-delimiter"></a>
+the numerals <code class="code">0</code>-<code class="code">9</code> and the decimal point <code class="code">.</code>
+
+</li><li><a class="index-entry-id" id="index-operators_002c-as-delimiters"></a>
+<a class="index-entry-id" id="index-_002b_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_002d_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_002f_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_002a_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_0025_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_003c_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_003e_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_003d_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_0026_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_003a_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_0028_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_0029_002c-as-delimiter"></a>
+the (single-character) operators &lsquo;<samp class="samp">+-/*%&lt;&gt;=&amp;:()</samp>&rsquo;
+
+</li><li><a class="index-entry-id" id="index-space-character_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-tab-character_002c-as-delimiter"></a>
+the space and tab characters
+
+</li><li><a class="index-entry-id" id="index-_005c_0025_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_003a_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_007b_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_007d_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_0027_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_0060_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_002d_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_005f_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_0021_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_002f_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005cc_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005ce_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005cp_002c-as-delimiter-1"></a>
+any escape sequences other than <code class="code">\%</code>, <code class="code">\:</code>, <code class="code">\{</code>,
+<code class="code">\}</code>, <code class="code">\'</code>, <code class="code">\`</code>, <code class="code">\-</code>, <code class="code">\_</code>, <code class="code">\!</code>,
+<code class="code">\/</code>, <code class="code">\c</code>, <code class="code">\e</code>, and <code class="code">\p</code>
+</li></ul>
+
+<p>Delimiter syntax is complex and flexible primarily for historical
+reasons; the foregoing restrictions need be kept in mind mainly when
+using <code class="code">groff</code> in <abbr class="acronym">AT&amp;T</abbr> compatibility mode. GNU
+<code class="code">troff</code> keeps track of the nesting depth of escape sequence
+interpolations, so the only characters you need to avoid using as
+delimiters are those that appear in the arguments you input, not any
+that result from interpolation. Typically, <code class="code">'</code> works fine.
+See <a class="xref" href="#Implementation-Differences">Implementation Differences</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ groff -Tps
+.de Mw
+. nr wd \w'\\$1'
+. tm &quot;\\$1&quot; is \\n(wd units wide.
+..
+.Mw Wet'suwet'en
+.Mw Wet+200i
+.cp 1 \&quot; turn on compatibility mode
+.Mw Wet'suwet'en
+.Mw Wet'
+.Mw Wet+200i
+ error&rarr; &quot;Wet'suwet'en&quot; is 54740 units wide.
+ error&rarr; &quot;Wet'+200i&quot; is 42610 units wide.
+ error&rarr; &quot;Wet'suwet'en&quot; is 15860 units wide.
+ error&rarr; &quot;Wet'&quot; is 15860 units wide.
+ error&rarr; &quot;Wet'+200i&quot; is 14415860 units wide.
+</pre></div></div>
+
+<p>We see here that in compatibility mode, the part of the argument after
+the <code class="code">'</code> delimiter escapes from its context and, if nefariously
+crafted, influences the computation of the <var class="var">wd</var> register&rsquo;s value in
+a surprising way.
+</p>
+<hr>
+</div>
+</div>
+<div class="section-level-extent" id="Comments">
+<div class="nav-panel">
+<p>
+Next: <a href="#Registers" accesskey="n" rel="next">Registers</a>, Previous: <a href="#Formatter-Instructions" accesskey="p" rel="prev">Formatter Instructions</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Comments-1">5.7 Comments</h3>
+<a class="index-entry-id" id="index-comments"></a>
+
+<p>One of the most common forms of escape sequence is the
+comment.<a class="footnote" id="DOCF48" href="#FOOT48"><sup>48</sup></a>
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0022-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\&quot;</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0022-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0022"></a>
+<p>Start a comment. Everything up to the next newline is ignored.
+</p>
+<p>This may sound simple, but it can be tricky to keep the comments from
+interfering with the appearance of the output.
+<a class="index-entry-id" id="index-ds_002c-ds1-requests_002c-and-comments"></a>
+<a class="index-entry-id" id="index-as_002c-as1-requests_002c-and-comments"></a>
+If the escape sequence is to the right of some text or a request, that
+portion of the line is ignored, but spaces preceding it are processed
+normally by GNU <code class="code">troff</code>. This affects only the <code class="code">ds</code> and
+<code class="code">as</code> requests and their variants.
+</p>
+<a class="index-entry-id" id="index-tabs_002c-before-comments"></a>
+<a class="index-entry-id" id="index-comments_002c-lining-up-with-tabs"></a>
+<p>One possibly irritating idiosyncrasy is that tabs should not be used to
+vertically align comments in the source document. Tab characters are
+not treated as separators between a request name and its first argument,
+nor between arguments.
+</p>
+<a class="index-entry-id" id="index-undefined-request"></a>
+<a class="index-entry-id" id="index-request_002c-undefined"></a>
+<p>A comment on a line by itself is treated as a blank line, because after
+eliminating the comment, that is all that remains.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Test
+\&quot; comment
+Test
+ &rArr; Test
+ &rArr;
+ &rArr; Test
+</pre></div></div>
+
+<p>To avoid this, it is common to combine the empty request with the
+comment escape sequence as &lsquo;<samp class="samp">.\&quot;</samp>&rsquo;, causing the input line to be
+ignored.
+</p>
+<a class="index-entry-id" id="index-_0027_002c-as-a-comment"></a>
+<p>Another commenting scheme sometimes seen is three consecutive single
+quotes (<code class="code">'''</code>) at the beginning of a line. This works, but GNU
+<code class="code">troff</code> emits a warning diagnostic (if enabled) about an undefined
+macro (namely &lsquo;<samp class="samp">''</samp>&rsquo;).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0023-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\#</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0023-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0023"></a>
+<p>Start a comment; everything up to and including the next newline is
+ignored. This <code class="code">groff</code> extension was introduced to avoid the
+problems described above.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Test
+\# comment
+Test
+ &rArr; Test Test
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eig"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ig</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eig'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ig"></a>
+<p>Ignore input until, in the current conditional block (if
+any),<a class="footnote" id="DOCF49" href="#FOOT49"><sup>49</sup></a> the macro <var class="var">end</var> is called
+at the start of a control line, or the control line &lsquo;<samp class="samp">..</samp>&rsquo; is
+encountered if <var class="var">end</var> is not specified. <code class="code">ig</code> is parsed as if it
+were a macro definition, but its contents are discarded, not
+stored.<a class="footnote" id="DOCF50" href="#FOOT50"><sup>50</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">hand\c
+.de TX
+fasting
+..
+.ig TX
+This is part of a large block of input that has been
+temporarily(?) commented out.
+We can restore it simply by removing the .ig request and
+the call of its end macro.
+.TX
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; handfasting
+</pre></div></div>
+</dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Registers">
+<div class="nav-panel">
+<p>
+Next: <a href="#Manipulating-Filling-and-Adjustment" accesskey="n" rel="next">Manipulating Filling and Adjustment</a>, Previous: <a href="#Formatter-Instructions" accesskey="p" rel="prev">Formatter Instructions</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Registers-1">5.8 Registers</h3>
+<a class="index-entry-id" id="index-registers"></a>
+
+<p>In the <code class="code">roff</code> language, numbers can be stored in <em class="dfn">registers</em>.
+Many built-in registers exist, supplying anything from the date to
+details of formatting parameters. You can also define your own.
+See <a class="xref" href="#Identifiers">Identifiers</a>, for information on constructing a valid name for a
+register.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#Setting-Registers" accesskey="1">Setting Registers</a></li>
+<li><a href="#Interpolating-Registers" accesskey="2">Interpolating Registers</a></li>
+<li><a href="#Auto_002dincrement" accesskey="3">Auto-increment</a></li>
+<li><a href="#Assigning-Register-Formats" accesskey="4">Assigning Register Formats</a></li>
+<li><a href="#Built_002din-Registers" accesskey="5">Built-in Registers</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Setting-Registers">
+<div class="nav-panel">
+<p>
+Next: <a href="#Interpolating-Registers" accesskey="n" rel="next">Interpolating Registers</a>, Previous: <a href="#Registers" accesskey="p" rel="prev">Registers</a>, Up: <a href="#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Setting-Registers-1">5.8.1 Setting Registers</h4>
+<a class="index-entry-id" id="index-setting-registers-_0028nr_002c-_005cR_0029"></a>
+<a class="index-entry-id" id="index-registers_002c-setting-_0028nr_002c-_005cR_0029"></a>
+
+<p>Define registers and update their values with the <code class="code">nr</code> request or
+the <code class="code">\R</code> escape sequence.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enr-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">ident value</var><a class="copiable-link" href='#index-_002enr-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nr-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cR_0027ident-value_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\R<code class="code">'</code></code><span class="r"><i class="slanted">ident value</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cR_0027ident-value_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cR"></a>
+<p>Set register <var class="var">ident</var> to <var class="var">value</var>. If <var class="var">ident</var> doesn&rsquo;t exist,
+GNU <code class="code">troff</code> creates it. In the <code class="code">\R</code> escape sequence, the
+delimiter need not be a neutral apostrophe; see <a class="ref" href="#Delimiters">Delimiters</a>. It
+also does not produce an input token in GNU <code class="code">troff</code>. See <a class="xref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a (((17 + (3 * 4))) % 4)
+\n[a]
+.\R'a (((17 + (3 * 4))) % 4)'
+\n[a]
+ &rArr; 1 1
+</pre></div></div>
+
+<p>(Later, we will discuss additional forms of <code class="code">nr</code> and <code class="code">\R</code> that
+can change a register&rsquo;s value after it is dereferenced but before it is
+interpolated. See <a class="xref" href="#Auto_002dincrement">Auto-increment</a>.)
+</p>
+<p>The complete transparency of <code class="code">\R</code> can cause surprising effects if
+you use registers like <code class="code">.k</code>, which get evaluated at the time they
+are accessed.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 1.6i
+.
+aaa bbb ccc ddd eee fff ggg hhh\R':k \n[.k]'
+.tm :k == \n[:k]
+ &rArr; :k == 126950
+.
+.br
+.
+aaa bbb ccc ddd eee fff ggg hhh\h'0'\R':k \n[.k]'
+.tm :k == \n[:k]
+ &rArr; :k == 15000
+</pre></div></div>
+
+<p>If you process this with the PostScript device (<code class="code">-Tps</code>), there will
+be a line break eventually after <code class="code">ggg</code> in both input lines.
+However, after processing the space after <code class="code">ggg</code>, the partially
+collected line is not overfull yet, so GNU <code class="code">troff</code> continues to
+collect input until it sees the space (or in this case, the newline)
+after <code class="code">hhh</code>. At this point, the line is longer than the line
+length, and the line gets broken.
+</p>
+<p>In the first input line, since the <code class="code">\R</code> escape sequence leaves no
+traces, the check for the overfull line hasn&rsquo;t been done yet at the
+point where <code class="code">\R</code> gets handled, and you get a value for the
+<code class="code">.k</code> register that is even greater than the current line length.
+</p>
+<p>In the second input line, the insertion of <code class="code">\h'0'</code> to cause a
+zero-width motion forces GNU <code class="code">troff</code> to check the line length,
+which in turn causes the start of a new output line. Now <code class="code">.k</code>
+returns the expected value.
+</p></dd></dl>
+
+<p><code class="code">nr</code> and <code class="code">\R</code> each have two additional special forms to
+increment or decrement a register.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enr-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">ident <code class="t">+</code><span class="r"><i class="slanted">value</i></span></var><a class="copiable-link" href='#index-_002enr-2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nr-2"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002enr-3"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">ident <code class="t">-</code><span class="r"><i class="slanted">value</i></span></var><a class="copiable-link" href='#index-_002enr-3'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cR_0027ident-_002bvalue_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\R<code class="code">'</code></code><span class="r"><i class="slanted">ident <code class="t">+</code>value</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cR_0027ident-_002bvalue_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cR-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cR_0027ident-_002dvalue_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\R<code class="code">'</code></code><span class="r"><i class="slanted">ident <code class="t">-</code>value</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cR_0027ident-_002dvalue_0027'> &para;</a></span></dt>
+<dd><p>Increment (decrement) register <var class="var">ident</var> by <var class="var">value</var>. In the
+<code class="code">\R</code> escape sequence, the delimiter need not be a neutral
+apostrophe; see <a class="ref" href="#Delimiters">Delimiters</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 1
+.nr a +1
+\na
+ &rArr; 2
+</pre></div></div>
+
+<a class="index-entry-id" id="index-negating-register-values"></a>
+<p>A leading minus sign in <var class="var">value</var> is always interpreted as a
+decrementation operator, not an algebraic sign. To assign a register a
+negative value or the negated value of another register, you can
+force GNU <code class="code">troff</code> to interpret &lsquo;<samp class="samp">-</samp>&rsquo; as a negation or minus,
+rather than decrementation, operator: enclose it with its operand in
+parentheses or subtract it from zero.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 7
+.nr b 3
+.nr a -\nb
+\na
+ &rArr; 4
+.nr a (-\nb)
+\na
+ &rArr; -3
+.nr a 0-\nb
+\na
+ &rArr; -3
+</pre></div></div>
+
+<p>If a register&rsquo;s prior value does not exist (the register was undefined),
+an increment or decrement is applied as if to&nbsp;0.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002err"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rr</code></strong> <var class="def-var-arguments">ident</var><a class="copiable-link" href='#index-_002err'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rr"></a>
+<a class="index-entry-id" id="index-removing-a-register-_0028rr_0029"></a>
+<a class="index-entry-id" id="index-register_002c-removing-_0028rr_0029"></a>
+<p>Remove register <var class="var">ident</var>. If <var class="var">ident</var> doesn&rsquo;t exist, the request
+is ignored. Technically, only the name is removed; the register&rsquo;s
+contents are still accessible under aliases created with <code class="code">aln</code>, if
+any.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ernn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rnn</code></strong> <var class="def-var-arguments">ident1 ident2</var><a class="copiable-link" href='#index-_002ernn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rnn"></a>
+<a class="index-entry-id" id="index-renaming-a-register-_0028rnn_0029"></a>
+<a class="index-entry-id" id="index-register_002c-renaming-_0028rnn_0029"></a>
+<p>Rename register <var class="var">ident1</var> to <var class="var">ident2</var>. If <var class="var">ident1</var> doesn&rsquo;t
+exist, the request is ignored. Renaming a built-in register does not
+otherwise alter its properties.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ealn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.aln</code></strong> <var class="def-var-arguments">new old</var><a class="copiable-link" href='#index-_002ealn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-aln"></a>
+<a class="index-entry-id" id="index-alias_002c-register_002c-creating-_0028aln_0029"></a>
+<a class="index-entry-id" id="index-creating-alias-for-register-_0028aln_0029"></a>
+<a class="index-entry-id" id="index-register_002c-creating-alias-for-_0028aln_0029"></a>
+<p>Create an alias <var class="var">new</var> for an existing register <var class="var">old</var>, causing
+the names to refer to the same stored object. If <var class="var">old</var> is
+undefined, a warning in category &lsquo;<samp class="samp">reg</samp>&rsquo; is produced and the request
+is ignored. See <a class="xref" href="#Warnings">Warnings</a>, for information about the enablement and
+suppression of warnings.
+</p>
+<a class="index-entry-id" id="index-alias_002c-register_002c-removing-_0028rr_0029"></a>
+<a class="index-entry-id" id="index-removing-alias-for-register-_0028rr_0029"></a>
+<a class="index-entry-id" id="index-register_002c-removing-alias-for-_0028rr_0029"></a>
+<p>To remove a register alias, invoke <code class="code">rr</code> on its name. A register&rsquo;s
+contents do not become inaccessible until it has no more names.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Interpolating-Registers">
+<div class="nav-panel">
+<p>
+Next: <a href="#Auto_002dincrement" accesskey="n" rel="next">Auto-increment</a>, Previous: <a href="#Setting-Registers" accesskey="p" rel="prev">Setting Registers</a>, Up: <a href="#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Interpolating-Registers-1">5.8.2 Interpolating Registers</h4>
+<a class="index-entry-id" id="index-interpolating-registers-_0028_005cn_0029"></a>
+<a class="index-entry-id" id="index-registers_002c-interpolating-_0028_005cn_0029"></a>
+
+<p>Register contents are interpolated with the <code class="code">\n</code> escape sequence.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cni"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n</code><span class="r"><i class="slanted">i</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cni'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cn"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_0028id"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n(</code><span class="r"><i class="slanted">id</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_0028id'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005bident_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n[</code><span class="r"><i class="slanted">ident</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cn_005bident_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nested-assignments"></a>
+<a class="index-entry-id" id="index-assignments_002c-nested"></a>
+<a class="index-entry-id" id="index-indirect-assignments"></a>
+<a class="index-entry-id" id="index-assignments_002c-indirect"></a>
+<p>Interpolate register with name <var class="var">ident</var> (one-character
+name&nbsp;<var class="var">i</var>, two-character name <var class="var">id</var>). <code class="code">\n</code> is
+interpreted even in copy mode (see <a class="pxref" href="#Copy-Mode">Copy Mode</a>). If the register is
+undefined, it is created and assigned a value of&nbsp;&lsquo;<samp class="samp">0</samp>&rsquo;, that
+value is interpolated, and a warning in category &lsquo;<samp class="samp">reg</samp>&rsquo; is emitted.
+See <a class="xref" href="#Warnings">Warnings</a>, for information about the enablement and suppression of
+warnings.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 5
+.nr as \na+\na
+\n(as
+ &rArr; 10
+</pre></div></div>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a1 5
+.nr ab 6
+.ds str b
+.ds num 1
+\n[a\n[num]]
+ &rArr; 5
+\n[a\*[str]]
+ &rArr; 6
+</pre></div></div>
+</dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Auto_002dincrement">
+<div class="nav-panel">
+<p>
+Next: <a href="#Assigning-Register-Formats" accesskey="n" rel="next">Assigning Register Formats</a>, Previous: <a href="#Interpolating-Registers" accesskey="p" rel="prev">Interpolating Registers</a>, Up: <a href="#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Auto_002dincrement-1">5.8.3 Auto-increment</h4>
+<a class="index-entry-id" id="index-auto_002dincrementation-of-a-register"></a>
+<a class="index-entry-id" id="index-incrementation_002c-automatic_002c-of-a-register"></a>
+<a class="index-entry-id" id="index-decrementation_002c-automatic_002c-of-a-register"></a>
+
+<p>Registers can also be incremented or decremented by a configured amount
+at the time they are interpolated. The value of the increment is
+specified with a third argument to the <code class="code">nr</code> request, and a special
+interpolation syntax is used to alter and then retrieve the register&rsquo;s
+value. Together, these features are called
+<em class="dfn">auto-increment</em>.<a class="footnote" id="DOCF51" href="#FOOT51"><sup>51</sup></a>
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enr-4"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">ident value incr</var><a class="copiable-link" href='#index-_002enr-4'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nr-3"></a>
+<a class="index-entry-id" id="index-_005cR_002c-difference-from-nr"></a>
+<p>Set register <var class="var">ident</var> to <var class="var">value</var> and its auto-incrementation
+amount to to <var class="var">incr</var>. The <code class="code">\R</code> escape sequence doesn&rsquo;t support
+an <var class="var">incr</var> argument.
+</p></dd></dl>
+
+<p>Auto-incrementation is not <em class="emph">completely</em> automatic; the <code class="code">\n</code>
+escape sequence in its basic form never alters the value of a register.
+To apply auto-incrementation to a register, interpolate it with
+&lsquo;<samp class="samp">\n±</samp>&rsquo;.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_002bi"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n+</code><span class="r"><i class="slanted">i</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_002bi'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cn-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_002di"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n-</code><span class="r"><i class="slanted">i</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_002di'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_002b_0028id"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n+(</code><span class="r"><i class="slanted">id</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_002b_0028id'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_002d_0028id"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n-(</code><span class="r"><i class="slanted">id</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_002d_0028id'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_002b_005bident_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n+[</code><span class="r"><i class="slanted">ident</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cn_002b_005bident_005d'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_002d_005bident_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n-[</code><span class="r"><i class="slanted">ident</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cn_002d_005bident_005d'> &para;</a></span></dt>
+<dd><p>Increment or decrement <var class="var">ident</var> (one-character
+name&nbsp;<var class="var">i</var>, two-character name <var class="var">id</var>) by the register&rsquo;s
+auto-incrementation value and then interpolate the new register value.
+If <var class="var">ident</var> has no auto-incrementation value, interpolate as with
+<code class="code">\n</code>.
+</p></dd></dl>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 0 1
+.nr xx 0 5
+.nr foo 0 -2
+\n+a, \n+a, \n+a, \n+a, \n+a
+.br
+\n-(xx, \n-(xx, \n-(xx, \n-(xx, \n-(xx
+.br
+\n+[foo], \n+[foo], \n+[foo], \n+[foo], \n+[foo]
+ &rArr; 1, 2, 3, 4, 5
+ &rArr; -5, -10, -15, -20, -25
+ &rArr; -2, -4, -6, -8, -10
+</pre></div></div>
+
+<a class="index-entry-id" id="index-increment-value-without-changing-the-register"></a>
+<a class="index-entry-id" id="index-value_002c-incrementing-without-changing-the-register"></a>
+<p>To change the increment value without changing the value of a register,
+assign the register&rsquo;s value to itself by interpolating it, and specify
+the desired increment normally. Apply an increment of &lsquo;<samp class="samp">0</samp>&rsquo; to
+disable auto-incrementation of the register.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Assigning-Register-Formats">
+<div class="nav-panel">
+<p>
+Next: <a href="#Built_002din-Registers" accesskey="n" rel="next">Built-in Registers</a>, Previous: <a href="#Auto_002dincrement" accesskey="p" rel="prev">Auto-increment</a>, Up: <a href="#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Assigning-Register-Formats-1">5.8.4 Assigning Register Formats</h4>
+<a class="index-entry-id" id="index-assign-number-format-to-register-_0028af_0029"></a>
+<a class="index-entry-id" id="index-number-formats_002c-assigning-to-register-_0028af_0029"></a>
+<a class="index-entry-id" id="index-register_002c-assigning-number-format-to-_0028af_0029"></a>
+
+<p>A writable register&rsquo;s value can be interpolated in several number
+formats. By default, conventional Arabic numerals are used.
+Other formats see use in sectioning and outlining schemes and
+alternative page numbering arrangements.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eaf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.af</code></strong> <var class="def-var-arguments">reg fmt</var><a class="copiable-link" href='#index-_002eaf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-af"></a>
+<p>Use number format <var class="var">fmt</var> when interpolating register <var class="var">reg</var>.
+Valid number formats are as follows.
+</p>
+<dl class="table">
+<dt><code class="code">0<span class="r">&hellip;</span></code></dt>
+<dd><p>Arabic numerals 0, 1, 2, and so on.
+Any decimal digit is equivalent to &lsquo;<samp class="samp">0</samp>&rsquo;; the formatter merely counts
+the digits specified. Multiple Arabic numerals in <var class="var">fmt</var> cause
+interpolations to be zero-padded on the left if necessary to at least as
+many digits as specified (interpolations never truncate a register
+value). A register with format &lsquo;<samp class="samp">00</samp>&rsquo; interpolates values 1, 2, 3 as
+&lsquo;<samp class="samp">01</samp>&rsquo;, &lsquo;<samp class="samp">02</samp>&rsquo;, &lsquo;<samp class="samp">03</samp>&rsquo;. The default format for all writable
+registers is &lsquo;<samp class="samp">0</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-Roman-numerals'><span><code class="code">I</code><a class="copiable-link" href='#index-Roman-numerals'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-numerals_002c-Roman"></a>
+<p>Uppercase Roman numerals: 0, I, II, III, IV,&nbsp;<small class="enddots">...</small>
+</p>
+</dd>
+<dt><code class="code">i</code></dt>
+<dd><p>Lowercase Roman numerals: 0, i, ii, iii, iv,&nbsp;<small class="enddots">...</small>
+</p>
+</dd>
+<dt><code class="code">A</code></dt>
+<dd><p>Uppercase letters: 0, A, B, C, &hellip;,&nbsp;Z, AA, AB,&nbsp;<small class="enddots">...</small>
+</p>
+</dd>
+<dt><code class="code">a</code></dt>
+<dd><p>Lowercase letters: 0, a, b, c, &hellip;,&nbsp;z, aa, ab,&nbsp;<small class="enddots">...</small>
+</p></dd>
+</dl>
+
+<p>Omitting <var class="var">fmt</var> causes a warning in category &lsquo;<samp class="samp">missing</samp>&rsquo;.
+See <a class="xref" href="#Warnings">Warnings</a>, for information about the enablement and suppression of
+warnings. Specifying an unrecognized format is an error.
+</p>
+<p>Zero values are interpolated as &lsquo;<samp class="samp">0</samp>&rsquo; in non-Arabic formats.
+Negative quantities are prefixed with &lsquo;<samp class="samp">-</samp>&rsquo; irrespective of format.
+In Arabic formats, the sign supplements the field width. If <var class="var">reg</var>
+doesn&rsquo;t exist, it is created with a zero value.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 10
+.af a 0 \&quot; the default format
+\na,
+.af a I
+\na,
+.af a 321
+.nr a (-\na)
+\na,
+.af a a
+\na
+ &rArr; 10, X, -010, -j
+</pre></div></div>
+
+<a class="index-entry-id" id="index-Roman-numerals_002c-extrema-_0028maximum-and-minimum_0029"></a>
+<a class="index-entry-id" id="index-extreme-values-representable-with-Roman-numerals"></a>
+<a class="index-entry-id" id="index-maximum-value-representable-with-Roman-numerals"></a>
+<a class="index-entry-id" id="index-minimum-value-representable-with-Roman-numerals"></a>
+<p>The representable extrema in the &lsquo;<samp class="samp">i</samp>&rsquo; and &lsquo;<samp class="samp">I</samp>&rsquo; formats
+correspond to Arabic ±39,999. GNU <code class="code">troff</code> uses &lsquo;<samp class="samp">w</samp>&rsquo; and
+&lsquo;<samp class="samp">z</samp>&rsquo; to represent 5,000 and 10,000 in Roman numerals, respectively,
+following the convention of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>&mdash;currently, the
+correct glyphs for Roman numerals five thousand (<code class="code">U+2181</code>) and ten
+thousand (<code class="code">U+2182</code>) are not used.
+</p>
+<a class="index-entry-id" id="index-read_002donly-register_002c-changing-format"></a>
+<a class="index-entry-id" id="index-changing-format_002c-and-read_002donly-registers"></a>
+<p>Assigning the format of a read-only register is an error. Instead, copy
+the read-only register&rsquo;s value to, and assign the format of, a writable
+register.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cgr"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\g</code><span class="r"><i class="slanted">r</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cgr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cg"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cg_0028rg"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\g(</code><span class="r"><i class="slanted">rg</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cg_0028rg'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cg_005breg_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\g[</code><span class="r"><i class="slanted">reg</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cg_005breg_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-format-of-register-_0028_005cg_0029"></a>
+<a class="index-entry-id" id="index-register_002c-format-_0028_005cg_0029"></a>
+<p>Interpolate the format of the register <var class="var">reg</var> (one-character
+name&nbsp;<var class="var">r</var>, two-character name <var class="var">rg</var>). Zeroes represent
+Arabic formats. If <var class="var">reg</var> is not defined, <var class="var">reg</var> is not created
+and nothing is interpolated. <code class="code">\g</code> is interpreted even in copy mode
+(see <a class="pxref" href="#Copy-Mode">Copy Mode</a>).
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-register-format_002c-in-expressions"></a>
+<a class="index-entry-id" id="index-expressions_002c-and-register-format"></a>
+<p>GNU <code class="code">troff</code> interprets only Arabic numerals. The Roman numeral or
+alphabetic formats cannot be used as operands to arithmetic operators in
+expressions (see <a class="pxref" href="#Numeric-Expressions">Numeric Expressions</a>). For instance, it may be
+desirable to test the page number independently of its format.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.af % i \&quot; front matter
+.de header-trap
+. \&quot; To test the page number, we need it in Arabic.
+. ds saved-page-number-format \\g%\&quot;
+. af % 0
+. nr page-number-in-decimal \\n%
+. af % \\*[saved-page-number-format]
+. ie \\n[page-number-in-decimal]=1 .do-first-page-stuff
+. el \{\
+. ie o .do-odd-numbered-page-stuff
+. el .do-even-numbered-page-stuff
+. \}
+. rm saved-page-number-format
+..
+.wh 0 header-trap
+</pre></div></div>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Built_002din-Registers">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Assigning-Register-Formats" accesskey="p" rel="prev">Assigning Register Formats</a>, Up: <a href="#Registers" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Built_002din-Registers-1">5.8.5 Built-in Registers</h4>
+<a class="index-entry-id" id="index-built_002din-registers"></a>
+<a class="index-entry-id" id="index-registers_002c-built_002din"></a>
+
+<p>Predefined registers whose identifiers start with a dot are read-only.
+Many are Boolean-valued, interpolating a true or false value testable
+with the <code class="code">if</code>, <code class="code">ie</code>, or <code class="code">while</code> requests. Some read-only
+registers are string-valued, meaning that they interpolate text.
+</p>
+<a class="index-entry-id" id="index-removing-a-built_002din-register"></a>
+<a class="index-entry-id" id="index-register_002c-built_002din_002c-removing"></a>
+<a class="index-entry-id" id="index-built_002din-register_002c-removing"></a>
+<p><strong class="strong">Caution:</strong> Built-in registers are subject to removal like
+others; once removed, they can be recreated only as normal writable
+registers and will not reflect formatter state.
+</p>
+<p>A register name (without the dot) is often associated with a request of
+the same name. A complete listing of all built-in registers can be
+found in <a class="ref" href="#Register-Index">Register Index</a>.
+</p>
+<p>We present here a few built-in registers that are not described
+elsewhere in this manual; they have to do with invariant properties of
+GNU <code class="code">troff</code>, or obtain information about the formatter&rsquo;s
+command-line options, processing progress, or the operating environment.
+</p>
+<dl class="table">
+<dt id='index-_002eA'><span><code class="code">\n[.A]</code><a class="copiable-link" href='#index-_002eA'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-approximation-output-register-_0028_002eA_0029"></a>
+<a class="index-entry-id" id="index-plain-text-approximation-output-register-_0028_002eA_0029-1"></a>
+<p>Approximate output is being formatted (Boolean-valued); see
+<code class="command">groff</code> <samp class="option">-a</samp> option (<a class="ref" href="#Groff-Options">Options</a>).
+</p>
+</dd>
+<dt id='index-c_002e'><span><code class="code">\n[.c]</code><a class="copiable-link" href='#index-c_002e'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ec"></a>
+</dd>
+<dt><code class="code">\n[c.]</code></dt>
+<dd><a class="index-entry-id" id="index-input-line-number-register-_0028_002ec_002c-c_002e_0029"></a>
+<a class="index-entry-id" id="index-line-number_002c-input_002c-register-_0028_002ec_002c-c_002e_0029"></a>
+<p>Input line number. &lsquo;<samp class="samp">c.</samp>&rsquo; is a writable synonym,
+affecting subsequent interpolations of both &lsquo;<samp class="samp">.c</samp>&rsquo; and &lsquo;<samp class="samp">c.</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-current-input-file-name-register-_0028_002eF_0029'><span><code class="code">\n[.F]</code><a class="copiable-link" href='#index-current-input-file-name-register-_0028_002eF_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-input-file-name_002c-current_002c-register-_0028_002eF_0029"></a>
+<a class="index-entry-id" id="index-_002eF"></a>
+<p>Name of input file (string-valued).
+</p>
+</dd>
+<dt id='index-_002eg'><span><code class="code">\n[.g]</code><a class="copiable-link" href='#index-_002eg'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-GNU-troff_002c-identification-register-_0028_002eg_0029"></a>
+<a class="index-entry-id" id="index-GNU_002dspecific-register-_0028_002eg_0029"></a>
+<p>Always true in GNU <code class="code">troff</code> (Boolean-valued). Documents can use
+this to ask the formatter if it claims <code class="code">groff</code> compatibility.
+</p>
+</dd>
+<dt id='index-_002eP'><span><code class="code">\n[.P]</code><a class="copiable-link" href='#index-_002eP'> &para;</a></span></dt>
+<dd><p>Output page selection status (Boolean-valued); see <code class="command">groff</code>
+<samp class="option">-o</samp> option (<a class="ref" href="#Groff-Options">Options</a>).
+</p>
+</dd>
+<dt id='index-number-of-registers-register-_0028_002eR_0029'><span><code class="code">\n[.R]</code><a class="copiable-link" href='#index-number-of-registers-register-_0028_002eR_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-registers_002c-number-of_002c-register-_0028_002eR_0029"></a>
+<a class="index-entry-id" id="index-_002eR-2"></a>
+<p>Count of available unused registers; always 10,000 in GNU
+<code class="code">troff</code>.<a class="footnote" id="DOCF52" href="#FOOT52"><sup>52</sup></a>
+</p>
+</dd>
+<dt id='index-_002eT-2'><span><code class="code">\n[.T]</code><a class="copiable-link" href='#index-_002eT-2'> &para;</a></span></dt>
+<dd><p>Indicator of output device selection (Boolean-valued); see
+<code class="command">groff</code> <samp class="option">-T</samp> option (<a class="ref" href="#Groff-Options">Options</a>).
+</p>
+</dd>
+<dt id='index-safer-mode-2'><span><code class="code">\n[.U]</code><a class="copiable-link" href='#index-safer-mode-2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-mode_002c-safer-2"></a>
+<a class="index-entry-id" id="index-unsafe-mode-2"></a>
+<a class="index-entry-id" id="index-mode_002c-unsafe-2"></a>
+<a class="index-entry-id" id="index-_002eU"></a>
+<p>Unsafe mode enablement status (Boolean-valued); see <code class="command">groff</code>
+<samp class="option">-U</samp> option (<a class="ref" href="#Groff-Options">Options</a>).
+</p>
+</dd>
+<dt id='index-_002ex'><span><code class="code">\n[.x]</code><a class="copiable-link" href='#index-_002ex'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-major-version-number-register-_0028_002ex_0029"></a>
+<a class="index-entry-id" id="index-version-number_002c-major_002c-register-_0028_002ex_0029"></a>
+<p>Major version number of the running GNU <code class="code">troff</code> formatter. For
+example, if the version number is 1.23.0, then <code class="code">.x</code>
+contains&nbsp;&lsquo;<samp class="samp">1</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-_002ey'><span><code class="code">\n[.y]</code><a class="copiable-link" href='#index-_002ey'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-minor-version-number-register-_0028_002ey_0029"></a>
+<a class="index-entry-id" id="index-version-number_002c-minor_002c-register-_0028_002ey_0029"></a>
+<p>Minor version number of the running GNU <code class="code">troff</code> formatter. For
+example, if the version number is 1.23.0, then <code class="code">.y</code>
+contains&nbsp;&lsquo;<samp class="samp">23</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-_002eY'><span><code class="code">\n[.Y]</code><a class="copiable-link" href='#index-_002eY'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-revision-number-register-_0028_002eY_0029"></a>
+<p>Revision number of the running GNU <code class="code">troff</code> formatter. For example,
+if the version number is 1.23.0, then <code class="code">.Y</code> contains&nbsp;&lsquo;<samp class="samp">0</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-_0024_0024'><span><code class="code">\n[$$]</code><a class="copiable-link" href='#index-_0024_0024'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-process-ID-of-GNU-troff-register-_0028_0024_0024_0029"></a>
+<a class="index-entry-id" id="index-PID-of-GNU-troff-register-_0028_0024_0024_0029"></a>
+<a class="index-entry-id" id="index-GNU-troff_002c-process-ID-register-_0028_0024_0024_0029"></a>
+<a class="index-entry-id" id="index-GNU-troff_002c-PID-register-_0028_0024_0024_0029"></a>
+<p>Process identifier (PID) of the GNU <code class="code">troff</code> program in its
+operating environment.
+</p></dd>
+</dl>
+
+<p>Date- and time-related registers are set per the local time as
+determined by <cite class="cite">localtime<span class="r">(3)</span></cite> when the formatter launches. This
+initialization can be overridden by <code class="env">SOURCE_DATE_EPOCH</code> and
+<code class="env">TZ</code>; see <a class="ref" href="#Environment">Environment</a>.
+</p>
+<dl class="table">
+<dt id='index-seconds_002c-current-time-_0028seconds_0029'><span><code class="code">\n[seconds]</code><a class="copiable-link" href='#index-seconds_002c-current-time-_0028seconds_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-time_002c-current_002c-seconds-_0028seconds_0029"></a>
+<a class="index-entry-id" id="index-current-time_002c-seconds-_0028seconds_0029"></a>
+<a class="index-entry-id" id="index-seconds"></a>
+<p>Count of seconds elapsed in the minute (0&ndash;60). </p>
+</dd>
+<dt id='index-minutes_002c-current-time-_0028minutes_0029'><span><code class="code">\n[minutes]</code><a class="copiable-link" href='#index-minutes_002c-current-time-_0028minutes_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-time_002c-current_002c-minutes-_0028minutes_0029"></a>
+<a class="index-entry-id" id="index-current-time_002c-minutes-_0028minutes_0029"></a>
+<a class="index-entry-id" id="index-minutes"></a>
+<p>Count of minutes elapsed in the hour (0&ndash;59).
+</p>
+</dd>
+<dt id='index-hours_002c-current-time-_0028hours_0029'><span><code class="code">\n[hours]</code><a class="copiable-link" href='#index-hours_002c-current-time-_0028hours_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-time_002c-current_002c-hours-_0028hours_0029"></a>
+<a class="index-entry-id" id="index-current-time_002c-hours-_0028hours_0029"></a>
+<a class="index-entry-id" id="index-hours"></a>
+<p>Count of hours elapsed since midnight (0&ndash;23).
+</p>
+</dd>
+<dt id='index-day-of-the-week-register-_0028dw_0029'><span><code class="code">\n[dw]</code><a class="copiable-link" href='#index-day-of-the-week-register-_0028dw_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-date_002c-day-of-the-week-register-_0028dw_0029"></a>
+<a class="index-entry-id" id="index-dw"></a>
+<p>Day of the week (1&ndash;7; 1 is Sunday).
+</p>
+</dd>
+<dt id='index-day-of-the-month-register-_0028dy_0029'><span><code class="code">\n[dy]</code><a class="copiable-link" href='#index-day-of-the-month-register-_0028dy_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-date_002c-day-of-the-month-register-_0028dy_0029"></a>
+<a class="index-entry-id" id="index-dy"></a>
+<p>Day of the month (1&ndash;31).
+</p>
+</dd>
+<dt id='index-month-of-the-year-register-_0028mo_0029'><span><code class="code">\n[mo]</code><a class="copiable-link" href='#index-month-of-the-year-register-_0028mo_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-date_002c-month-of-the-year-register-_0028mo_0029"></a>
+<a class="index-entry-id" id="index-mo"></a>
+<p>Month of the year (1&ndash;12).
+</p>
+</dd>
+<dt id='index-date_002c-year-register-_0028year_002c-yr_0029'><span><code class="code">\n[year]</code><a class="copiable-link" href='#index-date_002c-year-register-_0028year_002c-yr_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-year_002c-current_002c-register-_0028year_002c-yr_0029"></a>
+<a class="index-entry-id" id="index-year"></a>
+<p>Gregorian year.
+</p>
+<a class="index-entry-id" id="index-CSTR-_002354-errata"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-yr-register"></a>
+</dd>
+<dt id='index-yr'><span><code class="code">\n[yr]</code><a class="copiable-link" href='#index-yr'> &para;</a></span></dt>
+<dd><p>Gregorian year minus&nbsp;1900. This register is incorrectly documented
+in the <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> manual as storing the last two digits
+of the current year. That claim stopped being true in 2000. Old
+<code class="code">troff</code> input that looks like:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">'\&quot; The year number is a surprise after 1999.
+This document was formatted in 19\n(yr.
+</pre></div></div>
+
+<p>can be corrected to:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">This document was formatted in \n[year].
+</pre></div></div>
+
+<p>or, for portability across many <code class="code">roff</code> programs, to the following.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr y4 1900+\n(yr
+This document was formatted in \n(y4.
+</pre></div></div>
+</dd>
+</dl>
+
+
+
+<hr>
+</div>
+</div>
+<div class="section-level-extent" id="Manipulating-Filling-and-Adjustment">
+<div class="nav-panel">
+<p>
+Next: <a href="#Manipulating-Hyphenation" accesskey="n" rel="next">Manipulating Hyphenation</a>, Previous: <a href="#Registers" accesskey="p" rel="prev">Registers</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Manipulating-Filling-and-Adjustment-1">5.9 Manipulating Filling and Adjustment</h3>
+<a class="index-entry-id" id="index-manipulating-filling-and-adjustment"></a>
+<a class="index-entry-id" id="index-filling-and-adjustment_002c-manipulating"></a>
+<a class="index-entry-id" id="index-adjustment-and-filling_002c-manipulating"></a>
+<a class="index-entry-id" id="index-justifying-text"></a>
+<a class="index-entry-id" id="index-text_002c-justifying"></a>
+
+<a class="index-entry-id" id="index-break-1"></a>
+<a class="index-entry-id" id="index-line-break"></a>
+<a class="index-entry-id" id="index-bp-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-ce-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-cf-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-fi-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-fl-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-in-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-nf-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-rj-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-sp-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-ti-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-trf-request_002c-causing-implicit-break"></a>
+<p>When an output line is pending (see below), a break moves the drawing
+position to the beginning of the next text baseline, interrupting
+filling. Various ways of causing breaks were shown in <a class="ref" href="#Breaking">Breaking</a>.
+The <code class="code">br</code> request likewise causes a break. Several other requests
+imply breaks: <code class="code">bp</code>, <code class="code">ce</code>, <code class="code">cf</code>, <code class="code">fi</code>, <code class="code">fl</code>,
+<code class="code">in</code>, <code class="code">nf</code>, <code class="code">rj</code>, <code class="code">sp</code>, <code class="code">ti</code>, and <code class="code">trf</code>.
+If the no-break control character is used with any of these requests,
+GNU <code class="code">troff</code> suppresses the break; instead the requested operation
+takes effect at the next break. &lsquo;<samp class="samp">'br</samp>&rsquo; does nothing.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 55n
+This line is normally filled and adjusted.
+.br
+A line's alignment is decided
+'ce \&quot; Center the next input line (no break).
+when it is output.
+This line returns to normal filling and adjustment.
+ &rArr; This line is normally filled and adjusted.
+ &rArr; A line's alignment is decided when it is output.
+ &rArr; This line returns to normal filling and adjustment.
+</pre></div></div>
+
+<a class="index-entry-id" id="index-pending-output-line"></a>
+<a class="index-entry-id" id="index-partially-collected-line"></a>
+<a class="index-entry-id" id="index-output-line-properties"></a>
+<a class="index-entry-id" id="index-properties-of-output-lines"></a>
+<p>Output line properties like page offset, indentation, adjustment, and
+even the location of its text baseline, are not determined until the
+line has been broken. An output line is said to be <em class="dfn">pending</em> if
+some input has been collected but an output line corresponding to it has
+not yet been written; such an output line is also termed <em class="dfn">partially
+collected</em>. If no output line is pending, it is as if a break has
+already happened; additional breaks, whether explicit or implicit, have
+no effect. If the vertical drawing position is negative&mdash;as it is when
+the formatter starts up&mdash;a break starts a new page (even if no output
+line is pending) unless an end-of-input macro is being interpreted.
+See <a class="xref" href="#End_002dof_002dinput-Traps">End-of-input Traps</a>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.br</code></strong><a class="copiable-link" href='#index-_002ebr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-br"></a>
+<p>Break the line: emit any pending output line without adjustment.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">foo bar
+.br
+baz
+'br
+qux
+ &rArr; foo bar
+ &rArr; baz qux
+</pre></div></div>
+</dd></dl>
+
+<p>Sometimes you want to prevent a break within a phrase or between a
+quantity and its units.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_007e-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\~</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_007e-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_007e"></a>
+<a class="index-entry-id" id="index-unbreakable-space-_0028_005c_007e_0029"></a>
+<a class="index-entry-id" id="index-space_002c-unbreakable-_0028_005c_007e_0029"></a>
+<p>Insert an unbreakable space that is adjustable like an ordinary space.
+It is discarded from the end of an output line if a break is forced.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Set the output speed to\~1.
+There are 1,024\~bytes in 1\~KiB.
+J.\~F.\~Ossanna wrote the original CSTR\~#54.
+</pre></div></div>
+</dd></dl>
+
+<p>By default, GNU <code class="code">troff</code> fills text and adjusts it to reach the
+output line length. The <code class="code">nf</code> request disables filling; the
+<code class="code">fi</code> request reënables it.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efi"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fi</code></strong><a class="copiable-link" href='#index-_002efi'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fi"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eu_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.u]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eu_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eu"></a>
+<a class="index-entry-id" id="index-filling-of-output_002c-enabling-_0028fi_0029"></a>
+<a class="index-entry-id" id="index-output_002c-filling_002c-enablement-of-_0028fi_0029"></a>
+<a class="index-entry-id" id="index-fill-mode-_0028fi_0029_002c-enabling"></a>
+<a class="index-entry-id" id="index-mode_002c-fill-_0028fi_0029_002c-enabling"></a>
+<p>Enable filling of output lines; a pending output line is broken. The
+read-only register <code class="code">.u</code> is set to&nbsp;1. The filling enablement
+status, sometimes called <em class="dfn">fill mode</em>, is associated with the
+environment (see <a class="pxref" href="#Environments">Environments</a>). See <a class="xref" href="#Line-Continuation">Line Continuation</a>, for
+interaction with the <code class="code">\c</code> escape sequence.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nf</code></strong><a class="copiable-link" href='#index-_002enf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nf"></a>
+<a class="index-entry-id" id="index-filling-of-output_002c-disabling-_0028nf_0029"></a>
+<a class="index-entry-id" id="index-output_002c-filling_002c-disablement-of-_0028nf_0029"></a>
+<a class="index-entry-id" id="index-no_002dfill-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-no_002dfill"></a>
+<a class="index-entry-id" id="index-fill-mode_002c-disabling"></a>
+<a class="index-entry-id" id="index-mode_002c-fill_002c-disabling"></a>
+<p>Disable filling of output lines: the output line length (see <a class="pxref" href="#Line-Layout">Line Layout</a>) is ignored and output lines are broken where the input lines
+are. A pending output line is broken and adjustment is suppressed. The
+read-only register <code class="code">.u</code> is set to&nbsp;0. The filling enablement
+status is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). See
+<a class="ref" href="#Line-Continuation">Line Continuation</a>, for interaction with the <code class="code">\c</code> escape
+sequence.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ead"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ad</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">mode</i></span>]</var><a class="copiable-link" href='#index-_002ead'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ad"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ej_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.j]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ej_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ej"></a>
+<p>Enable output line adjustment in <var class="var">mode</var>, taking effect when the
+pending (or next) output line is broken. Adjustment is suppressed when
+filling is. <var class="var">mode</var> can have one of the following values.
+</p>
+<dl class="table">
+<dt><code class="code">b</code></dt>
+<dt><code class="code">n</code></dt>
+<dd><p>Adjust &ldquo;normally&rdquo;: if the output line does not consume the distance
+between the indentation and the configured output line length, GNU
+<code class="code">troff</code> stretches adjustable spaces within the line until that
+length is reached. When the indentation is zero, this mode spreads the
+line to both the left and right margins. This is the GNU <code class="code">troff</code>
+default.
+</p>
+</dd>
+<dt id='index-centered-text-_0028filled_0029'><span><code class="code">c</code><a class="copiable-link" href='#index-centered-text-_0028filled_0029'> &para;</a></span></dt>
+<dd><p>Center filled text. Contrast with the <code class="code">ce</code> request, which centers
+text <em class="emph">without</em> filling it.
+</p>
+</dd>
+<dt id='index-ragged_002dright-text'><span><code class="code">l</code><a class="copiable-link" href='#index-ragged_002dright-text'> &para;</a></span></dt>
+<dd><p>Align text to the left without adjusting it.
+</p>
+</dd>
+<dt id='index-ragged_002dleft-text'><span><code class="code">r</code><a class="copiable-link" href='#index-ragged_002dleft-text'> &para;</a></span></dt>
+<dd><p>Align text to the right without adjusting it.
+</p></dd>
+</dl>
+
+<p><var class="var">mode</var> can also be a value previously stored in the <code class="code">.j</code>
+register. Using <code class="code">ad</code> without an argument is the same as &lsquo;<samp class="samp">.ad
+\n[.j]</samp>&rsquo;; unless filling is disabled, GNU <code class="code">troff</code> resumes adjusting
+lines in the same way it did before adjustment was disabled by
+invocation of the <code class="code">na</code> request.
+</p>
+<a class="index-entry-id" id="index-adjustment-mode-register-_0028_002ej_0029"></a>
+<p>The adjustment mode and enablement status are encoded in the read-only
+register <code class="code">.j</code>. These parameters are associated with the
+environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<p>The value of <code class="code">.j</code> for any adjustment mode is an implementation
+detail and should not be relied upon as a programmer&rsquo;s interface. Do
+not write logic to interpret or perform arithmetic on it.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 48n
+.de AD
+. br
+. ad \\$1
+..
+.de NA
+. br
+. na
+..
+left
+.AD r
+.nr ad \n(.j
+right
+.AD c
+center
+.NA
+left
+.AD
+center
+.AD \n(ad
+right
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; left
+ &rArr; right
+ &rArr; center
+ &rArr; left
+ &rArr; center
+ &rArr; right
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ena"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.na</code></strong><a class="copiable-link" href='#index-_002ena'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-na"></a>
+<p>Disable output line adjustment. This produces the same output as
+left-alignment, but the value of the adjustment mode register <code class="code">.j</code>
+is altered differently. The adjustment mode and enablement status are
+associated with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebrp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.brp</code></strong><a class="copiable-link" href='#index-_002ebrp'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-brp"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cp-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\p</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cp-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cp"></a>
+<p>Break, adjusting the line per the current adjustment mode. <code class="code">\p</code>
+schedules a break with adjustment at the next word boundary. The escape
+sequence is itself neither a break nor a space of any kind; it can thus
+be placed in the middle of a word to cause a break at the end of that
+word.
+</p>
+<p>Breaking with immediate adjustment can produce ugly results since GNU
+<code class="code">troff</code> doesn&rsquo;t have a sophisticated paragraph-building algorithm,
+as TeX has, for example. Instead, GNU <code class="code">troff</code> fills and adjusts
+a paragraph line by line.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 4.5i
+This is an uninteresting sentence.
+This is an uninteresting sentence.\p
+This is an uninteresting sentence.
+</pre></div></div>
+
+<p>is formatted as follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">This is an uninteresting sentence. This is
+an uninteresting sentence.
+This is an uninteresting sentence.
+</pre></div></div>
+</dd></dl>
+
+<a class="index-entry-id" id="index-productive-input-line"></a>
+<a class="index-entry-id" id="index-input-line_002c-productive"></a>
+<a class="index-entry-id" id="index-line_002c-productive-input"></a>
+<p>To clearly present the next couple of requests, we must introduce the
+concept of &ldquo;productive&rdquo; input lines. A <em class="dfn">productive input line</em> is
+one that directly produces formatted output. Text lines produce
+output,<a class="footnote" id="DOCF53" href="#FOOT53"><sup>53</sup></a> as do control
+lines containing requests like <code class="code">tl</code> or escape sequences like
+<code class="code">\D</code>. Macro calls are not <em class="emph">directly</em> productive, and thus not
+counted, but their interpolated contents can be. Empty requests, and
+requests and escape sequences that define registers or strings or alter
+the formatting environment (as with changes to the size, face, height,
+slant, or color of the type) are not productive. We will also preview
+the output line continuation escape sequence, <code class="code">\c</code>, which
+&ldquo;connects&rdquo; two input lines that would otherwise be counted separately.
+<a class="footnote" id="DOCF54" href="#FOOT54"><sup>54</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de hello
+Hello, world!
+..
+.ce \&quot; center output of next productive input line
+.
+.nr junk-reg 1
+.ft I
+Chorus: \c
+.ft
+.hello
+Went the day well?
+ &rArr; <i class="slanted">Chorus:</i> Hello, world!
+ &rArr; Went the day well?
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ece"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ce</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ece'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ce"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ece_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ce]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ece_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ece-1"></a>
+<a class="index-entry-id" id="index-centered-text-_0028unfilled_0029"></a>
+<a class="index-entry-id" id="index-centering-lines-_0028ce_0029"></a>
+<a class="index-entry-id" id="index-lines_002c-centering-_0028ce_0029"></a>
+<p>Break (unless the no-break control character is used), center the output
+of the next <var class="var">n</var> productive input lines with respect to the line
+length and indentation without filling, then break again regardless of
+the invoking control character.
+If the argument is not positive, centering is disabled. Omitting the
+argument implies an <var class="var">n</var> of &lsquo;<samp class="samp">1</samp>&rsquo;. The count of lines remaining
+to be centered is stored in the read-only register <code class="code">.ce</code> and is
+associated with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<a class="index-entry-id" id="index-ce-request_002c-difference-from-_002ead-c"></a>
+<p>While the &lsquo;<samp class="samp">.ad&nbsp;c</samp>&rsquo;<!-- /@w --> request also centers text, it fills the text
+as well.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de FR
+This is a small text fragment that shows the differences
+between the `.ce' and the `.ad c' requests.
+..
+.ll 4i
+.ce 1000
+.FR
+.ce 0
+
+.ad c
+.FR
+ &rArr; This is a small text fragment that shows
+ &rArr; the differences
+ &rArr; between the &lsquo;.ce&rsquo; and the &lsquo;.ad c&rsquo; requests.
+ &rArr;
+ &rArr; This is a small text fragment that shows
+ &rArr; the differences between the &lsquo;.ce&rsquo; and
+ &rArr; the &lsquo;.ad c&rsquo; requests.
+</pre></div></div>
+
+<p>The previous example illustrates a common idiom of turning centering on
+for a quantity of lines far in excess of what is required, and off again
+after the text to be centered. This technique relieves humans of
+counting lines for requests that take a count of input lines as an
+argument.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002erj"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rj</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002erj'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rj"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002erj_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.rj]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002erj_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002erj-1"></a>
+<a class="index-entry-id" id="index-justifying-text-_0028rj_0029"></a>
+<a class="index-entry-id" id="index-text_002c-justifying-_0028rj_0029"></a>
+<a class="index-entry-id" id="index-right_002djustifying-_0028rj_0029"></a>
+<p>Break (unless the no-break control character is used), align the output
+of the next <var class="var">n</var> productive input lines to the right margin without
+filling, then break again regardless of the control character.
+If the argument is not positive, right-alignment is disabled. Omitting
+the argument implies an <var class="var">n</var> of &lsquo;<samp class="samp">1</samp>&rsquo;. The count of lines
+remaining to be right-aligned is stored in the read-only register
+<code class="code">.rj</code> and is associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 49n
+.rj 3
+At first I hoped that such a technically unsound
+project would collapse but I soon realized it was
+doomed to success. \[em] C. A. R. Hoare
+ &rArr; At first I hoped that such a technically unsound
+ &rArr; project would collapse but I soon realized it was
+ &rArr; doomed to success. -- C. A. R. Hoare
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ess"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ss</code></strong> <var class="def-var-arguments">word-space-size [<span class="r"><i class="slanted">additional-sentence-space-size</i></span>]</var><a class="copiable-link" href='#index-_002ess'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ss"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ess_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ss]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ess_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ess-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002esss_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.sss]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002esss_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002esss"></a>
+<a class="index-entry-id" id="index-word-space-size-register-_0028_002ess_0029"></a>
+<a class="index-entry-id" id="index-size-of-word-space-register-_0028_002ess_0029"></a>
+<a class="index-entry-id" id="index-space-between-words-register-_0028_002ess_0029"></a>
+<a class="index-entry-id" id="index-inter_002dsentence-space-size-register-_0028_002esss_0029"></a>
+<a class="index-entry-id" id="index-sentence-space-size-register-_0028_002esss_0029"></a>
+<a class="index-entry-id" id="index-size-of-sentence-space-register-_0028_002esss_0029"></a>
+<a class="index-entry-id" id="index-space-between-sentences-register-_0028_002esss_0029"></a>
+<p>Set the sizes of spaces between words and
+sentences<a class="footnote" id="DOCF55" href="#FOOT55"><sup>55</sup></a> in twelfths
+of font&rsquo;s space width (typically one-fourth to one-third em for Western
+scripts). The default for both parameters is&nbsp;12. Negative values
+are erroneous.
+<a class="index-entry-id" id="index-inter_002dword-spacing_002c-minimal"></a>
+<a class="index-entry-id" id="index-minimal-inter_002dword-spacing"></a>
+<a class="index-entry-id" id="index-space_002c-between-words"></a>
+The first argument is a minimum; if an output line undergoes adjustment,
+such spaces may increase in width.
+<a class="index-entry-id" id="index-inter_002dsentence-space_002c-additional"></a>
+<a class="index-entry-id" id="index-additional-inter_002dsentence-space"></a>
+<a class="index-entry-id" id="index-space_002c-between-sentences"></a>
+The optional second argument sets the amount of additional space
+separating sentences on the same output line. If omitted, this amount
+is set to <var class="var">word-space-size</var>. The request is ignored if there are no
+parameters.
+</p>
+<a class="index-entry-id" id="index-filling_002c-and-inter_002dsentence-space"></a>
+<a class="index-entry-id" id="index-mode_002c-fill_002c-and-inter_002dsentence-space"></a>
+<p>Additional inter-sentence space is used only if the output line is not
+full when the end of a sentence occurs in the input. If a sentence ends
+at the end of an input line, then both an inter-word space and an
+inter-sentence space are added to the output; if two spaces follow the
+end of a sentence in the middle of an input line, then the second space
+becomes an inter-sentence space in the output. Additional
+inter-sentence space is not adjusted, but the inter-word space that
+always precedes it may be. Further input spaces after the second, if
+present, are adjusted as normal.
+</p>
+<p>The read-only registers <code class="code">.ss</code> and <code class="code">.sss</code> hold the minimal
+inter-word space and additional inter-sentence space amounts,
+respectively. These parameters are part of the environment
+(see <a class="pxref" href="#Environments">Environments</a>), and rounded down to the nearest multiple
+of&nbsp;12 on terminals.
+</p>
+<a class="index-entry-id" id="index-discardable-horizontal-space"></a>
+<a class="index-entry-id" id="index-space_002c-discardable_002c-horizontal"></a>
+<a class="index-entry-id" id="index-horizontal-discardable-space"></a>
+<p>The <code class="code">ss</code> request can insert discardable horizontal space; that is,
+space that is discarded at a break. For example, some footnote styles
+collect the notes into a single paragraph with large gaps between
+each note.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 48n
+1.\~J. Fict. Ch. Soc. 6 (2020), 3\[en]14.
+.ss 12 48 \&quot; applies to next sentence ending
+Reprints no longer available through FCS.
+.ss 12 \&quot; go back to normal
+2.\~Better known for other work.
+ &rArr; 1. J. Fict. Ch. Soc. 6 (2020), 3-14. Reprints
+ &rArr; no longer available through FCS. 2. Better
+ &rArr; known for other work.
+</pre></div></div>
+
+<p>If <em class="emph">undiscardable</em> space is required, use the <code class="code">\h</code> escape
+sequence.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Manipulating-Hyphenation">
+<div class="nav-panel">
+<p>
+Next: <a href="#Manipulating-Spacing" accesskey="n" rel="next">Manipulating Spacing</a>, Previous: <a href="#Manipulating-Filling-and-Adjustment" accesskey="p" rel="prev">Manipulating Filling and Adjustment</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Manipulating-Hyphenation-1">5.10 Manipulating Hyphenation</h3>
+<a class="index-entry-id" id="index-manipulating-hyphenation"></a>
+<a class="index-entry-id" id="index-hyphenation_002c-manipulating"></a>
+
+<a class="index-entry-id" id="index-hyphenation_002c-automatic"></a>
+<a class="index-entry-id" id="index-automatic-hyphenation"></a>
+<p>When filling, GNU <code class="code">troff</code> hyphenates words as needed at
+user-specified and automatically determined hyphenation points. The
+machine-driven determination of hyphenation points in words requires
+algorithms and data, and is susceptible to conventions and preferences.
+Before tackling such <em class="dfn">automatic hyphenation</em>, let us consider how
+hyphenation points can be set explicitly.
+</p>
+<a class="index-entry-id" id="index-hyphenation_002c-explicit"></a>
+<a class="index-entry-id" id="index-explicit-hyphenation"></a>
+<a class="index-entry-id" id="index-hyphenation_002c-manual"></a>
+<a class="index-entry-id" id="index-manual-hyphenation"></a>
+<p>Explicitly hyphenated words such as &ldquo;mother-in-law&rdquo; are eligible for
+breaking after each of their hyphens. Relatively few words in a
+language offer such obvious break points, however, and automatic
+detection of syllabic (or phonetic) boundaries for hyphenation is not
+perfect,<a class="footnote" id="DOCF56" href="#FOOT56"><sup>56</sup></a> particularly for
+unusual words found in technical literature. We can instruct GNU
+<code class="code">troff</code> how to hyphenate specific words if the need arises.
+</p>
+<a class="index-entry-id" id="index-hyphenation-exceptions"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehw"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hw</code></strong> <var class="def-var-arguments">word &hellip;</var><a class="copiable-link" href='#index-_002ehw'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hw"></a>
+<p>Define each <em class="dfn">hyphenation exception</em> <var class="var">word</var> with each hyphen &lsquo;-&rsquo;
+in the word indicating a hyphenation point. For example, the request
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.hw in-sa-lub-rious alpha
+</pre></div></div>
+
+<p>marks potential hyphenation points in &ldquo;insalubrious&rdquo;, and prevents
+&ldquo;alpha&rdquo; from being hyphenated at all.
+</p>
+<p>Besides the space character, any character whose hyphenation code is
+zero can be used to separate the arguments of <code class="code">hw</code> (see the
+<code class="code">hcode</code> request below). In addition, this request can be used more
+than once.
+</p>
+<a class="index-entry-id" id="index-hw-request_002c-and-hy-restrictions"></a>
+<p>Hyphenation points specified with <code class="code">hw</code> are not subject to the
+within-word placement restrictions imposed by the <code class="code">hy</code> request (see
+below).
+</p>
+<p>Hyphenation exceptions specified with the <code class="code">hw</code> request are
+associated with the hyphenation language (see the <code class="code">hla</code> request
+below) and environment (see <a class="pxref" href="#Environments">Environments</a>); invoking the <code class="code">hw</code>
+request in the absence of a hyphenation language is an error.
+</p>
+<p>The request is ignored if there are no parameters.
+</p></dd></dl>
+
+<p>These are known as hyphenation <i class="slanted">exceptions</i> in the expectation
+that most users will avail themselves of automatic hyphenation; these
+exceptions override any rules that would normally apply to a word
+matching a hyphenation exception defined with <code class="code">hw</code>.
+</p>
+<p>Situations also arise when only a specific occurrence of a word needs
+its hyphenation altered or suppressed, or when a URL or similar string
+needs to be breakable in sensible places without hyphenation.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0025-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\%</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0025-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0025"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_003a-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\:</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_003a-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_003a"></a>
+<a class="index-entry-id" id="index-hyphenation-character-_0028_005c_0025_0029"></a>
+<a class="index-entry-id" id="index-character_002c-hyphenation-_0028_005c_0025_0029"></a>
+<a class="index-entry-id" id="index-disabling-hyphenation-_0028_005c_0025_0029"></a>
+<a class="index-entry-id" id="index-hyphenation_002c-disabling-_0028_005c_0025_0029"></a>
+<p>To tell GNU <code class="code">troff</code> how to hyphenate words as they occur in input,
+use the <code class="code">\%</code> escape sequence; it is the default <em class="dfn">hyphenation
+character</em>. Each instance within a word indicates to GNU <code class="code">troff</code>
+that the word may be hyphenated at that point, while prefixing a word
+with this escape sequence prevents it from being otherwise hyphenated.
+This mechanism affects only that occurrence of the word; to change the
+hyphenation of a word for the remainder of input processing, use the
+<code class="code">hw</code> request.
+</p>
+<a class="index-entry-id" id="index-_005cX_002c-followed-by-_005c_0025"></a>
+<a class="index-entry-id" id="index-_005cY_002c-followed-by-_005c_0025"></a>
+<a class="index-entry-id" id="index-_005c_0025_002c-following-_005cX-or-_005cY"></a>
+<p>GNU <code class="code">troff</code> regards the escape sequences <code class="code">\X</code> and <code class="code">\Y</code> as
+starting a word; that is, the <code class="code">\%</code> escape sequence in, say,
+&lsquo;<samp class="samp">\X'...'\%foobar</samp>&rsquo;<!-- /@w --> or &lsquo;<samp class="samp">\Y'...'\%foobar</samp>&rsquo;<!-- /@w --> no longer
+prevents hyphenation of &lsquo;<samp class="samp">foobar</samp>&rsquo; but inserts a hyphenation point
+just prior to it; most likely this isn&rsquo;t what you want.
+See <a class="xref" href="#Postprocessor-Access">Postprocessor Access</a>.
+</p>
+<a class="index-entry-id" id="index-non_002dprinting-break-point-_0028_005c_003a_0029"></a>
+<a class="index-entry-id" id="index-breaking-without-hyphens-_0028_005c_003a_0029"></a>
+<a class="index-entry-id" id="index-file-names_002c-breaking-_0028_005c_003a_0029"></a>
+<a class="index-entry-id" id="index-breaking-file-names-_0028_005c_003a_0029"></a>
+<a class="index-entry-id" id="index-URLs_002c-breaking-_0028_005c_003a_0029"></a>
+<a class="index-entry-id" id="index-breaking-URLs-_0028_005c_003a_0029"></a>
+<p><code class="code">\:</code> inserts a non-printing break point; that is, a word can break
+there, but the soft hyphen glyph (see below) is not written to the
+output if it does. This escape sequence is an input word boundary, so
+the remainder of the word is subject to hyphenation as normal.
+</p>
+<p>You can combine <code class="code">\:</code> and <code class="code">\%</code> to control breaking of a file
+name or URL, or to permit hyphenation only after certain explicit
+hyphens within a word.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">The \%Lethbridge-Stewart-\:\%Sackville-Baggins divorce
+was, in retrospect, inevitable once the contents of
+\%/var/log/\:\%httpd/\:\%access_log on the family web
+server came to light, revealing visitors from Hogwarts.
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">char</i></span>]</var><a class="copiable-link" href='#index-_002ehc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hc"></a>
+<p>Change the hyphenation character to <var class="var">char</var>. This character then
+works as the <code class="code">\%</code> escape sequence normally does, and thus no longer
+appears in the output.<a class="footnote" id="DOCF57" href="#FOOT57"><sup>57</sup></a> Without an
+argument, <code class="code">hc</code> resets the hyphenation character to <code class="code">\%</code> (the
+default). The hyphenation character is associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eshc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.shc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">c</i></span>]</var><a class="copiable-link" href='#index-_002eshc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-shc"></a>
+<a class="index-entry-id" id="index-soft-hyphen-character_002c-setting-_0028shc_0029"></a>
+<a class="index-entry-id" id="index-character_002c-soft-hyphen_002c-setting-_0028shc_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-soft-hyphen-_0028hy_0029"></a>
+<a class="index-entry-id" id="index-soft-hyphen-glyph-_0028hy_0029"></a>
+<a class="index-entry-id" id="index-char-request_002c-and-soft-hyphen-character"></a>
+<a class="index-entry-id" id="index-tr-request_002c-and-soft-hyphen-character"></a>
+<p>Set the <em class="dfn">soft hyphen character</em>, inserted when a word is hyphenated
+automatically or at a hyphenation character, to the ordinary or special
+character&nbsp;<var class="var">c</var>.<a class="footnote" id="DOCF58" href="#FOOT58"><sup>58</sup></a> If the argument is omitted, the soft
+hyphen character is set to the default, <code class="code">\[hy]</code>. If no glyph for
+<var class="var">c</var> exists in the font in use at a potential hyphenation point, then
+the line is not broken there. Neither character definitions (specified
+with the <code class="code">char</code> and similar requests) nor translations (specified
+with the <code class="code">tr</code> request) are applied to <var class="var">c</var>.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-hyphenation-parameters_002c-automatic"></a>
+<a class="index-entry-id" id="index-automatic-hyphenation-parameters"></a>
+<p>Several requests influence automatic hyphenation. Because conventions
+vary, a variety of hyphenation modes is available to the <code class="code">hy</code>
+request; these determine whether hyphenation will apply to a
+word prior to breaking a line at the end of a page (more or less; see
+below for details), and at which positions within that word
+automatically determined hyphenation points are permissible. The places
+within a word that are eligible for hyphenation are determined by
+language-specific data and lettercase relationships. Furthermore,
+hyphenation of a word might be suppressed due to a limit on
+consecutive hyphenated lines (<code class="code">hlm</code>), a minimum line length
+threshold (<code class="code">hym</code>), or because the line can instead be adjusted with
+additional inter-word space (<code class="code">hys</code>).
+</p>
+<a class="index-entry-id" id="index-hyphenation-mode-register-_0028_002ehy_0029"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehy"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hy</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">mode</i></span>]</var><a class="copiable-link" href='#index-_002ehy'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hy"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehy_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hy]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehy_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ehy-1"></a>
+<p>Set automatic hyphenation mode to <var class="var">mode</var>, an integer encoding
+conditions for hyphenation; if omitted, &lsquo;<samp class="samp">1</samp>&rsquo; is implied. The
+hyphenation mode is available in the read-only register &lsquo;<samp class="samp">.hy</samp>&rsquo;; it
+is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>). The default
+hyphenation mode depends on the localization file loaded when GNU
+<code class="code">troff</code> starts up; see the <code class="code">hpf</code> request below.
+</p>
+<p>Typesetting practice generally does not avail itself of every
+opportunity for hyphenation, but the details differ by language and site
+mandates. The hyphenation modes of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> were
+implemented with English-language publishing practices of the 1970s in
+mind, not a scrupulous enumeration of conceivable parameters. GNU
+<code class="code">troff</code> extends those modes such that finer-grained control is
+possible, favoring compatibility with older implementations over a more
+intuitive arrangement. The means of hyphenation mode control is a set
+of numbers that can be added up to encode the behavior
+sought.<a class="footnote" id="DOCF59" href="#FOOT59"><sup>59</sup></a> The entries in the
+following table are termed <em class="dfn">values</em>; the sum of the desired
+values is the <em class="dfn">mode</em>.
+</p>
+<dl class="table">
+<dt><code class="code">0</code></dt>
+<dd><p>disables hyphenation.
+</p>
+</dd>
+<dt><code class="code">1</code></dt>
+<dd><p>enables hyphenation except after the first and before the last character
+of a word.
+</p></dd>
+</dl>
+
+<p>The remaining values &ldquo;imply&rdquo; 1; that is, they enable hyphenation
+under the same conditions as &lsquo;<samp class="samp">.hy 1</samp>&rsquo;, and then apply or lift
+restrictions relative to that basis.
+</p>
+<dl class="table">
+<dt><code class="code">2</code></dt>
+<dd><p>disables hyphenation of the last word on a page,<a class="footnote" id="DOCF60" href="#FOOT60"><sup>60</sup></a> even for explicitly hyphenated words.
+</p>
+</dd>
+<dt><code class="code">4</code></dt>
+<dd><p>disables hyphenation before the last two characters of a word.
+</p>
+</dd>
+<dt><code class="code">8</code></dt>
+<dd><p>disables hyphenation after the first two characters of a word.
+</p>
+</dd>
+<dt><code class="code">16</code></dt>
+<dd><p>enables hyphenation before the last character of a word.
+</p>
+</dd>
+<dt><code class="code">32</code></dt>
+<dd><p>enables hyphenation after the first character of a word.
+</p></dd>
+</dl>
+
+<p>Apart from value&nbsp;2, restrictions imposed by the hyphenation mode
+are <em class="emph">not</em> respected for words whose hyphenations have been
+specified with the hyphenation character (&lsquo;<samp class="samp">\%</samp>&rsquo; by default) or the
+<code class="code">hw</code> request.
+</p>
+<p>Nonzero values in the previous table are additive. For example,
+mode&nbsp;12 causes GNU <code class="code">troff</code> to hyphenate neither the last two
+nor the first two characters of a word. Some values cannot be used
+together because they contradict; for instance, values 4 and&nbsp;16,
+and values 8 and&nbsp;32. As noted, it is superfluous to add 1 to any
+non-zero even mode.
+</p>
+<a class="index-entry-id" id="index-hyphenation-pattern-files"></a>
+<a class="index-entry-id" id="index-pattern-files_002c-for-hyphenation"></a>
+<p>The automatic placement of hyphens in words is determined by
+<em class="dfn">pattern files</em>, which are derived from TeX and available for
+several languages. The number of characters at the beginning of a word
+after which the first hyphenation point should be inserted is determined
+by the patterns themselves; it can&rsquo;t be reduced further without
+introducing additional, invalid hyphenation points (unfortunately, this
+information is not part of a pattern file&mdash;you have to know it in
+advance). The same is true for the number of characters at the end of
+a word before the last hyphenation point should be inserted. For
+example, you can supply the following input to &lsquo;<samp class="samp">echo $(nroff)</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 1
+.hy 48
+splitting
+</pre></div></div>
+
+<p>You will get
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">s- plit- t- in- g
+</pre></div></div>
+
+<p>instead of the correct &lsquo;split- ting&rsquo;. English patterns as distributed
+with GNU <code class="code">troff</code> need two characters at the beginning and three
+characters at the end; this means that value&nbsp;4 of <code class="code">hy</code> is
+mandatory. Value&nbsp;8 is possible as an additional restriction, but
+values&nbsp;16 and&nbsp;32 should be avoided, as should mode&nbsp;1.
+Modes&nbsp;4 and&nbsp;6 are typical.
+</p>
+<p>A table of left and right minimum character counts for hyphenation as
+needed by the patterns distributed with GNU <code class="code">troff</code> follows; see
+the <cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page for more information on GNU
+<code class="code">troff</code>&rsquo;s language macro files.
+</p>
+<table class="multitable">
+<thead><tr><th>language</th><th>pattern name</th><th>left min</th><th>right min</th></tr></thead>
+<tbody><tr><td>Czech</td><td>cs</td><td>2</td><td>2</td></tr>
+<tr><td>English</td><td>en</td><td>2</td><td>3</td></tr>
+<tr><td>French</td><td>fr</td><td>2</td><td>3</td></tr>
+<tr><td>German traditional</td><td>det</td><td>2</td><td>2</td></tr>
+<tr><td>German reformed</td><td>den</td><td>2</td><td>2</td></tr>
+<tr><td>Italian</td><td>it</td><td>2</td><td>2</td></tr>
+<tr><td>Swedish</td><td>sv</td><td>1</td><td>2</td></tr>
+</tbody>
+</table>
+
+<p>Hyphenation exceptions within pattern files (i.e., the words within a
+TeX <code class="code">\hyphenation</code> group) obey the hyphenation restrictions
+given by <code class="code">hy</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enh"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nh</code></strong><a class="copiable-link" href='#index-_002enh'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nh"></a>
+<p>Disable automatic hyphenation; i.e., set the hyphenation mode to&nbsp;0
+(see above). The hyphenation mode of the last call to <code class="code">hy</code> is not
+remembered.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehpf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hpf</code></strong> <var class="def-var-arguments">pattern-file</var><a class="copiable-link" href='#index-_002ehpf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hpf"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ehpfa"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hpfa</code></strong> <var class="def-var-arguments">pattern-file</var><a class="copiable-link" href='#index-_002ehpfa'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hpfa"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ehpfcode"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hpfcode</code></strong> <var class="def-var-arguments">a b [c d] &hellip;</var><a class="copiable-link" href='#index-_002ehpfcode'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hpfcode"></a>
+<a class="index-entry-id" id="index-hyphenation-patterns-_0028hpf_0029"></a>
+<a class="index-entry-id" id="index-patterns-for-hyphenation-_0028hpf_0029"></a>
+<p>Read hyphenation patterns from <var class="var">pattern-file</var>, which is sought
+in the same way that macro files are with the <code class="code">mso</code> request or the
+<samp class="option">-m<var class="var">name</var></samp> command-line option to <code class="code">groff</code>. The
+<var class="var">pattern-file</var> should have the same format as (simple) TeX
+pattern files. More specifically, the following scanning rules are
+implemented.
+</p>
+<ul class="itemize mark-bullet">
+<li>A percent sign starts a comment (up to the end of the line) even if
+preceded by a backslash.
+
+</li><li>&ldquo;Digraphs&rdquo; like <code class="code">\$</code> are not supported.
+
+</li><li><code class="code">^^<var class="var">xx</var></code> (where each <var class="var">x</var> is 0&ndash;9 or a&ndash;f) and
+<code class="code">^^<var class="var">c</var></code> (character <var class="var">c</var> in the code point range 0&ndash;127
+decimal) are recognized; other uses of <code class="code">^</code> cause an error.
+
+</li><li>No macro expansion is performed.
+
+</li><li><code class="code">hpf</code> checks for the expression <code class="code">\patterns{&hellip;}</code>
+(possibly with whitespace before or after the braces). Everything
+between the braces is taken as hyphenation patterns. Consequently,
+<code class="code">{</code> and <code class="code">}</code> are not allowed in patterns.
+
+</li><li>Similarly, <code class="code">\hyphenation{&hellip;}</code> gives a list of hyphenation
+exceptions.
+
+</li><li><code class="code">\endinput</code> is recognized also.
+
+</li><li>For backward compatibility, if <code class="code">\patterns</code> is missing, the whole
+file is treated as a list of hyphenation patterns (except that the
+<code class="code">%</code> character is recognized as the start of a comment).
+</li></ul>
+
+<p>The <code class="code">hpfa</code> request appends a file of patterns to the current list.
+</p>
+<p>The <code class="code">hpfcode</code> request defines mapping values for character codes in
+pattern files. It is an older mechanism no longer used by GNU
+<code class="code">troff</code>&rsquo;s own macro files; for its successor, see <code class="code">hcode</code>
+below. <code class="code">hpf</code> or <code class="code">hpfa</code> apply the mapping after reading the
+patterns but before replacing or appending to the active list of
+patterns. Its arguments are pairs of character codes&mdash;integers from 0
+to&nbsp;255. The request maps character code&nbsp;<var class="var">a</var> to
+code&nbsp;<var class="var">b</var>, code&nbsp;<var class="var">c</var> to code&nbsp;<var class="var">d</var>, and so on.
+Character codes that would otherwise be invalid in GNU <code class="code">troff</code> can
+be used. By default, every code maps to itself except those for letters
+&lsquo;A&rsquo; to &lsquo;Z&rsquo;, which map to those for &lsquo;a&rsquo; to &lsquo;z&rsquo;.
+</p>
+<a class="index-entry-id" id="index-localization"></a>
+<a class="index-entry-id" id="index-troffrc-2"></a>
+<a class="index-entry-id" id="index-cs_002etmac"></a>
+<a class="index-entry-id" id="index-de_002etmac"></a>
+<a class="index-entry-id" id="index-en_002etmac"></a>
+<a class="index-entry-id" id="index-fr_002etmac"></a>
+<a class="index-entry-id" id="index-it_002etmac"></a>
+<a class="index-entry-id" id="index-ja_002etmac"></a>
+<a class="index-entry-id" id="index-sv_002etmac"></a>
+<a class="index-entry-id" id="index-zh_002etmac"></a>
+<p>The set of hyphenation patterns is associated with the language set by
+the <code class="code">hla</code> request (see below). The <code class="code">hpf</code> request is usually
+invoked by a localization file loaded by the <samp class="file">troffrc</samp>
+file.<a class="footnote" id="DOCF61" href="#FOOT61"><sup>61</sup></a>
+</p>
+<p>A second call to <code class="code">hpf</code> (for the same language) replaces the
+hyphenation patterns with the new ones. Invoking <code class="code">hpf</code> or
+<code class="code">hpfa</code> causes an error if there is no hyphenation language. If no
+<code class="code">hpf</code> request is specified (either in the document, in a file
+loaded at startup, or in a macro package), GNU <code class="code">troff</code> won&rsquo;t
+automatically hyphenate at all.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehcode"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hcode</code></strong> <var class="def-var-arguments">c1 code1 [c2 code2] &hellip;</var><a class="copiable-link" href='#index-_002ehcode'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hcode"></a>
+<a class="index-entry-id" id="index-hyphenation-code-_0028hcode_0029"></a>
+<a class="index-entry-id" id="index-code_002c-hyphenation-_0028hcode_0029"></a>
+<p>Set the hyphenation code of character <var class="var">c1</var> to <var class="var">code1</var>, that of
+<var class="var">c2</var> to <var class="var">code2</var>, and so on. A hyphenation code must be an
+ordinary character (not a special character escape sequence) other than
+a digit or a space. The request is ignored if given no arguments.
+</p>
+<p>For hyphenation to work, hyphenation codes must be set up. At
+startup, GNU <code class="code">troff</code> assigns hyphenation codes to the letters
+&lsquo;<samp class="samp">a</samp>&rsquo;&ndash;&lsquo;<samp class="samp">z</samp>&rsquo; (mapped to themselves), to the letters
+&lsquo;<samp class="samp">A</samp>&rsquo;&ndash;&lsquo;<samp class="samp">Z</samp>&rsquo; (mapped to &lsquo;<samp class="samp">a</samp>&rsquo;&ndash;&lsquo;<samp class="samp">z</samp>&rsquo;), and zero to all other
+characters. Normally, hyphenation patterns contain only lowercase
+letters which should be applied regardless of case. In other words,
+they assume that the words &lsquo;FOO&rsquo; and &lsquo;Foo&rsquo; should be hyphenated exactly
+as &lsquo;foo&rsquo; is. The <code class="code">hcode</code> request extends this principle to letters
+outside the Unicode basic Latin alphabet; without it, words containing
+such letters won&rsquo;t be hyphenated properly even if the corresponding
+hyphenation patterns contain them.
+</p>
+<p>For example, the following <code class="code">hcode</code> requests are necessary to assign
+hyphenation codes to the letters &lsquo;<samp class="samp">ÄäÖöÜüß</samp>&rsquo;, needed for German.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.hcode ä ä Ä ä
+.hcode ö ö Ö ö
+.hcode ü ü Ü ü
+.hcode ß ß
+</pre></div></div>
+
+<p>Without these assignments, GNU <code class="code">troff</code> treats the German word
+&lsquo;Kindergärten&rsquo;<!-- /@w --> (the plural form of &lsquo;kindergarten&rsquo;) as two words
+&lsquo;kinderg&rsquo;<!-- /@w --> and &lsquo;rten&rsquo;<!-- /@w --> because the hyphenation code of the
+umlaut&nbsp;a is zero by default, just like a space. There is a German
+hyphenation pattern that covers &lsquo;kinder&rsquo;<!-- /@w -->, so GNU <code class="code">troff</code> finds
+the hyphenation &lsquo;kin-der&rsquo;. The other two hyphenation points
+(&lsquo;kin-der-gär-ten&rsquo;) are missed.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehla"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hla</code></strong> <var class="def-var-arguments">lang</var><a class="copiable-link" href='#index-_002ehla'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hla"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehla_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hla]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehla_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ehla-1"></a>
+<a class="index-entry-id" id="index-hpf-request_002c-and-hyphenation-language"></a>
+<a class="index-entry-id" id="index-hw-request_002c-and-hyphenation-language"></a>
+<a class="index-entry-id" id="index-troffrc-3"></a>
+<a class="index-entry-id" id="index-troffrc_002dend-1"></a>
+<p>Set the hyphenation language to <var class="var">lang</var>. Hyphenation exceptions
+specified with the <code class="code">hw</code> request and hyphenation patterns and
+exceptions specified with the <code class="code">hpf</code> and <code class="code">hpfa</code> requests are
+associated with the hyphenation language. The <code class="code">hla</code> request is
+usually invoked by a localization file, which is turn loaded by the
+<samp class="file">troffrc</samp> or <samp class="file">troffrc-end</samp> file; see the <code class="code">hpf</code> request
+above.
+</p>
+<a class="index-entry-id" id="index-hyphenation-language-register-_0028_002ehla_0029"></a>
+<p>The hyphenation language is available in the read-only string-valued
+register &lsquo;<samp class="samp">.hla</samp>&rsquo;; it is associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehlm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hlm</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ehlm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hlm"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehlm_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hlm]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehlm_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ehlm-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehlc_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hlc]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehlc_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ehlc"></a>
+<a class="index-entry-id" id="index-explicit-hyphen-_0028_005c_0025_0029"></a>
+<a class="index-entry-id" id="index-hyphen_002c-explicit-_0028_005c_0025_0029"></a>
+<a class="index-entry-id" id="index-consecutive-hyphenated-lines-_0028hlm_0029"></a>
+<a class="index-entry-id" id="index-lines_002c-consecutive-hyphenated-_0028hlm_0029"></a>
+<a class="index-entry-id" id="index-hyphenated-lines_002c-consecutive-_0028hlm_0029"></a>
+<p>Set the maximum quantity of consecutive hyphenated lines to <var class="var">n</var>. If
+<var class="var">n</var> is negative, there is no maximum. If omitted, <var class="var">n</var>
+is&nbsp;&minus;1. This value is associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>). Only lines output from a given environment
+count toward the maximum associated with that environment. Hyphens
+resulting from <code class="code">\%</code> are counted; explicit hyphens are not.
+</p>
+<a class="index-entry-id" id="index-hyphenation-consecutive-line-limit-register-_0028_002ehlm_0029"></a>
+<a class="index-entry-id" id="index-hyphenation-consecutive-line-count-register-_0028_002ehlc_0029"></a>
+<p>The <code class="code">.hlm</code> read-only register stores this maximum. The count of
+immediately preceding consecutive hyphenated lines is available in the
+read-only register <code class="code">.hlc</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehym"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hym</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">length</i></span>]</var><a class="copiable-link" href='#index-_002ehym'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hym"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehym_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hym]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehym_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ehym-1"></a>
+<a class="index-entry-id" id="index-hyphenation-margin-_0028hym_0029"></a>
+<a class="index-entry-id" id="index-margin-for-hyphenation-_0028hym_0029"></a>
+<a class="index-entry-id" id="index-ad-request_002c-and-hyphenation-margin"></a>
+<p>Set the (right) hyphenation margin to <var class="var">length</var>. If the adjustment
+mode is not &lsquo;<samp class="samp">b</samp>&rsquo; or &lsquo;<samp class="samp">n</samp>&rsquo;, the line is not hyphenated if it is
+shorter than <var class="var">length</var>. Without an argument, the hyphenation margin
+is reset to its default value, 0. The default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;.
+The hyphenation margin is associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<p>A negative argument resets the hyphenation margin to zero, emitting a
+warning in category &lsquo;<samp class="samp">range</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-hyphenation-margin-register-_0028_002ehym_0029"></a>
+<p>The hyphenation margin is available in the <code class="code">.hym</code> read-only
+register.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehys"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hys</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">hyphenation-space</i></span>]</var><a class="copiable-link" href='#index-_002ehys'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hys"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehys_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hys]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehys_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ehys-1"></a>
+<a class="index-entry-id" id="index-hyphenation-space-_0028hys_0029"></a>
+<a class="index-entry-id" id="index-hyphenation-space-adjustment-threshold"></a>
+<a class="index-entry-id" id="index-ad-request_002c-and-hyphenation-space"></a>
+<p>Suppress hyphenation of the line in adjustment modes &lsquo;<samp class="samp">b</samp>&rsquo; or
+&lsquo;<samp class="samp">n</samp>&rsquo; if it can be justified by adding no more than
+<var class="var">hyphenation-space</var> extra space to each inter-word space. Without
+an argument, the hyphenation space adjustment threshold is set to its
+default value, 0. The default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;. The
+hyphenation space adjustment threshold is associated with the
+environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<p>A negative argument resets the hyphenation space adjustment threshold to
+zero, emitting a warning in category &lsquo;<samp class="samp">range</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-hyphenation-space-adjustment-threshold-register-_0028_002ehys_0029"></a>
+<p>The hyphenation space adjustment threshold is available in the
+<code class="code">.hys</code> read-only register.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Manipulating-Spacing">
+<div class="nav-panel">
+<p>
+Next: <a href="#Tabs-and-Fields" accesskey="n" rel="next">Tabs and Fields</a>, Previous: <a href="#Manipulating-Hyphenation" accesskey="p" rel="prev">Manipulating Hyphenation</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Manipulating-Spacing-1">5.11 Manipulating Spacing</h3>
+<a class="index-entry-id" id="index-manipulating-spacing"></a>
+<a class="index-entry-id" id="index-spacing_002c-manipulating"></a>
+
+<p>A break causes the formatter to update the vertical drawing position at
+which the new text baseline is aligned. You can alter this location.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002esp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sp</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">distance</i></span>]</var><a class="copiable-link" href='#index-_002esp'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-sp"></a>
+<p>Break and move the next text baseline down by <var class="var">distance</var>, or until
+springing a page location trap.<a class="footnote" id="DOCF62" href="#FOOT62"><sup>62</sup></a>
+If invoked with the no-break control character, <code class="code">sp</code> moves the
+pending output line&rsquo;s text baseline by <var class="var">distance</var>. A negative
+<var class="var">distance</var> will not reduce the position of the text baseline below
+zero. Inside a diversion, any <var class="var">distance</var> argument is ignored. The
+default scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. If <var class="var">distance</var> is not specified,
+&lsquo;<samp class="samp">1v</samp>&rsquo; is assumed.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.pl 5v \&quot; Set page length to 5 vees.
+.de xx
+\-\-\-
+. br
+..
+.wh 0 xx \&quot; Set a trap at the top of the page.
+foo on page \n%
+.sp 2v
+bar on page \n%
+.sp 50v \&quot; This will cause a page break.
+baz on page \n%
+.pl \n(nlu \&quot; Truncate page to current position.
+ &rArr; ---
+ &rArr; foo on page 1
+ &rArr;
+ &rArr;
+ &rArr; bar on page 1
+ &rArr; ---
+ &rArr; baz on page 2
+</pre></div></div>
+
+<p>You might use the following macros to set the baseline of the next
+output text at a given distance from the top or the bottom of the page.
+We subtract one line height (<code class="code">\n[.v]</code>) because the <code class="code">|</code>
+operator moves to one vee below the page top (recall <a class="ref" href="#Numeric-Expressions">Numeric Expressions</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de y-from-top-down
+. sp |\\$1-\\n[.v]u
+..
+.
+.de y-from-bot-up
+. sp |\\n[.p]u-\\$1-\\n[.v]u
+..
+</pre></div></div>
+
+<p>A call to &lsquo;<samp class="samp">.y-from-bot-up 10c</samp>&rsquo; means that the next text baseline
+will be 10&nbsp;cm from the bottom edge of the paper.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002els"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ls</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">count</i></span>]</var><a class="copiable-link" href='#index-_002els'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ls"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eL_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.L]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eL_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eL"></a>
+<a class="index-entry-id" id="index-double_002dspacing-_0028ls_0029"></a>
+<p>Set the line spacing; add <var class="var">count</var>&minus;1<!-- /@w --> blank lines after each
+line of text. With no argument, GNU <code class="code">troff</code> uses the previous
+value before the last <code class="code">ls</code> call. The default is <code class="code">1</code>.
+</p>
+
+<a class="index-entry-id" id="index-line-spacing-register-_0028_002eL_0029"></a>
+<p>The read-only register <code class="code">.L</code> contains the current line spacing; it
+is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p></dd></dl>
+
+<p>The <code class="code">ls</code> request is a coarse mechanism. See <a class="xref" href="#Changing-the-Type-Size">Changing the Type Size</a>, for the requests <code class="code">vs</code> and <code class="code">pvs</code> as alternatives to
+<code class="code">ls</code>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cx_0027spacing_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\x<code class="code">'</code></code><span class="r"><i class="slanted">spacing</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cx_0027spacing_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cx"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ea_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.a]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ea_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ea"></a>
+<p>Sometimes, an output line requires additional vertical spacing, for
+instance to allow room for a tall construct like an inline equation with
+exponents or subscripts (particularly if they are iterated). The
+<code class="code">\x</code> escape sequence takes a delimited measurement (like
+&lsquo;<samp class="samp">\x'3p'</samp>&rsquo;) to increase the vertical spacing of the pending output
+line. The default scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. If the measurement is
+positive, extra vertical space is inserted below the current line; a
+negative measurement adds space above. If <code class="code">\x</code> is applied to the
+pending output line multiple times, the maxima of the positive and
+negative adjustments are separately applied. The delimiter need not be
+a neutral apostrophe; see <a class="ref" href="#Delimiters">Delimiters</a>.
+</p>
+<a class="index-entry-id" id="index-extra-post_002dvertical-line-space-register-_0028_002ea_0029"></a>
+<p>The <code class="code">.a</code> read-only register contains the extra vertical spacing
+<em class="emph">after</em> the text baseline of the most recently emitted output line.
+(In other words, it is the largest positive argument to <code class="code">\x</code>
+encountered on that line.) This quantity is exposed via a register
+because if an output line requires this &ldquo;extra post-vertical line
+spacing&rdquo;, and the subsequent output line requires &ldquo;extra pre-vertical
+line spacing&rdquo; (a negative argument to <code class="code">\x</code>), then applying both
+can lead to excessive spacing between the output lines. Text that is
+piling high on line <var class="var">n</var> might not require (as much) extra
+pre-vertical line spacing if line <var class="var">n</var>&minus;1 carries extra
+post-vertical line spacing.
+</p>
+<p>Use of <code class="code">\x</code> can be necessary in combination with the
+bracket-building escape sequence <code class="code">\b</code>,<a class="footnote" id="DOCF63" href="#FOOT63"><sup>63</sup></a> as the following example shows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nf
+This is a test of \[rs]b (1).
+This is a test of \[rs]b (2).
+This is a test of \b'xyz'\x'-1m'\x'1m' (3).
+This is a test of \[rs]b (4).
+This is a test of \[rs]b (5).
+ &rArr; This is a test of \b (1).
+ &rArr; This is a test of \b (2).
+ &rArr; x
+ &rArr; This is a test of y (3).
+ &rArr; z
+ &rArr; This is a test of \b (4).
+ &rArr; This is a test of \b (5).
+</pre></div></div>
+</dd></dl>
+
+<p>Without <code class="code">\x</code>, the backslashes on the lines marked &lsquo;<samp class="samp">(2)</samp>&rsquo; and
+&lsquo;<samp class="samp">(4)</samp>&rsquo; would be overprinted.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ens"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ns</code></strong><a class="copiable-link" href='#index-_002ens'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ns"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ers"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rs</code></strong><a class="copiable-link" href='#index-_002ers'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rs"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ens_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ns]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ens_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ens-1"></a>
+<a class="index-entry-id" id="index-sp-request_002c-and-no_002dspace-mode"></a>
+<a class="index-entry-id" id="index-no_002dspace-mode-_0028ns_0029"></a>
+<a class="index-entry-id" id="index-mode_002c-no_002dspace-_0028ns_0029"></a>
+<a class="index-entry-id" id="index-blank-lines_002c-disabling"></a>
+<a class="index-entry-id" id="index-lines_002c-blank_002c-disabling"></a>
+<p>Enable <em class="dfn">no-space mode</em>. Vertical spacing, whether by <code class="code">sp</code>
+requests or blank input lines, is disabled. The <code class="code">bp</code> request to
+advance to the next page is also disabled, unless it is accompanied by a
+page number (see <a class="pxref" href="#Page-Control">Page Control</a>). No-space mode ends automatically
+when text<a class="footnote" id="DOCF64" href="#FOOT64"><sup>64</sup></a> is formatted for output <a class="footnote" id="DOCF65" href="#FOOT65"><sup>65</sup></a> or the <code class="code">rs</code> request is invoked, which ends
+no-space mode. The read-only register <code class="code">.ns</code> interpolates a Boolean
+value indicating the enablement of no-space mode.
+</p>
+<p>A paragraphing macro might ordinarily insert vertical space to separate
+paragraphs. A section heading macro could invoke <code class="code">ns</code> to suppress
+this spacing for the first paragraph in a section.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Tabs-and-Fields">
+<div class="nav-panel">
+<p>
+Next: <a href="#Character-Translations" accesskey="n" rel="next">Character Translations</a>, Previous: <a href="#Manipulating-Spacing" accesskey="p" rel="prev">Manipulating Spacing</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Tabs-and-Fields-1">5.12 Tabs and Fields</h3>
+<a class="index-entry-id" id="index-tabs_002c-and-fields"></a>
+<a class="index-entry-id" id="index-fields_002c-and-tabs"></a>
+
+<a class="index-entry-id" id="index-tab-character-encoding"></a>
+<p>A tab character (<abbr class="acronym">ISO</abbr> code point&nbsp;9, <abbr class="acronym">EBCDIC</abbr>
+code point&nbsp;5) causes a horizontal movement to the next tab stop, if
+any.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005ct-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\t</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ct-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005ct"></a>
+<a class="index-entry-id" id="index-tab-character_002c-non_002dinterpreted-_0028_005ct_0029"></a>
+<a class="index-entry-id" id="index-character_002c-tab_002c-non_002dinterpreted-_0028_005ct_0029"></a>
+<a class="index-entry-id" id="index-_005ct_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-_005ct"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005ct"></a>
+<p>Interpolate a tab in copy mode; see <a class="ref" href="#Copy-Mode">Copy Mode</a>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eta"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ta</code></strong> <var class="def-var-arguments">[[<span class="r"><i class="slanted">n1</i></span> <span class="r"><i class="slanted">n2</i></span> &hellip; <span class="r"><i class="slanted">nn</i></span> ]<code class="t">T</code> <span class="r"><i class="slanted">r1</i></span> <span class="r"><i class="slanted">r2</i></span> &hellip; <span class="r"><i class="slanted">rn</i></span>]</var><a class="copiable-link" href='#index-_002eta'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ta"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002etabs_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.tabs]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002etabs_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002etabs"></a>
+<p>Change tab stop positions. This request takes a series of tab
+specifiers as arguments (optionally divided into two groups with the
+letter &lsquo;<samp class="samp">T</samp>&rsquo;) that indicate where each tab stop is to be, overriding
+any previous settings. The default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;. Invoking
+<code class="code">ta</code> without an argument removes all tab stops.
+<a class="index-entry-id" id="index-default-tab-stops"></a>
+<a class="index-entry-id" id="index-tab-stops_002c-default"></a>
+GNU <code class="code">troff</code>&rsquo;s startup value is &lsquo;<samp class="samp">T&nbsp;0.5i</samp>&rsquo;<!-- /@w -->.
+</p>
+<p>Tab stops can be specified absolutely&mdash;as distances from the left
+margin. The following example sets six tab stops, one every inch.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ta 1i 2i 3i 4i 5i 6i
+</pre></div></div>
+
+<p>Tab stops can also be specified using a leading &lsquo;<samp class="samp">+</samp>&rsquo;, which means
+that the specified tab stop is set relative to the previous tab stop.
+For example, the following is equivalent to the previous example.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ta 1i +1i +1i +1i +1i +1i
+</pre></div></div>
+
+<p>GNU <code class="code">troff</code> supports an extended syntax to specify repeating tab
+stops. These stops appear after a &lsquo;<samp class="samp">T</samp>&rsquo; argument. Their values are
+always taken as distances relative to the previous tab stop. This is
+the idiomatic way to specify tab stops at equal intervals in
+<code class="code">groff</code>. The following is, yet again, the same as the previous
+examples. It does more, in fact, since it defines an infinite number of
+tab stops at one-inch intervals.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ta T 1i
+</pre></div></div>
+
+<p>Now we are ready to interpret the full syntax given above. The
+<code class="code">ta</code> request sets tabs at positions <var class="var">n1</var>, <var class="var">n2</var>, &hellip;,
+<var class="var">nn</var>, then at <var class="var">nn</var>+<var class="var">r1</var>, <var class="var">nn</var>+<var class="var">r2</var>, &hellip;,
+<var class="var">nn</var>+<var class="var">rn</var>, then at <var class="var">nn</var>+<var class="var">rn</var>+<var class="var">r1</var>,
+<var class="var">nn</var>+<var class="var">rn</var>+<var class="var">r2</var>, &hellip;, <var class="var">nn</var>+<var class="var">rn</var>+<var class="var">rn</var>, and so
+on.
+</p>
+<p>For example, &lsquo;<samp class="samp">4c +6c T 3c 5c 2c</samp>&rsquo; is equivalent to &lsquo;<samp class="samp">4c 10c 13c
+18c 20c 23c 28c 30c &hellip;</samp>&rsquo;.
+</p>
+<p>Text written to a tab column (i.e., between two tab stops, or between a
+tab stop and an output line boundary) may be aligned to the right or
+left, or centered in the column. This alignment is determined by
+appending &lsquo;<samp class="samp">R</samp>&rsquo;, &lsquo;<samp class="samp">L</samp>&rsquo;, or &lsquo;<samp class="samp">C</samp>&rsquo; to the tab specifier. The
+default is &lsquo;<samp class="samp">L</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ta 1i 2iC 3iR
+</pre></div></div>
+
+<p>The beginning of an output line is not a tab stop; the text that begins
+an output line is placed according to the configured alignment and
+indentation; see <a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a> and <a class="ref" href="#Line-Layout">Line Layout</a>.
+</p>
+<p>A tab stop is converted into a non-breakable horizontal movement that
+cannot be adjusted.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 2i
+.ds foo a\tb\tc
+.ta T 1i
+\*[foo]
+ error&rarr; warning: cannot break line
+ &rArr; a b c
+</pre></div></div>
+
+<p>The above creates a single output line that is a bit longer than two
+inches (we use a string to show exactly where the tab stops are).
+Now consider the following.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 2i
+.ds bar a\tb c\td
+.ta T 1i
+\*[bar]
+ error&rarr; warning: cannot adjust line
+ &rArr; a b
+ &rArr; c d
+</pre></div></div>
+
+<p>GNU <code class="code">troff</code> first converts the line&rsquo;s tab stops into unbreakable
+horizontal movements, then breaks after &lsquo;<samp class="samp">b</samp>&rsquo;. This usually isn&rsquo;t
+what you want.
+</p>
+<p>Superfluous tab characters&mdash;those that do not correspond to a tab
+stop&mdash;are ignored except for the first, which delimits the characters
+belonging to the last tab stop for right-alignment or centering.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds Z foo\tbar\tbaz
+.ds ZZ foo\tbar\tbazqux
+.ds ZZZ foo\tbar\tbaz\tqux
+.ta 2i 4iR
+\*[Z]
+.br
+\*[ZZ]
+.br
+\*[ZZZ]
+.br
+ &rArr; foo bar baz
+ &rArr; foo bar bazqux
+ &rArr; foo bar bazqux
+</pre></div></div>
+
+<p>The first line right-aligns &ldquo;baz&rdquo; within the second tab stop. The
+second line right-aligns &ldquo;bazqux&rdquo; within it. The third line
+right-aligns only &ldquo;baz&rdquo; because of the additional tab character, which
+marks the end of the text occupying the last tab stop defined.
+</p>
+<p>Tab stops are associated with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<a class="index-entry-id" id="index-tab-stop-settings-register-_0028_002etabs_0029"></a>
+<a class="index-entry-id" id="index-_002eS-register_002c-Plan-9-alias-for-_002etabs"></a>
+<a class="index-entry-id" id="index-_002etabs-register_002c-Plan-9-alias-_0028_002eS_0029"></a>
+<p>The read-only register <code class="code">.tabs</code> contains a string
+representation of the current tab settings suitable for use as an
+argument to the <code class="code">ta</code> request.<a class="footnote" id="DOCF66" href="#FOOT66"><sup>66</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds tab-string \n[.tabs]
+\*[tab-string]
+ &rArr; T120u
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">c</i></span>]</var><a class="copiable-link" href='#index-_002etc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tc"></a>
+<a class="index-entry-id" id="index-tab-repetition-character-_0028tc_0029"></a>
+<a class="index-entry-id" id="index-character_002c-tab-repetition-_0028tc_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-tab-repetition-_0028tc_0029"></a>
+<p>Set the tab repetition character to the ordinary or special character
+<var class="var">c</var>; normally, no glyph is written when moving to a tab stop (and
+some output devices may output space characters to achieve this motion).
+A <em class="dfn">tab repetition character</em> causes the formatter to write as many
+instances of <var class="var">c</var> as are necessary to occupy the interval from the
+horizontal drawing position to the next tab stop. With no argument, GNU
+<code class="code">troff</code> reverts to the default behavior. The tab repetition
+character is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+Only a single character of <var class="var">c</var> is recognized; any excess is ignored.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elinetabs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.linetabs</code></strong> <var class="def-var-arguments">n</var><a class="copiable-link" href='#index-_002elinetabs'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-linetabs"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002elinetabs_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.linetabs]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002elinetabs_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002elinetabs-1"></a>
+<a class="index-entry-id" id="index-tab_002c-line_002dtabs-mode"></a>
+<a class="index-entry-id" id="index-line_002dtabs-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-line_002dtabs"></a>
+<p>If <var class="var">n</var> is missing or non-zero, activate <em class="dfn">line-tabs</em>; deactivate
+it otherwise (the default). Active line-tabs cause GNU <code class="code">troff</code>
+to compute tab distances relative to the start of the output line
+instead of the input line.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de Tabs
+. ds x a\t\c
+. ds y b\t\c
+. ds z c
+. ta 1i 3i
+\\*x
+\\*y
+\\*z
+..
+.Tabs
+.br
+.linetabs
+.Tabs
+ &rArr; a b c
+ &rArr; a b c
+</pre></div></div>
+
+<p>Line-tabs activation is associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>). The read-only register <code class="code">.linetabs</code>
+interpolates&nbsp;1 if line-tabs are active, and 0 otherwise.
+</p></dd></dl>
+
+
+
+<ul class="mini-toc">
+<li><a href="#Leaders" accesskey="1">Leaders</a></li>
+<li><a href="#Fields" accesskey="2">Fields</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Leaders">
+<div class="nav-panel">
+<p>
+Next: <a href="#Fields" accesskey="n" rel="next">Fields</a>, Previous: <a href="#Tabs-and-Fields" accesskey="p" rel="prev">Tabs and Fields</a>, Up: <a href="#Tabs-and-Fields" accesskey="u" rel="up">Tabs and Fields</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Leaders-1">5.12.1 Leaders</h4>
+<a class="index-entry-id" id="index-leaders"></a>
+
+<p>Sometimes it is desirable to fill a tab stop with a given glyph,
+but also use tab stops normally on the same output line. An example is
+a table of contents entry that uses dots to bridge the entry name with
+its page number, which is itself aligned between tab stops. The
+<code class="code">roff</code> language provides <em class="dfn">leaders</em> for this
+purpose.<a class="footnote" id="DOCF67" href="#FOOT67"><sup>67</sup></a>
+</p>
+<a class="index-entry-id" id="index-leader-character-1"></a>
+<p>A leader character (<abbr class="acronym">ISO</abbr> and <abbr class="acronym">EBCDIC</abbr> code
+point&nbsp;1, also known as <abbr class="acronym">SOH</abbr> or &ldquo;start of heading&rdquo;),
+behaves similarly to a tab character: it moves to the next tab stop.
+The difference is that for this movement, the default fill character is
+a period &lsquo;<samp class="samp">.</samp>&rsquo;.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005ca-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\a</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ca-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005ca"></a>
+<a class="index-entry-id" id="index-leader-character_002c-non_002dinterpreted-_0028_005ca_0029"></a>
+<a class="index-entry-id" id="index-character_002c-leader_002c-non_002dinterpreted-_0028_005ca_0029"></a>
+<a class="index-entry-id" id="index-_005ca_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-_005ca"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005ca"></a>
+<p>Interpolate a leader in copy mode; see <a class="ref" href="#Copy-Mode">Copy Mode</a>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">c</i></span>]</var><a class="copiable-link" href='#index-_002elc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lc"></a>
+<a class="index-entry-id" id="index-leader-repetition-character-_0028lc_0029"></a>
+<a class="index-entry-id" id="index-character_002c-leader-repetition-_0028lc_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-leader-repetition-_0028lc_0029"></a>
+<p>Set the leader repetition character to the ordinary or special character
+<var class="var">c</var>. Recall <a class="ref" href="#Tabs-and-Leaders">Tabs and Leaders</a>: when encountering a leader
+character in the input, the formatter writes as many dots &lsquo;<samp class="samp">.</samp>&rsquo; as
+are necessary until
+reaching the next tab stop; this is the <em class="dfn">leader definition
+character</em>. Omitting <var class="var">c</var> unsets the leader
+character. With no argument, GNU <code class="code">troff</code> treats leaders the same
+as tabs. The leader repetition character is associated with the
+environment (see <a class="pxref" href="#Environments">Environments</a>). Only a single <var class="var">c</var> is
+recognized; any excess is ignored.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-table-of-contents-1"></a>
+<a class="index-entry-id" id="index-contents_002c-table-of-1"></a>
+<p>A table of contents, for example, may define tab stops after a section
+number, a title, and a gap to be filled with leader dots. The page
+number follows the leader, after a right-aligned final tab stop wide
+enough to house the largest page number occurring in the document.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds entry1 19.\tThe Prophet\a\t98
+.ds entry2 20.\tAll Astir\a\t101
+.ta .5i 4.5i +.5iR
+.nf
+\*[entry1]
+\*[entry2]
+ &rArr; 19. The Prophet............................. 98
+ &rArr; 20. All Astir............................... 101
+</pre></div></div>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Fields">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Leaders" accesskey="p" rel="prev">Leaders</a>, Up: <a href="#Tabs-and-Fields" accesskey="u" rel="up">Tabs and Fields</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Fields-1">5.12.2 Fields</h4>
+<a class="index-entry-id" id="index-fields"></a>
+
+<a class="index-entry-id" id="index-field-delimiting-character-_0028fc_0029"></a>
+<a class="index-entry-id" id="index-delimiting-character_002c-for-fields-_0028fc_0029"></a>
+<a class="index-entry-id" id="index-character_002c-field-delimiting-_0028fc_0029"></a>
+<a class="index-entry-id" id="index-field-padding-character-_0028fc_0029"></a>
+<a class="index-entry-id" id="index-padding-character_002c-for-fields-_0028fc_0029"></a>
+<a class="index-entry-id" id="index-character_002c-field-padding-_0028fc_0029"></a>
+<p><em class="dfn">Fields</em> are a more general way of laying out tabular data. A field
+is defined as the data between a pair of <em class="dfn">delimiting characters</em>.
+It contains substrings that are separated by <em class="dfn">padding characters</em>.
+The width of a field is the distance on the <em class="emph">input</em> line from the
+position where the field starts to the next tab stop. A padding
+character inserts an adjustable space similar to TeX&rsquo;s <code class="code">\hss</code>
+command (thus it can even be negative) to make the sum of all substring
+lengths plus the adjustable space equal to the field width. If more
+than one padding character is inserted, the available space is evenly
+distributed among them.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">delim-char</i></span> [<span class="r"><i class="slanted">padding-char</i></span>]]</var><a class="copiable-link" href='#index-_002efc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fc"></a>
+<p>Define a delimiting and a padding character for fields. If the latter
+is missing, the padding character defaults to a space character. If
+there is no argument at all, the field mechanism is disabled (which is
+the default). In contrast to, e.g., the tab repetition character,
+delimiting and padding characters are <em class="emph">not</em> associated with the
+environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.fc # ^
+.ta T 3i
+#foo^bar^smurf#
+.br
+#foo^^bar^smurf#
+ &rArr; foo bar smurf
+ &rArr; foo bar smurf
+</pre></div></div>
+</dd></dl>
+
+
+
+<hr>
+</div>
+</div>
+<div class="section-level-extent" id="Character-Translations">
+<div class="nav-panel">
+<p>
+Next: <a href="#troff-and-nroff-Modes" accesskey="n" rel="next"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>, Previous: <a href="#Tabs-and-Fields" accesskey="p" rel="prev">Tabs and Fields</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Character-Translations-1">5.13 Character Translations</h3>
+<a class="index-entry-id" id="index-character-translations"></a>
+<a class="index-entry-id" id="index-translations-of-characters"></a>
+
+<p>A <em class="dfn">translation</em> is a mapping of an input character to an output
+glyph. The mapping occurs at output time, i.e., the input character
+gets assigned the metric information of the mapped output character
+right before input tokens are converted to nodes (see <a class="pxref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>, for more on this process).
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tr</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">a</i></span><span class="r"><i class="slanted">b</i></span><span class="r"><i class="slanted">c</i></span><span class="r"><i class="slanted">d</i></span>&hellip;</var><a class="copiable-link" href='#index-_002etr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tr"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002etrin"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.trin</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">a</i></span><span class="r"><i class="slanted">b</i></span><span class="r"><i class="slanted">c</i></span><span class="r"><i class="slanted">d</i></span>&hellip;</var><a class="copiable-link" href='#index-_002etrin'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-trin"></a>
+<p>Translate character <var class="var">a</var> to glyph&nbsp;<var class="var">b</var>, character <var class="var">c</var> to
+glyph&nbsp;<var class="var">d</var>, and so on. If there is an odd number of characters
+in the argument, the last one is translated to a fixed-width space (the
+same one obtained by the <code class="code">\<kbd class="key">SP</kbd></code> escape sequence).
+</p>
+<p>The <code class="code">trin</code> request is identical to <code class="code">tr</code>, but when you unformat
+a diversion with <code class="code">asciify</code> it ignores the translation.
+See <a class="xref" href="#Diversions">Diversions</a>, for details about the <code class="code">asciify</code> request.
+</p>
+<p>Some notes:
+</p>
+<ul class="itemize mark-bullet">
+<li><a class="index-entry-id" id="index-_005c_0028_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005c_005b_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005c_0027_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005c_0060_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005c_002d_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005c_005f_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005cC_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005cN_002c-and-translations"></a>
+<a class="index-entry-id" id="index-char-request_002c-and-translations"></a>
+<a class="index-entry-id" id="index-special-characters-1"></a>
+<a class="index-entry-id" id="index-character_002c-special"></a>
+<a class="index-entry-id" id="index-numbered-glyph-_0028_005cN_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-numbered-_0028_005cN_0029"></a>
+Special characters (<code class="code">\(<var class="var">xx</var></code>, <code class="code">\[<var class="var">xxx</var>]</code>,
+<code class="code">\C'<var class="var">xxx</var>'</code>, <code class="code">\'</code>, <code class="code">\`</code>, <code class="code">\-</code>, <code class="code">\_</code>),
+glyphs defined with the <code class="code">char</code> request, and numbered glyphs
+(<code class="code">\N'<var class="var">xxx</var>'</code>) can be translated also.
+
+</li><li><a class="index-entry-id" id="index-_005ce_002c-and-translations"></a>
+The <code class="code">\e</code> escape can be translated also.
+
+</li><li><a class="index-entry-id" id="index-_005c_0025_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005c_007e_002c-and-translations"></a>
+Characters can be mapped onto the <code class="code">\%</code> and <code class="code">\~</code> escape
+sequences (but <code class="code">\%</code> and <code class="code">\~</code> can&rsquo;t be mapped onto another
+glyph).
+
+</li><li><a class="index-entry-id" id="index-backspace-character_002c-and-translations"></a>
+<a class="index-entry-id" id="index-character_002c-backspace_002c-and-translations"></a>
+<a class="index-entry-id" id="index-leader-character_002c-and-translations"></a>
+<a class="index-entry-id" id="index-character_002c-leader_002c-and-translations"></a>
+<a class="index-entry-id" id="index-newline-character_002c-and-translations"></a>
+<a class="index-entry-id" id="index-character_002c-newline_002c-and-translations"></a>
+<a class="index-entry-id" id="index-tab-character_002c-and-translations"></a>
+<a class="index-entry-id" id="index-character_002c-tab_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005ca_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005ct_002c-and-translations"></a>
+The following characters can&rsquo;t be translated: space (with one exception,
+see below), backspace, newline, leader (and <code class="code">\a</code>), tab (and
+<code class="code">\t</code>).
+
+</li><li><a class="index-entry-id" id="index-shc-request_002c-and-translations"></a>
+Translations are not considered for finding the soft hyphen character
+set with the <code class="code">shc</code> request.
+
+</li><li><a class="index-entry-id" id="index-_005c_0026_002c-and-translations"></a>
+The pair &lsquo;<samp class="samp"><var class="var">c</var>\&amp;</samp>&rsquo; (an arbitrary character&nbsp;<var class="var">c</var> followed
+by the dummy character) maps this character to &ldquo;nothing&rdquo;.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tr a\&amp;
+foo bar
+ &rArr; foo br
+</pre></div></div>
+
+<p>Even the space character can be mapped to the dummy character.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tr aa \&amp;
+foo bar
+ &rArr; foobar
+</pre></div></div>
+
+<p>As shown in the example, the space character can&rsquo;t be the first
+character/glyph pair as an argument of <code class="code">tr</code>. Additionally, it is
+not possible to map the space character to any other glyph; requests
+like &lsquo;<samp class="samp">.tr&nbsp;aa&nbsp;x</samp>&rsquo;<!-- /@w --> undo &lsquo;<samp class="samp">.tr&nbsp;aa&nbsp;\&amp;</samp>&rsquo;<!-- /@w --> instead.
+</p>
+<p>If justification is active, lines are justified in spite of the &lsquo;empty&rsquo;
+space character (but there is no minimal distance, i.e., the space
+character, between words).
+</p>
+</li><li>After an output glyph has been constructed (this happens at the moment
+immediately before the glyph is appended to an output glyph list, either
+by direct output, in a macro, diversion, or string), it is no longer
+affected by <code class="code">tr</code>.
+
+</li><li>Translating character to glyphs where one of them or both are undefined
+is possible also; <code class="code">tr</code> does not check whether the elements of its
+argument exist.
+
+<p>See <a class="xref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>.
+</p>
+</li><li>Without an argument, the <code class="code">tr</code> request is ignored.
+</li></ul>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etrnt"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.trnt</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">a</i></span><span class="r"><i class="slanted">b</i></span><span class="r"><i class="slanted">c</i></span><span class="r"><i class="slanted">d</i></span>&hellip;</var><a class="copiable-link" href='#index-_002etrnt'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-trnt"></a>
+<a class="index-entry-id" id="index-_005c_0021_002c-and-trnt"></a>
+<p><code class="code">trnt</code> is the same as the <code class="code">tr</code> request except that the
+translations do not apply to text that is transparently throughput into
+a diversion with <code class="code">\!</code>. See <a class="xref" href="#Diversions">Diversions</a>.
+</p>
+<p>For example,
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tr ab
+.di x
+\!.tm a
+.di
+.x
+</pre></div></div>
+
+<p>prints &lsquo;<samp class="samp">b</samp>&rsquo; to the standard error stream; if <code class="code">trnt</code> is used
+instead of <code class="code">tr</code> it prints &lsquo;<samp class="samp">a</samp>&rsquo;.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="troff-and-nroff-Modes">
+<div class="nav-panel">
+<p>
+Next: <a href="#Line-Layout" accesskey="n" rel="next">Line Layout</a>, Previous: <a href="#Character-Translations" accesskey="p" rel="prev">Character Translations</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="troff-and-nroff-Modes-1">5.14 <code class="code">troff</code> and <code class="code">nroff</code> Modes</h3>
+<a class="index-entry-id" id="index-troff-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-troff"></a>
+<a class="index-entry-id" id="index-nroff-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-nroff"></a>
+
+<p>Historically, <code class="code">nroff</code> and <code class="code">troff</code> were two separate programs;
+the former for terminal output, the latter for typesetters. GNU
+<code class="code">troff</code> merges both functions into one executable<a class="footnote" id="DOCF68" href="#FOOT68"><sup>68</sup></a> that sends its output to a
+device driver (<code class="code">grotty</code> for terminal devices, <code class="code">grops</code> for
+PostScript, and so on) which interprets this intermediate output format.
+When discussing <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, it makes sense to talk
+about <em class="dfn"><code class="code">nroff</code> mode</em> and <em class="dfn"><code class="code">troff</code> mode</em> since the
+differences are hard-coded. GNU <code class="code">troff</code> takes information from
+device and font description files without handling requests specially if
+a terminal output device is used, so such a strong distinction is
+unnecessary.
+</p>
+<p>Usually, a macro package can be used with all output devices.
+Nevertheless, it is sometimes necessary to make a distinction between
+terminal and non-terminal devices: GNU <code class="code">troff</code> provides two
+built-in conditions &lsquo;<samp class="samp">n</samp>&rsquo; and &lsquo;<samp class="samp">t</samp>&rsquo; for the <code class="code">if</code>, <code class="code">ie</code>,
+and <code class="code">while</code> requests to decide whether GNU <code class="code">troff</code> shall
+behave like <code class="code">nroff</code> or like <code class="code">troff</code>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etroff"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.troff</code></strong><a class="copiable-link" href='#index-_002etroff'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-troff"></a>
+<a class="index-entry-id" id="index-troffrc-4"></a>
+<a class="index-entry-id" id="index-troffrc_002dend-2"></a>
+<p>Make the &lsquo;<samp class="samp">t</samp>&rsquo; built-in condition true (and the &lsquo;<samp class="samp">n</samp>&rsquo; built-in
+condition false) for <code class="code">if</code>, <code class="code">ie</code>, and <code class="code">while</code> conditional
+requests. This is the default if GNU <code class="code">troff</code> (<em class="emph">not</em>
+<code class="code">groff</code>) is started with the <samp class="option">-R</samp> switch to avoid loading of
+the startup files <samp class="file">troffrc</samp> and <samp class="file">troffrc-end</samp>. Without
+<samp class="option">-R</samp>, GNU <code class="code">troff</code> stays in <code class="code">troff</code> mode if the output
+device is not a terminal (e.g., &lsquo;ps&rsquo;).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enroff"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nroff</code></strong><a class="copiable-link" href='#index-_002enroff'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nroff"></a>
+<a class="index-entry-id" id="index-tty_002etmac"></a>
+<p>Make the &lsquo;<samp class="samp">n</samp>&rsquo; built-in condition true (and the &lsquo;<samp class="samp">t</samp>&rsquo; built-in
+condition false) for <code class="code">if</code>, <code class="code">ie</code>, and <code class="code">while</code> conditional
+requests. This is the default if GNU <code class="code">troff</code> uses a terminal
+output device; the code for switching to <code class="code">nroff</code> mode is in the
+file <samp class="file">tty.tmac</samp>, which is loaded by the startup file
+<code class="code">troffrc</code>.
+</p></dd></dl>
+
+<p>See <a class="xref" href="#Conditionals-and-Loops">Conditionals and Loops</a>, for more details on built-in conditions.
+</p>
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Line-Layout">
+<div class="nav-panel">
+<p>
+Next: <a href="#Line-Continuation" accesskey="n" rel="next">Line Continuation</a>, Previous: <a href="#troff-and-nroff-Modes" accesskey="p" rel="prev"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Line-Layout-1">5.15 Line Layout</h3>
+<a class="index-entry-id" id="index-line-layout"></a>
+<a class="index-entry-id" id="index-layout_002c-line"></a>
+
+<a class="index-entry-id" id="index-dimensions_002c-line"></a>
+<a class="index-entry-id" id="index-line-dimensions"></a>
+<p>The following drawing shows the dimensions that <code class="code">gtroff</code> uses for
+placing a line of output onto the page. They are labeled with the
+request that manipulates each dimension.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> --&gt;| in |&lt;--
+ |&lt;-----------ll------------&gt;|
+ +----+----+----------------------+----+
+ | : : : |
+ +----+----+----------------------+----+
+--&gt;| po |&lt;--
+ |&lt;--------paper width----------------&gt;|
+</pre></div></div>
+
+<p>These dimensions are:
+</p>
+<dl class="ftable">
+<dt id='index-po'><span><code class="code">po</code><a class="copiable-link" href='#index-po'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-left-margin-_0028po_0029"></a>
+<a class="index-entry-id" id="index-margin_002c-left-_0028po_0029"></a>
+<a class="index-entry-id" id="index-page-offset-_0028po_0029"></a>
+<a class="index-entry-id" id="index-offset_002c-page-_0028po_0029"></a>
+<p><em class="dfn">Page offset</em>&mdash;this is the leftmost position of text on the final
+output, defining the <em class="dfn">left margin</em>.
+</p>
+</dd>
+<dt id='index-in'><span><code class="code">in</code><a class="copiable-link" href='#index-in'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-indentation-_0028in_0029"></a>
+<a class="index-entry-id" id="index-line-indentation-_0028in_0029"></a>
+<p><em class="dfn">Indentation</em>&mdash;this is the distance from the left margin where
+text is printed.
+</p>
+</dd>
+<dt id='index-ll'><span><code class="code">ll</code><a class="copiable-link" href='#index-ll'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-line-length-_0028ll_0029"></a>
+<a class="index-entry-id" id="index-length-of-line-_0028ll_0029"></a>
+<p><em class="dfn">Line length</em>&mdash;this is the distance from the left margin to right
+margin.
+</p></dd>
+</dl>
+
+<a class="index-entry-id" id="index-margin_002c-right"></a>
+<a class="index-entry-id" id="index-right-margin"></a>
+<p>The right margin is not explicitly configured; the combination of page
+offset and line length provides the information necessary to derive it.
+</p>
+<p>A simple demonstration:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 3i
+This is text without indentation.
+The line length has been set to 3\~inches.
+.in +.5i
+.ll -.5i
+Now the left and right margins are both increased.
+.in
+.ll
+Calling .in and .ll without parameters restores
+the previous values.
+</pre></div></div>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; This is text without indenta-
+ &rArr; tion. The line length has
+ &rArr; been set to 3 inches.
+ &rArr; Now the left and
+ &rArr; right margins are
+ &rArr; both increased.
+ &rArr; Calling .in and .ll without
+ &rArr; parameters restores the previ-
+ &rArr; ous values.
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epo"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.po</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">offset</i></span>]</var><a class="copiable-link" href='#index-_002epo'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-po-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002epo-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.po</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">offset</i></span></var><a class="copiable-link" href='#index-_002epo-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002epo-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.po</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">offset</i></span></var><a class="copiable-link" href='#index-_002epo-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eo_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.o]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eo_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eo"></a>
+<a class="index-entry-id" id="index-tty_002etmac-1"></a>
+<p>Set page offset to <var class="var">offset</var> (or increment or decrement its current
+value by <var class="var">offset</var>). If invoked without an argument, the page offset
+is restored to the value before the previous <code class="code">po</code> request.
+This request does not cause a break; the page offset in effect when an
+output line is broken prevails (see <a class="pxref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>). The initial value is 1<span class="dmn">i</span> and the default scaling
+unit is &lsquo;<samp class="samp">m</samp>&rsquo;. On terminal devices, the page offset is set to zero
+by a driver-specific macro file, <samp class="file">tty.tmac</samp>. The current page
+offset can be found in the read-only register &lsquo;<samp class="samp">.o</samp>&rsquo;.
+<a class="index-entry-id" id="index-CSTR-_002354-errata-1"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-po-request"></a>
+This request is incorrectly documented in the <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> manual as using a default scaling unit of &lsquo;<samp class="samp">v</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.po 3i
+\n[.o]
+ &rArr; 720
+.po -1i
+\n[.o]
+ &rArr; 480
+.po
+\n[.o]
+ &rArr; 720
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ein"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.in</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">indent</i></span>]</var><a class="copiable-link" href='#index-_002ein'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-in-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ein-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.in</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">indent</i></span></var><a class="copiable-link" href='#index-_002ein-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002ein-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.in</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">indent</i></span></var><a class="copiable-link" href='#index-_002ein-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ei_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.i]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ei_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ei"></a>
+<p>Set indentation to <var class="var">indent</var> (or increment or decrement the current
+value by <var class="var">indent</var>). This request causes a break. Initially, there
+is no indentation.
+</p>
+<p>If <code class="code">in</code> is called without an argument, the indentation is reset to
+the previous value before the last call to <code class="code">in</code>. The default
+scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;.
+</p>
+<p>If a negative indentation value is specified (which is not allowed),
+<code class="code">gtroff</code> emits a warning in category &lsquo;<samp class="samp">range</samp>&rsquo; and sets the
+indentation to zero.
+</p>
+<p>The effect of <code class="code">in</code> is delayed until a partially collected line (if
+it exists) is output. A temporary indentation value is reset to zero
+also.
+</p>
+<p>The current indentation (as set by <code class="code">in</code>) can be found in the
+read-only register &lsquo;<samp class="samp">.i</samp>&rsquo;. The indentation is associated with the
+environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eti"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ti</code></strong> <var class="def-var-arguments">offset</var><a class="copiable-link" href='#index-_002eti'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ti"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eti-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ti</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">offset</i></span></var><a class="copiable-link" href='#index-_002eti-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002eti-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ti</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">offset</i></span></var><a class="copiable-link" href='#index-_002eti-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ein_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.in]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ein_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ein-3"></a>
+<p>Temporarily indent the next output line by <var class="var">offset</var>. If an
+increment or decrement value is specified, adjust the temporary
+indentation relative to the value set by the <code class="code">in</code> request.
+</p>
+<p>This request causes a break; its value is associated with the
+environment (see <a class="pxref" href="#Environments">Environments</a>). The default scaling unit is
+&lsquo;<samp class="samp">m</samp>&rsquo;. A call of <code class="code">ti</code> without an argument is ignored.
+</p>
+<p>If the total indentation value is negative (which is not allowed),
+<code class="code">gtroff</code> emits a warning in category &lsquo;<samp class="samp">range</samp>&rsquo; and sets the
+temporary indentation to zero. &lsquo;Total indentation&rsquo; is either
+<var class="var">offset</var> if specified as an absolute value, or the temporary plus
+normal indentation, if <var class="var">offset</var> is given as a relative value.
+</p>
+<p>The effect of <code class="code">ti</code> is delayed until a partially collected line (if
+it exists) is output.
+</p>
+<p>The read-only register <code class="code">.in</code> is the indentation that applies to the
+current output line.
+</p>
+<p>The difference between <code class="code">.i</code> and <code class="code">.in</code> is that the latter takes
+into account whether a partially collected line still uses the old
+indentation value or a temporary indentation value is active.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ell"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ll</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">length</i></span>]</var><a class="copiable-link" href='#index-_002ell'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ll-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ell-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ll</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002ell-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002ell-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ll</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002ell-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002el_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.l]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002el_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002el"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ell_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ll]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ell_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ell-3"></a>
+<p>Set the line length to <var class="var">length</var> (or increment or decrement the
+current value by <var class="var">length</var>). Initially, the line length is set to
+6.5<span class="dmn">i</span>. The effect of <code class="code">ll</code> is delayed until a partially
+collected line (if it exists) is output. The default scaling unit is
+&lsquo;<samp class="samp">m</samp>&rsquo;.
+</p>
+<p>If <code class="code">ll</code> is called without an argument, the line length is reset to
+the previous value before the last call to <code class="code">ll</code>. If a negative
+line length is specified (which is not allowed), <code class="code">gtroff</code> emits a
+warning in category &lsquo;<samp class="samp">range</samp>&rsquo; and sets the line length to zero. The
+line length is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<a class="index-entry-id" id="index-line-length-register-_0028_002el_0029"></a>
+<p>The current line length (as set by <code class="code">ll</code>) can be found in the
+read-only register &lsquo;<samp class="samp">.l</samp>&rsquo;. The read-only register <code class="code">.ll</code> is the
+line length that applies to the current output line.
+</p>
+<p>Similar to <code class="code">.i</code> and <code class="code">.in</code>, the difference between <code class="code">.l</code>
+and <code class="code">.ll</code> is that the latter takes into account whether a partially
+collected line still uses the old line length value.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Line-Continuation">
+<div class="nav-panel">
+<p>
+Next: <a href="#Page-Layout" accesskey="n" rel="next">Page Layout</a>, Previous: <a href="#Line-Layout" accesskey="p" rel="prev">Line Layout</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Line-Continuation-1">5.16 Line Continuation</h3>
+<a class="index-entry-id" id="index-line-control"></a>
+<a class="index-entry-id" id="index-control_002c-line"></a>
+
+<p>When filling is enabled, input and output line breaks generally do not
+correspond. The <code class="code">roff</code> language therefore distinguishes input and
+output line continuation.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cRET-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\<kbd class="key">RET</kbd></code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cRET-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cRET"></a>
+<a class="index-entry-id" id="index-input-line-continuation-_0028_005cRET_0029"></a>
+<a class="index-entry-id" id="index-line_002c-input_002c-continuation-_0028_005cRET_0029"></a>
+<a class="index-entry-id" id="index-continuation_002c-input-line-_0028_005cRET_0029"></a>
+<a class="index-entry-id" id="index-_005cnewline"></a>
+<p><code class="code">\<kbd class="key">RET</kbd></code> (a backslash immediately followed by a newline)
+suppresses the effects of that newline in the input. The next input
+line thus retains the classification of its predecessor as a control or
+text line. <code class="code">\<kbd class="key">RET</kbd></code> is useful for managing line lengths in the
+input during document maintenance; you can break an input line in the
+middle of a request invocation, macro call, or escape sequence. Input
+line continuation is invisible to the formatter, with two exceptions:
+the <code class="code">|</code> operator recognizes the new input line
+(see <a class="pxref" href="#Numeric-Expressions">Numeric Expressions</a>), and the input line counter register
+<code class="code">.c</code> is incremented.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 50n
+.de I
+. ft I
+. nop \\$*
+. ft
+..
+Our film class watched
+.I The Effect of Gamma Rays on Man-in-the-Moon
+Marigolds. \&quot; whoops, the input line wrapped
+.br
+.I My own opus begins on line \n[.c] \
+and ends on line \n[.c].
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; Our film class watched <i class="i">The Effect of Gamma Rays on</i>
+ &rArr; <i class="i">Man-in-the-Moon</i> Marigolds.
+ &rArr; <i class="i">My own opus begins on line 11 and ends on line 12.</i>
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cc-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\c</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cc-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cc"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eint_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.int]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eint_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eint"></a>
+<a class="index-entry-id" id="index-output-line_002c-continuation-_0028_005cc_0029"></a>
+<a class="index-entry-id" id="index-line_002c-output_002c-continuation-_0028_005cc_0029"></a>
+<a class="index-entry-id" id="index-continuation_002c-output-line-_0028_005cc_0029"></a>
+<a class="index-entry-id" id="index-interrupted-line"></a>
+<a class="index-entry-id" id="index-line_002c-interrupted"></a>
+<a class="index-entry-id" id="index-_005cR_002c-after-_005cc"></a>
+<p><code class="code">\c</code> continues an output line. Nothing after it on the input line
+is formatted. In contrast to <code class="code">\<kbd class="key">RET</kbd></code>, a line after <code class="code">\c</code>
+remains a new input line, so a control character is recognized at its
+beginning. The visual results depend on whether filling is enabled; see
+<a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>.
+</p>
+<ul class="itemize mark-bullet">
+<li><a class="index-entry-id" id="index-_005cc_002c-when-filling-enabled"></a>
+<a class="index-entry-id" id="index-fill-mode_002c-and-_005cc"></a>
+<a class="index-entry-id" id="index-mode_002c-fill_002c-and-_005cc"></a>
+If filling is enabled, a word interrupted with <code class="code">\c</code> is continued
+with the text on the next input text line, without an intervening space.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">This is a te\c
+st.
+ &rArr; This is a test.
+</pre></div></div>
+
+</li><li><a class="index-entry-id" id="index-_005cc_002c-when-filling-disabled"></a>
+<a class="index-entry-id" id="index-no_002dfill-mode_002c-and-_005cc"></a>
+<a class="index-entry-id" id="index-mode_002c-no_002dfill_002c-and-_005cc"></a>
+If filling is disabled, the next input text line after <code class="code">\c</code> is
+handled as a continuation of the same input text line.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nf
+This is a \c
+test.
+ &rArr; This is a test.
+</pre></div></div>
+</li></ul>
+
+<p>An intervening control line that causes a break overrides <code class="code">\c</code>,
+flushing out the pending output line in the usual way.
+</p>
+<a class="index-entry-id" id="index-interrupted-line-register-_0028_002eint_0029"></a>
+<a class="index-entry-id" id="index-continued-output-line-register-_0028_002eint_0029"></a>
+<p>The <code class="code">.int</code> register contains a positive value if the last output
+line was continued with <code class="code">\c</code>; this datum is associated with the
+environment (see <a class="pxref" href="#Environments">Environments</a>).<a class="footnote" id="DOCF69" href="#FOOT69"><sup>69</sup></a>
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Page-Layout">
+<div class="nav-panel">
+<p>
+Next: <a href="#Page-Control" accesskey="n" rel="next">Page Control</a>, Previous: <a href="#Line-Continuation" accesskey="p" rel="prev">Line Continuation</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Page-Layout-2">5.17 Page Layout</h3>
+<a class="index-entry-id" id="index-page-layout"></a>
+<a class="index-entry-id" id="index-layout_002c-page"></a>
+
+<p>The formatter permits configuration of the page length and page number.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epl"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pl</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">length</i></span>]</var><a class="copiable-link" href='#index-_002epl'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pl"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002epl-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pl</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002epl-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002epl-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pl</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002epl-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ep_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.p]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ep_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ep"></a>
+<a class="index-entry-id" id="index-page-length_002c-configuring-_0028pl_0029"></a>
+<a class="index-entry-id" id="index-length-of-the-page_002c-configuring-_0028pl_0029"></a>
+<a class="index-entry-id" id="index-configuring-the-page-length-_0028pl_0029"></a>
+<a class="index-entry-id" id="index-setting-the-page-length-_0028pl_0029"></a>
+<p>Change (increase or decrease) the page length per the numeric expression
+<var class="var">length</var>. The default scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. A negative
+<var class="var">length</var> is valid, but an uncommon application: it prevents page
+location traps from being sprung,<a class="footnote" id="DOCF70" href="#FOOT70"><sup>70</sup></a> and each
+output line is placed on a new page. If <var class="var">length</var> is invalid, GNU
+<code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">number</samp>&rsquo;. If <var class="var">length</var>
+is absent or invalid, &lsquo;<samp class="samp">11i</samp>&rsquo; is assumed.
+</p>
+<a class="index-entry-id" id="index-page-length-register-_0028_002ep_0029"></a>
+<p>The read-only register &lsquo;<samp class="samp">.p</samp>&rsquo; interpolates the current page length.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pn</code></strong> <var class="def-var-arguments">num</var><a class="copiable-link" href='#index-_002epn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pn"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002epn-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pn</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">num</i></span></var><a class="copiable-link" href='#index-_002epn-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002epn-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pn</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">num</i></span></var><a class="copiable-link" href='#index-_002epn-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002epn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.pn]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002epn_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002epn-3"></a>
+<a class="index-entry-id" id="index-page-number_002c-configuring-next-_0028pn_0029"></a>
+<a class="index-entry-id" id="index-next-page-number_002c-configuring-_0028pn_0029"></a>
+<a class="index-entry-id" id="index-number_002c-page_002c-next_002c-configuring-_0028pn_0029"></a>
+<p>Change (increase or decrease) the page number of the <em class="emph">next</em> page
+per the numeric expression <var class="var">num</var>. If <var class="var">num</var> is invalid, GNU
+<code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">number</samp>&rsquo; and ignores the
+request. Without an argument, <code class="code">pn</code> is ignored.
+</p>
+<a class="index-entry-id" id="index-next-page-number-register-_0028_002epn_0029"></a>
+<a class="index-entry-id" id="index-page-number_002c-next_002c-register-_0028_002epn_0029"></a>
+<p>The read-only register <code class="code">.pn</code> interpolates <var class="var">num</var> if set by
+<code class="code">pn</code> on the current page, or the current page number plus&nbsp;1.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-headers"></a>
+<a class="index-entry-id" id="index-footers"></a>
+<a class="index-entry-id" id="index-titles"></a>
+<p>The formatter offers special support for typesetting headers and
+footers, collectively termed <em class="dfn">titles</em>. Titles have an independent
+line length, and their placement on the page is not restricted.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etl"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tl</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002etl'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tl"></a>
+<a class="index-entry-id" id="index-title-line_002c-formatting-_0028tl_0029"></a>
+<a class="index-entry-id" id="index-formatting-a-title-line-_0028tl_0029"></a>
+<a class="index-entry-id" id="index-three_002dpart-title-_0028tl_0029"></a>
+<a class="index-entry-id" id="index-page-number-character-_0028_0025_0029"></a>
+<p>Format an output line as a title consisting of <var class="var">left</var>, <var class="var">center</var>,
+and <var class="var">right</var>, each aligned accordingly. The delimiter need not be a
+neutral apostrophe: <code class="code">tl</code> accepts the same delimiters as most escape
+sequences; see <a class="ref" href="#Delimiters">Delimiters</a>. If not used as the delimiter, any
+<em class="dfn">page number character</em> character is replaced with the current page
+number; the default is &lsquo;<samp class="samp">%</samp>&rsquo;; see the the <code class="code">pc</code> request below.
+Without an argument, <code class="code">tl</code> is ignored. <code class="code">tl</code> writes the title
+line immediately, ignoring any partially collected line.
+</p>
+<p>It is not an error to omit delimiters after the first. For example,
+&lsquo;<samp class="samp">.tl&nbsp;/Thesis</samp>&rsquo;<!-- /@w --> is interpreted as &lsquo;<samp class="samp">.tl&nbsp;/Thesis///</samp>&rsquo;<!-- /@w -->: it
+sets a title line comprising only the left-aligned word &lsquo;<samp class="samp">Thesis</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elt"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lt</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">length</i></span>]</var><a class="copiable-link" href='#index-_002elt'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lt"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002elt-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lt</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002elt-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002elt-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lt</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002elt-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002elt_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.lt]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002elt_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002elt-3"></a>
+<a class="index-entry-id" id="index-length-of-title-line_002c-configuring-_0028lt_0029"></a>
+<a class="index-entry-id" id="index-title-length_002c-configuring-_0028lt_0029"></a>
+<p>Change (increase or decrease) the line length used by titles per the
+numeric expression <var class="var">length</var>. The default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;.
+If <var class="var">length</var> is negative, GNU emits a warning in category
+&lsquo;<samp class="samp">range</samp>&rsquo; and treats <var class="var">length</var> as &lsquo;<samp class="samp">0</samp>&rsquo;. If <var class="var">length</var> is
+invalid, GNU <code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">number</samp>&rsquo; and
+ignores the request. The formatter&rsquo;s default title length is
+&lsquo;<samp class="samp">6.5i</samp>&rsquo;. With no argument, the title length is restored to the
+previous value. The title length is is associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<a class="index-entry-id" id="index-title-line-length-register-_0028_002elt_0029"></a>
+<p>The read-only register &lsquo;<samp class="samp">.lt</samp>&rsquo; interpolates the title line length.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">char</i></span>]</var><a class="copiable-link" href='#index-_002epc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pc"></a>
+<a class="index-entry-id" id="index-changing-the-page-number-character-_0028pc_0029"></a>
+<a class="index-entry-id" id="index-page-number-character_002c-changing-_0028pc_0029"></a>
+<a class="index-entry-id" id="index-_0025-1"></a>
+<p>Set the page number character to <var class="var">char</var>. With no argument, the page
+number character is disabled. <code class="code">pc</code> does not affect the
+register&nbsp;<code class="code">%</code>.
+</p></dd></dl>
+
+<p>The following example exercises title features.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.lt 50n
+This is my partially collected
+.tl 'Isomers 2023'%'Dextrose Edition'
+line.
+ &rArr; Isomers 2023 1 Dextrose Edition
+ &rArr; This is my partially collected line.
+</pre></div></div>
+
+<p>We most often see titles used in page header and footer traps.
+See <a class="xref" href="#Traps">Traps</a>.
+</p>
+
+<hr>
+</div>
+<div class="section-level-extent" id="Page-Control">
+<div class="nav-panel">
+<p>
+Next: <a href="#Using-Fonts" accesskey="n" rel="next">Using Fonts</a>, Previous: <a href="#Page-Layout" accesskey="p" rel="prev">Page Layout</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Page-Control-1">5.18 Page Control</h3>
+<a class="index-entry-id" id="index-page-control"></a>
+<a class="index-entry-id" id="index-control_002c-page"></a>
+
+<a class="index-entry-id" id="index-page-break-1"></a>
+<a class="index-entry-id" id="index-break_002c-page-1"></a>
+<a class="index-entry-id" id="index-page-ejection-1"></a>
+<a class="index-entry-id" id="index-ejection_002c-page-1"></a>
+<p>Discretionary page breaks can prevent the unwanted separation of
+content. A new page number takes effect during page ejection; see
+<a class="ref" href="#The-Implicit-Page-Trap">The Implicit Page Trap</a>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bp</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">page-number</i></span>]</var><a class="copiable-link" href='#index-_002ebp'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-bp"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ebp-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bp</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">page-number</i></span></var><a class="copiable-link" href='#index-_002ebp-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002ebp-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bp</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">page-number</i></span></var><a class="copiable-link" href='#index-_002ebp-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_0025_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[%]</code></strong><a class="copiable-link" href='#index-_005cn_005b_0025_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_0025-2"></a>
+<a class="index-entry-id" id="index-new-page-_0028bp_0029"></a>
+<a class="index-entry-id" id="index-page_002c-new-_0028bp_0029"></a>
+<p>Break the page and change (increase or decrease) the next page number
+per the numeric expression <var class="var">page-number</var>. If <var class="var">page-number</var> is
+invalid, GNU <code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">number</samp>&rsquo; and
+ignores the argument. This request causes a break. A page break
+advances the vertical drawing position to the bottom of the page,
+springing traps. See <a class="xref" href="#Page-Location-Traps">Page Location Traps</a>.
+<a class="index-entry-id" id="index-bp-request_002c-and-top_002dlevel-diversion"></a>
+<a class="index-entry-id" id="index-top_002dlevel-diversion_002c-and-bp"></a>
+<a class="index-entry-id" id="index-diversion_002c-top_002dlevel_002c-and-bp"></a>
+<code class="code">bp</code> has effect only if invoked within the top-level
+diversion.<a class="footnote" id="DOCF71" href="#FOOT71"><sup>71</sup></a>
+<a class="index-entry-id" id="index-CSTR-_002354-errata-2"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-bp-request"></a>
+This request is incorrectly documented in the <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> manual as having a default scaling unit of &lsquo;<samp class="samp">v</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-page-number-register-_0028_0025_0029"></a>
+<a class="index-entry-id" id="index-current-page-number-_0028_0025_0029"></a>
+<p>The register <code class="code">%</code> interpolates the current page number.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de BP
+' bp \&quot; schedule page break once current line is output
+..
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ene"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ne</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">space</i></span>]</var><a class="copiable-link" href='#index-_002ene'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ne"></a>
+<a class="index-entry-id" id="index-orphan-lines_002c-preventing-with-ne"></a>
+<a class="index-entry-id" id="index-conditional-page-break-_0028ne_0029"></a>
+<a class="index-entry-id" id="index-page-break_002c-conditional-_0028ne_0029"></a>
+<p>Force a page break if insufficient vertical space is available (assert
+&ldquo;needed&rdquo; space). <code class="code">ne</code> tests the distance to the next page
+location trap; see <a class="ref" href="#Page-Location-Traps">Page Location Traps</a>, and breaks the page if
+that amount is less than <var class="var">space</var>. The default scaling unit is
+&lsquo;<samp class="samp">v</samp>&rsquo;. If <var class="var">space</var> is invalid, GNU <code class="code">troff</code> emits a warning
+in category &lsquo;<samp class="samp">number</samp>&rsquo; and ignores the argument. If <var class="var">space</var> is
+not specified, &lsquo;<samp class="samp">1v</samp>&rsquo; is assumed.
+</p>
+<a class="index-entry-id" id="index-widow"></a>
+<p>We can require space for at least the first two output lines of a
+paragraph, preventing its first line from being <i class="slanted">widowed</i> at the
+page bottom.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ne 2v
+Considering how common illness is,
+how tremendous the spiritual change that it brings,
+how astonishing,
+when the lights of health go down,
+the undiscovered countries that are then disclosed,
+what wastes and deserts of the soul a slight attack
+of influenza brings to view,
+</pre></div></div>
+
+<p>This method is reliable only if no output line is pending when <code class="code">ne</code>
+is invoked. When macro packages are used, this is often not the case:
+their paragraphing macros perform the break. You may need to experiment
+with placing the <code class="code">ne</code> after the paragraphing macro, or <code class="code">br</code>
+and <code class="code">ne</code> before it.
+</p>
+<a class="index-entry-id" id="index-orphan"></a>
+<a class="index-entry-id" id="index-widow-1"></a>
+<p><code class="code">ne</code> is also useful to force grouping of section headings with
+their subsequent paragraphs, or tables with their captions and/or
+explanations. Macro packages often use <code class="code">ne</code> with diversions to
+implement keeps and displays; see <a class="ref" href="#Diversions">Diversions</a>. They may also offer
+parameters for widow and orphan management.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002esv"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sv</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">space</i></span>]</var><a class="copiable-link" href='#index-_002esv'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-sv"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eos"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.os</code></strong><a class="copiable-link" href='#index-_002eos'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-os"></a>
+<a class="index-entry-id" id="index-ne-request_002c-comparison-with-sv"></a>
+<p>Require vertical space as <code class="code">ne</code> does, but also <i class="slanted">save</i> it for
+later output by the <code class="code">os</code> request. If <var class="var">space</var> is available
+before the next page location trap, it is output immediately. Both
+requests ignore a partially collected line, taking effect at the next
+break.
+<a class="index-entry-id" id="index-sv-request_002c-and-no_002dspace-mode"></a>
+<a class="index-entry-id" id="index-os-request_002c-and-no_002dspace-mode"></a>
+<code class="code">sv</code> and <code class="code">os</code> ignore no-space mode (recall <a class="ref" href="#Manipulating-Spacing">Manipulating Spacing</a>). While the <code class="code">sv</code> request allows negative values for
+<var class="var">space</var>, <code class="code">os</code> ignores them. The default scaling unit is
+&lsquo;<samp class="samp">v</samp>&rsquo;. If <var class="var">space</var> is not specified, &lsquo;<samp class="samp">1v</samp>&rsquo; is assumed.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bnl_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[nl]</code></strong><a class="copiable-link" href='#index-_005cn_005bnl_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nl"></a>
+<a class="index-entry-id" id="index-vertical-drawing-position-_0028nl_0029"></a>
+<a class="index-entry-id" id="index-vertical-position_002c-drawing-_0028nl_0029"></a>
+<a class="index-entry-id" id="index-drawing-position_002c-vertical-_0028nl_0029"></a>
+<p><code class="code">nl</code> interpolates or sets the vertical drawing position. When the
+formatter starts, the first page transition hasn&rsquo;t happened yet, and
+<code class="code">nl</code> is negative. If a header trap has been planted on the page
+(typically at vertical position <code class="code">0</code>), you can assign a negative
+value to <code class="code">nl</code> to spring it if that page has already started
+(see <a class="pxref" href="#Page-Location-Traps">Page Location Traps</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de HD
+. sp
+. tl ''Goldbach Solution''
+. sp
+..
+.
+First page.
+.bp
+.wh 0 HD \&quot; plant header trap at top of page
+.nr nl (-1)
+Second page.
+ &rArr; First page.
+ &rArr;
+ &rArr; <span class="r"><i class="i">(blank lines elided)</i></span>
+ &rArr;
+ &rArr; Goldbach Solution
+ &rArr;
+ &rArr; <span class="r"><i class="i">(blank lines elided)</i></span>
+ &rArr;
+ &rArr; Second page.
+</pre></div></div>
+
+<p>Without resetting <code class="code">nl</code> to a negative value, the trap just planted
+would be active beginning with the <em class="emph">next</em> page, not the current
+one.
+</p>
+<p>See <a class="xref" href="#Diversions">Diversions</a>, for a comparison of <code class="code">nl</code> with the <code class="code">.h</code> and
+<code class="code">.d</code> registers.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Using-Fonts">
+<div class="nav-panel">
+<p>
+Next: <a href="#Manipulating-Type-Size-and-Vertical-Spacing" accesskey="n" rel="next">Manipulating Type Size and Vertical Spacing</a>, Previous: <a href="#Page-Control" accesskey="p" rel="prev">Page Control</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Using-Fonts-1">5.19 Using Fonts</h3>
+<a class="index-entry-id" id="index-font"></a>
+
+<a class="index-entry-id" id="index-typeface"></a>
+<a class="index-entry-id" id="index-font-family"></a>
+<a class="index-entry-id" id="index-font-style"></a>
+<a class="index-entry-id" id="index-style_002c-font"></a>
+<a class="index-entry-id" id="index-family_002c-font"></a>
+<a class="index-entry-id" id="index-text-font"></a>
+<a class="index-entry-id" id="index-special-font"></a>
+<a class="index-entry-id" id="index-unstyled-font"></a>
+<a class="index-entry-id" id="index-font_002c-text"></a>
+<a class="index-entry-id" id="index-font_002c-special"></a>
+<a class="index-entry-id" id="index-font_002c-unstyled"></a>
+<p>In digital typography, a <em class="dfn">font</em> is a collection of characters in a
+specific typeface that a device can render as glyphs at a desired
+size.<a class="footnote" id="DOCF72" href="#FOOT72"><sup>72</sup></a> A <code class="code">roff</code> formatter can change typefaces at any
+point in the text. The basic faces are a set of <em class="dfn">styles</em> combining
+upright and slanted shapes with normal and heavy stroke weights:
+&lsquo;<samp class="samp">R</samp>&rsquo;, &lsquo;<samp class="samp">I</samp>&rsquo;, &lsquo;<samp class="samp">B</samp>&rsquo;, and &lsquo;<samp class="samp">BI</samp>&rsquo;&mdash;these stand for
+<i class="slanted">roman</i>, <i class="slanted">italic</i>, <i class="slanted">bold</i>, and
+<i class="slanted">bold-italic</i>. For linguistic text, GNU <code class="code">troff</code> groups
+typefaces into <em class="dfn">families</em> containing each of these
+styles.<a class="footnote" id="DOCF73" href="#FOOT73"><sup>73</sup></a> A <em class="dfn">text font</em> is thus often a family
+combined with a style, but it need not be: consider the <code class="code">ps</code> and
+<code class="code">pdf</code> devices&rsquo; <code class="code">ZCMI</code> (Zapf Chancery Medium italic)&mdash;often,
+no other style of Zapf Chancery Medium is provided. On typesetting
+devices, at least one <em class="dfn">special font</em> is available, comprising
+<em class="dfn">unstyled</em> glyphs for mathematical operators and other purposes.
+</p>
+<a class="index-entry-id" id="index-font-description-file"></a>
+<a class="index-entry-id" id="index-description-file_002c-font"></a>
+<a class="index-entry-id" id="index-file_002c-font-description"></a>
+<a class="index-entry-id" id="index-font-metrics"></a>
+<a class="index-entry-id" id="index-metrics_002c-font"></a>
+<a class="index-entry-id" id="index-mounting-position"></a>
+<a class="index-entry-id" id="index-mounting-position-1"></a>
+<a class="index-entry-id" id="index-position_002c-mounting"></a>
+<p>Like <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, GNU <code class="code">troff</code> does not itself load
+or manipulate a digital font file;<a class="footnote" id="DOCF74" href="#FOOT74"><sup>74</sup></a> instead it
+works with a <em class="dfn">font description file</em> that characterizes it,
+including its glyph repertoire and the <em class="dfn">metrics</em> (dimensions) of
+each glyph.<a class="footnote" id="DOCF75" href="#FOOT75"><sup>75</sup></a> This
+information permits the formatter to accurately place glyphs with
+respect to each other. Before using a font description, the formatter
+associates it with a <em class="dfn">mounting position</em>, a place in an ordered list
+of available typefaces.
+<a class="index-entry-id" id="index-abstract-font-style"></a>
+<a class="index-entry-id" id="index-font-style_002c-abstract"></a>
+<a class="index-entry-id" id="index-style_002c-font_002c-abstract"></a>
+So that a document need not be strongly coupled to a specific font
+family, in GNU <code class="code">troff</code> an output device can associate a style in
+the abstract sense with a mounting position. Thus the default family
+can be combined with a style dynamically, producing a <em class="dfn">resolved font
+name</em>.
+</p>
+<p>Fonts often have trademarked names, and even Free Software fonts can
+require renaming upon modification. <code class="code">groff</code> maintains a
+convention that a device&rsquo;s serif font family is given the name &lsquo;<samp class="samp">T</samp>&rsquo;
+(&ldquo;Times&rdquo;), its sans-serif family &lsquo;<samp class="samp">H</samp>&rsquo; (&ldquo;Helvetica&rdquo;), and its
+monospaced family &lsquo;<samp class="samp">C</samp>&rsquo; (&ldquo;Courier&rdquo;). Historical inertia has driven
+<code class="code">groff</code>&rsquo;s font identifiers to short uppercase abbreviations of font
+names, as with &lsquo;<samp class="samp">TR</samp>&rsquo;, &lsquo;<samp class="samp">TI</samp>&rsquo;, &lsquo;<samp class="samp">TB</samp>&rsquo;, &lsquo;<samp class="samp">TBI</samp>&rsquo;, and a
+special font &lsquo;<samp class="samp">S</samp>&rsquo;.
+</p>
+<p>The default family used with abstract styles can be changed at any time;
+initially, it is &lsquo;<samp class="samp">T</samp>&rsquo;. Typically, abstract styles are arranged in
+the first four mounting positions in the order shown above. The default
+mounting position, and therefore style, is always &lsquo;<samp class="samp">1</samp>&rsquo; (&lsquo;<samp class="samp">R</samp>&rsquo;).
+By issuing appropriate formatter instructions, you can override these
+defaults before your document writes its first glyph.
+</p>
+<a class="index-entry-id" id="index-graphic-renditions"></a>
+<a class="index-entry-id" id="index-renditions_002c-graphic"></a>
+<a class="index-entry-id" id="index-character-cell-attributes"></a>
+<a class="index-entry-id" id="index-attributes_002c-character-cell"></a>
+<a class="index-entry-id" id="index-cell_002c-character_002c-attributes"></a>
+<p>Terminal output devices cannot change font families and lack special
+fonts. They support style changes by overstriking, or by altering
+ISO&nbsp;6429/ECMA-48 <em class="dfn">graphic renditions</em> (character cell
+attributes).
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#Selecting-Fonts" accesskey="1">Selecting Fonts</a></li>
+<li><a href="#Font-Families" accesskey="2">Font Families</a></li>
+<li><a href="#Font-Positions" accesskey="3">Font Positions</a></li>
+<li><a href="#Using-Symbols" accesskey="4">Using Symbols</a></li>
+<li><a href="#Character-Classes" accesskey="5">Character Classes</a></li>
+<li><a href="#Special-Fonts" accesskey="6">Special Fonts</a></li>
+<li><a href="#Artificial-Fonts" accesskey="7">Artificial Fonts</a></li>
+<li><a href="#Ligatures-and-Kerning" accesskey="8">Ligatures and Kerning</a></li>
+<li><a href="#Italic-Corrections" accesskey="9">Italic Corrections</a></li>
+<li><a href="#Dummy-Characters">Dummy Characters</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Selecting-Fonts">
+<div class="nav-panel">
+<p>
+Next: <a href="#Font-Families" accesskey="n" rel="next">Font Families</a>, Previous: <a href="#Using-Fonts" accesskey="p" rel="prev">Using Fonts</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Selecting-Fonts-1">5.19.1 Selecting Fonts</h4>
+<a class="index-entry-id" id="index-font_002c-selection"></a>
+
+<p>We use <em class="dfn">font</em> to refer to any of several means of identifying a
+font: by mounting position (&lsquo;<samp class="samp">3</samp>&rsquo;), by abstract style (&lsquo;<samp class="samp">B</samp>&rsquo;), or
+by its identifier (&lsquo;<samp class="samp">TB</samp>&rsquo;).
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eft"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ft</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">font</i></span>]</var><a class="copiable-link" href='#index-_002eft'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ft"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cff"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\f</code><span class="r"><i class="slanted">f</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cff'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cf"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cf_0028fn"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\f(</code><span class="r"><i class="slanted">fn</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cf_0028fn'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cf_005bfont_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\f[</code><span class="r"><i class="slanted">font</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cf_005bfont_005d'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002efn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.fn]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002efn_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002efn"></a>
+<a class="index-entry-id" id="index-changing-fonts-_0028ft_002c-_005cf_0029"></a>
+<a class="index-entry-id" id="index-fonts_002c-changing-_0028ft_002c-_005cf_0029"></a>
+<a class="index-entry-id" id="index-sty-request_002c-and-changing-fonts"></a>
+<a class="index-entry-id" id="index-fam-request_002c-and-changing-fonts"></a>
+<a class="index-entry-id" id="index-_005cF_002c-and-changing-fonts"></a>
+<a class="index-entry-id" id="index-styles"></a>
+<a class="index-entry-id" id="index-family"></a>
+<a class="index-entry-id" id="index-DESC"></a>
+<a class="index-entry-id" id="index-selecting-the-previous-font-_0028ft_0029"></a>
+<a class="index-entry-id" id="index-previous-font_002c-selecting-_0028ft_0029"></a>
+<a class="index-entry-id" id="index-font_002c-previous_002c-slecting-_0028ft_0029"></a>
+<p>The <code class="code">ft</code> request selects the typeface <var class="var">font</var>. If the argument
+is absent or &lsquo;<samp class="samp">P</samp>&rsquo;, it selects the previously chosen font. If
+<var class="var">font</var> is a non-negative integer, it is interpreted as mounting
+position; the font mounted there is selected. If that position refers
+to an abstract style, it is combined with the default family (see
+<code class="code">fam</code> and <code class="code">\F</code> below) to make a resolved font name. If the
+mounting position is not a style and no font is mounted there, GNU
+<code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">font</samp>&rsquo; and ignores the
+request.
+</p>
+<p>If <var class="var">font</var> matches a style name, it is combined with the current
+family to make a resolved font name. Otherwise, <var class="var">font</var> is assumed
+to already be a resolved font name.
+</p>
+<a class="index-entry-id" id="index-automatic-font-mounting"></a>
+<a class="index-entry-id" id="index-font-mounting_002c-automatic"></a>
+<a class="index-entry-id" id="index-mounting_002c-font_002c-automatic"></a>
+<p>The resolved font name is subject to translation (see request <code class="code">ftr</code>
+below). Next, the (possibly translated) font name&rsquo;s mounting position
+is looked up; if not mounted, <var class="var">font</var> is sought on the file system as
+a font description file and, if located, automatically mounted at the
+next available position (see register <code class="code">.fp</code> below). If the font
+was mounted using an identifier different from its font description file
+name (see request <code class="code">fp</code> below), that file name is then looked up.
+If a font description file for the resolved font name is not found, GNU
+<code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">font</samp>&rsquo; and ignores the
+request.
+</p>
+<p>The <code class="code">\f</code> escape sequence is similar, using one-character name (or
+mounting position) <var class="var">f</var>, two-character name <var class="var">fn</var>, or a name
+<var class="var">font</var> of arbitrary length.
+<a class="index-entry-id" id="index-previous-font_002c-selecting-_0028_005cf_005b_005d_002c-_005cfP_0029"></a>
+<a class="index-entry-id" id="index-font_002c-previous_002c-selecting-_0028_005cf_005b_005d_002c-_005cfP_0029"></a>
+&lsquo;<samp class="samp">\f[]</samp>&rsquo; selects the previous font. The syntax form &lsquo;<samp class="samp">\fP</samp>&rsquo; is
+supported for backward compatibility, and &lsquo;<samp class="samp">\f[P]</samp>&rsquo; for consistency.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">eggs, bacon,
+.ft I
+spam,
+.ft
+and sausage.
+.br
+eggs, bacon, \fIspam,\fP and sausage.
+ &rArr; eggs, bacon, <i class="slanted">spam,</i> and sausage
+ &rArr; eggs, bacon, <i class="slanted">spam,</i> and sausage
+</pre></div></div>
+
+<p>The current and previously selected fonts are properties of the
+environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<p>The read-only string-valued register <code class="code">.fn</code> contains the resolved
+font name of the selected font.
+</p>
+<p><code class="code">\f</code> doesn&rsquo;t produce an input token in GNU <code class="code">troff</code>; it thus
+can be used in requests that expect a single-character argument. We can
+assign a font to a margin character as follows (see <a class="pxref" href="#Miscellaneous">Miscellaneous</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.mc \f[I]x\f[]
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eftr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ftr</code></strong> <var class="def-var-arguments">f [<span class="r"><i class="slanted">g</i></span>]</var><a class="copiable-link" href='#index-_002eftr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ftr"></a>
+<a class="index-entry-id" id="index-font-translation-_0028ftr_0029"></a>
+<a class="index-entry-id" id="index-ft-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-ul-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-bd-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-_005cf_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-cs-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-tkf-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-special-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-fspecial-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-fp-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-sty-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-if-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-ie-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-while-request_002c-and-font-translations"></a>
+<p>Translate font&nbsp;<var class="var">f</var> to font&nbsp;<var class="var">g</var>. Whenever a font
+named&nbsp;<var class="var">f</var> is referred to in a <code class="code">\f</code> escape sequence, in the
+<code class="code">F</code> and <code class="code">S</code> conditional operators, or in the <code class="code">ft</code>,
+<code class="code">ul</code>, <code class="code">bd</code>, <code class="code">cs</code>, <code class="code">tkf</code>, <code class="code">special</code>,
+<code class="code">fspecial</code>, <code class="code">fp</code>, or <code class="code">sty</code> requests, font&nbsp;<var class="var">g</var> is
+used. If <var class="var">g</var> is missing or equal to&nbsp;<var class="var">f</var> the translation is
+undone.
+</p>
+<p>Font translations cannot be chained.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ftr XXX TR
+.ftr XXX YYY
+.ft XXX
+ error&rarr; warning: can't find font 'XXX'
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efzoom"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fzoom</code></strong> <var class="def-var-arguments">f [<span class="r"><i class="slanted">zoom</i></span>]</var><a class="copiable-link" href='#index-_002efzoom'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fzoom"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ezoom_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.zoom]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ezoom_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ezoom"></a>
+<a class="index-entry-id" id="index-magnification-of-a-font-_0028fzoom_0029"></a>
+<a class="index-entry-id" id="index-font_002c-magnification-_0028fzoom_0029"></a>
+<a class="index-entry-id" id="index-zoom-factor-of-a-font-_0028fzoom_0029"></a>
+<a class="index-entry-id" id="index-factor_002c-zoom_002c-of-a-font-_0028fzoom_0029"></a>
+<a class="index-entry-id" id="index-font_002c-zoom-factor-_0028fzoom_0029"></a>
+<a class="index-entry-id" id="index-optical-size-of-a-font"></a>
+<a class="index-entry-id" id="index-font_002c-optical-size"></a>
+<a class="index-entry-id" id="index-size_002c-optical_002c-of-a-font"></a>
+<p>Set magnification of font&nbsp;<var class="var">f</var> to factor <var class="var">zoom</var>, which must
+be a non-negative integer multiple of 1/1000th. This request is useful
+to adjust the optical size of a font in relation to the others. In the
+example below, font <code class="code">CR</code> is magnified by 10% (the zoom factor is
+thus 1.1).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.fam P
+.fzoom CR 1100
+.ps 12
+Palatino and \f[CR]Courier\f[]
+</pre></div></div>
+
+<p>A missing or zero value of <var class="var">zoom</var> is the same as a value of 1000,
+which means no magnification. <var class="var">f</var>&nbsp;must be a resolved font
+name, not an abstract style.
+</p>
+<p>The magnification of a font is completely transparent to GNU
+<code class="code">troff</code>; a change of the zoom factor doesn&rsquo;t cause any effect
+except that the dimensions of glyphs, (word) spaces, kerns, etc., of the
+affected font are adjusted accordingly.
+</p>
+<p>The zoom factor of the current font is available in the read-only
+register &lsquo;<samp class="samp">.zoom</samp>&rsquo;, in multiples of 1/1000th. It returns zero if
+there is no magnification.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Font-Families">
+<div class="nav-panel">
+<p>
+Next: <a href="#Font-Positions" accesskey="n" rel="next">Font Positions</a>, Previous: <a href="#Selecting-Fonts" accesskey="p" rel="prev">Selecting Fonts</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Font-Families-1">5.19.2 Font Families</h4>
+<a class="index-entry-id" id="index-font-families"></a>
+<a class="index-entry-id" id="index-families_002c-font"></a>
+<a class="index-entry-id" id="index-font-styles"></a>
+<a class="index-entry-id" id="index-styles_002c-font"></a>
+
+<p>To accommodate the wide variety of fonts available, GNU <code class="code">troff</code>
+distinguishes <em class="dfn">font families</em> and <em class="dfn">font styles</em>. A resolved
+font name is the catenation of a font family and a style. Selecting an
+abstract style causes GNU <code class="code">troff</code> to combine it with the default
+font family.
+</p>
+<p>You can thus compose a document using abstract styles exclusively for
+its body or running text, selecting a specific family only for titles or
+examples, for instance, and change the default family on the command
+line (recall <a class="ref" href="#Groff-Options">Options</a>).
+</p>
+<p>Fonts for the devices <code class="code">ps</code>, <code class="code">pdf</code>, <code class="code">dvi</code>, <code class="code">lj4</code>,
+<code class="code">lbp</code>, and the X11 devices support this mechanism. By default,
+GNU <code class="code">troff</code> uses the Times family with the four styles &lsquo;<samp class="samp">R</samp>&rsquo;,
+&lsquo;<samp class="samp">I</samp>&rsquo;, &lsquo;<samp class="samp">B</samp>&rsquo;, and &lsquo;<samp class="samp">BI</samp>&rsquo;.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efam"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fam</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">family</i></span>]</var><a class="copiable-link" href='#index-_002efam'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fam"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002efam_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.fam]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002efam_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002efam-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cFf"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\F</code><span class="r"><i class="slanted">f</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cFf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cF"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cF_0028fm"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\F(</code><span class="r"><i class="slanted">fm</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cF_0028fm'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cF_005bfamily_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\F[</code><span class="r"><i class="slanted">family</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cF_005bfamily_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-changing-font-family-_0028fam_002c-_005cF_0029"></a>
+<a class="index-entry-id" id="index-font-family_002c-changing-_0028fam_002c-_005cF_0029"></a>
+<p>Set the default font family, used in combination with abstract styles to
+construct a resolved font name, to <var class="var">family</var> (one-character
+name&nbsp;<var class="var">f</var>, two-character name <var class="var">fm</var>). If no argument is
+given, GNU <code class="code">troff</code> selects the previous font family; if there none,
+is it falls back to the device&rsquo;s default<a class="footnote" id="DOCF76" href="#FOOT76"><sup>76</sup></a> or its own (&lsquo;<samp class="samp">T</samp>&rsquo;).
+</p>
+<p>The <code class="code">\F</code> escape sequence works similarly. In disanalogy to
+<code class="code">\f</code>, &lsquo;<samp class="samp">\FP</samp>&rsquo; makes &lsquo;<samp class="samp">P</samp>&rsquo; the default family. Use
+&lsquo;<samp class="samp">\F[]</samp>&rsquo; to select the previous default family. The default font
+family is available in the read-only string-valued register <code class="code">.fam</code>;
+it is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">spam, \&quot; startup defaults are T (Times) R (roman)
+.fam H \&quot; make Helvetica the default family
+spam, \&quot; family H + style R = HR
+.ft B \&quot; family H + style B = HB
+spam,
+.ft CR \&quot; Courier roman (default family not changed)
+spam,
+.ft \&quot; back to Helvetica bold
+spam,
+.fam T \&quot; make Times the default family
+spam, \&quot; family T + style B = TB
+.ft AR \&quot; font AR (not a style)
+baked beans,
+.ft R \&quot; family T + style R = TR
+and spam.
+</pre></div></div>
+
+<p><code class="code">\F</code> doesn&rsquo;t produce an input token in GNU <code class="code">troff</code>. As a
+consequence, it can be used in requests like <code class="code">mc</code> (which expects
+a single character as an argument) to change the font family on the fly.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.mc \F[P]x\F[]
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002esty"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sty</code></strong> <var class="def-var-arguments">n style</var><a class="copiable-link" href='#index-_002esty'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-sty"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002esty_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.sty]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002esty_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002esty-1"></a>
+<a class="index-entry-id" id="index-setting-up-an-abstract-font-style-_0028sty_0029"></a>
+<a class="index-entry-id" id="index-abstract-font-style_002c-setting-up-_0028sty_0029"></a>
+<a class="index-entry-id" id="index-font-style_002c-abstract_002c-setting-up-_0028sty_0029"></a>
+<a class="index-entry-id" id="index-style_002c-font_002c-abstract_002c-setting-up-_0028sty_0029"></a>
+<a class="index-entry-id" id="index-cs-request_002c-and-font-styles"></a>
+<a class="index-entry-id" id="index-bd-request_002c-and-font-styles"></a>
+<a class="index-entry-id" id="index-tkf-request_002c-and-font-styles"></a>
+<a class="index-entry-id" id="index-uf-request_002c-and-font-styles"></a>
+<a class="index-entry-id" id="index-fspecial-request_002c-and-font-styles"></a>
+<p>Associate an abstract style <var class="var">style</var> with mounting
+position&nbsp;<var class="var">n</var>, which must be a non-negative integer. If the
+requests <code class="code">cs</code>, <code class="code">bd</code>, <code class="code">tkf</code>, <code class="code">uf</code>, or <code class="code">fspecial</code>
+are applied to an abstract style, they are instead applied to the member
+of the current family corresponding to that style.
+</p>
+<a class="index-entry-id" id="index-DESC-1"></a>
+<a class="index-entry-id" id="index-styles-1"></a>
+<p>The default family can be set with the <samp class="option">-f</samp> option (see <a class="pxref" href="#Groff-Options">Options</a>). The <code class="code">styles</code> command in the <samp class="file">DESC</samp> file controls
+which font positions (if any) are initially associated with abstract
+styles rather than fonts.
+</p>
+<p><strong class="strong">Caution:</strong> The <var class="var">style</var> argument is not validated.
+Errors may occur later, when the formatter attempts to construct a
+resolved font name, or format a character for output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr BarPos \n[.fp]
+.sty \n[.fp] Bar
+.fam Foo
+.ft \n[BarPos]
+.tm .f=\n[.f]
+A
+ error&rarr; error: no font family named 'Foo' exists
+ error&rarr; .f=41
+ error&rarr; error: cannot format glyph: no current font
+</pre></div></div>
+
+<p>When an abstract style has been selected, the read-only string-valued
+register &lsquo;<samp class="samp">.sty</samp>&rsquo; interpolates its name; this datum is associated
+with the environment (see <a class="pxref" href="#Environments">Environments</a>). Otherwise, &lsquo;<samp class="samp">.sty</samp>&rsquo;
+interpolates nothing.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Font-Positions">
+<div class="nav-panel">
+<p>
+Next: <a href="#Using-Symbols" accesskey="n" rel="next">Using Symbols</a>, Previous: <a href="#Font-Families" accesskey="p" rel="prev">Font Families</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Font-Positions-1">5.19.3 Font Positions</h4>
+<a class="index-entry-id" id="index-font-positions"></a>
+<a class="index-entry-id" id="index-positions_002c-font"></a>
+
+<p>To support typeface indirection through abstract styles, and for
+compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, the formatter maintains
+a list of font <em class="dfn">positions</em> at which fonts required by a document are
+<em class="dfn">mounted</em>. An output device&rsquo;s description file <samp class="file">DESC</samp>
+typically configures a set of pre-mounted fonts; see <a class="ref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>. A font need not be explicitly mounted before
+it is selected; GNU <code class="code">troff</code> will search <code class="env">GROFF_FONT_PATH</code> for
+it by name and mount it at the first free mounting position on demand.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fp</code></strong> <var class="def-var-arguments">pos id [<span class="r"><i class="slanted">font-description-file-name</i></span>]</var><a class="copiable-link" href='#index-_002efp'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fp"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ef_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.f]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ef_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ef"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002efp_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.fp]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002efp_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002efp-1"></a>
+<a class="index-entry-id" id="index-mounting-a-font-_0028fp_0029"></a>
+<a class="index-entry-id" id="index-font_002c-mounting-_0028fp_0029"></a>
+<p>Mount a font under the name <var class="var">id</var> at mounting position <var class="var">pos</var>, a
+non-negative integer. When the formatter starts up, it reads the output
+device&rsquo;s description to mount an initial set of faces, and selects font
+position&nbsp;1. Position&nbsp;0 is unused by default. Unless the
+<var class="var">font-description-file-name</var> argument is given, <var class="var">id</var> should be
+the name of a font description file stored in a directory corresponding
+to the selected output device. GNU <code class="code">troff</code> does not traverse
+directories to locate the font description file.
+</p>
+<a class="index-entry-id" id="index-font-aliasing-with-third-argument-to-fp-request"></a>
+<a class="index-entry-id" id="index-aliasing-fonts-with-third-argument-to-fp-request"></a>
+<p>The optional third argument enables font names to be aliased, which can
+be necessary in compatibility mode since AT&amp;T <code class="code">troff</code> syntax
+affords no means of identifying fonts with names longer than two
+characters, like &lsquo;<samp class="samp">TBI</samp>&rsquo; or &lsquo;<samp class="samp">ZCMI</samp>&rsquo;, in a font selection escape
+sequence. See <a class="xref" href="#Compatibility-Mode">Compatibility Mode</a>. You can also alias fonts on
+mounting for convenience or abstraction. (See below regarding the
+<code class="code">.fp</code> register.)
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.fp \n[.fp] SC ZCMI
+Send a \f(SChand-written\fP thank-you note.
+.fp \n[.fp] Emph TI
+.fp \n[.fp] Strong TB
+Are \f[Emph]these names\f[] \f[Strong]comfortable\f[]?
+</pre></div></div>
+
+<p>&lsquo;<samp class="samp">DESC</samp>&rsquo;, &lsquo;<samp class="samp">P</samp>&rsquo;, and non-negative integers are not usable as font
+identifiers.
+</p>
+<a class="index-entry-id" id="index-font-position-register-_0028_002ef_0029"></a>
+<p>The position of the currently selected font (or abstract style) is
+available in the read-only register &lsquo;<samp class="samp">.f</samp>&rsquo;. It is associated with
+the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<p>You can copy the value of <code class="code">.f</code> to another register to save it for
+later use.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr saved-font \n[.f]
+<span class="r">&hellip; <i class="i">text involving many font changes</i> &hellip;</span>
+.ft \n[saved-font]
+</pre></div></div>
+
+<a class="index-entry-id" id="index-next-free-font-position-register-_0028_002efp_0029"></a>
+<p>The index of the next (non-zero) free font position is available in the
+read-only register &lsquo;<samp class="samp">.fp</samp>&rsquo;.
+<a class="index-entry-id" id="index-DESC-file_002c-and-font-mounting"></a>
+Fonts not listed in the <samp class="file">DESC</samp> file are automatically mounted at
+position &lsquo;<samp class="samp">\n[.fp]</samp>&rsquo; when selected with the <code class="code">ft</code> request or
+<code class="code">\f</code> escape sequence. When mounting a font at a position
+explicitly with the <code class="code">fp</code> request, this same practice should be
+followed, although GNU <code class="code">troff</code> does not enforce this strictly.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Using-Symbols">
+<div class="nav-panel">
+<p>
+Next: <a href="#Character-Classes" accesskey="n" rel="next">Character Classes</a>, Previous: <a href="#Font-Positions" accesskey="p" rel="prev">Font Positions</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Using-Symbols-1">5.19.4 Using Symbols</h4>
+<a class="index-entry-id" id="index-using-symbols"></a>
+<a class="index-entry-id" id="index-symbols_002c-using"></a>
+
+<a class="index-entry-id" id="index-glyph"></a>
+<a class="index-entry-id" id="index-character"></a>
+<a class="index-entry-id" id="index-glyph_002c-distinguished-from-character"></a>
+<a class="index-entry-id" id="index-character_002c-distinguished-from-glyph"></a>
+<a class="index-entry-id" id="index-ligature"></a>
+<p>A <em class="dfn">glyph</em> is a graphical representation of a <em class="dfn">character</em>. While
+a character is an abstraction of semantic information, a glyph is
+something that can be seen on screen or paper. A character has many
+possible representation forms (for example, the character &lsquo;A&rsquo; can be
+written in an upright or slanted typeface, producing distinct
+glyphs). Sometimes, a sequence of characters map to a single glyph:
+this is a <em class="dfn">ligature</em>&mdash;the most common is &lsquo;fi&rsquo;.
+</p>
+<p>Space characters never become glyphs in GNU <code class="code">troff</code>. If not
+discarded (as when trailing on text lines), they are represented by
+horizontal motions in the output.
+</p>
+<a class="index-entry-id" id="index-symbol"></a>
+<a class="index-entry-id" id="index-special-fonts"></a>
+<a class="index-entry-id" id="index-fonts"></a>
+<a class="index-entry-id" id="index-DESC-2"></a>
+<a class="index-entry-id" id="index-special-request_002c-and-glyph-search-order"></a>
+<a class="index-entry-id" id="index-fspecial-request_002c-and-glyph-search-order"></a>
+<p>A <em class="dfn">symbol</em> is simply a named glyph. Within <code class="code">gtroff</code>, all glyph
+names of a particular font are defined in its font file. If the user
+requests a glyph not available in this font, <code class="code">gtroff</code> looks up an
+ordered list of <em class="dfn">special fonts</em>. By default, the PostScript output
+device supports the two special fonts &lsquo;<samp class="samp">SS</samp>&rsquo; (slanted symbols) and
+&lsquo;<samp class="samp">S</samp>&rsquo; (symbols) (the former is looked up before the latter). Other
+output devices use different names for special fonts. Fonts mounted
+with the <code class="code">fonts</code> keyword in the <samp class="file">DESC</samp> file are globally
+available. To install additional special fonts locally (i.e., for a
+particular font), use the <code class="code">fspecial</code> request.
+</p>
+<p>Here are the exact rules how <code class="code">gtroff</code> searches a given symbol:
+</p>
+<ul class="itemize mark-bullet">
+<li>If the symbol has been defined with the <code class="code">char</code> request, use it.
+This hides a symbol with the same name in the current font.
+
+</li><li>Check the current font.
+
+</li><li>If the symbol has been defined with the <code class="code">fchar</code> request, use it.
+
+</li><li>Check whether the current font has a font-specific list of special
+fonts; test all fonts in the order of appearance in the last
+<code class="code">fspecial</code> call if appropriate.
+
+</li><li>If the symbol has been defined with the <code class="code">fschar</code> request for the
+current font, use it.
+
+</li><li>Check all fonts in the order of appearance in the last <code class="code">special</code>
+call.
+
+</li><li>If the symbol has been defined with the <code class="code">schar</code> request, use it.
+
+</li><li>As a last resort, consult all fonts loaded up to now for special fonts
+and check them, starting with the lowest font number. This can
+sometimes lead to surprising results since the <code class="code">fonts</code> line in
+the <samp class="file">DESC</samp> file often contains empty positions, which are filled
+later on. For example, consider the following:
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">fonts 3 0 0 FOO
+</pre></div></div>
+
+<p>This mounts font <code class="code">foo</code> at font position&nbsp;3. We assume that
+<code class="code">FOO</code> is a special font, containing glyph <code class="code">foo</code>, and that no
+font has been loaded yet. The line
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.fspecial BAR BAZ
+</pre></div></div>
+
+<p>makes font <code class="code">BAZ</code> special only if font <code class="code">BAR</code> is active. We
+further assume that <code class="code">BAZ</code> is really a special font, i.e., the font
+description file contains the <code class="code">special</code> keyword, and that it also
+contains glyph <code class="code">foo</code> with a special shape fitting to font
+<code class="code">BAR</code>. After executing <code class="code">fspecial</code>, font <code class="code">BAR</code> is loaded
+at font position&nbsp;1, and <code class="code">BAZ</code> at position&nbsp;2.
+</p>
+<p>We now switch to a new font <code class="code">XXX</code>, trying to access glyph
+<code class="code">foo</code> that is assumed to be missing. There are neither
+font-specific special fonts for <code class="code">XXX</code> nor any other fonts made
+special with the <code class="code">special</code> request, so <code class="code">gtroff</code> starts the
+search for special fonts in the list of already mounted fonts, with
+increasing font positions. Consequently, it finds <code class="code">BAZ</code> before
+<code class="code">FOO</code> even for <code class="code">XXX</code>, which is not the intended behaviour.
+</p></li></ul>
+
+<p>See <a class="xref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>, and <a class="ref" href="#Special-Fonts">Special Fonts</a>, for
+more details.
+</p>
+<a class="index-entry-id" id="index-list-of-special-characters-_0028groff_005fchar_00287_0029-man-page_0029"></a>
+<a class="index-entry-id" id="index-special-characters_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029"></a>
+<a class="index-entry-id" id="index-characters_002c-special_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029"></a>
+<a class="index-entry-id" id="index-available-glyphs_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029"></a>
+<a class="index-entry-id" id="index-glyphs_002c-available_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029"></a>
+<p>The <cite class="cite">groff_char<span class="r">(7)</span></cite> man page houses a complete list of
+predefined special character names, but the availability of any as a
+glyph is device- and font-dependent. For example, say
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">man -Tdvi groff_char &gt; groff_char.dvi
+</pre></div></div>
+
+<p>to obtain those available with the DVI device and default font
+configuration.<a class="footnote" id="DOCF77" href="#FOOT77"><sup>77</sup></a> If you want to use an additional macro package to change
+the fonts used, <code class="code">groff</code> (or <code class="code">gtroff</code>) must be run directly.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -Tdvi -mec -man groff_char.7 &gt; groff_char.dvi
+</pre></div></div>
+
+<a class="index-entry-id" id="index-composite-glyph-names"></a>
+<a class="index-entry-id" id="index-glyph-names_002c-composite"></a>
+<a class="index-entry-id" id="index-groff-glyph-list-_0028GGL_0029"></a>
+<a class="index-entry-id" id="index-GGL-_0028groff-glyph-list_0029"></a>
+<a class="index-entry-id" id="index-Adobe-Glyph-List-_0028AGL_0029"></a>
+<p>Special character names not listed in <cite class="cite">groff_char<span class="r">(7)</span></cite> are
+derived algorithmically, using a simplified version of the Adobe Glyph
+List (AGL) algorithm, which is described in
+<a class="uref" href="https://github.com/adobe-type-tools/agl-aglfn">https://github.com/adobe-type-tools/agl-aglfn</a>. The (frozen)
+set of names that can&rsquo;t be derived algorithmically is called the
+<em class="dfn"><code class="code">groff</code> glyph list (GGL)</em>.
+</p>
+<ul class="itemize mark-bullet">
+<li>A glyph for Unicode character U+<var class="var">XXXX</var>[<var class="var">X</var>[<var class="var">X</var>]], which is
+not a composite character is named
+<code class="code">u<var class="var">XXXX</var><span class="r">[</span><var class="var">X</var><span class="r">[</span><var class="var">X</var><span class="r">]]</span></code>. <var class="var">X</var> must be an
+uppercase hexadecimal digit. Examples: <code class="code">u1234</code>, <code class="code">u008E</code>,
+<code class="code">u12DB8</code>. The largest Unicode value is 0x10FFFF. There must be at
+least four <code class="code">X</code> digits; if necessary, add leading zeroes (after the
+&lsquo;<samp class="samp">u</samp>&rsquo;). No zero padding is allowed for character codes greater than
+0xFFFF. Surrogates (i.e., Unicode values greater than 0xFFFF
+represented with character codes from the surrogate area U+D800-U+DFFF)
+are not allowed either.
+
+</li><li>A glyph representing more than a single input character is named
+
+<div class="display">
+<pre class="display-preformatted">&lsquo;<samp class="samp">u</samp>&rsquo; <var class="var">component1</var> &lsquo;<samp class="samp">_</samp>&rsquo; <var class="var">component2</var> &lsquo;<samp class="samp">_</samp>&rsquo; <var class="var">component3</var> &hellip;
+</pre></div>
+
+<p>Example: <code class="code">u0045_0302_0301</code>.
+</p>
+<p>For simplicity, all Unicode characters that are composites must be
+maximally decomposed to NFD;<a class="footnote" id="DOCF78" href="#FOOT78"><sup>78</sup></a> for example,
+<code class="code">u00CA_0301</code> is not a valid glyph name since U+00CA (<small class="sc">LATIN
+CAPITAL LETTER E WITH CIRCUMFLEX</small>) can be further decomposed into U+0045
+(<small class="sc">LATIN CAPITAL LETTER E</small>) and U+0302 (<small class="sc">COMBINING CIRCUMFLEX
+ACCENT</small>). <code class="code">u0045_0302_0301</code> is thus the glyph name for U+1EBE,
+<small class="sc">LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE</small>.
+</p>
+</li><li>groff maintains a table to decompose all algorithmically derived glyph
+names that are composites itself. For example, <code class="code">u0100</code> (<small class="sc">LATIN
+LETTER A WITH MACRON</small>) is automatically decomposed into
+<code class="code">u0041_0304</code>. Additionally, a glyph name of the GGL is preferred
+to an algorithmically derived glyph name; <code class="code">groff</code> also
+automatically does the mapping. Example: The glyph <code class="code">u0045_0302</code> is
+mapped to <code class="code">^E</code>.
+
+</li><li>glyph names of the GGL can&rsquo;t be used in composite glyph names; for
+example, <code class="code">^E_u0301</code> is invalid.
+</li></ul>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0028nm"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\(</code><span class="r"><i class="slanted">nm</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0028nm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_005bname_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\[</code><span class="r"><i class="slanted">name</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005c_005bname_005d'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005c_005bbase_002dglyph-combining_002dcomponent-_2026_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\[</code><span class="r"><i class="slanted">base-glyph combining-component &hellip;</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005c_005bbase_002dglyph-combining_002dcomponent-_2026_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0028"></a>
+<a class="index-entry-id" id="index-_005c_005b"></a>
+<p>Typeset a special character <var class="var">name</var> (two-character name <var class="var">nm</var>) or
+a composite glyph consisting of <var class="var">base-glyph</var> overlaid with one or
+more <var class="var">combining-component</var>s. For example, &lsquo;<samp class="samp">\[A ho]</samp>&rsquo; is a
+capital letter &ldquo;A&rdquo; with a &ldquo;hook accent&rdquo; (ogonek).
+</p>
+<p>There is no special syntax for one-character names&mdash;the analogous form
+&lsquo;<samp class="samp">\<var class="var">n</var></samp>&rsquo; would collide with other escape sequences. However, the
+four escape sequences <code class="code">\'</code>, <code class="code">\-</code>, <code class="code">\_</code>, and <code class="code">\`</code>,
+are translated on input to the special character escape sequences
+<code class="code">\[aa]</code>, <code class="code">\[-]</code>, <code class="code">\[ul]</code>, and <code class="code">\[ga]</code>, respectively.
+</p>
+<p>A special character name of length one is not the same thing as an
+ordinary character: that is, the character <code class="code">a</code> is not the same as
+<code class="code">\[a]</code>.
+</p>
+<p>If <var class="var">name</var> is undefined, a warning in category &lsquo;<samp class="samp">char</samp>&rsquo; is
+produced and the escape is ignored. See <a class="xref" href="#Warnings">Warnings</a>, for information
+about the enablement and suppression of warnings.
+</p>
+<p>GNU <code class="code">troff</code> resolves <code class="code">\[<span class="r">&hellip;</span>]</code> with more than a single
+component as follows:
+</p>
+<ul class="itemize mark-bullet">
+<li>Any component that is found in the GGL is converted to the
+<code class="code">u<var class="var">XXXX</var></code> form.
+
+</li><li>Any component <code class="code">u<var class="var">XXXX</var></code> that is found in the list of
+decomposable glyphs is decomposed.
+
+</li><li>The resulting elements are then concatenated with &lsquo;<samp class="samp">_</samp>&rsquo; in between,
+dropping the leading &lsquo;<samp class="samp">u</samp>&rsquo; in all elements but the first.
+</li></ul>
+
+<p>No check for the existence of any component (similar to <code class="code">tr</code>
+request) is done.
+</p>
+<p>Examples:
+</p>
+<dl class="table">
+<dt><code class="code">\[A ho]</code></dt>
+<dd><p>&lsquo;<samp class="samp">A</samp>&rsquo; maps to <code class="code">u0041</code>, &lsquo;<samp class="samp">ho</samp>&rsquo; maps to <code class="code">u02DB</code>, thus the
+final glyph name would be <code class="code">u0041_02DB</code>. This is not the expected
+result: the ogonek glyph &lsquo;<samp class="samp">ho</samp>&rsquo; is a spacing ogonek, but for a
+proper composite a non-spacing ogonek (U+0328) is necessary. Looking
+into the file <samp class="file">composite.tmac</samp>, one can find &lsquo;<samp class="samp">.composite&nbsp;ho&nbsp;u0328</samp>&rsquo;<!-- /@w -->, which changes the mapping of &lsquo;<samp class="samp">ho</samp>&rsquo; while a composite glyph
+name is constructed, causing the final glyph name to be
+<code class="code">u0041_0328</code>.
+</p>
+</dd>
+<dt><code class="code">\[^E u0301]</code></dt>
+<dt><code class="code">\[^E aa]</code></dt>
+<dt><code class="code">\[E a^ aa]</code></dt>
+<dt><code class="code">\[E ^ <code class="code">'</code>]</code></dt>
+<dd><p>&lsquo;<samp class="samp">^E</samp>&rsquo; maps to <code class="code">u0045_0302</code>, thus the final glyph name is
+<code class="code">u0045_0302_0301</code> in all forms (assuming proper calls of the
+<code class="code">composite</code> request).
+</p></dd>
+</dl>
+
+<p>It is not possible to define glyphs with names like &lsquo;<samp class="samp">A&nbsp;ho</samp>&rsquo;<!-- /@w -->
+within a <code class="code">groff</code> font file. This is not really a limitation;
+instead, you have to define <code class="code">u0041_0328</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cC_0027xxx_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\C<code class="code">'</code></code><span class="r"><i class="slanted">xxx</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cC_0027xxx_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cC"></a>
+<a class="index-entry-id" id="index-named-character-_0028_005cC_0029"></a>
+<a class="index-entry-id" id="index-character_002c-named-_0028_005cC_0029"></a>
+<p>Typeset the glyph of the special character <var class="var">xxx</var>. Normally, it is
+more convenient to use <code class="code">\[<var class="var">xxx</var>]</code>, but <code class="code">\C</code> has some
+advantages: it is compatible with <abbr class="acronym">AT&amp;T</abbr> device-independent
+<code class="code">troff</code> (and therefore available in compatibility
+mode<a class="footnote" id="DOCF79" href="#FOOT79"><sup>79</sup></a>) and can interpolate special
+characters with &lsquo;<samp class="samp">]</samp>&rsquo; in their names. The delimiter need not be
+a neutral apostrophe; see <a class="ref" href="#Delimiters">Delimiters</a>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecomposite"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.composite</code></strong> <var class="def-var-arguments">id1 id2</var><a class="copiable-link" href='#index-_002ecomposite'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-composite"></a>
+<a class="index-entry-id" id="index-composite_002etmac"></a>
+<p>Map special character name <var class="var">id1</var> to <var class="var">id2</var> if <var class="var">id1</var> is used
+in <code class="code">\[...]</code> with more than one component. See above for examples.
+This is a strict rewriting of the special character name; no check is
+performed for the existence of a glyph for either. A set of default
+mappings for many accents can be found in the file
+<samp class="file">composite.tmac</samp>, loaded by the default <samp class="file">troffrc</samp> at startup.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cN_0027n_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\N<code class="code">'</code></code><span class="r"><i class="slanted">n</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cN_0027n_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cN"></a>
+<a class="index-entry-id" id="index-numbered-glyph-_0028_005cN_0029-1"></a>
+<a class="index-entry-id" id="index-glyph_002c-numbered-_0028_005cN_0029-1"></a>
+<a class="index-entry-id" id="index-char-request_002c-used-with-_005cN"></a>
+<a class="index-entry-id" id="index-Unicode-1"></a>
+<p>Typeset the glyph with code&nbsp;<var class="var">n</var> in the current font
+(<code class="code">n</code>&nbsp;is <em class="emph">not</em> the input character code). The number
+<var class="var">n</var>&nbsp;can be any non-negative decimal integer. Most devices only
+have glyphs with codes between 0 and&nbsp;255; the Unicode output device
+uses codes in the range 0&ndash;65535. If the current font does not contain
+a glyph with that code, special fonts are <em class="emph">not</em> searched. The
+<code class="code">\N</code> escape sequence can be conveniently used in conjunction with
+the <code class="code">char</code> request:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.char \[phone] \f[ZD]\N'37'
+</pre></div></div>
+
+<a class="index-entry-id" id="index-DESC-3"></a>
+<a class="index-entry-id" id="index-unnamed-glyphs"></a>
+<a class="index-entry-id" id="index-glyphs_002c-unnamed"></a>
+<p>The code of each glyph is given in the fourth column in the font
+description file after the <code class="code">charset</code> command. It is possible to
+include unnamed glyphs in the font description file by using a name of
+&lsquo;<samp class="samp">---</samp>&rsquo;; the <code class="code">\N</code> escape sequence is the only way to use these.
+</p>
+<p>No kerning is applied to glyphs accessed with <code class="code">\N</code>. The delimiter
+need not be a neutral apostrophe; see <a class="ref" href="#Delimiters">Delimiters</a>.
+</p></dd></dl>
+
+<p>A few escape sequences are also special characters.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0027-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\<code class="code">'</code></code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0027-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0027"></a>
+<p>An escaped neutral apostrophe is a synonym for <code class="code">\[aa]</code> (acute
+accent).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0060-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\<code class="code">`</code></code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0060-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0060"></a>
+<p>An escaped grave accent is a synonym for <code class="code">\[ga]</code> (grave accent).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002d-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\-</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_002d"></a>
+<p>An escaped hyphen-minus is a synonym for <code class="code">\[-]</code> (minus sign).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_005f-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\_</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_005f-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_005f"></a>
+<p>An escaped underscore (&ldquo;low line&rdquo;) is a synonym for <code class="code">\[ul]</code>
+(underrule). On typesetting devices, the underrule is font-invariant
+and drawn lower than the underscore &lsquo;<samp class="samp">_</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecflags"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cflags</code></strong> <var class="def-var-arguments">n c1 c2 &hellip;</var><a class="copiable-link" href='#index-_002ecflags'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-cflags"></a>
+<a class="index-entry-id" id="index-glyph-properties-_0028cflags_0029"></a>
+<a class="index-entry-id" id="index-character-properties-_0028cflags_0029"></a>
+<a class="index-entry-id" id="index-properties-of-glyphs-_0028cflags_0029"></a>
+<a class="index-entry-id" id="index-properties-of-characters-_0028cflags_0029"></a>
+<p>Assign properties encoded by the number <var class="var">n</var> to characters <var class="var">c1</var>,
+<var class="var">c2</var>, and so on.
+</p>
+<p>Input characters, including special characters introduced by an escape,
+have certain properties associated with them.<a class="footnote" id="DOCF80" href="#FOOT80"><sup>80</sup></a>
+These properties can be modified with this request. The first argument
+is the sum of the desired flags and the remaining arguments are the
+characters to be assigned those properties. Spaces between the <var class="var">cn</var>
+arguments are optional. Any argument <var class="var">cn</var> can be a character class
+defined with the <code class="code">class</code> request rather than an individual
+character. See <a class="xref" href="#Character-Classes">Character Classes</a>.
+</p>
+<p>The non-negative integer <var class="var">n</var> is the sum of any of the following.
+Some combinations are nonsensical, such as &lsquo;<samp class="samp">33</samp>&rsquo; (1 + 32).
+</p>
+<dl class="table">
+<dt id='index-end_002dof_002dsentence-characters-1'><span><code class="code">1</code><a class="copiable-link" href='#index-end_002dof_002dsentence-characters-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-characters_002c-end_002dof_002dsentence"></a>
+<p>Recognize the character as ending a sentence if followed by a newline
+or two spaces. Initially, characters &lsquo;<samp class="samp">.?!</samp>&rsquo; have this property.
+</p>
+</dd>
+<dt id='index-hyphenating-characters'><span><code class="code">2</code><a class="copiable-link" href='#index-hyphenating-characters'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-characters_002c-hyphenation"></a>
+<p>Enable breaks before the character. A line is not broken at a character
+with this property unless the characters on each side both have non-zero
+hyphenation codes. This exception can be overridden by adding 64.
+Initially, no characters have this property.
+</p>
+</dd>
+<dt id='index-_005c_002d-glyph_002c-and-cflags'><span><code class="code">4</code><a class="copiable-link" href='#index-_005c_002d-glyph_002c-and-cflags'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hy-glyph_002c-and-cflags"></a>
+<a class="index-entry-id" id="index-em-glyph_002c-and-cflags"></a>
+<p>Enable breaks after the character. A line is not broken at a character
+with this property unless the characters on each side both have non-zero
+hyphenation codes. This exception can be overridden by adding 64.
+Initially, characters &lsquo;<samp class="samp">\-\[hy]\[em]</samp>&rsquo; have this property.
+</p>
+</dd>
+<dt id='index-overlapping-characters'><span><code class="code">8</code><a class="copiable-link" href='#index-overlapping-characters'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-characters_002c-overlapping"></a>
+<a class="index-entry-id" id="index-ul-glyph_002c-and-cflags"></a>
+<a class="index-entry-id" id="index-rn-glyph_002c-and-cflags"></a>
+<a class="index-entry-id" id="index-ru-glyph_002c-and-cflags"></a>
+<a class="index-entry-id" id="index-radicalex-glyph_002c-and-cflags"></a>
+<a class="index-entry-id" id="index-sqrtex-glyph_002c-and-cflags"></a>
+<p>Mark the glyph associated with this character as overlapping other
+instances of itself horizontally. Initially, characters
+&lsquo;<samp class="samp">\[ul]\[rn]\[ru]\[radicalex]\[sqrtex]</samp>&rsquo; have this property.
+</p>
+</dd>
+<dt id='index-br-glyph_002c-and-cflags'><span><code class="code">16</code><a class="copiable-link" href='#index-br-glyph_002c-and-cflags'> &para;</a></span></dt>
+<dd><p>Mark the glyph associated with this character as overlapping other
+instances of itself vertically. Initially, the character &lsquo;<samp class="samp">\[br]</samp>&rsquo;
+has this property.
+</p>
+</dd>
+<dt id='index-transparent-characters'><span><code class="code">32</code><a class="copiable-link" href='#index-transparent-characters'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-character_002c-transparent"></a>
+<a class="index-entry-id" id="index-_0022_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-_0027_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-_0029_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-_005d_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-_002a_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-dg-glyph_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-dd-glyph_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-rq-glyph_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-cq-glyph_002c-at-end-of-sentence-1"></a>
+<p>Mark the character as transparent for the purpose of end-of-sentence
+recognition. In other words, an end-of-sentence character followed by
+any number of characters with this property is treated as the end of a
+sentence if followed by a newline or two spaces. This is the same as
+having a zero space factor in TeX. Initially, characters
+&lsquo;<samp class="samp">&quot;')]*\[dg]\[dd]\[rq]\[cq]</samp>&rsquo; have this property.
+</p>
+</dd>
+<dt><code class="code">64</code></dt>
+<dd><p>Ignore hyphenation codes of the surrounding characters. Use this in
+combination with values 2 and&nbsp;4 (initially, no characters have this
+property).
+</p>
+<p>For example, if you need an automatic break point after the en-dash in
+numeric ranges like &ldquo;3000&ndash;5000&rdquo;, insert
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.cflags 68 \[en]
+</pre></div></div>
+
+<p>into your document. However, this practice can lead to bad layout if
+done thoughtlessly; in most situations, a better solution instead of
+changing the <code class="code">cflags</code> value is to insert <code class="code">\:</code> right after the
+hyphen at the places that really need a break point.
+</p></dd>
+</dl>
+
+<p>The remaining values were implemented for East Asian language support;
+those who use alphabetic scripts exclusively can disregard them.
+</p>
+<dl class="table">
+<dt><code class="code">128</code></dt>
+<dd><p>Prohibit a line break before the character, but allow a line break after
+the character. This works only in combination with flags 256 and 512
+and has no effect otherwise. Initially, no characters have this
+property.
+</p>
+</dd>
+<dt><code class="code">256</code></dt>
+<dd><p>Prohibit a line break after the character, but allow a line break before
+the character. This works only in combination with flags 128 and 512
+and has no effect otherwise. Initially, no characters have this
+property.
+</p>
+</dd>
+<dt><code class="code">512</code></dt>
+<dd><p>Allow line break before or after the character. This works only in
+combination with flags 128 and 256 and has no effect otherwise.
+Initially, no characters have this property.
+</p></dd>
+</dl>
+
+<p>In contrast to values 2 and&nbsp;4, the values 128, 256, and 512 work
+pairwise. If, for example, the left character has value 512, and the
+right character 128, no break will be automatically inserted between
+them. If we use value&nbsp;6 instead for the left character, a break
+after the character can&rsquo;t be suppressed since the neighboring character
+on the right doesn&rsquo;t get examined.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002echar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.char</code></strong> <var class="def-var-arguments">c [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002echar'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-char"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002efchar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fchar</code></strong> <var class="def-var-arguments">c [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002efchar'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fchar"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002efschar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fschar</code></strong> <var class="def-var-arguments">f c [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002efschar'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fschar"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eschar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.schar</code></strong> <var class="def-var-arguments">c [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eschar'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-schar"></a>
+<a class="index-entry-id" id="index-defining-character-_0028char_0029"></a>
+<a class="index-entry-id" id="index-defining-fallback-character-_0028fchar_002c-fschar_002c-schar_0029"></a>
+<a class="index-entry-id" id="index-character_002c-defining-_0028char_0029"></a>
+<a class="index-entry-id" id="index-character_002c-defining-fallback-_0028fchar_002c-fschar_002c-schar_0029"></a>
+<a class="index-entry-id" id="index-fallback-character_002c-defining-_0028fchar_002c-fschar_002c-schar_0029"></a>
+<a class="index-entry-id" id="index-creating-new-characters-_0028char_0029"></a>
+<a class="index-entry-id" id="index-defining-symbol-_0028char_0029"></a>
+<a class="index-entry-id" id="index-symbol_002c-defining-_0028char_0029"></a>
+<a class="index-entry-id" id="index-defining-glyph-_0028char_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-defining-_0028char_0029"></a>
+<a class="index-entry-id" id="index-escape-character_002c-while-defining-glyph"></a>
+<a class="index-entry-id" id="index-character_002c-escape_002c-while-defining-glyph"></a>
+<a class="index-entry-id" id="index-tr-request_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-cp-request_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-rc-request_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-lc-request_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-_005cl_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-_005cL_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-_005c_0026_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-_005ce_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-hcode-request_002c-and-glyph-definitions"></a>
+<p>Define a new character or glyph&nbsp;<var class="var">c</var> to be <var class="var">contents</var>, which
+can be empty. More precisely, <code class="code">char</code> defines a <code class="code">groff</code> object
+(or redefines an existing one) that is accessed with the
+name&nbsp;<var class="var">c</var> on input, and produces <var class="var">contents</var> on output.
+Every time glyph&nbsp;<var class="var">c</var> needs to be printed, <var class="var">contents</var> is
+processed in a temporary environment and the result is wrapped up into a
+single object. Compatibility mode is turned off and the escape
+character is set to&nbsp;<code class="code">\</code> while <var class="var">contents</var> is processed.
+Any emboldening, constant spacing, or track kerning is applied to this
+object rather than to individual glyphs in <var class="var">contents</var>.
+</p>
+<p>An object defined by these requests can be used just like a normal glyph
+provided by the output device. In particular, other characters can be
+translated to it with the <code class="code">tr</code> or <code class="code">trin</code> requests; it can be
+made the leader character with the <code class="code">lc</code> request; repeated patterns
+can be drawn with it using the <code class="code">\l</code> and <code class="code">\L</code> escape sequences;
+and words containing&nbsp;<var class="var">c</var> can be hyphenated correctly if the
+<code class="code">hcode</code> request is used to give the object a hyphenation code.
+</p>
+<p>There is a special anti-recursion feature: use of the object within its
+own definition is handled like a normal character (not
+defined with <code class="code">char</code>).
+</p>
+<p>The <code class="code">tr</code> and <code class="code">trin</code> requests take precedence if <code class="code">char</code>
+accesses the same symbol.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tr XY
+X
+ &rArr; Y
+.char X Z
+X
+ &rArr; Y
+.tr XX
+X
+ &rArr; Z
+</pre></div></div>
+
+<p>The <code class="code">fchar</code> request defines a fallback glyph: <code class="code">gtroff</code> only
+checks for glyphs defined with <code class="code">fchar</code> if it cannot find the glyph
+in the current font. <code class="code">gtroff</code> carries out this test before
+checking special fonts.
+</p>
+<p><code class="code">fschar</code> defines a fallback glyph for font&nbsp;<var class="var">f</var>:
+<code class="code">gtroff</code> checks for glyphs defined with <code class="code">fschar</code> after the
+list of fonts declared as font-specific special fonts with the
+<code class="code">fspecial</code> request, but before the list of fonts declared as global
+special fonts with the <code class="code">special</code> request.
+</p>
+<p>Finally, the <code class="code">schar</code> request defines a global fallback glyph:
+<code class="code">gtroff</code> checks for glyphs defined with <code class="code">schar</code> after the list
+of fonts declared as global special fonts with the <code class="code">special</code>
+request, but before the already mounted special fonts.
+</p>
+<p>See <a class="xref" href="#Character-Classes">Character Classes</a>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002erchar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rchar</code></strong> <var class="def-var-arguments">c &hellip;</var><a class="copiable-link" href='#index-_002erchar'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rchar"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002erfschar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rfschar</code></strong> <var class="def-var-arguments">f c &hellip;</var><a class="copiable-link" href='#index-_002erfschar'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rfschar"></a>
+<a class="index-entry-id" id="index-removing-glyph-definition-_0028rchar_002c-rfschar_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-removing-definition-_0028rchar_002c-rfschar_0029"></a>
+<a class="index-entry-id" id="index-fallback-glyph_002c-removing-definition-_0028rchar_002c-rfschar_0029"></a>
+<p>Remove definition of each ordinary or special character <var class="var">c</var>,
+undoing the effect of a <code class="code">char</code>, <code class="code">fchar</code>, or <code class="code">schar</code>
+request. Those supplied by font description files cannot be removed.
+Spaces and tabs may separate <var class="var">c</var>&nbsp;arguments.
+</p>
+<p>The request <code class="code">rfschar</code> removes glyph definitions defined with
+<code class="code">fschar</code> for font&nbsp;<var class="var">f</var>.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Character-Classes">
+<div class="nav-panel">
+<p>
+Next: <a href="#Special-Fonts" accesskey="n" rel="next">Special Fonts</a>, Previous: <a href="#Using-Symbols" accesskey="p" rel="prev">Using Symbols</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Character-Classes-1">5.19.5 Character Classes</h4>
+<a class="index-entry-id" id="index-character-classes"></a>
+<a class="index-entry-id" id="index-classes_002c-character"></a>
+
+<p>Classes are particularly useful for East Asian languages such as
+Chinese, Japanese, and Korean, where the number of needed characters is
+much larger than in European languages, and where large sets of
+characters share the same properties.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eclass"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.class</code></strong> <var class="def-var-arguments">name c1 c2 &hellip;</var><a class="copiable-link" href='#index-_002eclass'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-class"></a>
+<a class="index-entry-id" id="index-character-class-_0028class_0029"></a>
+<a class="index-entry-id" id="index-defining-character-class-_0028class_0029"></a>
+<a class="index-entry-id" id="index-class-of-characters-_0028class_0029"></a>
+<p>Define a character class (or simply &ldquo;class&rdquo;) <var class="var">name</var> comprising
+the characters <var class="var">c1</var>, <var class="var">c2</var>, and so on.
+</p>
+<p>A class thus defined can then be referred to in lieu of listing all the
+characters within it. Currently, only the <code class="code">cflags</code> request can
+handle references to character classes.
+</p>
+<p>In the request&rsquo;s simplest form, each <var class="var">cn</var> is a character (or special
+character).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.class [quotes] ' \[aq] \[dq] \[oq] \[cq] \[lq] \[rq]
+</pre></div></div>
+
+<p>Since class and glyph names share the same name space, it is recommended
+to start and end the class name with <code class="code">[</code> and <code class="code">]</code>,
+respectively, to avoid collisions with existing character names defined
+by GNU <code class="code">troff</code> or the user (with <code class="code">char</code> and related requests).
+This practice applies the presence of <code class="code">]</code> in the class name to
+prevent the use of the special character escape form
+<code class="code">\[<span class="r">&hellip;</span>]</code>, thus you must use the <code class="code">\C</code> escape to access
+a class with such a name.
+</p>
+<a class="index-entry-id" id="index-GGL-_0028groff-glyph-list_0029-1"></a>
+<a class="index-entry-id" id="index-groff-glyph-list-_0028GGL_0029-1"></a>
+<p>You can also use a character range notation consisting of a
+start character followed by &lsquo;<samp class="samp">-</samp>&rsquo; and then an end character.
+Internally, GNU <code class="code">troff</code> converts these two symbol names to
+Unicode code points (according to the <code class="code">groff</code> glyph list [GGL]),
+which then give the start and end value of the range. If that fails,
+the class definition is skipped.
+</p>
+<p>Furthermore, classes can be nested.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.class [prepunct] , : ; &gt; }
+.class [prepunctx] \C'[prepunct]' \[u2013]-\[u2016]
+</pre></div></div>
+
+<p>The class &lsquo;<samp class="samp">[prepunctx]</samp>&rsquo; thus contains the contents of the class
+<code class="code">[prepunct]</code> as defined above (the set &lsquo;<samp class="samp">, : ; &gt; }</samp>&rsquo;), and
+characters in the range between <code class="code">U+2013</code> and <code class="code">U+2016</code>.
+</p>
+<p>If you want to include &lsquo;<samp class="samp">-</samp>&rsquo; in a class, it must be the first
+character value in the argument list, otherwise it gets misinterpreted
+as part of the range syntax.
+</p>
+<p>It is not possible to use class names as end points of range
+definitions.
+</p>
+<p>A typical use of the <code class="code">class</code> request is to control line-breaking
+and hyphenation rules as defined by the <code class="code">cflags</code> request. For
+example, to inhibit line breaks before the characters belonging to the
+<code class="code">prepunctx</code> class defined in the previous example, you can write
+the following.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.cflags 2 \C'[prepunctx]'
+</pre></div></div>
+
+<p>See the <code class="code">cflags</code> request in <a class="ref" href="#Using-Symbols">Using Symbols</a>, for more details.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Special-Fonts">
+<div class="nav-panel">
+<p>
+Next: <a href="#Artificial-Fonts" accesskey="n" rel="next">Artificial Fonts</a>, Previous: <a href="#Character-Classes" accesskey="p" rel="prev">Character Classes</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Special-Fonts-1">5.19.6 Special Fonts</h4>
+<a class="index-entry-id" id="index-special-fonts-1"></a>
+<a class="index-entry-id" id="index-fonts_002c-special"></a>
+
+<p>Special fonts are those that <code class="code">gtroff</code> searches when it cannot find
+the requested glyph in the current font. The Symbol font is usually a
+special font.
+</p>
+<p><code class="code">gtroff</code> provides the following two requests to add more special
+fonts. See <a class="xref" href="#Using-Symbols">Using Symbols</a>, for a detailed description of the glyph
+searching mechanism in <code class="code">gtroff</code>.
+</p>
+<p>Usually, only non-TTY devices have special fonts.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002especial"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.special</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">s1</i></span> <span class="r"><i class="slanted">s2</i></span> &hellip;]</var><a class="copiable-link" href='#index-_002especial'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-special-2"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002efspecial"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fspecial</code></strong> <var class="def-var-arguments">f [<span class="r"><i class="slanted">s1</i></span> <span class="r"><i class="slanted">s2</i></span> &hellip;]</var><a class="copiable-link" href='#index-_002efspecial'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fspecial"></a>
+<a class="index-entry-id" id="index-fonts-1"></a>
+<a class="index-entry-id" id="index-DESC-4"></a>
+<p>Use the <code class="code">special</code> request to define special fonts. Initially, this
+list is empty.
+</p>
+<p>Use the <code class="code">fspecial</code> request to designate special fonts only when
+font&nbsp;<var class="var">f</var> is active. Initially, this list is empty.
+</p>
+<p>Previous calls to <code class="code">special</code> or <code class="code">fspecial</code> are overwritten;
+without arguments, the particular list of special fonts is set to empty.
+Special fonts are searched in the order they appear as arguments.
+</p>
+<p>All fonts that appear in a call to <code class="code">special</code> or <code class="code">fspecial</code>
+are loaded.
+</p>
+<p>See <a class="xref" href="#Using-Symbols">Using Symbols</a>, for the exact search order of glyphs.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Artificial-Fonts">
+<div class="nav-panel">
+<p>
+Next: <a href="#Ligatures-and-Kerning" accesskey="n" rel="next">Ligatures and Kerning</a>, Previous: <a href="#Special-Fonts" accesskey="p" rel="prev">Special Fonts</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Artificial-Fonts-1">5.19.7 Artificial Fonts</h4>
+<a class="index-entry-id" id="index-artificial-fonts"></a>
+<a class="index-entry-id" id="index-fonts_002c-artificial"></a>
+
+<p>There are a number of requests and escape sequences for artificially
+creating fonts. These are largely vestiges of the days when output
+devices did not have a wide variety of fonts, and when <code class="code">nroff</code> and
+<code class="code">troff</code> were separate programs. Most of them are no longer
+necessary in GNU <code class="code">troff</code>. Nevertheless, they are supported.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cH_0027height_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\H<code class="code">'</code></code><span class="r"><i class="slanted">height</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cH_0027height_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cH"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cH_0027_002bheight_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\H<code class="code">'</code></code><span class="r"><i class="slanted"><code class="t">+</code>height</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cH_0027_002bheight_0027'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cH_0027_002dheight_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\H<code class="code">'</code></code><span class="r"><i class="slanted"><code class="t">-</code>height</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cH_0027_002dheight_0027'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eheight_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.height]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eheight_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eheight"></a>
+<a class="index-entry-id" id="index-changing-the-font-height-_0028_005cH_0029"></a>
+<a class="index-entry-id" id="index-font-height_002c-changing-_0028_005cH_0029"></a>
+<a class="index-entry-id" id="index-height_002c-font_002c-changing-_0028_005cH_0029"></a>
+<p>Change (increment, decrement) the height of the current font, but not
+the width. If <var class="var">height</var> is zero, restore the original height.
+Default scaling unit is &lsquo;<samp class="samp">z</samp>&rsquo;.
+</p>
+<p>The read-only register <code class="code">.height</code> contains the font height as set by
+<code class="code">\H</code>.
+</p>
+<p>Currently, only the <samp class="option">-Tps</samp> and <samp class="option">-Tpdf</samp> devices support
+this feature.
+</p>
+<p><code class="code">\H</code> doesn&rsquo;t produce an input token in GNU <code class="code">troff</code>. As a
+consequence, it can be used in requests like <code class="code">mc</code> (which expects
+a single character as an argument) to change the font on the fly:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.mc \H'+5z'x\H'0'
+</pre></div></div>
+
+<p>In compatibility mode, <code class="code">gtroff</code> behaves differently: If an
+increment or decrement is used, it is always taken relative to the
+current type size and not relative to the previously selected font
+height. Thus,
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.cp 1
+\H'+5'test \H'+5'test
+</pre></div></div>
+
+<p>prints the word &lsquo;<samp class="samp">test</samp>&rsquo; twice with the same font height (five points
+larger than the current font size).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cS_0027slant_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\S<code class="code">'</code></code><span class="r"><i class="slanted">slant</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cS_0027slant_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cS"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eslant_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.slant]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eslant_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eslant"></a>
+<a class="index-entry-id" id="index-changing-the-font-slant-_0028_005cS_0029"></a>
+<a class="index-entry-id" id="index-font-slant_002c-changing-_0028_005cS_0029"></a>
+<a class="index-entry-id" id="index-slant_002c-font_002c-changing-_0028_005cS_0029"></a>
+<p>Slant the current font by <var class="var">slant</var> degrees. Positive values slant to
+the right. Only integer values are possible.
+</p>
+<p>The read-only register <code class="code">.slant</code> contains the font slant as set by
+<code class="code">\S</code>.
+</p>
+<p>Currently, only the <samp class="option">-Tps</samp> and <samp class="option">-Tpdf</samp> devices support
+this feature.
+</p>
+<p><code class="code">\S</code> doesn&rsquo;t produce an input token in GNU <code class="code">troff</code>. As a
+consequence, it can be used in requests like <code class="code">mc</code> (which expects
+a single character as an argument) to change the font on the fly:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.mc \S'20'x\S'0'
+</pre></div></div>
+
+<a class="index-entry-id" id="index-CSTR-_002354-errata-3"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-_005cS-escape"></a>
+<p>This escape is incorrectly documented in the <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> manual; the slant is always set to an absolute value.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eul"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ul</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">lines</i></span>]</var><a class="copiable-link" href='#index-_002eul'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ul"></a>
+<a class="index-entry-id" id="index-underlining-_0028ul_0029"></a>
+<p>The <code class="code">ul</code> request normally underlines subsequent lines if a TTY
+output device is used. Otherwise, the lines are printed in italics
+(only the term &lsquo;underlined&rsquo; is used in the following). The single
+argument is the quantity of input lines to be underlined; with no
+argument, the next line is underlined. If <var class="var">lines</var> is zero or
+negative, stop the effects of <code class="code">ul</code> (if it was active). Requests
+and empty lines do not count for computing the number of underlined
+input lines, even if they produce some output like <code class="code">tl</code>. Lines
+inserted by macros (e.g., invoked by a trap) do count.
+</p>
+<p>At the beginning of <code class="code">ul</code>, the current font is stored and the
+underline font is activated. Within the span of a <code class="code">ul</code> request, it
+is possible to change fonts, but after the last line affected by
+<code class="code">ul</code> the saved font is restored.
+</p>
+<p>This number of lines still to be underlined is associated with the
+environment (see <a class="pxref" href="#Environments">Environments</a>). The underline font can be changed
+with the <code class="code">uf</code> request.
+</p>
+
+
+<p>The <code class="code">ul</code> request does not underline spaces.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecu"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cu</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">lines</i></span>]</var><a class="copiable-link" href='#index-_002ecu'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-cu"></a>
+<a class="index-entry-id" id="index-continuous-underlining-_0028cu_0029"></a>
+<a class="index-entry-id" id="index-underlining_002c-continuous-_0028cu_0029"></a>
+<p>The <code class="code">cu</code> request is similar to <code class="code">ul</code> but underlines spaces as
+well (if a TTY output device is used).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002euf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.uf</code></strong> <var class="def-var-arguments">font</var><a class="copiable-link" href='#index-_002euf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-uf"></a>
+<a class="index-entry-id" id="index-underline-font-_0028uf_0029"></a>
+<a class="index-entry-id" id="index-font-for-underlining-_0028uf_0029"></a>
+<p>Set the underline font (globally) used by <code class="code">ul</code> and <code class="code">cu</code>. By
+default, this is the font at position&nbsp;2. <var class="var">font</var> can be either
+a non-negative font position or the name of a font.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebd"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bd</code></strong> <var class="def-var-arguments">font [<span class="r"><i class="slanted">offset</i></span>]</var><a class="copiable-link" href='#index-_002ebd'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-bd"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ebd-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bd</code></strong> <var class="def-var-arguments">font1 font2 [<span class="r"><i class="slanted">offset</i></span>]</var><a class="copiable-link" href='#index-_002ebd-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eb_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.b]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eb_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eb"></a>
+<a class="index-entry-id" id="index-imitating-boldface-_0028bd_0029"></a>
+<a class="index-entry-id" id="index-boldface_002c-imitating-_0028bd_0029"></a>
+<p>Embolden <var class="var">font</var> by overstriking its glyphs offset by <var class="var">offset</var>
+units minus one.
+</p>
+<p>Two syntax forms are available.
+</p>
+<ul class="itemize mark-bullet">
+<li>Imitate a bold font unconditionally. The first argument specifies the
+font to embolden, and the second is the number of basic units, minus
+one, by which the two glyphs are offset. If the second argument is
+missing, emboldening is turned off.
+
+<p><var class="var">font</var> can be either a non-negative font position or the name of a
+font.
+</p>
+<p><var class="var">offset</var> is available in the <code class="code">.b</code> read-only register if a
+special font is active; in the <code class="code">bd</code> request, its default unit is
+&lsquo;<samp class="samp">u</samp>&rsquo;.
+</p>
+</li><li><a class="index-entry-id" id="index-fspecial-request_002c-and-imitating-bold"></a>
+<a class="index-entry-id" id="index-special"></a>
+<a class="index-entry-id" id="index-embolding-of-special-fonts"></a>
+<a class="index-entry-id" id="index-special-fonts_002c-emboldening"></a>
+Imitate a bold form conditionally. Embolden <var class="var">font1</var> by <var class="var">offset</var>
+only if font <var class="var">font2</var> is the current font. This request can be
+issued repeatedly to set up different emboldening values for different
+current fonts. If the second argument is missing, emboldening is turned
+off for this particular current font.
+
+<p>This affects special fonts only (either set up with the <code class="code">special</code>
+command in font files or with the <code class="code">fspecial</code> request).
+</p></li></ul>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cs</code></strong> <var class="def-var-arguments">font [<span class="r"><i class="slanted">width</i></span> [<span class="r"><i class="slanted">em-size</i></span>]]</var><a class="copiable-link" href='#index-_002ecs'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-cs"></a>
+<a class="index-entry-id" id="index-constant-glyph-space-mode-_0028cs_0029"></a>
+<a class="index-entry-id" id="index-mode-for-constant-glyph-space-_0028cs_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-constant-space"></a>
+<a class="index-entry-id" id="index-ps-request_002c-and-constant-glyph-space-mode"></a>
+<p>Switch to and from <em class="dfn">constant glyph space mode</em>. If activated, the
+width of every glyph is <em class="math"><var class="var">width</var>/36</em> ems. The em size is given
+absolutely by <var class="var">em-size</var>; if this argument is missing, the em value
+is taken from the current font size (as set with the <code class="code">ps</code> request)
+when the font is effectively in use. Without second and third argument,
+constant glyph space mode is deactivated.
+</p>
+<p>Default scaling unit for <var class="var">em-size</var> is &lsquo;<samp class="samp">z</samp>&rsquo;; <var class="var">width</var> is an
+integer.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Ligatures-and-Kerning">
+<div class="nav-panel">
+<p>
+Next: <a href="#Dummy-Characters" accesskey="n" rel="next">Dummy Characters</a>, Previous: <a href="#Artificial-Fonts" accesskey="p" rel="prev">Artificial Fonts</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Ligatures-and-Kerning-1">5.19.8 Ligatures and Kerning</h4>
+<a class="index-entry-id" id="index-ligatures-and-kerning"></a>
+<a class="index-entry-id" id="index-kerning-and-ligatures"></a>
+
+<p>Ligatures are groups of characters that are run together, i.e, producing
+a single glyph. For example, the letters &lsquo;f&rsquo; and &lsquo;i&rsquo; can form a
+ligature &lsquo;fi&rsquo; as in the word &lsquo;file&rsquo;. This produces a cleaner look
+(albeit subtle) to the printed output. Usually, ligatures are not
+available in fonts for TTY output devices.
+</p>
+<p>Most PostScript fonts support the fi and fl ligatures. The C/A/T
+typesetter that was the target of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> also
+supported &lsquo;ff&rsquo;, &lsquo;ffi&rsquo;, and &lsquo;ffl&rsquo; ligatures. Advanced typesetters or
+&lsquo;expert&rsquo; fonts may include ligatures for &lsquo;ft&rsquo; and &lsquo;ct&rsquo;, although GNU
+<code class="code">troff</code> does not support these (yet).
+</p>
+<p>Only the current font is checked for ligatures and kerns; neither
+special fonts nor special charcters defined with the <code class="code">char</code> request
+(and its siblings) are taken into account.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elg"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lg</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">flag</i></span>]</var><a class="copiable-link" href='#index-_002elg'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lg"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002elg_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.lg]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002elg_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002elg-1"></a>
+<a class="index-entry-id" id="index-activating-ligatures-_0028lg_0029"></a>
+<a class="index-entry-id" id="index-ligatures_002c-activating-_0028lg_0029"></a>
+<a class="index-entry-id" id="index-ligatures-enabled-register-_0028_002elg_0029"></a>
+<p>Switch the ligature mechanism on or off; if the parameter is non-zero or
+missing, ligatures are enabled, otherwise disabled. Default is on. The
+current ligature mode can be found in the read-only register <code class="code">.lg</code>
+(set to 1 or&nbsp;2 if ligatures are enabled, 0&nbsp;otherwise).
+</p>
+<p>Setting the ligature mode to&nbsp;2 enables the two-character ligatures
+(fi, fl, and ff) and disables the three-character ligatures (ffi and
+ffl).
+</p></dd></dl>
+
+<p><em class="dfn">Pairwise kerning</em> is another subtle typesetting mechanism that
+modifies the distance between a glyph pair to improve readability. In
+most cases (but not always) the distance is decreased.
+Typewriter-like fonts and fonts for terminals where all glyphs have the
+same width don&rsquo;t use kerning.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ekern"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.kern</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">flag</i></span>]</var><a class="copiable-link" href='#index-_002ekern'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-kern"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ekern_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.kern]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ekern_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ekern-1"></a>
+<a class="index-entry-id" id="index-activating-kerning-_0028kern_0029"></a>
+<a class="index-entry-id" id="index-kerning_002c-activating-_0028kern_0029"></a>
+<a class="index-entry-id" id="index-kerning-enabled-register-_0028_002ekern_0029"></a>
+<p>Switch kerning on or off. If the parameter is non-zero or missing,
+enable pairwise kerning, otherwise disable it. The read-only register
+<code class="code">.kern</code> is set to&nbsp;1 if pairwise kerning is enabled,
+0&nbsp;otherwise.
+</p>
+<a class="index-entry-id" id="index-dummy-character-_0028_005c_0026_0029_002c-effect-on-kerning"></a>
+<a class="index-entry-id" id="index-character_002c-dummy-_0028_005c_0026_0029_002c-effect-on-kerning"></a>
+<p>If the font description file contains pairwise kerning information,
+glyphs from that font are kerned. Kerning between two glyphs can be
+inhibited by placing <code class="code">\&amp;</code> between them: &lsquo;<samp class="samp">V\&amp;A</samp>&rsquo;.
+</p>
+<p>See <a class="xref" href="#Font-Description-File-Format">Font Description File Format</a>.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-track-kerning"></a>
+<a class="index-entry-id" id="index-kerning_002c-track"></a>
+<p><em class="dfn">Track kerning</em> expands or reduces the space between glyphs. This
+can be handy, for example, if you need to squeeze a long word onto a
+single line or spread some text to fill a narrow column. It must be
+used with great care since it is usually considered bad typography if
+the reader notices the effect.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etkf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tkf</code></strong> <var class="def-var-arguments">f s1 n1 s2 n2</var><a class="copiable-link" href='#index-_002etkf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tkf"></a>
+<a class="index-entry-id" id="index-activating-track-kerning-_0028tkf_0029"></a>
+<a class="index-entry-id" id="index-track-kerning_002c-activating-_0028tkf_0029"></a>
+<p>Enable track kerning for font&nbsp;<var class="var">f</var>. If the current font
+is&nbsp;<var class="var">f</var> the width of every glyph is increased by an amount
+between <var class="var">n1</var> and <var class="var">n2</var> (<var class="var">n1</var>, <var class="var">n2</var> can be negative); if
+the current type size is less than or equal to <var class="var">s1</var> the width is
+increased by <var class="var">n1</var>; if it is greater than or equal to <var class="var">s2</var> the
+width is increased by <var class="var">n2</var>; if the type size is greater than or
+equal to <var class="var">s1</var> and less than or equal to <var class="var">s2</var> the increase in
+width is a linear function of the type size.
+</p>
+<p>The default scaling unit is &lsquo;<samp class="samp">z</samp>&rsquo; for <var class="var">s1</var> and <var class="var">s2</var>, &lsquo;<samp class="samp">p</samp>&rsquo;
+for <var class="var">n1</var> and <var class="var">n2</var>.
+</p>
+<p>The track kerning amount is added even to the rightmost glyph in a line;
+for large values it is thus recommended to increase the line length by
+the same amount to compensate.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Italic-Corrections">
+<div class="nav-panel">
+<p>
+Next: <a href="#Dummy-Characters" accesskey="n" rel="next">Dummy Characters</a>, Previous: <a href="#Ligatures-and-Kerning" accesskey="p" rel="prev">Ligatures and Kerning</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Italic-Corrections-1">5.19.9 Italic Corrections</h4>
+
+<p>When typesetting adjacent glyphs from typefaces of different slants, the
+space between them may require adjustment.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002f-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\/</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002f-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_002f"></a>
+<a class="index-entry-id" id="index-italic-correction-_0028_005c_002f_0029"></a>
+<a class="index-entry-id" id="index-correction_002c-italic-_0028_005c_002f_0029"></a>
+<a class="index-entry-id" id="index-correction-between-oblique-and-upright-glyph-_0028_005c_002f_002c-_005c_002c_0029"></a>
+<a class="index-entry-id" id="index-roman-glyph_002c-correction-after-italic-glyph-_0028_005c_002f_0029"></a>
+<a class="index-entry-id" id="index-upright-glyph_002c-correction-after-oblique-glyph-_0028_005c_002f_0029"></a>
+<p>Apply an <em class="dfn">italic correction</em>: modify the spacing of the preceding
+glyph so that the distance between it and the following glyph is correct
+if the latter is of upright shape. For example, if an
+italic&nbsp;&lsquo;<samp class="samp">f</samp>&rsquo; is followed immediately by a roman right
+parenthesis, then in many fonts the top right portion of
+the&nbsp;&lsquo;<samp class="samp">f</samp>&rsquo; overlaps the top left of the right parenthesis, which
+is ugly. Use this escape sequence whenever an oblique glyph is
+immediately followed by an upright glyph without any intervening space.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002c-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\,</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002c-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_002c"></a>
+<a class="index-entry-id" id="index-left-italic-correction-_0028_005c_002c_0029"></a>
+<a class="index-entry-id" id="index-correction_002c-left-italic-_0028_005c_002c_0029"></a>
+<a class="index-entry-id" id="index-correction-between-upright-and-oblique-glyph-_0028_005c_002f_002c-_005c_002c_0029"></a>
+<a class="index-entry-id" id="index-roman-glyph_002c-correction-before-italic-glyph-_0028_005c_002c_0029"></a>
+<a class="index-entry-id" id="index-upright-glyph_002c-correction-before-oblique-glyph-_0028_005c_002c_0029"></a>
+<p>Apply a <em class="dfn">left italic correction</em>: modify the spacing of the
+following glyph so that the distance between it and the preceding
+glyph is correct if the latter is of upright shape. For example,
+if a roman left parenthesis is immediately followed by an
+italic&nbsp;&lsquo;<samp class="samp">f</samp>&rsquo;, then in many fonts the bottom left portion of
+the&nbsp;&lsquo;<samp class="samp">f</samp>&rsquo; overlaps the bottom of the left parenthesis, which is
+ugly. Use this escape sequence whenever an upright glyph is followed
+immediately by an oblique glyph without any intervening space.
+</p></dd></dl>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Dummy-Characters">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Italic-Corrections" accesskey="p" rel="prev">Italic Corrections</a>, Up: <a href="#Using-Fonts" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Dummy-Characters-1">5.19.10 Dummy Characters</h4>
+
+<p>As discussed in <a class="ref" href="#Requests-and-Macros">Requests and Macros</a>, the first character on an
+input line is treated specially. Further, formatting a glyph has many
+consequences on formatter state (see <a class="pxref" href="#Environments">Environments</a>). Occasionally,
+we want to escape this context or embrace some of those consequences
+without actually rendering a glyph to the output.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0026-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\&amp;</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0026-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0026"></a>
+<a class="index-entry-id" id="index-dummy-character-_0028_005c_0026_0029"></a>
+<a class="index-entry-id" id="index-character_002c-dummy-_0028_005c_0026_0029"></a>
+<p>Interpolate a dummy character, which is constitutive of output but
+invisible.<a class="footnote" id="DOCF81" href="#FOOT81"><sup>81</sup></a> Its presence alters the interpretation context of a
+subsequent input character, and enjoys several applications.
+</p>
+<ul class="itemize mark-bullet">
+<li>Prevent insertion of extra space after an end-of-sentence character.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">Test.
+Test.
+ &rArr; Test. Test.
+Test.\&amp;
+Test.
+ &rArr; Test. Test.
+</pre></div></div>
+
+</li><li>Prevent recognition of a control character.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.Test
+ error&rarr; warning: macro 'Test' not defined
+\&amp;.Test
+ &rArr; .Test
+</pre></div></div>
+
+</li><li>Prevent kerning between two glyphs.
+
+
+</li><li>Translate a character to &ldquo;nothing&rdquo;.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tr JIjiK\&amp;k\&amp;UVuv
+Post universitum, alea jacta est, OK?
+ &rArr; Post vniversitvm, alea iacta est, O?
+</pre></div></div>
+</li></ul>
+
+<p>The dummy character escape sequence sees use in macro definitions as a
+means of ensuring that arguments are treated as text even if they begin
+with spaces or control characters.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de HD \&quot; typeset a simple bold heading
+. sp
+. ft B
+\&amp;\\$1 \&quot; exercise: remove the \&amp;
+. ft
+. sp
+..
+.HD .\|.\|.\|surprised?
+</pre></div></div>
+</dd></dl>
+
+<p>One way to think about the dummy character is to imagine placing the
+symbol &lsquo;<samp class="samp">&amp;</samp>&rsquo; in the input at a certain location; if doing so has all
+the side effects on formatting that you desire except for sticking an
+ugly ampersand in the midst of your text, the dummy character is what
+you want in its place.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0029-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\)</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0029-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0029"></a>
+<a class="index-entry-id" id="index-transparent-dummy-character-_0028_005c_0029_0029"></a>
+<a class="index-entry-id" id="index-character_002c-transparent-dummy-_0028_005c_0029_0029"></a>
+<a class="index-entry-id" id="index-dummy-character_002c-transparent-_0028_005c_0029_0029"></a>
+<p>Interpolate a <i class="slanted">transparent</i> dummy character&mdash;one that is
+transparent to end-of-sentence detection. It behaves as <code class="code">\&amp;</code>,
+except that <code class="code">\&amp;</code> is treated as letters and numerals normally are
+after &lsquo;<samp class="samp">.</samp>&rsquo;, &lsquo;<samp class="samp">?</samp>&rsquo; and &lsquo;<samp class="samp">!</samp>&rsquo;; <code class="code">\&amp;</code> cancels end-of-sentence
+detection, and <code class="code">\)</code> does not.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de Suffix-&amp;
+. nop \&amp;\\$1
+..
+.
+.de Suffix-)
+. nop \)\\$1
+..
+.
+Here's a sentence.\c
+.Suffix-&amp; '
+Another one.\c
+.Suffix-) '
+And a third.
+ &rArr; Here's a sentence.' Another one.' And a third.
+</pre></div></div>
+</dd></dl>
+
+
+
+
+<hr>
+</div>
+</div>
+<div class="section-level-extent" id="Manipulating-Type-Size-and-Vertical-Spacing">
+<div class="nav-panel">
+<p>
+Next: <a href="#Colors" accesskey="n" rel="next">Colors</a>, Previous: <a href="#Using-Fonts" accesskey="p" rel="prev">Using Fonts</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Manipulating-Type-Size-and-Vertical-Spacing-1">5.20 Manipulating Type Size and Vertical Spacing</h3>
+<a class="index-entry-id" id="index-manipulating-type-size-and-vertical-spacing"></a>
+
+<a class="index-entry-id" id="index-text-baseline-1"></a>
+<a class="index-entry-id" id="index-baseline_002c-text-1"></a>
+<a class="index-entry-id" id="index-type-size"></a>
+<a class="index-entry-id" id="index-size_002c-size"></a>
+<a class="index-entry-id" id="index-vertical-spacing-1"></a>
+<a class="index-entry-id" id="index-spacing_002c-vertical-1"></a>
+<p>These concepts were introduced in <a class="ref" href="#Page-Geometry">Page Geometry</a>. The height of a
+font&rsquo;s tallest glyph is one em, which is equal to the type size in
+points.<a class="footnote" id="DOCF82" href="#FOOT82"><sup>82</sup></a> A vertical spacing of less than 120% of
+the type size can make a document hard to read. Larger proportions can
+be useful to spread the text for annotations or proofreader&rsquo;s marks. By
+default, GNU <code class="code">troff</code> uses 10&nbsp;point type on 12&nbsp;point
+spacing.
+<a class="index-entry-id" id="index-leading"></a>
+Typographers call the difference between type size and vertical spacing
+<em class="dfn">leading</em>.<a class="footnote" id="DOCF83" href="#FOOT83"><sup>83</sup></a>
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#Changing-the-Type-Size" accesskey="1">Changing the Type Size</a></li>
+<li><a href="#Changing-the-Vertical-Spacing" accesskey="2">Changing the Vertical Spacing</a></li>
+<li><a href="#Using-Fractional-Type-Sizes" accesskey="3">Using Fractional Type Sizes</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Changing-the-Type-Size">
+<div class="nav-panel">
+<p>
+Next: <a href="#Changing-the-Vertical-Spacing" accesskey="n" rel="next">Changing the Vertical Spacing</a>, Previous: <a href="#Manipulating-Type-Size-and-Vertical-Spacing" accesskey="p" rel="prev">Manipulating Type Size and Vertical Spacing</a>, Up: <a href="#Manipulating-Type-Size-and-Vertical-Spacing" accesskey="u" rel="up">Manipulating Type Size and Vertical Spacing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Changing-the-Type-Size-1">5.20.1 Changing the Type Size</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eps"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ps</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">size</i></span>]</var><a class="copiable-link" href='#index-_002eps'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ps"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eps-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ps</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">size</i></span></var><a class="copiable-link" href='#index-_002eps-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002eps-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ps</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">size</i></span></var><a class="copiable-link" href='#index-_002eps-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cssize"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\s</code><span class="r"><i class="slanted">size</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cssize'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cs"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002es_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.s]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002es_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002es"></a>
+<a class="index-entry-id" id="index-changing-type-sizes-_0028ps_002c-_005cs_0029"></a>
+<a class="index-entry-id" id="index-type-sizes_002c-changing-_0028ps_002c-_005cs_0029"></a>
+<a class="index-entry-id" id="index-point-sizes_002c-changing-_0028ps_002c-_005cs_0029"></a>
+<p>Use the <code class="code">ps</code> request or the <code class="code">\s</code> escape sequence to change
+(increase, decrease) the type size (in scaled points). Specify
+<var class="var">size</var> as either an absolute type size, or as a relative change from
+the current size. <code class="code">ps</code> with no argument restores the previous
+size. The <code class="code">ps</code> request&rsquo;s default scaling unit is &lsquo;<samp class="samp">z</samp>&rsquo;. The
+requested size is rounded to the nearest valid size (with ties rounding
+down) within the limits supported by the device. If the requested size
+is non-positive, it is treated as 1<span class="dmn">u</span>.
+</p>
+<a class="index-entry-id" id="index-CSTR-_002354-errata-4"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-ps-request"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-_005cs-escape-sequence"></a>
+<p>Type size alteration is incorrectly documented in the <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> manual, which claims &ldquo;if [the requested size] is invalid,
+the next larger valid size will result, with a maximum of
+36&rdquo;.<a class="footnote" id="DOCF84" href="#FOOT84"><sup>84</sup></a>
+</p>
+<a class="index-entry-id" id="index-type-size-registers-_0028_002es_002c-_002eps_0029"></a>
+<a class="index-entry-id" id="index-point-size-registers-_0028_002es_002c-_002eps_0029"></a>
+<p>The read-only string-valued register <code class="code">.s</code> interpolates the type
+size in points as a decimal fraction; it is associated with the
+environment (see <a class="pxref" href="#Environments">Environments</a>). To obtain the type size in scaled
+points, interpolate the <code class="code">.ps</code> register instead (see <a class="pxref" href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a>).
+</p>
+<p>The <code class="code">\s</code> escape sequence supports a variety of syntax forms.
+</p>
+<dl class="table">
+<dt><code class="code">\s<var class="var">n</var></code></dt>
+<dd><p>Set the type size to <var class="var">n</var>&nbsp;points. <var class="var">n</var>&nbsp;must be a single
+digit. If <var class="var">n</var>&nbsp;is 0, restore the previous size.
+</p>
+</dd>
+<dt><code class="code">\s+<var class="var">n</var></code></dt>
+<dt><code class="code">\s-<var class="var">n</var></code></dt>
+<dd><p>Increase or decrease the type size by <var class="var">n</var>&nbsp;points.
+<var class="var">n</var>&nbsp;must be exactly one digit.
+</p>
+</dd>
+<dt><code class="code">\s(<var class="var">nn</var></code></dt>
+<dd><p>Set the type size to <var class="var">nn</var>&nbsp;points. <var class="var">nn</var> must be exactly two
+digits.
+</p>
+</dd>
+<dt><code class="code">\s+(<var class="var">nn</var></code></dt>
+<dt><code class="code">\s-(<var class="var">nn</var></code></dt>
+<dt><code class="code">\s(+<var class="var">nn</var></code></dt>
+<dt><code class="code">\s(-<var class="var">nn</var></code></dt>
+<dd><p>Alter the type size in points by the two-digit value <var class="var">nn</var>.
+</p></dd>
+</dl>
+
+<p>See <a class="xref" href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a>, for further syntactical forms of the
+<code class="code">\s</code> escape sequence that additionally accept decimal fractions.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">snap, snap,
+.ps +2
+grin, grin,
+.ps +2
+wink, wink, \s+2nudge, nudge,\s+8 say no more!
+.ps 10
+</pre></div></div>
+</dd></dl>
+
+<p>The <code class="code">\s</code> escape sequence affects the environment immediately and
+doesn&rsquo;t produce an input token. Consequently, it can be used in
+requests like <code class="code">mc</code>, which expects a single character as an
+argument, to change the type size on the fly.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.mc \s[20]x\s[0]
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002esizes"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sizes</code></strong> <var class="def-var-arguments">s1 s2 &hellip; sn [<code class="t">0</code>]</var><a class="copiable-link" href='#index-_002esizes'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-sizes-1"></a>
+<p>The <samp class="file">DESC</samp> file specifies which type sizes are allowed by the
+output device; see <a class="ref" href="#DESC-File-Format"><samp class="file">DESC</samp> File Format</a>. Use the <code class="code">sizes</code> request
+to change this set of permissible sizes. Arguments are in scaled
+points; see <a class="ref" href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a>. Each can be a single
+type size (such as &lsquo;<samp class="samp">12000</samp>&rsquo;), or a range of sizes (such as
+&lsquo;<samp class="samp">4000-72000</samp>&rsquo;). You can optionally end the list with a &lsquo;<samp class="samp">0</samp>&rsquo;.
+</p></dd></dl>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Changing-the-Vertical-Spacing">
+<div class="nav-panel">
+<p>
+Next: <a href="#Using-Fractional-Type-Sizes" accesskey="n" rel="next">Using Fractional Type Sizes</a>, Previous: <a href="#Changing-the-Type-Size" accesskey="p" rel="prev">Changing the Type Size</a>, Up: <a href="#Manipulating-Type-Size-and-Vertical-Spacing" accesskey="u" rel="up">Manipulating Type Size and Vertical Spacing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Changing-the-Vertical-Spacing-1">5.20.2 Changing the Vertical Spacing</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002evs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.vs</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">space</i></span>]</var><a class="copiable-link" href='#index-_002evs'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-vs"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002evs-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.vs</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">space</i></span></var><a class="copiable-link" href='#index-_002evs-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002evs-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.vs</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">space</i></span></var><a class="copiable-link" href='#index-_002evs-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ev_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.v]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ev_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ev"></a>
+<a class="index-entry-id" id="index-changing-vertical-line-spacing-_0028vs_0029"></a>
+<a class="index-entry-id" id="index-vertical-line-spacing_002c-changing-_0028vs_0029"></a>
+<a class="index-entry-id" id="index-vertical-line-spacing-register-_0028_002ev_0029"></a>
+<p>Set the vertical spacing to, or alter it by, <var class="var">space</var>. The default
+scaling unit is &lsquo;<samp class="samp">p</samp>&rsquo;. If <code class="code">vs</code> is called without an argument,
+the vertical spacing is reset to the previous value before the last call
+to <code class="code">vs</code>.
+<a class="index-entry-id" id="index-_002eV-register_002c-and-vs"></a>
+GNU <code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">range</samp>&rsquo; if <var class="var">space</var>
+is negative; the vertical spacing is then set to the smallest possible
+positive value, the vertical motion quantum (as found in the <code class="code">.V</code>
+register).
+</p>
+<p>&lsquo;<samp class="samp">.vs&nbsp;0</samp>&rsquo;<!-- /@w --> isn&rsquo;t saved in a diversion since it doesn&rsquo;t result in
+a vertical motion. You must explicitly issue this request before
+interpolating the diversion.
+</p>
+<p>The read-only register <code class="code">.v</code> contains the vertical spacing; it is
+associated with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-vertical-line-spacing_002c-effective-value"></a>
+<p>When a break occurs, GNU <code class="code">troff</code> performs the following procedure.
+</p>
+<ul class="itemize mark-bullet">
+<li><a class="index-entry-id" id="index-extra-pre_002dvertical-line-space-_0028_005cx_0029"></a>
+<a class="index-entry-id" id="index-line-space_002c-extra-pre_002dvertical-_0028_005cx_0029"></a>
+Move the drawing position vertically by the <em class="dfn">extra pre-vertical line
+space</em>, the minimum of all negative <code class="code">\x</code> escape sequence arguments
+in the pending output line.
+
+</li><li>Move the drawing position vertically by the vertical line spacing.
+
+</li><li>Write out the pending output line.
+
+</li><li><a class="index-entry-id" id="index-extra-post_002dvertical-line-space-_0028_005cx_0029"></a>
+<a class="index-entry-id" id="index-line-space_002c-extra-post_002dvertical-_0028_005cx_0029"></a>
+Move the drawing position vertically by the <em class="dfn">extra post-vertical line
+space</em>, the maximum of all positive <code class="code">\x</code> escape sequence arguments
+in the line that has just been output.
+
+</li><li><a class="index-entry-id" id="index-post_002dvertical-line-spacing"></a>
+<a class="index-entry-id" id="index-line-spacing_002c-post_002dvertical-_0028pvs_0029"></a>
+Move the drawing position vertically by the <em class="dfn">post-vertical line
+spacing</em> (see below).
+</li></ul>
+
+<a class="index-entry-id" id="index-double_002dspacing-_0028vs_002c-pvs_0029"></a>
+<p>Prefer <code class="code">vs</code> or <code class="code">pvs</code> over <code class="code">ls</code> to produce double-spaced
+documents. <code class="code">vs</code> and <code class="code">pvs</code> have finer granularity than
+<code class="code">ls</code>; moreover, some preprocessors assume single spacing.
+See <a class="xref" href="#Manipulating-Spacing">Manipulating Spacing</a>, regarding the <code class="code">\x</code> escape sequence and
+the <code class="code">ls</code> request.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epvs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pvs</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">space</i></span>]</var><a class="copiable-link" href='#index-_002epvs'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pvs"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002epvs-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pvs</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">space</i></span></var><a class="copiable-link" href='#index-_002epvs-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002epvs-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pvs</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">space</i></span></var><a class="copiable-link" href='#index-_002epvs-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002epvs_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.pvs]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002epvs_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002epvs-3"></a>
+<a class="index-entry-id" id="index-ls-request_002c-alternative-to-_0028pvs_0029"></a>
+<a class="index-entry-id" id="index-post_002dvertical-line-spacing_002c-changing-_0028pvs_0029"></a>
+<a class="index-entry-id" id="index-post_002dvertical-line-spacing-register-_0028_002epvs_0029"></a>
+<p>Set the post-vertical spacing to, or alter it by, <var class="var">space</var>. The
+default scaling unit is &lsquo;<samp class="samp">p</samp>&rsquo;. If <code class="code">pvs</code> is called without an
+argument, the post-vertical spacing is reset to the previous value
+before the last call to <code class="code">pvs</code>. GNU <code class="code">troff</code> emits a warning in
+category &lsquo;<samp class="samp">range</samp>&rsquo; if <var class="var">space</var> is negative; the post-vertical
+spacing is then set to zero.
+</p>
+<p>The read-only register <code class="code">.pvs</code> contains the post-vertical spacing;
+it is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Using-Fractional-Type-Sizes">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Changing-the-Type-Size" accesskey="p" rel="prev">Changing the Type Size</a>, Up: <a href="#Manipulating-Type-Size-and-Vertical-Spacing" accesskey="u" rel="up">Manipulating Type Size and Vertical Spacing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Using-Fractional-Type-Sizes-1">5.20.3 Using Fractional Type Sizes</h4>
+<a class="index-entry-id" id="index-fractional-type-sizes"></a>
+<a class="index-entry-id" id="index-fractional-point-sizes"></a>
+<a class="index-entry-id" id="index-type-sizes_002c-fractional"></a>
+<a class="index-entry-id" id="index-point-sizes_002c-fractional"></a>
+<a class="index-entry-id" id="index-sizes_002c-fractional-type"></a>
+
+<p>AT&amp;T <code class="code">troff</code> interpreted all type size measurements in points.
+Combined with integer arithmetic, this design choice made it impossible
+to support, for instance, ten and a half-point type. In GNU
+<code class="code">troff</code>, an output device can select a scaling factor that
+subdivides a point into &ldquo;scaled points&rdquo;. A type size expressed in
+scaled points can thus represent a non-integral type size.
+</p>
+<a class="index-entry-id" id="index-s-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-s"></a>
+<a class="index-entry-id" id="index-scaling-unit-s"></a>
+<a class="index-entry-id" id="index-z-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-z"></a>
+<a class="index-entry-id" id="index-scaling-unit-z"></a>
+<a class="index-entry-id" id="index-ps-request_002c-with-fractional-type-sizes"></a>
+<a class="index-entry-id" id="index-cs-request_002c-with-fractional-type-sizes"></a>
+<a class="index-entry-id" id="index-tkf-request_002c-with-fractional-type-sizes"></a>
+<a class="index-entry-id" id="index-_005cH_002c-with-fractional-type-sizes"></a>
+<a class="index-entry-id" id="index-_005cs_002c-with-fractional-type-sizes"></a>
+<p>A <em class="dfn">scaled point</em> is equal to <em class="math">1/<var class="var">sizescale</var></em> points, where
+<var class="var">sizescale</var> is specified in the device description file <samp class="file">DESC</samp>,
+and defaults to&nbsp;1.<a class="footnote" id="DOCF85" href="#FOOT85"><sup>85</sup></a> Requests and escape sequences in GNU <code class="code">troff</code> interpret
+arguments that represent a type size in scaled points, which the
+formatter multiplies by <var class="var">sizescale</var> and converts to an integer.
+Arguments treated in this way comprise those to the escape sequences
+<code class="code">\H</code> and <code class="code">\s</code>, to the request <code class="code">ps</code>, the third argument to
+the <code class="code">cs</code> request, and the second and fourth arguments to the
+<code class="code">tkf</code> request. Scaled points may be specified explicitly with the
+<code class="code">z</code> scaling unit.
+</p>
+<p>For example, if <var class="var">sizescale</var> is&nbsp;1000, then a scaled point is one
+thousandth of a point. The request &lsquo;<samp class="samp">.ps 10.5</samp>&rsquo; is synonymous with
+&lsquo;<samp class="samp">.ps 10.5z</samp>&rsquo; and sets the type size to 10,500&nbsp;scaled points, or
+10.5&nbsp;points. Consequently, in GNU <code class="code">troff</code>, the register
+<code class="code">.s</code> can interpolate a non-integral type size.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002eps_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ps]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eps_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eps-3"></a>
+<p>This read-only register interpolates the type size in scaled points; it
+is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p></dd></dl>
+
+<p>It makes no sense to use the &lsquo;<samp class="samp">z</samp>&rsquo; scaling unit in a numeric
+expression whose default scaling unit is neither &lsquo;<samp class="samp">u</samp>&rsquo; nor &lsquo;<samp class="samp">z</samp>&rsquo;,
+so GNU <code class="code">troff</code> disallows this. Similarly, it is nonsensical to use
+a scaling unit other than &lsquo;<samp class="samp">z</samp>&rsquo; or &lsquo;<samp class="samp">u</samp>&rsquo; in a numeric expression
+whose default scaling unit is &lsquo;<samp class="samp">z</samp>&rsquo;, and so GNU <code class="code">troff</code>
+disallows this as well.
+</p>
+<p>Another GNU <code class="code">troff</code> scaling unit, &lsquo;<samp class="samp">s</samp>&rsquo;, multiplies by the
+number of basic units in a scaled point. Thus, &lsquo;<samp class="samp">\n[.ps]s</samp>&rsquo; is equal
+to &lsquo;<samp class="samp">1m</samp>&rsquo; by definition. Do not confuse the &lsquo;<samp class="samp">s</samp>&rsquo; and &lsquo;<samp class="samp">z</samp>&rsquo;
+scaling units.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002epsr_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.psr]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002epsr_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002epsr"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002esr_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.sr]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002esr_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002esr"></a>
+<a class="index-entry-id" id="index-last_002drequested-type-size-registers-_0028_002epsr_002c-_002esr_0029"></a>
+<a class="index-entry-id" id="index-type-size-registers_002c-last_002drequested-_0028_002epsr_002c-_002esr_0029"></a>
+<a class="index-entry-id" id="index-last_002drequested-point-size-registers-_0028_002epsr_002c-_002esr_0029"></a>
+<a class="index-entry-id" id="index-point-size-registers_002c-last_002drequested-_0028_002epsr_002c-_002esr_0029"></a>
+<a class="index-entry-id" id="index-_002eps-register_002c-in-comparison-with-_002epsr"></a>
+<a class="index-entry-id" id="index-_002es-register_002c-in-comparison-with-_002esr"></a>
+<p>Output devices may be limited in the type sizes they can employ. The
+<code class="code">.s</code> and <code class="code">.ps</code> registers represent the type size selected by
+the output driver as it understands a device&rsquo;s capability. The last
+<em class="emph">requested</em> type size is interpolated in scaled points by the
+read-only register <code class="code">.psr</code> and in points as a decimal fraction by
+the read-only string-valued register <code class="code">.sr</code>. Both are associated
+with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<p>For example, if a type size of 10.95 points is requested, and the
+nearest size permitted by a <code class="code">sizes</code> request (or by the <code class="code">sizes</code>
+or <code class="code">sizescale</code> directives in the device&rsquo;s <samp class="file">DESC</samp> file) is 11
+points, the output driver uses the latter value.
+</p></dd></dl>
+
+<p>The <code class="code">\s</code> escape sequence offers the following syntax forms that
+work with fractional type sizes and accept scaling units. You may of
+course give them integral arguments. The delimited forms need not use
+the neutral apostrophe; see <a class="ref" href="#Delimiters">Delimiters</a>.
+</p>
+<dl class="table">
+<dt><code class="code">\s[<var class="var">n</var>]</code></dt>
+<dt><code class="code">\s'<var class="var">n</var>'</code></dt>
+<dd><p>Set the type size to <var class="var">n</var>&nbsp;scaled points; <var class="var">n</var>&nbsp;is a
+numeric expression with a default scaling unit of &lsquo;<samp class="samp">z</samp>&rsquo;.
+</p>
+</dd>
+<dt><code class="code">\s[+<var class="var">n</var>]</code></dt>
+<dt><code class="code">\s[-<var class="var">n</var>]</code></dt>
+<dt><code class="code">\s+[<var class="var">n</var>]</code></dt>
+<dt><code class="code">\s-[<var class="var">n</var>]</code></dt>
+<dt><code class="code">\s'+<var class="var">n</var>'</code></dt>
+<dt><code class="code">\s'-<var class="var">n</var>'</code></dt>
+<dt><code class="code">\s+'<var class="var">n</var>'</code></dt>
+<dt><code class="code">\s-'<var class="var">n</var>'</code></dt>
+<dd><p>Increase or decrease the type size by <var class="var">n</var>&nbsp;scaled points;
+<var class="var">n</var>&nbsp;is a numeric expression (which may start with a minus sign)
+with a default scaling unit of &lsquo;<samp class="samp">z</samp>&rsquo;.
+</p></dd>
+</dl>
+
+
+
+<hr>
+</div>
+</div>
+<div class="section-level-extent" id="Colors">
+<div class="nav-panel">
+<p>
+Next: <a href="#Strings" accesskey="n" rel="next">Strings</a>, Previous: <a href="#Manipulating-Type-Size-and-Vertical-Spacing" accesskey="p" rel="prev">Manipulating Type Size and Vertical Spacing</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Colors-1">5.21 Colors</h3>
+<a class="index-entry-id" id="index-colors"></a>
+
+<a class="index-entry-id" id="index-stroke-color"></a>
+<a class="index-entry-id" id="index-color_002c-stroke"></a>
+<a class="index-entry-id" id="index-fill-color"></a>
+<a class="index-entry-id" id="index-color_002c-fill"></a>
+<p>GNU <code class="code">troff</code> supports color output with a variety of color spaces
+and up to 16 bits per channel. Some devices, particularly terminals,
+may be more limited. When color support is enabled, two colors are
+current at any given time: the <em class="dfn">stroke color</em>, with which glyphs,
+rules (lines), and geometric objects like circles and polygons are
+drawn, and the <em class="dfn">fill color</em>, which can be used to paint the interior
+of a closed geometric figure.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecolor"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.color</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ecolor'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-color"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ecolor_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.color]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ecolor_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ecolor-1"></a>
+<p>If <var class="var">n</var> is missing or non-zero, enable the output of color-related
+device-independent output commands (this is the default); otherwise,
+disable them. This request sets a global flag; it does not produce an
+input token (see <a class="pxref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>).
+</p>
+<p>The read-only register <code class="code">.color</code> is&nbsp;1 if colors are enabled,
+0&nbsp;otherwise.
+</p>
+<p>Color can also be disabled with the <samp class="option">-c</samp> command-line option.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edefcolor"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.defcolor</code></strong> <var class="def-var-arguments">ident scheme color-component &hellip;</var><a class="copiable-link" href='#index-_002edefcolor'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-defcolor"></a>
+<p>Define a color named <var class="var">ident</var>. <var class="var">scheme</var> selects a color space
+and determines the quantity of required <var class="var">color-component</var>s; it must
+be one of &lsquo;<samp class="samp">rgb</samp>&rsquo; (three components), &lsquo;<samp class="samp">cmy</samp>&rsquo; (three), &lsquo;<samp class="samp">cmyk</samp>&rsquo;
+(four), or &lsquo;<samp class="samp">gray</samp>&rsquo; (one). &lsquo;<samp class="samp">grey</samp>&rsquo; is accepted as a synonym of
+&lsquo;<samp class="samp">gray</samp>&rsquo;. The color components can be encoded as a single
+hexadecimal value starting with &lsquo;<samp class="samp">#</samp>&rsquo; or &lsquo;<samp class="samp">##</samp>&rsquo;. The former
+indicates that each component is in the range 0&ndash;255 (0&ndash;FF), the latter
+the range 0&ndash;65,535 (0&ndash;FFFF).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.defcolor half gray #7f
+.defcolor pink rgb #FFC0CB
+.defcolor magenta rgb ##ffff0000ffff
+</pre></div></div>
+
+<a class="index-entry-id" id="index-f-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-f"></a>
+<a class="index-entry-id" id="index-scaling-unit-f"></a>
+<p>Alternatively, each color component can be specified as a decimal
+fraction in the range 0&ndash;1, interpreted using a default scaling
+unit of&nbsp;<code class="code">f</code>, which multiplies its value by 65,536 (but
+clamps it at 65,535).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.defcolor gray50 rgb 0.5 0.5 0.5
+.defcolor darkgreen rgb 0.1f 0.5f 0.2f
+</pre></div></div>
+</dd></dl>
+
+<a class="index-entry-id" id="index-default-color"></a>
+<a class="index-entry-id" id="index-color_002c-default"></a>
+<p>Each output device has a color named &lsquo;<samp class="samp">default</samp>&rsquo;, which cannot be
+redefined. A device&rsquo;s default stroke and fill colors are not
+necessarily the same. For the <code class="code">dvi</code>, <code class="code">html</code>, <code class="code">pdf</code>,
+<code class="code">ps</code>, and <code class="code">xhtml</code> output devices, GNU <code class="code">troff</code>
+automatically loads a macro file defining many color names at startup.
+By the same mechanism, the devices supported by <code class="code">grotty</code> recognize
+the eight standard ISO&nbsp;6429/EMCA-48 color names.<a class="footnote" id="DOCF86" href="#FOOT86"><sup>86</sup></a>
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002egcolor"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.gcolor</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">color</i></span>]</var><a class="copiable-link" href='#index-_002egcolor'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-gcolor"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cmc"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\m</code><span class="r"><i class="slanted">c</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cmc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cm"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cm_0028co"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\m(</code><span class="r"><i class="slanted">co</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cm_0028co'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cm_005bcolor_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\m[</code><span class="r"><i class="slanted">color</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cm_005bcolor_005d'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002em_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.m]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002em_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002em"></a>
+<p>Set the stroke color to <var class="var">color</var>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.gcolor red
+The next words
+.gcolor
+\m[red]are in red\m[]
+and these words are in the previous color.
+</pre></div></div>
+
+<p>The escape sequence <code class="code">\m[]</code> restores the previous stroke color, as
+does a <code class="code">gcolor</code> request without an argument.
+</p>
+<a class="index-entry-id" id="index-stroke-color-name-register-_0028_002em_0029"></a>
+<a class="index-entry-id" id="index-name_002c-stroke-color_002c-register-_0028_002em_0029"></a>
+<a class="index-entry-id" id="index-color-name_002c-stroke_002c-register-_0028_002em_0029"></a>
+<p>The name of the current stroke color is available in the read-only
+string-valued register &lsquo;<samp class="samp">.m</samp>&rsquo;; it is associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>). It interpolates nothing when the stroke color
+is the default.
+</p>
+<p><code class="code">\m</code> doesn&rsquo;t produce an input token in GNU <code class="code">troff</code>
+(see <a class="pxref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>). It therefore can be used in requests like
+<code class="code">mc</code> (which expects a single character as an argument) to change
+the color on the fly:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.mc \m[red]x\m[]
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efcolor"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fcolor</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">color</i></span>]</var><a class="copiable-link" href='#index-_002efcolor'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fcolor"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cMc"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\M</code><span class="r"><i class="slanted">c</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cMc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cM"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cM_0028co"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\M(</code><span class="r"><i class="slanted">co</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cM_0028co'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cM_005bcolor_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\M[</code><span class="r"><i class="slanted">color</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cM_005bcolor_005d'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eM_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.M]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eM_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eM"></a>
+<p>Set the fill color for objects drawn with <code class="code">\D'&hellip;'</code> escape
+sequences. The escape sequence <code class="code">\M[]</code> restores the previous fill
+color, as does an <code class="code">fcolor</code> request without an argument.
+</p>
+<a class="index-entry-id" id="index-background-color-name-register-_0028_002eM_0029"></a>
+<a class="index-entry-id" id="index-name_002c-background-color_002c-register-_0028_002eM_0029"></a>
+<a class="index-entry-id" id="index-color-name_002c-background_002c-register-_0028_002eM_0029"></a>
+<a class="index-entry-id" id="index-fill-color-name-register-_0028_002eM_0029"></a>
+<a class="index-entry-id" id="index-name_002c-fill-color_002c-register-_0028_002eM_0029"></a>
+<a class="index-entry-id" id="index-color-name_002c-fill_002c-register-_0028_002eM_0029"></a>
+<p>The name of the current fill color is available in the read-only
+string-valued register &lsquo;<samp class="samp">.M</samp>&rsquo;; it is associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>). It interpolates nothing when the fill color
+is the default. <code class="code">\M</code> doesn&rsquo;t produce an input token in GNU
+<code class="code">troff</code>.
+</p>
+<p>Create an ellipse with a red interior as follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">\M[red]\h'0.5i'\D'E 2i 1i'\M[]
+</pre></div></div>
+</dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Strings">
+<div class="nav-panel">
+<p>
+Next: <a href="#Conditionals-and-Loops" accesskey="n" rel="next">Conditionals and Loops</a>, Previous: <a href="#Colors" accesskey="p" rel="prev">Colors</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Strings-1">5.22 Strings</h3>
+<a class="index-entry-id" id="index-strings"></a>
+
+<p>GNU <code class="code">troff</code> supports strings primarily for user convenience.
+Conventionally, if one would define a macro only to interpolate a small
+amount of text, without invoking requests or calling any other macros,
+one defines a string instead. Only one string is predefined by the
+language.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002eT_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[.T]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002eT_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eT"></a>
+<a class="index-entry-id" id="index-_002eT-1"></a>
+<a class="index-entry-id" id="index-output-device-name-string-_0028_002eT_0029-1"></a>
+<p>Contains the name of the output device (for example, &lsquo;<samp class="samp">utf8</samp>&rsquo; or
+&lsquo;<samp class="samp">pdf</samp>&rsquo;).
+</p></dd></dl>
+
+<p>The <code class="code">ds</code> request creates a string with a specified name and
+contents and the <code class="code">\*</code> escape sequence dereferences its name,
+interpolating its contents. If the string named by the <code class="code">\*</code> escape
+sequence does not exist, it is defined as empty, nothing is
+interpolated, and a warning in category &lsquo;<samp class="samp">mac</samp>&rsquo; is emitted.
+See <a class="xref" href="#Warnings">Warnings</a>, for information about the enablement and suppression of
+warnings.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eds-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ds</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eds-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ds-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eds1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ds1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eds1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ds1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002an"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\*</code><span class="r"><i class="slanted">n</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002an'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_002a"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_0028nm"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\*(</code><span class="r"><i class="slanted">nm</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002a_0028nm'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bname-_005barg1-arg2-_2026_005d_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\*[</code><span class="r"><i class="slanted">name <span class="sansserif">[</span>arg1 arg2 &hellip;<span class="sansserif">]</span></i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bname-_005barg1-arg2-_2026_005d_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-string-interpolation-_0028_005c_002a_0029"></a>
+<a class="index-entry-id" id="index-string-expansion-_0028_005c_002a_0029"></a>
+<a class="index-entry-id" id="index-interpolation-of-strings-_0028_005c_002a_0029"></a>
+<a class="index-entry-id" id="index-expansion-of-strings-_0028_005c_002a_0029"></a>
+<a class="index-entry-id" id="index-string-arguments"></a>
+<a class="index-entry-id" id="index-arguments_002c-to-strings"></a>
+<p>Define a string called <var class="var">name</var> with contents <var class="var">contents</var>. If
+<var class="var">name</var> already exists as an alias, the target of the alias is
+redefined; see <code class="code">als</code> and <code class="code">rm</code> below. If <code class="code">ds</code> is called
+with only one argument, <var class="var">name</var> is defined as an empty string.
+Otherwise, GNU <code class="code">troff</code> stores <var class="var">contents</var> in copy
+mode.<a class="footnote" id="DOCF87" href="#FOOT87"><sup>87</sup></a>
+</p>
+<p>The <code class="code">\*</code> escape sequence interpolates a previously defined string
+variable <var class="var">name</var> (one-character name&nbsp;<var class="var">n</var>, two-character name
+<var class="var">nm</var>). The bracketed interpolation form accepts arguments that are
+handled as macro arguments are; recall <a class="ref" href="#Calling-Macros">Calling Macros</a>. In
+contrast to macro calls, however, if a closing bracket &lsquo;<samp class="samp">]</samp>&rsquo; occurs
+in a string argument, that argument must be enclosed in double quotes.
+<code class="code">\*</code> is interpreted even in copy mode. When defining strings,
+argument interpolations must be escaped if they are to reference
+parameters from the calling context; See <a class="xref" href="#Parameters">Parameters</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds cite (\\$1, \\$2)
+Gray codes are explored in \*[cite Morgan 1998].
+ &rArr; Gray codes are explored in (Morgan, 1998).
+</pre></div></div>
+
+
+<a class="index-entry-id" id="index-trailing-spaces-in-string-definitions-and-appendments"></a>
+<a class="index-entry-id" id="index-comments_002c-with-ds"></a>
+<a class="index-entry-id" id="index-ds-request_002c-and-comments"></a>
+<p><strong class="strong">Caution:</strong> Unlike other requests, the second argument to the
+<code class="code">ds</code> request consumes the remainder of the input line, including
+trailing spaces. This means that comments on a line with such a request
+can introduce unwanted space into a string when they are set off from
+the material they annotate, as is conventional.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds H2O H\v'+.3m'\s'-2'2\v'-.3m'\s0O \&quot; water
+</pre></div></div>
+
+<p>Instead, place the comment on another line or put the comment escape
+sequence immediately adjacent to the last character of the string.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds H2O H\v'+.3m'\s'-2'2\v'-.3m'\s0O\&quot; water
+</pre></div></div>
+
+<p>Ending string definitions (and appendments) with a comment, even an
+empty one, prevents unwanted space from creeping into them during source
+document maintenance.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds author Alice Pleasance Liddell\&quot;
+.ds empty \&quot; might be appended to later with .as
+</pre></div></div>
+
+<a class="index-entry-id" id="index-trailing-double-quotes-in-strings"></a>
+<a class="index-entry-id" id="index-double-quotes_002c-trailing_002c-in-strings"></a>
+<a class="index-entry-id" id="index-ds-request_002c-and-double-quotes"></a>
+<a class="index-entry-id" id="index-leading-spaces-with-ds"></a>
+<a class="index-entry-id" id="index-spaces-with-ds"></a>
+<a class="index-entry-id" id="index-ds-request_002c-and-leading-spaces"></a>
+<p>An initial neutral double quote <code class="code">&quot;</code> in <var class="var">contents</var> is stripped
+to allow embedding of leading spaces. Any other <code class="code">&quot;</code> is interpreted
+literally, but it is wise to use the special character escape sequence
+<code class="code">\[dq]</code> instead if the string might be interpolated as part of a
+macro argument; see <a class="ref" href="#Calling-Macros">Calling Macros</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds salutation &quot; Yours in a white wine sauce,\&quot;
+.ds c-var-defn &quot; char mydate[]=\[dq]2020-07-29\[dq];\&quot;
+</pre></div></div>
+
+<a class="index-entry-id" id="index-multi_002dline-strings"></a>
+<a class="index-entry-id" id="index-strings_002c-multi_002dline"></a>
+<a class="index-entry-id" id="index-newline-character_002c-in-strings_002c-escaping"></a>
+<a class="index-entry-id" id="index-escaping-newline-characters_002c-in-strings"></a>
+<p>Strings are not limited to a single input line of text.
+<code class="code">\<kbd class="key">RET</kbd></code> works just as it does elsewhere. The resulting string
+is stored <em class="emph">without</em> the newlines. Care is therefore required when
+interpolating strings while filling is disabled.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds foo This string contains \
+text on multiple lines \
+of input.
+</pre></div></div>
+
+<p>It is not possible to embed a newline in a string that will be
+interpreted as such when the string is interpolated. To achieve that
+effect, use <code class="code">\*</code> to interpolate a macro instead; see <a class="ref" href="#Punning-Names">Punning Names</a>.
+</p>
+<p>Because strings are similar to macros, they too can be defined so as to
+suppress AT&amp;T <code class="code">troff</code> compatibility mode when used; see
+<a class="ref" href="#Writing-Macros">Writing Macros</a> and <a class="ref" href="#Compatibility-Mode">Compatibility Mode</a>. The <code class="code">ds1</code>
+request defines a string such that compatibility mode is off when the
+string is later interpolated. To be more precise, a <em class="dfn">compatibility
+save</em> input token is inserted at the beginning of the string, and a
+<em class="dfn">compatibility restore</em> input token at the end.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr xxx 12345
+.ds aa The value of xxx is \\n[xxx].
+.ds1 bb The value of xxx is \\n[xxx].
+.
+.cp 1
+.
+\*(aa
+ error&rarr; warning: register '[' not defined
+ &rArr; The value of xxx is 0xxx].
+\*(bb
+ &rArr; The value of xxx is 12345.
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eas"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.as</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eas'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-as"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eas1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.as1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eas1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-as1"></a>
+<a class="index-entry-id" id="index-appending-to-a-string-_0028as_0029"></a>
+<a class="index-entry-id" id="index-string_002c-appending-_0028as_0029"></a>
+<p>The <code class="code">as</code> request is similar to <code class="code">ds</code> but appends <var class="var">contents</var>
+to the string stored as <var class="var">name</var> instead of redefining it. If
+<var class="var">name</var> doesn&rsquo;t exist yet, it is created. If <code class="code">as</code> is called
+with only one argument, no operation is performed (beyond dereferencing
+the string).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.as salutation &quot; with shallots, onions and garlic,\&quot;
+</pre></div></div>
+
+<p>The <code class="code">as1</code> request is similar to <code class="code">as</code>, but compatibility mode
+is switched off when the appended portion of the string is later
+interpolated. To be more precise, a <em class="dfn">compatibility save</em> input
+token is inserted at the beginning of the appended string, and a
+<em class="dfn">compatibility restore</em> input token at the end.
+</p></dd></dl>
+
+<p>Several requests exist to perform rudimentary string operations.
+Strings can be queried (<code class="code">length</code>) and modified (<code class="code">chop</code>,
+<code class="code">substring</code>, <code class="code">stringup</code>, <code class="code">stringdown</code>), and their names
+can be manipulated through renaming, removal, and aliasing (<code class="code">rn</code>,
+<code class="code">rm</code>, <code class="code">als</code>).
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elength"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.length</code></strong> <var class="def-var-arguments">reg anything</var><a class="copiable-link" href='#index-_002elength'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-length"></a>
+<a class="index-entry-id" id="index-length-of-a-string-_0028length_0029"></a>
+<a class="index-entry-id" id="index-string_002c-length-of-_0028length_0029"></a>
+<a class="index-entry-id" id="index-length-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-length-request"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-length-request"></a>
+<p>Compute the number of characters of <var class="var">anything</var> and store the count
+in the register <var class="var">reg</var>. If <var class="var">reg</var> doesn&rsquo;t exist, it is created.
+<var class="var">anything</var> is read in copy mode.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds xxx abcd\h'3i'efgh
+.length yyy \*[xxx]
+\n[yyy]
+ &rArr; 14
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002echop"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.chop</code></strong> <var class="def-var-arguments">object</var><a class="copiable-link" href='#index-_002echop'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-chop"></a>
+<p>Remove the last character from the macro, string, or diversion named
+<var class="var">object</var>. This is useful for removing the newline from the end of a
+diversion that is to be interpolated as a string. This request can be
+used repeatedly on the same <var class="var">object</var>; see <a class="ref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>,
+for details on nodes inserted additionally by GNU <code class="code">troff</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002esubstring"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.substring</code></strong> <var class="def-var-arguments">str start [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002esubstring'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-substring"></a>
+<a class="index-entry-id" id="index-substring-_0028substring_0029"></a>
+<p>Replace the string named <var class="var">str</var> with its substring bounded by the
+indices <var class="var">start</var> and <var class="var">end</var>, inclusively. The first character in
+the string has index&nbsp;0. If <var class="var">end</var> is omitted, it is implicitly
+set to the largest valid value (the string length minus one). Negative
+indices count backward from the end of the string: the last character
+has index&nbsp;&minus;1, the character before the last has
+index&nbsp;&minus;2, and so on.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds xxx abcdefgh
+.substring xxx 1 -4
+\*[xxx]
+ &rArr; bcde
+.substring xxx 2
+\*[xxx]
+ &rArr; de
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002estringdown"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.stringdown</code></strong> <var class="def-var-arguments">str</var><a class="copiable-link" href='#index-_002estringdown'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-stringdown"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002estringup"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.stringup</code></strong> <var class="def-var-arguments">str</var><a class="copiable-link" href='#index-_002estringup'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-stringup"></a>
+<a class="index-entry-id" id="index-case_002dtransforming-a-string-_0028stringdown_002c-stringup_0029"></a>
+<a class="index-entry-id" id="index-uppercasing-a-string-_0028stringup_0029"></a>
+<a class="index-entry-id" id="index-lowercasing-a-string-_0028stringdown_0029"></a>
+<a class="index-entry-id" id="index-up_002dcasing-a-string-_0028stringup_0029"></a>
+<a class="index-entry-id" id="index-down_002dcasing-a-string-_0028stringdown_0029"></a>
+<p>Alter the string named <var class="var">str</var> by replacing each of its bytes with its
+lowercase (<code class="code">stringdown</code>) or uppercase (<code class="code">stringup</code>) version (if
+one exists). Special characters in the string will often transform in
+the expected way due to the regular naming convention for accented
+characters. When they do not, use substrings and/or catenation.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds resume R\['e]sum\['e]
+\*[resume]
+.stringdown resume
+\*[resume]
+.stringup resume
+\*[resume]
+ &rArr; Résumé résumé RÉSUMÉ
+</pre></div></div>
+</dd></dl>
+
+<p>(In practice, we would end the <code class="code">ds</code> request with a comment escape
+<code class="code">\&quot;</code> to prevent space from creeping into the definition during
+source document maintenance.)
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ern"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rn</code></strong> <var class="def-var-arguments">old new</var><a class="copiable-link" href='#index-_002ern'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rn"></a>
+<a class="index-entry-id" id="index-renaming-request-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-request_002c-renaming-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-renaming-macro-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-macro_002c-renaming-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-renaming-string-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-string_002c-renaming-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-renaming-diversion-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-renaming-_0028rn_0029"></a>
+<p>Rename the request, macro, diversion, or string <var class="var">old</var> to <var class="var">new</var>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002erm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rm</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002erm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rm"></a>
+<a class="index-entry-id" id="index-removing-request-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-request_002c-removing-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-removing-macro-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-macro_002c-removing-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-removing-string-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-string_002c-removing-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-removing-diversion-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-removing-_0028rm_0029"></a>
+<p>Remove the request, macro, diversion, or string <var class="var">name</var>. GNU
+<code class="code">troff</code> treats subsequent invocations as if the name had never
+been defined.
+</p></dd></dl>
+
+<a class="anchor" id="als"></a><dl class="first-deffn">
+<dt class="deffn" id="index-_002eals"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.als</code></strong> <var class="def-var-arguments">new old</var><a class="copiable-link" href='#index-_002eals'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-als"></a>
+<a class="index-entry-id" id="index-alias_002c-string_002c-creating-_0028als_0029"></a>
+<a class="index-entry-id" id="index-alias_002c-macro_002c-creating-_0028als_0029"></a>
+<a class="index-entry-id" id="index-alias_002c-diversion_002c-creating-_0028als_0029"></a>
+<a class="index-entry-id" id="index-creating-alias_002c-for-string-_0028als_0029"></a>
+<a class="index-entry-id" id="index-creating-alias_002c-for-macro-_0028als_0029"></a>
+<a class="index-entry-id" id="index-creating-alias_002c-for-diversion-_0028als_0029"></a>
+<a class="index-entry-id" id="index-string_002c-creating-alias-for-_0028als_0029"></a>
+<a class="index-entry-id" id="index-macro_002c-creating-alias-for-_0028als_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-creating-alias-for-_0028als_0029"></a>
+<p>Create an alias <var class="var">new</var> for the existing request, string, macro, or
+diversion object named <var class="var">old</var>, causing the names to refer to the same
+stored object. If <var class="var">old</var> is undefined, a warning in category
+&lsquo;<samp class="samp">mac</samp>&rsquo; is produced, and the request is ignored. See <a class="xref" href="#Warnings">Warnings</a>,
+for information about the enablement and suppression of warnings.
+</p>
+<p>To understand how the <code class="code">als</code> request works, consider two different
+storage pools: one for objects (macros, strings, etc.), and another
+for names. As soon as an object is defined, GNU <code class="code">troff</code> adds it to
+the object pool, adds its name to the name pool, and creates a link
+between them. When <code class="code">als</code> creates an alias, it adds a new name to
+the name pool that gets linked to the same object as the old name.
+</p>
+<p>Now consider this example.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de foo
+..
+.
+.als bar foo
+.
+.de bar
+. foo
+..
+.
+.bar
+ error&rarr; input stack limit exceeded (probable infinite
+ error&rarr; loop)
+</pre></div></div>
+
+<p>In the above, <code class="code">bar</code> remains an <em class="emph">alias</em>&mdash;another name
+for&mdash;the object referred to by <code class="code">foo</code>, which the second <code class="code">de</code>
+request replaces. Alternatively, imagine that the <code class="code">de</code> request
+<em class="emph">dereferences</em> its argument before replacing it. Either way, the
+result of calling <code class="code">bar</code> is a recursive loop that finally leads to
+an error. See <a class="xref" href="#Writing-Macros">Writing Macros</a>.
+</p>
+<a class="index-entry-id" id="index-alias_002c-string_002c-removing-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-alias_002c-macro_002c-removing-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-alias_002c-diversion_002c-removing-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-removing-alias_002c-for-string-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-removing-alias_002c-for-macro-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-removing-alias_002c-for-diversion-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-string_002c-removing-alias-for-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-macro_002c-removing-alias-for-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-removing-alias-for-_0028rm_0029"></a>
+<p>To remove an alias, call <code class="code">rm</code> on its name. The object itself is
+not destroyed until it has no more names.
+</p>
+<p>When a request, macro, string, or diversion is aliased, redefinitions
+and appendments &ldquo;write through&rdquo; alias names. To replace an alias with
+a separately defined object, you must use the <code class="code">rm</code> request on its
+name first.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Conditionals-and-Loops">
+<div class="nav-panel">
+<p>
+Next: <a href="#Writing-Macros" accesskey="n" rel="next">Writing Macros</a>, Previous: <a href="#Strings" accesskey="p" rel="prev">Strings</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Conditionals-and-Loops-1">5.23 Conditionals and Loops</h3>
+<a class="index-entry-id" id="index-conditionals-and-loops"></a>
+<a class="index-entry-id" id="index-loops-and-conditionals"></a>
+
+<p><code class="code">groff</code> has <code class="code">if</code> and <code class="code">while</code> control structures like
+other languages. However, the syntax for grouping multiple input lines
+in the branches or bodies of these structures is unusual.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#Operators-in-Conditionals" accesskey="1">Operators in Conditionals</a></li>
+<li><a href="#if_002dthen" accesskey="2">if-then</a></li>
+<li><a href="#if_002delse" accesskey="3">if-else</a></li>
+<li><a href="#Conditional-Blocks" accesskey="4">Conditional Blocks</a></li>
+<li><a href="#while" accesskey="5">while</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Operators-in-Conditionals">
+<div class="nav-panel">
+<p>
+Next: <a href="#if_002dthen" accesskey="n" rel="next">if-then</a>, Previous: <a href="#Conditionals-and-Loops" accesskey="p" rel="prev">Conditionals and Loops</a>, Up: <a href="#Conditionals-and-Loops" accesskey="u" rel="up">Conditionals and Loops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Operators-in-Conditionals-1">5.23.1 Operators in Conditionals</h4>
+
+<a class="index-entry-id" id="index-if-request_002c-operators-to-use-with"></a>
+<a class="index-entry-id" id="index-ie-request_002c-operators-to-use-with"></a>
+<a class="index-entry-id" id="index-while-request_002c-operators-to-use-with"></a>
+<a class="index-entry-id" id="index-conditional-expressions"></a>
+<a class="index-entry-id" id="index-expressions_002c-conditional"></a>
+<p>In <code class="code">if</code>, <code class="code">ie</code>, and <code class="code">while</code> requests, in addition to the
+numeric expressions described in <a class="ref" href="#Numeric-Expressions">Numeric Expressions</a>, several
+Boolean operators are available; the members of this expanded class are
+termed <em class="dfn">conditional expressions</em>.
+</p>
+<dl class="table">
+<dt><code class="code">c <var class="var">glyph</var></code></dt>
+<dd><p>True if <var class="var">glyph</var> is available, where <var class="var">glyph</var> is an ordinary
+character, a special character &lsquo;<samp class="samp">\(<var class="var">xx</var></samp>&rsquo; or &lsquo;<samp class="samp">\[<var class="var">xxx</var>]</samp>&rsquo;,
+&lsquo;<samp class="samp">\N'<var class="var">xxx</var>'</samp>&rsquo;, or has been defined by any of the <code class="code">char</code>,
+<code class="code">fchar</code>, <code class="code">fschar</code>, or <code class="code">schar</code> requests.
+</p>
+</dd>
+<dt><code class="code">d <var class="var">name</var></code></dt>
+<dd><p>True if a string, macro, diversion, or request called <var class="var">name</var> exists.
+</p>
+</dd>
+<dt><code class="code">e</code></dt>
+<dd><p>True if the current page is even-numbered.
+</p>
+</dd>
+<dt><code class="code">F <var class="var">font</var></code></dt>
+<dd><p>True if <var class="var">font</var> exists. <var class="var">font</var> is handled as if it were opened
+with the <code class="code">ft</code> request (that is, font translation and styles are
+applied), without actually mounting it.
+</p>
+</dd>
+<dt><code class="code">m <var class="var">color</var></code></dt>
+<dd><p>True if <var class="var">color</var> is defined.
+</p>
+</dd>
+<dt id='index-conditional-output-for-terminal-_0028TTY_0029'><span><code class="code">n</code><a class="copiable-link" href='#index-conditional-output-for-terminal-_0028TTY_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TTY_002c-conditional-output-for"></a>
+<a class="index-entry-id" id="index-terminal_002c-conditional-output-for"></a>
+<p>True if the document is being processed in <code class="code">nroff</code> mode.
+See <a class="xref" href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>.
+</p>
+</dd>
+<dt><code class="code">o</code></dt>
+<dd><p>True if the current page is odd-numbered.
+</p>
+</dd>
+<dt><code class="code">r <var class="var">register</var></code></dt>
+<dd><p>True if <var class="var">register</var> exists.
+</p>
+</dd>
+<dt><code class="code">S <var class="var">style</var></code></dt>
+<dd><p>True if <var class="var">style</var> is available for the current font family. Font
+translation is applied.
+</p>
+</dd>
+<dt><code class="code">t</code></dt>
+<dd><p>True if the document is being processed in <code class="code">troff</code> mode.
+See <a class="xref" href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>.
+</p>
+<a class="index-entry-id" id="index-vtroff"></a>
+</dd>
+<dt><code class="code">v</code></dt>
+<dd><p>Always false. This condition is recognized only for compatibility with
+certain other <code class="code">troff</code> implementations.<a class="footnote" id="DOCF88" href="#FOOT88"><sup>88</sup></a>
+</p></dd>
+</dl>
+
+<p>If the first argument to an <code class="code">if</code>, <code class="code">ie</code>, or <code class="code">while</code>
+request begins with a non-alphanumeric character apart from <code class="code">!</code>
+(see below); it performs an <i class="slanted">output comparison test</i>.
+<a class="footnote" id="DOCF89" href="#FOOT89"><sup>89</sup></a>
+</p>
+<a class="index-entry-id" id="index-output-comparison-operator"></a>
+<dl class="table">
+<dt><code class="code"><code class="code">'</code><var class="var">xxx</var><code class="code">'</code><var class="var">yyy</var><code class="code">'</code></code></dt>
+<dd><p>True if formatting the comparands <var class="var">xxx</var> and <var class="var">yyy</var> produces the
+same output commands. The delimiter need not be a neutral apostrophe:
+the output comparison operator accepts the same delimiters as most
+escape sequences; see <a class="ref" href="#Delimiters">Delimiters</a>. This <em class="dfn">output comparison
+operator</em> formats <var class="var">xxx</var> and <var class="var">yyy</var> in separate environments;
+after the comparison, the resulting data are discarded.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ie &quot;|&quot;\fR|\fP&quot; true
+.el false
+ &rArr; true
+</pre></div></div>
+
+<p>The resulting glyph properties, including font family, style, size, and
+slant, must match, but not necessarily the requests and/or escape
+sequences used to obtain them. In the previous example, &lsquo;<samp class="samp">|</samp>&rsquo; and
+&lsquo;<samp class="samp">\fR|\fP</samp>&rsquo; result in &lsquo;<samp class="samp">|</samp>&rsquo; glyphs in the same typefaces at the
+same positions, so the comparands are equal. If &lsquo;<samp class="samp">.ft&nbsp;I</samp>&rsquo; had
+been added before the &lsquo;<samp class="samp">.ie</samp>&rsquo;, they would differ: the first &lsquo;<samp class="samp">|</samp>&rsquo;
+would produce an italic &lsquo;<samp class="samp">|</samp>&rsquo;, not a roman one. Motions must match
+in orientation and magnitude to within the applicable horizontal and
+vertical motion quanta of the device, after rounding. &lsquo;<samp class="samp">.if
+&quot;\u\d&quot;\v'0'&quot;</samp>&rsquo; is false even though both comparands result in zero net
+motion, because motions are not interpreted or optimized but sent as-is
+to the output.<a class="footnote" id="DOCF90" href="#FOOT90"><sup>90</sup></a> On the other hand, &lsquo;<samp class="samp">.if &quot;\d&quot;\v'0.5m'&quot;</samp>&rsquo; is true, because
+<code class="code">\d</code> is defined as a downward motion of one-half em.<a class="footnote" id="DOCF91" href="#FOOT91"><sup>91</sup></a>
+</p>
+<a class="index-entry-id" id="index-string-comparison"></a>
+<a class="index-entry-id" id="index-comparison-of-strings"></a>
+<p>Surround the comparands with <code class="code">\?</code> to avoid formatting them; this
+causes them to be compared character by character, as with string
+comparisons in other programming languages.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ie &quot;\?|\?&quot;\?\fR|\fP\?&quot; true
+.el false
+ &rArr; false
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_005c_003f_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-_005c_003f"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005c_003f"></a>
+<p>Since comparands protected with <code class="code">\?</code> are read in copy mode
+(see <a class="pxref" href="#Copy-Mode">Copy Mode</a>), they need not even be valid <code class="code">groff</code> syntax.
+The escape character is still lexically recognized, however, and
+consumes the next character.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds a \[
+.ds b \[
+.if '\?\*a\?'\?\*b\?' a and b equivalent
+.if '\?\\?'\?\\?' backslashes equivalent
+ &rArr; a and b equivalent
+</pre></div></div>
+</dd>
+</dl>
+
+<p>The above operators can&rsquo;t be combined with most others, but a leading
+&lsquo;<samp class="samp">!</samp>&rsquo;, not followed immediately by spaces or tabs, complements an
+expression.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr x 1
+.ie !r x register x is not defined
+.el register x is defined
+ &rArr; register x is defined
+</pre></div></div>
+
+<p>Spaces and tabs are optional immediately after the &lsquo;<samp class="samp">c</samp>&rsquo;, &lsquo;<samp class="samp">d</samp>&rsquo;,
+&lsquo;<samp class="samp">F</samp>&rsquo;, &lsquo;<samp class="samp">m</samp>&rsquo;, &lsquo;<samp class="samp">r</samp>&rsquo;, and &lsquo;<samp class="samp">S</samp>&rsquo; operators, but right after
+&lsquo;<samp class="samp">!</samp>&rsquo;, they end the predicate and the conditional evaluates
+true.<a class="footnote" id="DOCF92" href="#FOOT92"><sup>92</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr x 1
+.ie ! r x register x is not defined
+.el register x is defined
+ &rArr; r x register x is not defined
+</pre></div></div>
+
+<p>The unexpected &lsquo;<samp class="samp">r x</samp>&rsquo; in the output is a clue that our conditional
+was not interpreted as we planned, but matters may not always be so
+obvious.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="if_002dthen">
+<div class="nav-panel">
+<p>
+Next: <a href="#if_002delse" accesskey="n" rel="next">if-else</a>, Previous: <a href="#Operators-in-Conditionals" accesskey="p" rel="prev">Operators in Conditionals</a>, Up: <a href="#Conditionals-and-Loops" accesskey="u" rel="up">Conditionals and Loops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="if_002dthen-1">5.23.2 if-then</h4>
+<a class="index-entry-id" id="index-if_002dthen"></a>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eif"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.if</code></strong> <var class="def-var-arguments">cond-expr anything</var><a class="copiable-link" href='#index-_002eif'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-if"></a>
+<p>Evaluate the conditional expression <var class="var">cond-expr</var>, and if it evaluates
+true (or to a positive value), interpret the remainder of the line
+<var class="var">anything</var> as if it were an input line. Recall from <a class="ref" href="#Invoking-Requests">Invoking Requests</a> that any quantity of spaces between arguments to requests
+serves only to separate them; leading spaces in <var class="var">anything</var> are thus
+not seen. <var class="var">anything</var> effectively <em class="emph">cannot</em> be omitted; if
+<var class="var">cond-expr</var> is true and <var class="var">anything</var> is empty, the newline at the
+end of the control line is interpreted as a blank input line (and
+therefore a blank text line).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">super\c
+tanker
+.nr force-word-break 1
+super\c
+.if ((\n[force-word-break] = 1) &amp; \n[.int])
+tanker
+ &rArr; supertanker super tanker
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enop"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nop</code></strong> <var class="def-var-arguments">anything</var><a class="copiable-link" href='#index-_002enop'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nop"></a>
+<p>Interpret <var class="var">anything</var> as if it were an input line. This is similar
+to &lsquo;<samp class="samp">.if&nbsp;1</samp>&rsquo;. <code class="code">nop</code> is not really &ldquo;no operation&rdquo;; its
+argument <em class="emph">is</em> processed&mdash;unconditionally. It can be used to cause
+text lines to share indentation with surrounding control lines.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.als real-MAC MAC
+.de wrapped-MAC
+. tm MAC: called with arguments \\$@
+. nop \\*[real-MAC]\\
+..
+.als MAC wrapped-MAC
+\# Later...
+.als MAC real-MAC
+</pre></div></div>
+
+<p>In the above, we&rsquo;ve used aliasing, <code class="code">nop</code>, and the interpolation of
+a macro as a string to interpose a wrapper around the macro &lsquo;<samp class="samp">MAC</samp>&rsquo;
+(perhaps to debug it).
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="if_002delse">
+<div class="nav-panel">
+<p>
+Next: <a href="#while" accesskey="n" rel="next">while</a>, Previous: <a href="#Operators-in-Conditionals" accesskey="p" rel="prev">Operators in Conditionals</a>, Up: <a href="#Conditionals-and-Loops" accesskey="u" rel="up">Conditionals and Loops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="if_002delse-1">5.23.3 if-else</h4>
+<a class="index-entry-id" id="index-if_002delse"></a>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eie"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ie</code></strong> <var class="def-var-arguments">cond-expr anything</var><a class="copiable-link" href='#index-_002eie'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ie"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eel"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.el</code></strong> <var class="def-var-arguments">anything</var><a class="copiable-link" href='#index-_002eel'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-el"></a>
+<p>Use the <code class="code">ie</code> and <code class="code">el</code> requests to write an if-then-else. The
+first request is the &ldquo;if&rdquo; part and the latter is the &ldquo;else&rdquo; part.
+Unusually among programming languages, any number of non-conditional
+requests may be interposed between the <code class="code">ie</code> branch and the
+<code class="code">el</code> branch.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 0
+.ie \na a is non-zero.
+.nr a +1
+.el a was not positive but is now \na.
+ &rArr; a was not positive but is now 1.
+</pre></div></div>
+
+<p>Another way in which <code class="code">el</code> is an ordinary request is that it does
+not lexically &ldquo;bind&rdquo; more tightly to its <code class="code">ie</code> counterpart than it
+does to any other request. This fact can surprise C programmers.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 1
+.nr z 0
+.ie \nz \
+. ie \na a is true
+. el a is false
+.el z is false
+ error&rarr; warning: unbalanced 'el' request
+ &rArr; a is false
+</pre></div></div>
+
+<p>To conveniently nest conditionals, keep reading.
+</p>
+</dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Conditional-Blocks">
+<div class="nav-panel">
+<p>
+Next: <a href="#while" accesskey="n" rel="next">while</a>, Previous: <a href="#Operators-in-Conditionals" accesskey="p" rel="prev">Operators in Conditionals</a>, Up: <a href="#Conditionals-and-Loops" accesskey="u" rel="up">Conditionals and Loops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Conditional-Blocks-1">5.23.4 Conditional Blocks</h4>
+<a class="index-entry-id" id="index-conditional-blocks"></a>
+<a class="index-entry-id" id="index-blocks_002c-conditional"></a>
+
+<p>It is frequently desirable for a control structure to govern more than
+one request, macro call, text line, or a combination of the foregoing.
+The opening and closing brace escape sequences <code class="code">\{</code> and <code class="code">\}</code>
+define such groups. These <em class="dfn">conditional blocks</em> can furthermore be
+nested.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_007b-2"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\{</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_007b-2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_007b"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_007d-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\}</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_007d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_007b-1"></a>
+<a class="index-entry-id" id="index-_005c_007d"></a>
+<a class="index-entry-id" id="index-beginning-of-conditional-block-_0028_005c_007b_0029"></a>
+<a class="index-entry-id" id="index-end-of-conditional-block-_0028_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-conditional-block_002c-beginning-_0028_005c_007b_0029"></a>
+<a class="index-entry-id" id="index-conditional-block_002c-end-_0028_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-block_002c-conditional_002c-beginning-_0028_005c_007b_0029"></a>
+<a class="index-entry-id" id="index-block_002c-conditional_002c-end-_0028_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-brace-escape-sequences-_0028_005c_007b_002c-_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-escape-sequences_002c-brace-_0028_005c_007b_002c-_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-opening-brace-escape-sequence-_0028_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-closing-brace-escape-sequence-_0028_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-brace-escape-sequence_002c-opening-_0028_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-brace-escape-sequence_002c-closing-_0028_005c_007d_0029"></a>
+<p><code class="code">\{</code> begins a conditional block; it must appear (after optional
+spaces and tabs) immediately subsequent to the conditional expression of
+an <code class="code">if</code>, <code class="code">ie</code>, or <code class="code">while</code>
+request,<a class="footnote" id="DOCF93" href="#FOOT93"><sup>93</sup></a> or as the argument to an <code class="code">el</code>
+request.
+</p>
+<p><code class="code">\}</code> ends a condition block and should appear on a line with other
+occurrences of itself as necessary to match <code class="code">\{</code> sequences. It
+can be preceded by a control character, spaces, and tabs. Input after
+any quantity of <code class="code">\}</code> sequences on the same line is processed only
+if all of the preceding conditions to which they correspond are true.
+Furthermore, a <code class="code">\}</code> closing the body of a <code class="code">while</code> request
+must be the last such escape sequence on an input line.
+</p>
+<p>Brace escape sequences outside of control structures have no meaning and
+produce no output.
+</p>
+<p><strong class="strong">Caution:</strong> Input lines using <code class="code">\{</code> often end with
+<code class="code">\RET</code>, especially in macros that consist primarily of control
+lines. Forgetting to use <code class="code">\RET</code> on an input line after <code class="code">\{</code>
+is a common source of error.
+</p></dd></dl>
+
+<p>We might write the following in a page header macro. If we delete
+<code class="code">\RET</code>, the header will carry an unwanted extra empty line (except
+on page&nbsp;1).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.if (\\n[%] != 1) \{\
+. ie ((\\n[%] % 2) = 0) .tl \\*[even-numbered-page-title]
+. el .tl \\*[odd-numbered-page-title]
+.\}
+</pre></div></div>
+
+<p>Let us take a closer look at how conditional blocks nest.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">A
+.if 0 \{ B
+C
+D
+\}E
+F
+ &rArr; A F
+</pre></div></div>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">N
+.if 1 \{ O
+. if 0 \{ P
+Q
+R\} S\} T
+U
+ &rArr; N O U
+</pre></div></div>
+
+<p>The above behavior may challenge the intuition; it was implemented to
+retain compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>. For clarity, it
+is idiomatic to end input lines with <code class="code">\{</code> (followed by
+<code class="code">\<kbd class="key">RET</kbd></code> if appropriate), and to precede <code class="code">\}</code> on an input
+line with nothing more than a control character, spaces, tabs, and other
+instances of itself.
+</p>
+<p>We can use <code class="code">ie</code>, <code class="code">el</code>, and conditional blocks to simulate the
+multi-way &ldquo;switch&rdquo; or &ldquo;case&rdquo; control structures of other languages.
+The following example is adapted from the <code class="code">groff</code> <samp class="file">man</samp>
+package. Indentation is used to clarify the logic.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; Simulate switch/case in roff.
+. ie '\\$2'1' .ds title General Commands\&quot;
+.el \{.ie '\\$2'2' .ds title System Calls\&quot;
+.el \{.ie '\\$2'3' .ds title Library Functions\&quot;
+.el \{.ie '\\$2'4' .ds title Kernel Interfaces\&quot;
+.el \{.ie '\\$2'5' .ds title File Formats\&quot;
+.el \{.ie '\\$2'6' .ds title Games\&quot;
+.el \{.ie '\\$2'7' .ds title Miscellaneous Information\&quot;
+.el \{.ie '\\$2'8' .ds title System Management\&quot;
+.el \{.ie '\\$2'9' .ds title Kernel Development\&quot;
+.el .ds title \&quot; empty
+.\}\}\}\}\}\}\}\}
+</pre></div></div>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="while">
+<div class="nav-panel">
+<p>
+Previous: <a href="#if_002delse" accesskey="p" rel="prev">if-else</a>, Up: <a href="#Conditionals-and-Loops" accesskey="u" rel="up">Conditionals and Loops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="while-1">5.23.5 while</h4>
+<a class="index-entry-id" id="index-while"></a>
+
+<p><code class="code">groff</code> provides a looping construct: the <code class="code">while</code> request.
+Its syntax matches the <code class="code">if</code> request.
+</p>
+<a class="index-entry-id" id="index-body_002c-of-a-while-request"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewhile"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.while</code></strong> <var class="def-var-arguments">cond-expr anything</var><a class="copiable-link" href='#index-_002ewhile'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-while-1"></a>
+<p>Evaluate the conditional expression <var class="var">cond-expr</var>, and repeatedly
+execute <var class="var">anything</var> unless and until <var class="var">cond-expr</var> evaluates false.
+<var class="var">anything</var>, which is often a conditional block, is referred to as
+the <code class="code">while</code> request&rsquo;s <em class="dfn">body</em>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 0 1
+.while (\na &lt; 9) \{\
+\n+a,
+.\}
+\n+a
+ &rArr; 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
+</pre></div></div>
+
+<a class="index-entry-id" id="index-de-request_002c-and-while"></a>
+<p>GNU <code class="code">troff</code> treats the body of a <code class="code">while</code> request similarly to
+that of a <code class="code">de</code> request (albeit one not read in copy
+mode<a class="footnote" id="DOCF94" href="#FOOT94"><sup>94</sup></a>), but stores it under an internal name
+and deletes it when the loop finishes. The operation of a macro
+containing a <code class="code">while</code> request can slow significantly if the
+<code class="code">while</code> body is large. Each time the macro is executed, the
+<code class="code">while</code> body is parsed and stored again.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de xxx
+. nr num 10
+. while (\\n[num] &gt; 0) \{\
+. \&quot; many lines of code
+. nr num -1
+. \}
+..
+</pre></div></div>
+
+<a class="index-entry-id" id="index-recursive-macros"></a>
+<a class="index-entry-id" id="index-macros_002c-recursive"></a>
+<p>An often better solution&mdash;and one that is more portable, since
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> lacked the <code class="code">while</code> request&mdash;is to
+instead write a recursive macro. It will be parsed only
+once.<a class="footnote" id="DOCF95" href="#FOOT95"><sup>95</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de yyy
+. if (\\n[num] &gt; 0) \{\
+. \&quot; many lines of code
+. nr num -1
+. yyy
+. \}
+..
+.
+.de xxx
+. nr num 10
+. yyy
+..
+</pre></div></div>
+
+<p>To prevent infinite loops, the default number of available recursion
+levels is 1,000 or somewhat less.<a class="footnote" id="DOCF96" href="#FOOT96"><sup>96</sup></a> You can
+disable this protective measure, or raise the limit, by setting the
+<code class="code">slimit</code> register. See <a class="xref" href="#Debugging">Debugging</a>.
+</p>
+<p>As noted above, if a <code class="code">while</code> body begins with a conditional block,
+its closing brace must end an input line.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.if 1 \{\
+. nr a 0 1
+. while (\n[a] &lt; 10) \{\
+. nop \n+[a]
+.\}\}
+ error&rarr; unbalanced brace escape sequences
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebreak"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.break</code></strong><a class="copiable-link" href='#index-_002ebreak'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-break-2"></a>
+<a class="index-entry-id" id="index-while-request_002c-confusing-with-br"></a>
+<a class="index-entry-id" id="index-break-request_002c-in-a-while-loop"></a>
+<a class="index-entry-id" id="index-continue-request_002c-in-a-while-loop"></a>
+<p>Exit a <code class="code">while</code> loop. Do not confuse this request with a
+typographical break or the <code class="code">br</code> request.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002econtinue"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.continue</code></strong><a class="copiable-link" href='#index-_002econtinue'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-continue"></a>
+<p>Skip the remainder of a <code class="code">while</code> loop&rsquo;s body, immediately starting
+the next iteration.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+</div>
+<div class="section-level-extent" id="Writing-Macros">
+<div class="nav-panel">
+<p>
+Next: <a href="#Page-Motions" accesskey="n" rel="next">Page Motions</a>, Previous: <a href="#Conditionals-and-Loops" accesskey="p" rel="prev">Conditionals and Loops</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Writing-Macros-1">5.24 Writing Macros</h3>
+<a class="index-entry-id" id="index-writing-macros"></a>
+<a class="index-entry-id" id="index-macros_002c-writing"></a>
+
+<p>A <em class="dfn">macro</em> is a stored collection of text and control lines that can
+be interpolated multiple times. Use macros to define common operations.
+Macros are called in the same way that requests are invoked. While
+requests exist for the purpose of creating macros, simply calling an
+undefined macro, or interpolating it as a string, will cause it to be
+defined as empty. See <a class="xref" href="#Identifiers">Identifiers</a>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ede"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.de</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002ede'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-de"></a>
+<p>Define a macro <var class="var">name</var>, replacing the definition of any existing
+request, macro, string, or diversion called <var class="var">name</var>. If
+<var class="var">name</var> already exists as an alias, the target of the alias is
+redefined; recall <a class="ref" href="#Strings">Strings</a>. GNU <code class="code">troff</code> enters copy
+mode,<a class="footnote" id="DOCF97" href="#FOOT97"><sup>97</sup></a> storing subsequent input lines as the
+macro definition. If the optional second argument is not specified, the
+definition ends with the control line &lsquo;<samp class="samp">..</samp>&rsquo; (two dots).
+Alternatively, <var class="var">end</var> identifies a macro whose call syntax at the
+start of a control line ends the definition of <var class="var">name</var>; <var class="var">end</var> is
+then called normally. A macro definition must end in the same
+conditional block (if any) in which it began (see <a class="pxref" href="#Conditional-Blocks">Conditional Blocks</a>). Spaces or tabs are permitted after the control character in
+the line containing this ending token (either &lsquo;<samp class="samp">.</samp>&rsquo; or
+&lsquo;<samp class="samp"><var class="var">end</var></samp>&rsquo;), but a tab immediately after the token prevents its
+recognition as the end of a macro definition. The macro <var class="var">end</var> can
+be called with arguments.<a class="footnote" id="DOCF98" href="#FOOT98"><sup>98</sup></a>
+</p>
+<p>Here is a small example macro called &lsquo;<samp class="samp">P</samp>&rsquo; that causes a break and
+inserts some vertical space. It could be used to separate paragraphs.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de P
+. br
+. sp .8v
+..
+</pre></div></div>
+
+<p>We can define one macro within another. Attempting to nest &lsquo;<samp class="samp">..</samp>&rsquo;
+naïvely will end the outer definition because the inner definition
+isn&rsquo;t interpreted as such until the outer macro is later interpolated.
+We can use an end macro instead. Each level of nesting should use a
+unique end macro.
+</p>
+<p>An end macro need not be defined until it is called. This fact enables
+a nested macro definition to begin inside one macro and end inside
+another. Consider the following example.<a class="footnote" id="DOCF99" href="#FOOT99"><sup>99</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de m1
+. de m2 m3
+you
+..
+.de m3
+Hello,
+Joe.
+..
+.de m4
+do
+..
+.m1
+know?
+. m3
+What
+.m4
+.m2
+ &rArr; Hello, Joe. What do you know?
+</pre></div></div>
+
+<p>A nested macro definition <em class="emph">can</em> be terminated with &lsquo;<samp class="samp">..</samp>&rsquo; and
+nested macros <em class="emph">can</em> reuse end macros, but these control lines must
+be escaped multiple times for each level of nesting. The necessity of
+this escaping and the utility of nested macro definitions will become
+clearer when we employ macro parameters and consider the behavior of
+copy mode in detail.
+</p></dd></dl>
+
+<p><code class="code">de</code> defines a macro that inherits the compatibility mode
+enablement status of its context (see <a class="pxref" href="#Implementation-Differences">Implementation Differences</a>).
+Often it is desirable to make a macro that uses <code class="code">groff</code> features
+callable from contexts where compatibility mode is on; for instance,
+when writing extensions to a historical macro package. To achieve this,
+compatibility mode needs to be switched off while such a macro is
+interpreted&mdash;without disturbing that state when it is finished.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ede1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.de1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002ede1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-de1"></a>
+<p>The <code class="code">de1</code> request defines a macro to be interpreted with
+compatibility mode disabled. When <var class="var">name</var> is called, compatibility
+mode enablement status is saved; it is restored when the call completes.
+Observe the extra backlash before the interpolation of register
+&lsquo;<samp class="samp">xxx</samp>&rsquo;; we&rsquo;ll explore this subject in <a class="ref" href="#Copy-Mode">Copy Mode</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr xxx 12345
+.de aa
+The value of xxx is \\n[xxx].
+. br
+..
+.de1 bb
+The value of xxx is \\n[xxx].
+..
+.cp 1
+.aa
+ error&rarr; warning: register '[' not defined
+ &rArr; The value of xxx is 0xxx].
+.bb
+ &rArr; The value of xxx is 12345.
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edei"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.dei</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002edei'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-dei"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002edei1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.dei1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002edei1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-dei1"></a>
+<p>The <code class="code">dei</code> request defines a macro with its name and end
+macro indirected through strings. That is, it interpolates strings
+named <var class="var">name</var> and <var class="var">end</var> before performing the definition.
+</p>
+<p>The following examples are equivalent.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds xx aa
+.ds yy bb
+.dei xx yy
+</pre></div></div>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de aa bb
+</pre></div></div>
+
+<p>The <code class="code">dei1</code> request bears the same relationship to <code class="code">dei</code> as
+<code class="code">de1</code> does to <code class="code">de</code>; it temporarily turns compatibility mode
+off when <var class="var">name</var> is called.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eam"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.am</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eam'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-am"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eam1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.am1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eam1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-am1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eami"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ami</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eami'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ami"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eami1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ami1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eami1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ami1"></a>
+<a class="index-entry-id" id="index-appending-to-a-macro-_0028am_0029"></a>
+<a class="index-entry-id" id="index-macro_002c-appending-to-_0028am_0029"></a>
+<p><code class="code">am</code> appends subsequent input lines to macro <var class="var">name</var>, extending
+its definition, and otherwise working as <code class="code">de</code> does.
+</p>
+<p>To make the previously defined &lsquo;<samp class="samp">P</samp>&rsquo; macro set indented instead of
+block paragraphs, add the necessary code to the existing macro.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.am P
+.ti +5n
+..
+</pre></div></div>
+
+<p>The other requests are analogous to their &lsquo;<samp class="samp">de</samp>&rsquo; counterparts. The
+<code class="code">am1</code> request turns off compatibility mode during interpretation of
+the appendment. The <code class="code">ami</code> request appends indirectly, meaning that
+strings <var class="var">name</var> and <var class="var">end</var> are interpolated with the resulting
+names used before appending. The <code class="code">ami1</code> request is similar to
+<code class="code">ami</code>, disabling compatibility mode during interpretation of the
+appended lines.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-trace_002etmac"></a>
+<p>Using <samp class="file">trace.tmac</samp>, you can trace calls to <code class="code">de</code>,
+<code class="code">de1</code>, <code class="code">am</code>, and <code class="code">am1</code>. You can also use the
+<code class="code">backtrace</code> request at any point desired to troubleshoot tricky
+spots (see <a class="pxref" href="#Debugging">Debugging</a>).
+</p>
+<p>See <a class="xref" href="#Strings">Strings</a>, for the <code class="code">als</code>, <code class="code">rm</code>, and <code class="code">rn</code> requests to
+create an alias of, remove, and rename a macro, respectively.
+</p>
+<a class="index-entry-id" id="index-object-creation"></a>
+<p>Macro identifiers share their name space with requests, strings, and
+diversions; see <a class="ref" href="#Identifiers">Identifiers</a>. The <code class="code">am</code>, <code class="code">as</code>, <code class="code">da</code>,
+<code class="code">de</code>, <code class="code">di</code>, and <code class="code">ds</code> requests (together with their
+variants) create a new object only if the name of the macro, diversion,
+or string is currently undefined or if it is defined as a request;
+normally, they modify the value of an existing object. See <a class="xref" href="#als">the
+description of the <code class="code">als</code> request</a>, for pitfalls when redefining a
+macro that is aliased.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ereturn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.return</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">anything</i></span>]</var><a class="copiable-link" href='#index-_002ereturn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-return"></a>
+<p>Exit a macro, immediately returning to the caller. If called with an
+argument <var class="var">anything</var>, exit twice&mdash;the current macro and the macro
+one level higher. This is used to define a wrapper macro for
+<code class="code">return</code> in <samp class="file">trace.tmac</samp>.
+</p></dd></dl>
+
+
+
+<ul class="mini-toc">
+<li><a href="#Parameters" accesskey="1">Parameters</a></li>
+<li><a href="#Copy-Mode" accesskey="2">Copy Mode</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Parameters">
+<div class="nav-panel">
+<p>
+Next: <a href="#Copy-Mode" accesskey="n" rel="next">Copy Mode</a>, Previous: <a href="#Writing-Macros" accesskey="p" rel="prev">Writing Macros</a>, Up: <a href="#Writing-Macros" accesskey="u" rel="up">Writing Macros</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Parameters-1">5.24.1 Parameters</h4>
+<a class="index-entry-id" id="index-parameters"></a>
+
+<p>Macro calls and string interpolations optionally accept a list of
+arguments; recall <a class="ref" href="#Calling-Macros">Calling Macros</a>. At the time such an
+interpolation takes place, these <em class="dfn">parameters</em> can be examined using
+a register and a variety of escape sequences starting with &lsquo;<samp class="samp">\$</samp>&rsquo;.
+All such escape sequences are interpreted even in copy mode, a fact we
+shall motivate and explain below (see <a class="pxref" href="#Copy-Mode">Copy Mode</a>).
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002e_0024_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.$]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002e_0024_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002e_0024"></a>
+<a class="index-entry-id" id="index-parameter-count-register-_0028_002e_0024_0029"></a>
+<p>The count of parameters available to a macro or string is kept in this
+read-only register. The <code class="code">shift</code> request can change its value.
+</p></dd></dl>
+
+<p>Any individual parameter can be accessed by its position in the list of
+arguments to the macro call, numbered from left to right starting at 1,
+with one of the following escape sequences.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0024n"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$</code><span class="r"><i class="slanted">n</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024n'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0024"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_0024_0028nn"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$(</code><span class="r"><i class="slanted">nn</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024_0028nn'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005c_0024_005bnnn_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$[</code><span class="r"><i class="slanted">nnn</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005c_0024_005bnnn_005d'> &para;</a></span></dt>
+<dd><p>Interpolate the <var class="var">n</var>th, <var class="var">nn</var>th, or <var class="var">nnn</var>th parameter. The
+first form expects only a single digit (1&le;<var class="var">n</var>&le;9)), the
+second two digits (01&le;<var class="var">nn</var>&le;99)), and the third any
+positive integer <var class="var">nnn</var>. Macros and strings accept an unlimited
+number of parameters.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eshift"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.shift</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002eshift'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-shift"></a>
+<p>Shift the parameters <var class="var">n</var> places (1&nbsp;by default). This is a
+&ldquo;left shift&rdquo;: what was parameter&nbsp;<var class="var">i</var> becomes parameter
+<em class="math"><var class="var">i</var>-<var class="var">n</var></em>. The parameters formerly in positions 1
+to&nbsp;<var class="var">n</var> are no longer available. Shifting by a non-positive
+amount performs no operation. The register <code class="code">.$</code> is adjusted
+accordingly.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-copy-mode_002c-and-macro-parameters"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-macro-parameters"></a>
+<a class="index-entry-id" id="index-macro_002c-parameters-_0028_005c_0024_0029"></a>
+<a class="index-entry-id" id="index-parameters_002c-macro-_0028_005c_0024_0029"></a>
+<p>In practice, parameter interpolations are usually seen prefixed with an
+extra escape character. This is because the <code class="code">\$</code> family of escape
+sequences is interpreted even in copy mode.<a class="footnote" id="DOCF100" href="#FOOT100"><sup>100</sup></a>
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0024_002a-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$*</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024_002a-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0024_002a"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_0024_0040-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$@</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024_0040-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0024_0040"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_0024_005e-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$^</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024_005e-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0024_005e"></a>
+<p>In some cases it is convenient to interpolate all of the parameters at
+once (to pass them to a request, for instance). The <code class="code">\$*</code> escape
+concatenates the parameters, separating them with spaces. <code class="code">\$@</code>
+is similar, concatenating the parameters, surrounding each with double
+quotes and separating them with spaces. If not in compatibility mode,
+the interpolation depth of double quotes is preserved (see <a class="pxref" href="#Calling-Macros">Calling Macros</a>). <code class="code">\$^</code> interpolates all parameters as if they were
+arguments to the <code class="code">ds</code> request.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de foo
+. tm $1='\\$1'
+. tm $2='\\$2'
+. tm $*='\\$*'
+. tm $@='\\$@'
+. tm $^='\\$^'
+..
+.foo &quot; This is a &quot;test&quot;
+ error&rarr; $1=' This is a '
+ error&rarr; $2='test&quot;'
+ error&rarr; $*=' This is a test&quot;'
+ error&rarr; $@='&quot; This is a &quot; &quot;test&quot;&quot;'
+ error&rarr; $^='&quot; This is a &quot;test&quot;'
+</pre></div></div>
+
+<p><code class="code">\$*</code> is useful when writing a macro that doesn&rsquo;t need to
+distinguish its arguments, or even to not interpret them; examples
+include macros that produce diagnostic messages by wrapping the
+<code class="code">tm</code> or <code class="code">ab</code> requests. Use <code class="code">\$@</code> when writing a macro
+that may need to shift its parameters and/or wrap a macro or request
+that finds the count significant. If in doubt, prefer <code class="code">\$@</code> to
+<code class="code">\$*</code>. An application of <code class="code">\$^</code> is seen in <samp class="file">trace.tmac</samp>,
+which redefines some requests and macros for debugging purposes.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_00240-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$0</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_00240-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_00240"></a>
+<a class="index-entry-id" id="index-macro-name-register-_0028_005c_00240_0029"></a>
+<a class="index-entry-id" id="index-als-request_002c-and-_005c_00240"></a>
+<p>Interpolate the name by which the macro being interpreted was called.
+The <code class="code">als</code> request can cause a macro to have more than one name.
+Applying string interpolation to a macro does not change this name.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de foo
+. tm \\$0
+..
+.als bar foo
+.
+.de aaa
+. foo
+..
+.de bbb
+. bar
+..
+.de ccc
+\\*[foo]\\
+..
+.de ddd
+\\*[bar]\\
+..
+.
+.aaa
+ error&rarr; foo
+.bbb
+ error&rarr; bar
+.ccc
+ error&rarr; ccc
+.ddd
+ error&rarr; ddd
+</pre></div></div>
+</dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Copy-Mode">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Parameters" accesskey="p" rel="prev">Parameters</a>, Up: <a href="#Writing-Macros" accesskey="u" rel="up">Writing Macros</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Copy-Mode-1">5.24.2 Copy Mode</h4>
+<a class="index-entry-id" id="index-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode-1"></a>
+<a class="index-entry-id" id="index-mode_002c-copy"></a>
+<a class="index-entry-id" id="index-mode_002c-copy-1"></a>
+
+<a class="index-entry-id" id="index-_005cn_002c-when-reading-text-for-a-macro"></a>
+<a class="index-entry-id" id="index-_005c_0024_002c-when-reading-text-for-a-macro"></a>
+<a class="index-entry-id" id="index-_005c_002a_002c-when-reading-text-for-a-macro"></a>
+<a class="index-entry-id" id="index-_005cRET_002c-when-reading-text-for-a-macro"></a>
+<p>When GNU <code class="code">troff</code> processes certain requests, most importantly those
+which define or append to a macro or string, it does so in <em class="dfn">copy
+mode</em>: it copies the characters of the definition into a dedicated
+storage region, interpolating the escape sequences <code class="code">\n</code>, <code class="code">\g</code>,
+<code class="code">\$</code>, <code class="code">\*</code>, <code class="code">\V</code>, and <code class="code">\?</code> normally; interpreting
+<code class="code">\<kbd class="key">RET</kbd></code> immediately; discarding comments <code class="code">\&quot;</code> and
+<code class="code">\#</code>; interpolating the current leader, escape, or tab character
+with <code class="code">\a</code>, <code class="code">\e</code>, and <code class="code">\t</code>, respectively; and storing all
+other escape sequences in an encoded form.
+</p>
+<a class="index-entry-id" id="index-interpretation-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-interpretation"></a>
+<p>The complement of copy mode&mdash;a <code class="code">roff</code> formatter&rsquo;s behavior when
+not defining or appending to a macro, string, or diversion&mdash;where all
+macros are interpolated, requests invoked, and valid escape sequences
+processed immediately upon recognition, can be termed
+<em class="dfn">interpretation mode</em>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_005c-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\\</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_005c-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_005c"></a>
+<p>The escape character, <code class="code">\</code> by default, can escape itself. This
+enables you to control whether a given <code class="code">\n</code>, <code class="code">\g</code>, <code class="code">\$</code>,
+<code class="code">\*</code>, <code class="code">\V</code>, or <code class="code">\?</code> escape sequence is interpreted at the
+time the macro containing it is defined, or later when the macro is
+called.<a class="footnote" id="DOCF101" href="#FOOT101"><sup>101</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr x 20
+.de y
+.nr x 10
+\&amp;\nx
+\&amp;\\nx
+..
+.y
+ &rArr; 20 10
+</pre></div></div>
+
+<p>You can think of <code class="code">\\</code> as a &ldquo;delayed&rdquo; backslash; it is the escape
+character followed by a backslash from which the escape character has
+removed its special meaning. Consequently, &lsquo;<samp class="samp">\\</samp>&rsquo; is not an escape
+sequence in the usual sense. In any escape sequence &lsquo;<samp class="samp">\<var class="var">X</var></samp>&rsquo;
+that GNU <code class="code">troff</code> does not recognize, the escape character is
+ignored and <var class="var">X</var> is output. An unrecognized escape sequence causes
+a warning in category &lsquo;<samp class="samp">escape</samp>&rsquo;, with two exceptions&mdash;&lsquo;<samp class="samp">\\</samp>&rsquo; is
+the first.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-_005c_005c_002c-when-reading-text-for-a-macro"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002e-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\.</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002e-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_002e"></a>
+<p><code class="code">\.</code> escapes the control character. It is similar to <code class="code">\\</code> in
+that it isn&rsquo;t a true escape sequence. It is used to permit nested macro
+definitions to end without a named macro call to conclude them. Without
+a syntax for escaping the control character, this would not be possible.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de m1
+foo
+.
+. de m2
+bar
+\\..
+.
+..
+.m1
+.m2
+ &rArr; foo bar
+</pre></div></div>
+
+<p>The first backslash is consumed while the macro is read, and the second
+is interpreted when macro <code class="code">m1</code> is called.
+</p></dd></dl>
+
+<p><code class="code">roff</code> documents should not use the <code class="code">\\</code> or <code class="code">\.</code>
+character sequences outside of copy mode; they serve only to obfuscate
+the input. Use <code class="code">\e</code> to represent the escape character,
+<code class="code">\[rs]</code> to obtain a backslash glyph, and <code class="code">\&amp;</code> before &lsquo;<samp class="samp">.</samp>&rsquo;
+and &lsquo;<samp class="samp">'</samp>&rsquo; where GNU <code class="code">troff</code> expects them as control characters
+if you mean to use them literally (recall <a class="ref" href="#Requests-and-Macros">Requests and Macros</a>).
+</p>
+<p>Macro definitions can be nested to arbitrary depth. The mechanics of
+parsing the escape character have significant consequences for this
+practice.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de M1
+\\$1
+. de M2
+\\\\$1
+. de M3
+\\\\\\\\$1
+\\\\..
+. M3 hand.
+\\..
+. M2 of
+..
+This understeer is getting
+.M1 out
+ &rArr; This understeer is getting out of hand.
+</pre></div></div>
+
+<p>Each escape character is interpreted twice&mdash;once in copy mode, when the
+macro is defined, and once in interpretation mode, when the macro is
+called. As seen above, this fact leads to exponential growth in the
+quantity of escape characters required to delay interpolation of
+<code class="code">\n</code>, <code class="code">\g</code>, <code class="code">\$</code>, <code class="code">\*</code>, <code class="code">\V</code>, and <code class="code">\?</code> at
+each nesting level, which can be daunting. GNU <code class="code">troff</code> offers a
+solution.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cE-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\E</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cE-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cE"></a>
+<p><code class="code">\E</code> represents an escape character that is not interpreted in copy
+mode. You can use it to ease the writing of nested macro definitions.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de M1
+. nop \E$1
+. de M2
+. nop \E$1
+. de M3
+. nop \E$1
+\\\\..
+. M3 better.
+\\..
+. M2 bit
+..
+This vehicle handles
+.M1 a
+ &rArr; This vehicle handles a bit better.
+</pre></div></div>
+
+<p>Observe that because <code class="code">\.</code> is not a true escape sequence, we can&rsquo;t
+use <code class="code">\E</code> to keep &lsquo;<samp class="samp">..</samp>&rsquo; from ending a macro definition
+prematurely. If the multiplicity of backslashes complicates
+maintenance, use end macros.
+</p>
+<p><code class="code">\E</code> is also convenient to define strings containing escape
+sequences that need to work when used in copy mode (for example, as
+macro arguments), or which will be interpolated at varying macro nesting
+depths. We might define strings to begin and end superscripting
+as follows.<a class="footnote" id="DOCF102" href="#FOOT102"><sup>102</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds { \v'-.9m\s'\En[.s]*7u/10u'+.7m'
+.ds } \v'-.7m\s0+.9m'
+</pre></div></div>
+
+<p>When the <code class="code">ec</code> request is used to redefine the escape character,
+<code class="code">\E</code> also makes it easier to distinguish the semantics of an escape
+character from the other meaning(s) its character might have. Consider
+the use of an unusual escape character, &lsquo;<samp class="samp">-</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 1
+.ec -
+.de xx
+--na
+..
+.xx
+ &rArr; -na
+</pre></div></div>
+
+<p>This result may surprise you; some people expect &lsquo;<samp class="samp">1</samp>&rsquo; to be output
+since register &lsquo;<samp class="samp">a</samp>&rsquo; has clearly been defined with that value. What
+has happened? The robotic replacement of &lsquo;<samp class="samp">\</samp>&rsquo; with &lsquo;<samp class="samp">-</samp>&rsquo; has led
+us astray. You might recognize the sequence &lsquo;<samp class="samp">--</samp>&rsquo; more readily with
+the default escape character as &lsquo;<samp class="samp">\-</samp>&rsquo;, the special character escape
+sequence for the minus sign glyph.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 1
+.ec -
+.de xx
+-Ena
+..
+.xx
+ &rArr; 1
+</pre></div></div>
+</dd></dl>
+
+
+
+<hr>
+</div>
+</div>
+<div class="section-level-extent" id="Page-Motions">
+<div class="nav-panel">
+<p>
+Next: <a href="#Drawing-Geometric-Objects" accesskey="n" rel="next">Drawing Geometric Objects</a>, Previous: <a href="#Writing-Macros" accesskey="p" rel="prev">Writing Macros</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Page-Motions-1">5.25 Page Motions</h3>
+<a class="index-entry-id" id="index-page-motions"></a>
+<a class="index-entry-id" id="index-motions_002c-page"></a>
+
+<p>See <a class="xref" href="#Manipulating-Spacing">Manipulating Spacing</a>, for a discussion of the most commonly used
+request for vertical motion, <code class="code">sp</code>, which spaces downward by one
+vee.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002emk"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.mk</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">reg</i></span>]</var><a class="copiable-link" href='#index-_002emk'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-mk"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ert"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rt</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">dist</i></span>]</var><a class="copiable-link" href='#index-_002ert'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rt"></a>
+<a class="index-entry-id" id="index-marking-vertical-page-location-_0028mk_0029"></a>
+<a class="index-entry-id" id="index-page-location_002c-vertical_002c-marking-_0028mk_0029"></a>
+<a class="index-entry-id" id="index-location_002c-vertical_002c-page_002c-marking-_0028mk_0029"></a>
+<a class="index-entry-id" id="index-vertical-page-location_002c-marking-_0028mk_0029"></a>
+<a class="index-entry-id" id="index-returning-to-marked-vertical-page-location-_0028rt_0029"></a>
+<a class="index-entry-id" id="index-page-location_002c-vertical_002c-returning-to-marked-_0028rt_0029"></a>
+<a class="index-entry-id" id="index-location_002c-vertical_002c-page_002c-returning-to-marked-_0028rt_0029"></a>
+<a class="index-entry-id" id="index-vertical-page-location_002c-returning-to-marked-_0028rt_0029"></a>
+<p>You can <em class="dfn">mark</em> a location on a page for subsequent <em class="dfn">return</em>.
+<code class="code">mk</code> takes an argument, a register name in which to store the
+current page location. If given no argument, it stores the location in
+an internal register. This location can be used later by the <code class="code">rt</code>
+or the <code class="code">sp</code> requests (or the <code class="code">\v</code> escape).
+</p>
+<p>The <code class="code">rt</code> request returns <em class="emph">upward</em> to the location marked with
+the last <code class="code">mk</code> request. If used with an argument, it returns to a
+vertical position&nbsp;<var class="var">dist</var> from the top of the page (no previous
+call to <code class="code">mk</code> is necessary in this case). The default scaling
+unit is &lsquo;<samp class="samp">v</samp>&rsquo;.
+</p>
+<p>If a page break occurs between a <code class="code">mk</code> request and its matching
+<code class="code">rt</code> request, the <code class="code">rt</code> request is silently ignored.
+</p>
+<p>A simple implementation of a macro to set text in two columns follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr column-length 1.5i
+.nr column-gap 4m
+.nr bottom-margin 1m
+.
+.de 2c
+. br
+. mk
+. ll \\n[column-length]u
+. wh -\\n[bottom-margin]u 2c-trap
+. nr right-side 0
+..
+.
+.de 2c-trap
+. ie \\n[right-side] \{\
+. nr right-side 0
+. po -(\\n[column-length]u + \\n[column-gap]u)
+. \&quot; remove trap
+. wh -\\n[bottom-margin]u
+. \}
+. el \{\
+. \&quot; switch to right side
+. nr right-side 1
+. po +(\\n[column-length]u + \\n[column-gap]u)
+. rt
+. \}
+..
+</pre></div></div>
+
+<p>Now let us apply our two-column macro.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.pl 1.5i
+.ll 4i
+This is a small test that shows how the
+rt request works in combination with mk.
+
+.2c
+Starting here, text is typeset in two columns.
+Note that this implementation isn't robust
+and thus not suited for a real two-column
+macro.
+ &rArr; This is a small test that shows how the
+ &rArr; rt request works in combination with mk.
+ &rArr;
+ &rArr; Starting here, isn't robust
+ &rArr; text is typeset and thus not
+ &rArr; in two columns. suited for a
+ &rArr; Note that this real two-column
+ &rArr; implementation macro.
+</pre></div></div>
+</dd></dl>
+
+<p>Several escape sequences enable fine control of movement about the page.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cv_0027expr_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\v<code class="code">'</code></code><span class="r"><i class="slanted">expr</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cv_0027expr_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cv"></a>
+<a class="index-entry-id" id="index-vertical-motion-_0028_005cv_0029"></a>
+<a class="index-entry-id" id="index-motion_002c-vertical-_0028_005cv_0029"></a>
+<p>Vertically move the drawing position. <var class="var">expr</var> indicates the
+magnitude of motion: positive is downward and and negative upward. The
+default scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. The motion is relative to the current
+drawing position unless <var class="var">expr</var> begins with the boundary-relative
+motion operator &lsquo;<samp class="samp">|</samp>&rsquo;. See <a class="xref" href="#Numeric-Expressions">Numeric Expressions</a>.
+</p>
+<p>Text processing continues at the new drawing position; usually, vertical
+motions should be in balanced pairs to avoid a confusing page layout.
+</p>
+<p><code class="code">\v</code> will not spring a vertical position trap. This can be useful;
+for example, consider a page bottom trap macro that prints a marker in
+the margin to indicate continuation of a footnote. See <a class="xref" href="#Traps">Traps</a>.
+</p></dd></dl>
+
+<p>A few escape sequences that produce vertical motion are unusual. They
+are thought to originate early in AT&amp;T <code class="code">nroff</code> history to achieve
+super- and subscripting by half-line motions on line printers and
+teletypewriters before the phototypesetter made more precise positioning
+available. They are reckoned in ems&mdash;not vees&mdash;to maintain continuity
+with their original purpose of moving relative to the size of the type
+rather than the distance between text baselines (vees).<a class="footnote" id="DOCF103" href="#FOOT103"><sup>103</sup></a>
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cr-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\r</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cr-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cr"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cu-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\u</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cu-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cu"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cd-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\d</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cd-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cd"></a>
+<p>Move upward&nbsp;1<span class="dmn">m</span>, upward&nbsp;.5<span class="dmn">m</span>, and
+downward&nbsp;.5<span class="dmn">m</span>, respectively.
+</p></dd></dl>
+
+<p>Let us see these escape sequences in use.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Obtain 100 cm\u3\d of \ka\d\092\h'|\nau'\r233\dU.
+</pre></div></div>
+
+<p>In the foregoing we have paired <code class="code">\u</code> and <code class="code">\d</code> to typeset a
+superscript, and later a full em negative (&ldquo;reverse&rdquo;) motion to place
+a superscript above a subscript. A numeral-width horizontal motion
+escape sequence aligns the proton and nucleon numbers, while <code class="code">\k</code>
+marks a horizontal position to which <code class="code">\h</code> returns so that we could
+stack them. (We shall discuss these horizontal motion escape sequences
+presently.) In serious applications, we often want to alter the type
+size of the -scripts and to fine-tune the vertical motions, as the
+<code class="code">groff</code> <samp class="file">ms</samp> package does with its super- and subscripting
+string definitions.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005ch_0027expr_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\h<code class="code">'</code></code><span class="r"><i class="slanted">expr</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005ch_0027expr_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005ch"></a>
+<a class="index-entry-id" id="index-inserting-horizontal-space-_0028_005ch_0029"></a>
+<a class="index-entry-id" id="index-horizontal-space-_0028_005ch_0029"></a>
+<a class="index-entry-id" id="index-space_002c-horizontal-_0028_005ch_0029"></a>
+<a class="index-entry-id" id="index-horizontal-motion-_0028_005ch_0029"></a>
+<a class="index-entry-id" id="index-motion_002c-horizontal-_0028_005ch_0029"></a>
+<p>Horizontally move the drawing position. <var class="var">expr</var> indicates the
+magnitude of motion: positive is rightward and negative leftward. The
+default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;. The motion is relative to the current
+drawing position unless <var class="var">expr</var> begins with the boundary-relative
+motion operator &lsquo;<samp class="samp">|</samp>&rsquo;. See <a class="xref" href="#Numeric-Expressions">Numeric Expressions</a>.
+</p></dd></dl>
+
+<p>The following string definition sets the TeX
+logo.<a class="footnote" id="DOCF104" href="#FOOT104"><sup>104</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds TeX T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X\&quot;
+</pre></div></div>
+
+<p>There are a number of special-case escape sequences for horizontal
+motion.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cSP-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\<kbd class="key">SP</kbd></code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cSP-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cSP"></a>
+<a class="index-entry-id" id="index-space_002c-unbreakable-and-unadjustable-_0028_005cSP_0029"></a>
+<a class="index-entry-id" id="index-unbreakable-and-unadjustable-space-_0028_005cSP_0029"></a>
+<a class="index-entry-id" id="index-unadjustable-and-unbreakable-space-_0028_005cSP_0029"></a>
+<a class="index-entry-id" id="index-_005cspace"></a>
+<p>Move right one word space. (The input is a backslash followed by a
+space.) This escape sequence can be thought of as a non-adjustable,
+unbreakable space. Usually you want <code class="code">\~</code> instead; see
+<a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-thin-space-_0028_005c_007c_0029"></a>
+<a class="index-entry-id" id="index-space_002c-thin-_0028_005c_007c_0029"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_007c-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\|</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_007c-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_007c"></a>
+<p>Move one-sixth <span class="dmn">em</span> to the right on typesetting output devices. If
+a glyph named &lsquo;<samp class="samp">\|</samp>&rsquo; is defined in the current font, its width is
+used instead, even on terminal output devices.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-hair-space-_0028_005c_005e_0029"></a>
+<a class="index-entry-id" id="index-space_002c-hair-_0028_005c_005e_0029"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_005e-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\^</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_005e-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_005e"></a>
+<p>Move one-twelfth <span class="dmn">em</span> to the right on typesetting output devices.
+If a glyph named &lsquo;<samp class="samp">\^</samp>&rsquo; is defined in the current font, its width is
+used instead, even on terminal output devices.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c0-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\0</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c0-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c0"></a>
+<a class="index-entry-id" id="index-space_002c-width-of-a-digit-_0028numeral_0029-_0028_005c0_0029"></a>
+<a class="index-entry-id" id="index-digit_002dwidth-space-_0028_005c0_0029"></a>
+<a class="index-entry-id" id="index-figure-space-_0028_005c0_0029"></a>
+<a class="index-entry-id" id="index-numeral_002dwidth-space-_0028_005c0_0029"></a>
+<p>Move right by the width of a numeral in the current font.
+</p></dd></dl>
+
+<p>Horizontal motions are not discarded at the end of an output line as
+word spaces are. See <a class="xref" href="#Breaking">Breaking</a>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cw_0027anything_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\w<code class="code">'</code></code><span class="r"><i class="slanted">anything</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cw_0027anything_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cw"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bst_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[st]</code></strong><a class="copiable-link" href='#index-_005cn_005bst_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-st"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bsb_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[sb]</code></strong><a class="copiable-link" href='#index-_005cn_005bsb_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-sb"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005brst_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[rst]</code></strong><a class="copiable-link" href='#index-_005cn_005brst_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rst"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005brsb_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[rsb]</code></strong><a class="copiable-link" href='#index-_005cn_005brsb_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rsb"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bct_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[ct]</code></strong><a class="copiable-link" href='#index-_005cn_005bct_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ct"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bssc_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[ssc]</code></strong><a class="copiable-link" href='#index-_005cn_005bssc_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ssc"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bskw_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[skw]</code></strong><a class="copiable-link" href='#index-_005cn_005bskw_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-skw"></a>
+<a class="index-entry-id" id="index-width-escape-_0028_005cw_0029"></a>
+<p>Interpolate the width of <var class="var">anything</var> in basic units. This escape
+sequence allows several properties of formatted output to be measured
+without writing it out.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">The length of the string 'abc' is \w'abc'u.
+ &rArr; The length of the string 'abc' is 72u.
+</pre></div></div>
+
+<a class="index-entry-id" id="index-dummy-environment_002c-used-by-_005cw-escape-sequence"></a>
+<a class="index-entry-id" id="index-environment_002c-dummy_002c-used-by-_005cw-escape-sequence"></a>
+<p><var class="var">anything</var> is processed in a dummy environment: this means that
+font and type size changes, for example, may occur within it without
+affecting subsequent output.
+</p>
+<p>After each use, <code class="code">\w</code> sets several registers.
+</p>
+<a class="index-entry-id" id="index-CSTR-_002354-errata-5"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-sb-register"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-st-register"></a>
+<dl class="table">
+<dt><code class="code">st</code></dt>
+<dt><code class="code">sb</code></dt>
+<dd><p>The maximum vertical displacements of the text baseline above and below,
+respectively. The sign convention is opposite that of relative vertical
+motions; that is, depth below the (original) baseline is negative.
+These registers are incorrectly documented in the <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> manual as &ldquo;the highest and lowest extent of [the argument
+to <code class="code">\w</code>] relative to the baseline&rdquo;.
+</p>
+</dd>
+<dt><code class="code">rst</code></dt>
+<dt><code class="code">rsb</code></dt>
+<dd><p>Like <code class="code">st</code> and <code class="code">sb</code>, but taking account of the heights and
+depths of glyphs. In other words, these registers store the highest and
+lowest vertical positions attained by <var class="var">anything</var>, doing what
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> documented <code class="code">st</code> and <code class="code">sb</code> as doing.
+</p>
+</dd>
+<dt><code class="code">ct</code></dt>
+<dd><p>Characterizes the geometry of glyphs occurring in <var class="var">anything</var>.
+</p>
+<dl class="table">
+<dt>0</dt>
+<dd><p>only short glyphs, no descenders or tall glyphs
+</p>
+</dd>
+<dt>1</dt>
+<dd><p>at least one descender
+</p>
+</dd>
+<dt>2</dt>
+<dd><p>at least one tall glyph
+</p>
+</dd>
+<dt>3</dt>
+<dd><p>at least one each of a descender and a tall glyph
+</p></dd>
+</dl>
+
+</dd>
+<dt><code class="code">ssc</code></dt>
+<dd><p>The amount of horizontal space (possibly negative) that should be added
+to the last glyph before a subscript.
+</p>
+</dd>
+<dt><code class="code">skw</code></dt>
+<dd><p>How far to right of the center of the last glyph in the <code class="code">\w</code>
+argument, the center of an accent from a roman font should be placed
+over that glyph.
+</p></dd>
+</dl>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005ckp"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\k</code><span class="r"><i class="slanted">p</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ckp'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005ck"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005ck_0028ps"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\k(</code><span class="r"><i class="slanted">ps</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ck_0028ps'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005ck_005bposition_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\k[</code><span class="r"><i class="slanted">position</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005ck_005bposition_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-saving-horizontal-input-line-position-_0028_005ck_0029"></a>
+<a class="index-entry-id" id="index-horizontal-input-line-position_002c-saving-_0028_005ck_0029"></a>
+<a class="index-entry-id" id="index-input-line-position_002c-horizontal_002c-saving-_0028_005ck_0029"></a>
+<a class="index-entry-id" id="index-position_002c-horizontal-input-line_002c-saving-_0028_005ck_0029"></a>
+<a class="index-entry-id" id="index-line_002c-input_002c-horizontal-position_002c-saving-_0028_005ck_0029"></a>
+<p>Store the current horizontal position in the <em class="emph">input</em> line in a
+register with the name <var class="var">position</var> (one-character name&nbsp;<var class="var">p</var>,
+two-character name <var class="var">ps</var>). Use this, for example, to return to the
+beginning of a string for highlighting or other decoration.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bhp_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[hp]</code></strong><a class="copiable-link" href='#index-_005cn_005bhp_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hp"></a>
+<a class="index-entry-id" id="index-horizontal-input-line-position-register-_0028hp_0029"></a>
+<a class="index-entry-id" id="index-input-line_002c-horizontal-position_002c-register-_0028hp_0029"></a>
+<a class="index-entry-id" id="index-position_002c-horizontal_002c-in-input-line_002c-register-_0028hp_0029"></a>
+<a class="index-entry-id" id="index-line_002c-input_002c-horizontal-position_002c-register-_0028hp_0029"></a>
+<p>The current horizontal position at the input line.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002ek_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.k]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ek_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ek"></a>
+<a class="index-entry-id" id="index-horizontal-output-line-position-register-_0028_002ek_0029"></a>
+<a class="index-entry-id" id="index-output-line_002c-horizontal-position_002c-register-_0028_002ek_0029"></a>
+<a class="index-entry-id" id="index-position_002c-horizontal_002c-in-output-line_002c-register-_0028_002ek_0029"></a>
+<a class="index-entry-id" id="index-line_002c-output_002c-horizontal-position_002c-register-_0028_002ek_0029"></a>
+<p>A read-only register containing the current horizontal output position
+(relative to the current indentation).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005co_0027abc_2026_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\o<code class="code">'</code></code><span class="r"><i class="slanted">abc&hellip;</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005co_0027abc_2026_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005co"></a>
+<a class="index-entry-id" id="index-overstriking-glyphs-_0028_005co_0029"></a>
+<a class="index-entry-id" id="index-glyphs_002c-overstriking-_0028_005co_0029"></a>
+<p>Overstrike the glyphs of characters <var class="var">a</var>, <var class="var">b</var>, <var class="var">c</var>, &hellip;;
+the glyphs are centered, written, and the drawing position advanced by
+the widest of the glyphs.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005czc"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\z</code><span class="r"><i class="slanted">c</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005czc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cz"></a>
+<a class="index-entry-id" id="index-zero_002dwidth-printing-_0028_005cz_002c-_005cZ_0029"></a>
+<a class="index-entry-id" id="index-printing_002c-zero_002dwidth-_0028_005cz_002c-_005cZ_0029"></a>
+<p>Format the character <var class="var">c</var> with zero width; that is, without advancing
+the drawing position. Use <code class="code">\z</code> to overstrike glyphs aligned to
+their left edges, in contrast to <code class="code">\o</code>&rsquo;s centering.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cZ_0027anything_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\Z<code class="code">'</code></code><span class="r"><i class="slanted">anything</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cZ_0027anything_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cZ"></a>
+<a class="index-entry-id" id="index-zero_002dwidth-printing-_0028_005cz_002c-_005cZ_0029-1"></a>
+<a class="index-entry-id" id="index-printing_002c-zero_002dwidth-_0028_005cz_002c-_005cZ_0029-1"></a>
+<p>Save the drawing position, format <var class="var">anything</var>, then restore it. Tabs
+and leaders in the argument are ignored with an error diagnostic.
+</p>
+<p>We might implement a strike-through macro thus.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de ST
+.nr width \w'\\$1'
+\Z@\v'-.25m'\l'\\n[width]u'@\\$1
+..
+.
+This is
+.ST &quot;a test&quot;
+an actual emergency!
+</pre></div></div>
+</dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Drawing-Geometric-Objects">
+<div class="nav-panel">
+<p>
+Next: <a href="#Traps" accesskey="n" rel="next">Traps</a>, Previous: <a href="#Page-Motions" accesskey="p" rel="prev">Page Motions</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Drawing-Geometric-Objects-1">5.26 Drawing Geometric Objects</h3>
+<a class="index-entry-id" id="index-drawing-requests"></a>
+<a class="index-entry-id" id="index-requests-for-drawing"></a>
+
+<p>A few of the formatter&rsquo;s escape sequences draw lines and other geometric
+objects. Combined with each other and with page motion commands
+(see <a class="pxref" href="#Page-Motions">Page Motions</a>), a wide variety of figures is possible. For
+complex drawings, these operations can be cumbersome; the preprocessors
+<code class="code">gpic</code> or <code class="code">ggrn</code> are typically used instead.
+</p>
+<p>The <code class="code">\l</code> and <code class="code">\L</code> escape sequences draw horizontal and
+vertical sequences of glyphs, respectively. Even the simplest of
+output devices supports them.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cl_0027l_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\l<code class="code">'</code></code><span class="r"><i class="slanted">l</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cl_0027l_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cl"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cl_0027lc_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\l<code class="code">'</code></code><span class="r"><i class="slanted">lc</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cl_0027lc_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-horizontal-lines-_0028_005cl_0029"></a>
+<a class="index-entry-id" id="index-horizontal-line_002c-drawing-_0028_005cl_0029"></a>
+<a class="index-entry-id" id="index-line_002c-horizontal_002c-drawing-_0028_005cl_0029"></a>
+<p>Draw a horizontal line of length <var class="var">l</var> from the drawing position.
+Rightward motion is positive. Afterward, the drawing position is at the
+right end of the line. The default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-baseline-rule-special-character_0028_005c_005bru_005d_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-underscore-_0028_005c_005bru_005d_0029"></a>
+<a class="index-entry-id" id="index-line-drawing-glyph"></a>
+<a class="index-entry-id" id="index-glyph_002c-for-line-drawing"></a>
+<p>The optional second parameter&nbsp;<var class="var">c</var> is a character with which to
+draw the line. The default is the baseline rule special character,
+<code class="code">\[ru]</code>.
+</p>
+<a class="index-entry-id" id="index-dummy-character-_0028_005c_0026_0029_002c-effect-on-_005cl-escape-sequence"></a>
+<a class="index-entry-id" id="index-character_002c-dummy-_0028_005c_0026_0029_002c-effect-on-_005cl-escape-sequence"></a>
+<p>If <var class="var">c</var> is a valid scaling unit, put <code class="code">\&amp;</code> after <var class="var">l</var> to
+disambiguate the input.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de textbox
+\[br]\\$*\[br]\l'|0\[rn]'\l'|0\[ul]'
+..
+</pre></div></div>
+
+<p>The foregoing outputs a box rule (a vertical line), the text
+argument(s), and another box rule. We employ the boundary-relative
+motion operator &lsquo;<samp class="samp">|</samp>&rsquo;. Finally, the line-drawing escape sequences
+draw a radical extender (a form of overline) and an underline from the
+drawing position to the position coresponding to beginning of the
+<em class="emph">input</em> line. The drawing position returns to just after the
+right-hand box rule because the lengths of the drawn lines are negative,
+as noted above.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cL_0027l_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\L<code class="code">'</code></code><span class="r"><i class="slanted">l</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cL_0027l_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cL"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cL_0027lc_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\L<code class="code">'</code></code><span class="r"><i class="slanted">lc</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cL_0027lc_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-vertical-lines-_0028_005cL_0029"></a>
+<a class="index-entry-id" id="index-vertical-line-drawing-_0028_005cL_0029"></a>
+<a class="index-entry-id" id="index-line_002c-vertical_002c-drawing-_0028_005cL_0029"></a>
+<a class="index-entry-id" id="index-line-drawing-glyph-1"></a>
+<a class="index-entry-id" id="index-glyph-for-line-drawing"></a>
+<a class="index-entry-id" id="index-box-rule-glyph-_0028_005c_005bbr_005d_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-box-rule-_0028_005c_005bbr_005d_0029"></a>
+<p>Draw a vertical line of length <var class="var">l</var> from the drawing position.
+Downward motion is positive. The default scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. The
+default character is the box rule, <code class="code">\[br]</code>. As with vertical
+motion escape sequences, text processing continues where the line ends.
+<code class="code">\L</code> is otherwise similar to <code class="code">\l</code>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ nroff &lt;&lt;EOF
+This is a \L'3v'test.
+EOF
+ &rArr; This is a
+ &rArr; |
+ &rArr; |
+ &rArr; |test.
+</pre></div></div>
+
+<p>When writing text, the drawing position is at the text baseline; recall
+<a class="ref" href="#Page-Geometry">Page Geometry</a>.
+</p></dd></dl>
+
+<p>The <code class="code">\D</code> escape sequence provides <em class="dfn">drawing commands</em> that
+direct the output device to render geometrical objects rather than
+glyphs. Specific devices may support only a subset, or may feature
+additional ones; consult the man page for the output driver in use.
+Terminal devices in particular implement almost none. See <a class="xref" href="#Graphics-Commands">Graphics Commands</a>.
+</p>
+<p>Rendering starts at the drawing position; when finished, the drawing
+position is left at the rightmost point of the object, even for closed
+figures, except where noted. GNU <code class="code">troff</code> draws stroked (outlined)
+objects with the stroke color, and shades filled ones with the fill
+color. See <a class="xref" href="#Colors">Colors</a>. Coordinates <var class="var">h</var> and <var class="var">v</var> are horizontal
+and vertical motions relative to the drawing position or previous point
+in the command. The default scaling unit for horizontal measurements
+(and diameters of circles) is &lsquo;<samp class="samp">m</samp>&rsquo;; for vertical ones, &lsquo;<samp class="samp">v</samp>&rsquo;.
+</p>
+<p>Circles, ellipses, and polygons can be drawn filled or stroked. These
+are independent properties; if you want a filled, stroked figure, you
+must draw the same figure twice using each drawing command. A filled
+figure is always smaller than an outlined one because the former is
+drawn only within its defined area, whereas strokes have a line
+thickness (set with &lsquo;<samp class="samp">\D't'</samp>&rsquo;).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">\h'1i'\v'1i'\
+\# increase line thickness
+\Z'\D't 5p''\
+\# draw stroked (unfilled) polygon
+\Z'\D'p 3 3 -6 0''\
+\# draw filled (solid) polygon
+\Z'\D'P 3 3 -6 0''
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cD_0027command-argument-_2026_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\D<code class="code">'</code></code><span class="r"><i class="slanted">command argument &hellip;</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cD_0027command-argument-_2026_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cD"></a>
+<p>Drawing command escape sequence parameters begin with an ordinary
+character, <var class="var">command</var>, selecting the type of object to be drawn,
+followed by <var class="var">argument</var>s whose meaning is determined by
+<var class="var">command</var>.
+</p>
+<dl class="table">
+<dt id='index-drawing-a-spline-_0028_005cD_0027_007e-_2026_0027_0029'><span><code class="code">\D'~ <var class="var">h1</var> <var class="var">v1</var> &hellip; <var class="var">hn</var> <var class="var">vn</var>'</code><a class="copiable-link" href='#index-drawing-a-spline-_0028_005cD_0027_007e-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-spline_002c-drawing-_0028_005cD_0027_007e-_2026_0027_0029"></a>
+<p>Draw a B-spline to each point in sequence, leaving the drawing position
+at (<var class="var">hn</var>, <var class="var">vn</var>).
+</p>
+</dd>
+<dt id='index-arc_002c-drawing-_0028_005cD_0027a-_2026_0027_0029'><span><code class="code">\D'a <var class="var">hc</var> <var class="var">vc</var> <var class="var">h</var> <var class="var">v</var>'</code><a class="copiable-link" href='#index-arc_002c-drawing-_0028_005cD_0027a-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-an-arc-_0028_005cD_0027a-_2026_0027_0029"></a>
+<p>Draw a circular arc centered at (<var class="var">hc</var>, <var class="var">vc</var>) counterclockwise
+from the drawing position to a point (<var class="var">h</var>, <var class="var">v</var>) relative to the
+center. <a class="footnote" id="DOCF105" href="#FOOT105"><sup>105</sup></a>
+</p>
+</dd>
+<dt id='index-circle_002c-stroked_002c-drawing-_0028_005cD_0027c-_2026_0027_0029'><span><code class="code">\D'c <var class="var">d</var>'</code><a class="copiable-link" href='#index-circle_002c-stroked_002c-drawing-_0028_005cD_0027c-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-stroked-circle-_0028_005cD_0027c-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-stroked-circle_002c-drawing-_0028_005cD_0027c-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-circle_002c-outlined_002c-drawing-_0028_005cD_0027c-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-drawing-an-outlined-circle-_0028_005cD_0027c-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-outlined-circle_002c-drawing-_0028_005cD_0027c-_2026_0027_0029"></a>
+<p>Draw a circle of diameter <var class="var">d</var> with its leftmost point at the drawing
+position.
+</p>
+</dd>
+<dt id='index-circle_002c-filled_002c-drawing-_0028_005cD_0027C-_2026_0027_0029'><span><code class="code">\D'C <var class="var">d</var>'</code><a class="copiable-link" href='#index-circle_002c-filled_002c-drawing-_0028_005cD_0027C-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-filled-circle-_0028_005cD_0027C-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-filled-circle_002c-drawing-_0028_005cD_0027C-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-circle_002c-solid_002c-drawing-_0028_005cD_0027C-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-drawing-a-solid-circle-_0028_005cD_0027C-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-solid-circle_002c-drawing-_0028_005cD_0027C-_2026_0027_0029"></a>
+<p>As &lsquo;<samp class="samp">\D'C <span class="r">&hellip;</span>'</samp>&rsquo;, but the circle is filled.
+</p>
+</dd>
+<dt id='index-ellipse_002c-stroked_002c-drawing-_0028_005cD_0027e-_2026_0027_0029'><span><code class="code">\D'e <var class="var">h</var> <var class="var">v</var>'</code><a class="copiable-link" href='#index-ellipse_002c-stroked_002c-drawing-_0028_005cD_0027e-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-stroked-ellipse-_0028_005cD_0027e-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-stroked-ellipse_002c-drawing-_0028_005cD_0027e-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-ellipse_002c-outlined_002c-drawing-_0028_005cD_0027e-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-drawing-an-outlined-ellipse-_0028_005cD_0027e-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-outlined-ellipse_002c-drawing-_0028_005cD_0027e-_2026_0027_0029"></a>
+<p>Draw an ellipse of width <var class="var">h</var> and height <var class="var">v</var> with its leftmost
+point at the drawing position.
+</p>
+</dd>
+<dt id='index-ellipse_002c-filled_002c-drawing-_0028_005cD_0027E-_2026_0027_0029'><span><code class="code">\D'E <var class="var">x</var> <var class="var">y</var>'</code><a class="copiable-link" href='#index-ellipse_002c-filled_002c-drawing-_0028_005cD_0027E-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-filled-ellipse-_0028_005cD_0027E-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-filled-ellipse_002c-drawing-_0028_005cD_0027E-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-ellipse_002c-solid_002c-drawing-_0028_005cD_0027E-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-drawing-a-solid-ellipse-_0028_005cD_0027E-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-solid-ellipse_002c-drawing-_0028_005cD_0027E-_2026_0027_0029"></a>
+<p>As &lsquo;<samp class="samp">\D'e <span class="r">&hellip;</span>'</samp>&rsquo;, but the ellipse is filled.
+</p>
+</dd>
+<dt id='index-line_002c-drawing-_0028_005cD_0027l-_2026_0027_0029'><span><code class="code">\D'l <var class="var">dx</var> <var class="var">dy</var>'</code><a class="copiable-link" href='#index-line_002c-drawing-_0028_005cD_0027l-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-line-_0028_005cD_0027l-_2026_0027_0029"></a>
+<p>Draw line from the drawing position to (<var class="var">h</var>, <var class="var">v</var>).
+</p>
+<p>The following is a macro for drawing a box around a text argument; for
+simplicity, the box margin is a fixed at 0.2<span class="dmn">m</span>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de TEXTBOX
+. nr @wd \w'\\$1'
+\h'.2m'\
+\h'-.2m'\v'(.2m - \\n[rsb]u)'\
+\D'l 0 -(\\n[rst]u - \\n[rsb]u + .4m)'\
+\D'l (\\n[@wd]u + .4m) 0'\
+\D'l 0 (\\n[rst]u - \\n[rsb]u + .4m)'\
+\D'l -(\\n[@wd]u + .4m) 0'\
+\h'.2m'\v'-(.2m - \\n[rsb]u)'\
+\\$1\
+\h'.2m'
+..
+</pre></div></div>
+
+<p>The argument is measured with the <code class="code">\w</code> escape sequence. Its width
+is stored in register <code class="code">@wd</code>. <code class="code">\w</code> also sets the registers
+<code class="code">rst</code> and <code class="code">rsb</code>; these contain its maximum vertical extents of
+the argument. Then, four lines are drawn to form a box, offset by the
+box margin.
+</p>
+</dd>
+<dt id='index-polygon_002c-stroked_002c-drawing-_0028_005cD_0027p-_2026_0027_0029'><span><code class="code">\D'p <var class="var">h1</var> <var class="var">v1</var> &hellip; <var class="var">hn</var> <var class="var">vn</var>'</code><a class="copiable-link" href='#index-polygon_002c-stroked_002c-drawing-_0028_005cD_0027p-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-stroked-polygon-_0028_005cD_0027p-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-stroked-polygon_002c-drawing-_0028_005cD_0027p-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-polygon_002c-outlined_002c-drawing-_0028_005cD_0027p-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-drawing-an-outlined-polygon-_0028_005cD_0027p-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-outlined-polygon_002c-drawing-_0028_005cD_0027p-_2026_0027_0029"></a>
+<p>Draw polygon with vertices at drawing position and each point in
+sequence. GNU <code class="code">troff</code> closes the polygon by drawing a line from
+(<var class="var">hn</var>, <var class="var">vn</var>) back to the initial drawing position.
+Afterward, the drawing position is left at (<var class="var">hn</var>, <var class="var">vn</var>).
+</p>
+</dd>
+<dt id='index-polygon_002c-filled_002c-drawing-_0028_005cD_0027P-_2026_0027_0029'><span><code class="code">\D'P <var class="var">dx1</var> <var class="var">dy1</var> <var class="var">dx2</var> <var class="var">dy2</var> &hellip;'</code><a class="copiable-link" href='#index-polygon_002c-filled_002c-drawing-_0028_005cD_0027P-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-filled-polygon-_0028_005cD_0027P-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-filled-polygon_002c-drawing-_0028_005cD_0027P-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-polygon_002c-solid_002c-drawing-_0028_005cD_0027P-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-drawing-a-solid-polygon-_0028_005cD_0027P-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-solid-polygon_002c-drawing-_0028_005cD_0027P-_2026_0027_0029"></a>
+<p>As &lsquo;<samp class="samp">\D'P <span class="r">&hellip;</span>'</samp>&rsquo;, but the polygon is filled.
+</p>
+<p>The following macro is like the &lsquo;<samp class="samp">\D'l'</samp>&rsquo; example, but shades the
+box. We draw the box before writing the text because colors in GNU
+<code class="code">troff</code> have no transparency; in othe opposite order, the filled
+polygon would occlude the text.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de TEXTBOX
+. nr @wd \w'\\$1'
+\h'.2m'\
+\h'-.2m'\v'(.2m - \\n[rsb]u)'\
+\M[lightcyan]\
+\D'P 0 -(\\n[rst]u - \\n[rsb]u + .4m) \
+ (\\n[@wd]u + .4m) 0 \
+ 0 (\\n[rst]u - \\n[rsb]u + .4m) \
+ -(\\n[@wd]u + .4m) 0'\
+\h'.2m'\v'-(.2m - \\n[rsb]u)'\
+\M[]\
+\\$1\
+\h'.2m'
+..
+</pre></div></div>
+
+</dd>
+<dt id='index-line-thickness-_0028_005cD_0027t-_2026_0027_0029'><span><code class="code">\D't <var class="var">n</var>'</code><a class="copiable-link" href='#index-line-thickness-_0028_005cD_0027t-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-thickness-of-lines-_0028_005cD_0027t-_2026_0027_0029"></a>
+<p>Set the stroke thickness of geometric objects to <var class="var">n</var> basic units. A
+zero <var class="var">n</var> selects the minimal supported thickness. A negative
+<var class="var">n</var> selects a thickness proportional to the type size; this is the
+default.
+</p></dd>
+</dl>
+</dd></dl>
+
+<p>In a hazy penumbra between text rendering and drawing commands we locate
+the bracket-building escape sequence, <code class="code">\b</code>. It can assemble
+apparently large glyphs by vertically stacking ordinary ones.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cb_0027contents_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\b<code class="code">'</code></code><span class="r"><i class="slanted">contents</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cb_0027contents_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cb"></a>
+<a class="index-entry-id" id="index-pile_002c-glyph-_0028_005cb_0029"></a>
+<a class="index-entry-id" id="index-glyph-pile-_0028_005cb_0029"></a>
+<a class="index-entry-id" id="index-stacking-glyphs-_0028_005cb_0029"></a>
+<p>Pile and center a sequence of glyphs vertically on the output line.
+<em class="dfn">Piling</em> stacks glyphs corresponding to each character in
+<var class="var">contents</var>, read from left to right, and placed from top to bottom.
+GNU <code class="code">troff</code> separates the glyphs vertically by 1<span class="dmn">m</span>, and the
+pile itself is centered 0.5<span class="dmn">m</span> above the text baseline. The
+horizontal drawing position is then advanced by the width of the widest
+glyph in the pile.
+</p>
+<a class="index-entry-id" id="index-_005cb_002c-limitations-of"></a>
+<a class="index-entry-id" id="index-limitations-of-_005cb-escape-sequence"></a>
+<p>This rather inflexible positioning algorithm doesn&rsquo;t work with the
+<code class="code">dvi</code> output device since its bracket pieces vary in height.
+Instead, use the <code class="code">geqn</code> preprocessor.
+</p>
+<p><a class="ref" href="#Manipulating-Spacing">Manipulating Spacing</a> describes how to adjust the vertical spacing
+of the output line with the <code class="code">\x</code> escape sequence.
+</p>
+<p>The application of <code class="code">\b</code> that lends its name is construction of
+brackets, braces, and parentheses when typesetting mathematics. We
+might construct a large opening (left) brace as follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">\b'\[lt]\[bv]\[lk]\[bv]\[lb]'
+</pre></div></div>
+
+<p>See <cite class="cite">groff_char<span class="r">(7)</span></cite> for a list of special character
+identifiers.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Deferring-Output">
+<div class="nav-panel">
+<p>
+Next: <a href="#Traps" accesskey="n" rel="next">Traps</a>, Previous: <a href="#Drawing-Geometric-Objects" accesskey="p" rel="prev">Drawing Geometric Objects</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Deferring-Output-1">5.27 Deferring Output</h3>
+<a class="index-entry-id" id="index-deferred-output"></a>
+
+<a class="index-entry-id" id="index-environment"></a>
+<a class="index-entry-id" id="index-diversion"></a>
+<a class="index-entry-id" id="index-trap"></a>
+<p>A few <code class="code">roff</code> language elements are generally not used in simple
+documents, but arise as page layouts become more sophisticated and
+demanding. <em class="dfn">Environments</em> collect formatting parameters like line
+length and typeface. A <em class="dfn">diversion</em> stores formatted output for
+later use. A <em class="dfn">trap</em> is a condition on the input or output, tested
+automatically by the formatter, that is associated with a macro, causing
+it to be called when that condition is fulfilled.
+</p>
+<p>Footnote support often exercises all three of the foregoing features. A
+simple implementation might work as follows. A pair of macros is
+defined: one starts a footnote and the other ends it. The author calls
+the first macro where a footnote marker is desired. The macro
+establishes a diversion so that the footnote text is collected at the
+place in the body text where its corresponding marker appears. An
+environment is created for the footnote so that it is set at a smaller
+typeface. The footnote text is formatted in the diversion using that
+environment, but it does not yet appear in the output. The document
+author calls the footnote end macro, which returns to the previous
+environment and ends the diversion. Later, after much more body text in
+the document, a trap, set a small distance above the page bottom, is
+sprung. The macro called by the trap draws a line across the page and
+emits the stored diversion. Thus, the footnote is rendered.
+</p>
+<p>Diversions and traps make the text formatting process non-linear. Let
+us imagine a set of text lines or paragraphs labelled &lsquo;<samp class="samp">A</samp>&rsquo;,
+&lsquo;<samp class="samp">B</samp>&rsquo;, and so on. If we set up a trap that produces text &lsquo;<samp class="samp">T</samp>&rsquo;
+(as a page footer, say), and we also use a diversion to store the
+formatted text &lsquo;<samp class="samp">D</samp>&rsquo;, then a document with input text in the order
+&lsquo;<samp class="samp">A B C D E F</samp>&rsquo; might render as &lsquo;<samp class="samp">A B C E T F</samp>&rsquo;. The diversion
+&lsquo;<samp class="samp">D</samp>&rsquo; will never be output if we do not call for it.
+</p>
+<p>Environments of themselves are not a source of non-linearity in document
+formatting: environment switches have immediate effect. One could
+always write a macro to change as many formatting parameters as desired
+with a single convenient call. But because diversions can be nested and
+macros called by traps that are sprung by other trap-called macros, they
+may be called upon in varying contexts. For example, consider a page
+header that is always to be set in Helvetica. A document that uses
+Times for most of its body text, but Courier for displayed code
+examples, poses a challenge if a page break occurs in the middle of a
+code display; if the header trap assumes that the &ldquo;previous font&rdquo; is
+always Times, the rest of the example will be formatted in the wrong
+typeface. One could carefully save all formatting parameters upon
+entering the trap and restore them upon leaving it, but this is verbose,
+error-prone, and not future-proof as the <code class="code">groff</code> language develops.
+Environments save us considerable effort.
+</p>
+
+<hr>
+</div>
+<div class="section-level-extent" id="Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="#Diversions" accesskey="n" rel="next">Diversions</a>, Previous: <a href="#Deferring-Output" accesskey="p" rel="prev">Deferring Output</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Traps-1">5.28 Traps</h3>
+<a class="index-entry-id" id="index-traps"></a>
+
+<p><em class="dfn">Traps</em> are locations in the output or conditions on the input that,
+when reached or fulfilled, call a specified macro. These traps can
+occur at a given location on the page, at a given location in the
+current diversion (together, these are known as <i class="slanted">vertical
+position traps</i>), at a blank line, at a line with leading space
+characters, after a quantity of input lines, or at the end of input.
+Macros called by traps are passed no arguments.
+<a class="index-entry-id" id="index-planting-a-trap"></a>
+<a class="index-entry-id" id="index-trap_002c-planting"></a>
+Setting a trap is also called <em class="dfn">planting</em> one.
+<a class="index-entry-id" id="index-trap_002c-springing"></a>
+<a class="index-entry-id" id="index-springing-a-trap"></a>
+It is said that a trap is <em class="dfn">sprung</em> if its condition is fulfilled.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#Vertical-Position-Traps" accesskey="1">Vertical Position Traps</a></li>
+<li><a href="#Input-Line-Traps" accesskey="2">Input Line Traps</a></li>
+<li><a href="#Blank-Line-Traps" accesskey="3">Blank Line Traps</a></li>
+<li><a href="#Leading-Space-Traps" accesskey="4">Leading Space Traps</a></li>
+<li><a href="#End_002dof_002dinput-Traps" accesskey="5">End-of-input Traps</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Vertical-Position-Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="#Page-Location-Traps" accesskey="n" rel="next">Page Location Traps</a>, Previous: <a href="#Traps" accesskey="p" rel="prev">Traps</a>, Up: <a href="#Traps" accesskey="u" rel="up">Traps</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Vertical-Position-Traps-1">5.28.1 Vertical Position Traps</h4>
+<a class="index-entry-id" id="index-vertical-position-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-vertical-position"></a>
+
+<p>A <em class="dfn">vertical position trap</em> calls a macro when the formatter&rsquo;s
+vertical drawing position reaches or passes, in the downward direction,
+a certain location on the output page or in a diversion. Its
+applications include setting page headers and footers, body text in
+multiple columns, and footnotes.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002evpt"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.vpt</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">flag</i></span>]</var><a class="copiable-link" href='#index-_002evpt'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-vpt"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002evpt_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.vpt]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002evpt_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002evpt-1"></a>
+<a class="index-entry-id" id="index-enabling-vertical-position-traps-_0028vpt_0029"></a>
+<a class="index-entry-id" id="index-vertical-position-traps_002c-enabling-_0028vpt_0029"></a>
+<a class="index-entry-id" id="index-vertical-position-trap-enable-register-_0028_002evpt_0029"></a>
+<p>Enable vertical position traps if <var class="var">flag</var> is non-zero or absent;
+disable them otherwise. Vertical position traps are those set by the
+<code class="code">wh</code> request or by <code class="code">dt</code> within a diversion. The parameter
+that controls whether vertical position traps are enabled is global.
+Initially, vertical position traps are enabled. The current value is
+stored in the <code class="code">.vpt</code> read-only register.
+</p>
+<a class="index-entry-id" id="index-page-break_002c-prevented-by-vpt"></a>
+<a class="index-entry-id" id="index-break_002c-page_002c-prevented-by-vpt"></a>
+<a class="index-entry-id" id="index-page-ejection_002c-prevented-by-vpt"></a>
+<a class="index-entry-id" id="index-ejection_002c-page_002c-prevented-by-vpt"></a>
+<p>A page can&rsquo;t be ejected if <code class="code">vpt</code> is set to zero; see <a class="ref" href="#The-Implicit-Page-Trap">The Implicit Page Trap</a>.
+</p></dd></dl>
+
+
+
+<ul class="mini-toc">
+<li><a href="#Page-Location-Traps" accesskey="1">Page Location Traps</a></li>
+<li><a href="#The-Implicit-Page-Trap" accesskey="2">The Implicit Page Trap</a></li>
+<li><a href="#Diversion-Traps" accesskey="3">Diversion Traps</a></li>
+</ul>
+<hr>
+<div class="subsubsection-level-extent" id="Page-Location-Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="#The-Implicit-Page-Trap" accesskey="n" rel="next">The Implicit Page Trap</a>, Previous: <a href="#Vertical-Position-Traps" accesskey="p" rel="prev">Vertical Position Traps</a>, Up: <a href="#Vertical-Position-Traps" accesskey="u" rel="up">Vertical Position Traps</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Page-Location-Traps-1">5.28.1.1 Page Location Traps</h4>
+<a class="index-entry-id" id="index-page-location-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-page-location"></a>
+
+<p>A <em class="dfn">page location trap</em> is a vertical position trap that applies to
+the page; that is, to undiverted output. Many can be present; manage
+them with the <code class="code">wh</code> and <code class="code">ch</code> requests.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewh"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.wh</code></strong> <var class="def-var-arguments">dist [<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002ewh'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-wh"></a>
+<p>Plant macro <var class="var">name</var> as page location trap at <var class="var">dist</var>. The default
+scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. Non-negative values for <var class="var">dist</var> set the
+trap relative to the top of the page; negative values set the trap
+relative to the bottom of the page. It is not possible to plant a trap
+less than one basic unit from the page bottom: a <var class="var">dist</var> of <code class="code">-0</code>
+is interpreted as <code class="code">0</code>, the top of the page.<a class="footnote" id="DOCF106" href="#FOOT106"><sup>106</sup></a> An existing <em class="emph">visible</em> trap (see below) at
+<var class="var">dist</var> is removed; this is <code class="code">wh</code>&rsquo;s sole function if <var class="var">name</var>
+is missing.
+</p>
+<p>A trap is sprung only if it is <em class="dfn">visible</em>, meaning that its location
+is reachable on the page<a class="footnote" id="DOCF107" href="#FOOT107"><sup>107</sup></a> and it
+is not hidden by another trap at the same location already planted
+there.
+</p>
+<a class="index-entry-id" id="index-page-headers"></a>
+<a class="index-entry-id" id="index-page-footers"></a>
+<a class="index-entry-id" id="index-headers-1"></a>
+<a class="index-entry-id" id="index-footers-1"></a>
+<a class="index-entry-id" id="index-top-margin"></a>
+<a class="index-entry-id" id="index-margin_002c-top"></a>
+<a class="index-entry-id" id="index-bottom-margin"></a>
+<a class="index-entry-id" id="index-margin_002c-bottom"></a>
+<p>A macro package might set headers and footers as follows; this example
+configures vertical margins of one inch to the body text, and one
+half-inch to the titles. Observe the use of the no-break control
+character with <code class="code">sp</code> request to position our text baselines,
+and the page number character &lsquo;<samp class="samp">%</samp>&rsquo; used with the <code class="code">tl</code> request.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; hdfo.roff
+.de hd \&quot; page header
+' sp .5i
+' tl '\\*(Ti''\\*(Da' \&quot; title and date strings
+' sp .5i
+..
+.de fo \&quot; page footer
+' sp .5i
+. tl ''%''
+. bp
+..
+.wh 0 hd \&quot; trap at top of the page
+.wh -1i fo \&quot; trap 1 inch from bottom
+</pre></div></div>
+
+<p>To use these traps, copy the above (or load it from a file with the
+<code class="code">so</code> or <code class="code">mso</code> requests), then set up the strings it uses.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.so hdfo.roff
+.ds Ti Final Report\&quot;
+.ds Da 21 May 2023\&quot;
+.ti
+On 5 August of last year,
+this committee tasked me with the investigation of the
+CFIT (controlled flight into terrain) incident of
+.\&quot; <i class="i">...and so on...</i>
+</pre></div></div>
+
+<p>A trap above the top or at or below the bottom of the page can be made
+visible by either moving it into the page area or increasing the page
+length so that the trap is on the page. Negative trap values always use
+the <em class="emph">current</em> page length; they are not converted to an absolute
+vertical position.
+<a class="index-entry-id" id="index-page-location-traps_002c-debugging"></a>
+<a class="index-entry-id" id="index-debugging-page-location-traps"></a>
+We can use the <code class="code">ptr</code> request to dump our page location traps to the
+standard error stream (see <a class="pxref" href="#Debugging">Debugging</a>). Their positions are reported
+in basic units; an <code class="code">nroff</code> device example follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.pl 5i
+.wh -1i xx
+.ptr
+ error&rarr; xx -240
+.pl 100i
+.ptr
+ error&rarr; xx -240
+</pre></div></div>
+
+<p>It is possible to have more than one trap at the same location (although
+only one at a time can be visible); to achieve this, the traps must be
+defined at different locations, then moved to the same place with the
+<code class="code">ch</code> request. In the following example, the many empty lines
+caused by the <code class="code">bp</code> request are not shown in the output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de a
+. nop a
+..
+.de b
+. nop b
+..
+.de c
+. nop c
+..
+.
+.wh 1i a
+.wh 2i b
+.wh 3i c
+.bp
+ &rArr; a b c
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ch b 1i
+.ch c 1i
+.bp
+ &rArr; a
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ch a 0.5i
+.bp
+ &rArr; a b
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002et_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.t]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002et_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002et"></a>
+<a class="index-entry-id" id="index-distance-to-next-vertical-position-trap-register-_0028_002et_0029"></a>
+<a class="index-entry-id" id="index-trap_002c-distance-to-next-vertical-position_002c-register-_0028_002et_0029"></a>
+<p>The read-only register <code class="code">.t</code> holds the distance to the next vertical
+position trap. If there are no traps between the current position and
+the bottom of the page, it contains the distance to the page bottom.
+Within a diversion, in the absence of a diversion trap, this distance is
+the largest representable integer in basic units&mdash;effectively infinite.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ech"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ch</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">dist</i></span>]</var><a class="copiable-link" href='#index-_002ech'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ch"></a>
+<a class="index-entry-id" id="index-changing-trap-location-_0028ch_0029"></a>
+<a class="index-entry-id" id="index-trap_002c-changing-location-_0028ch_0029"></a>
+<p>Change the location of a trap by moving macro <var class="var">name</var> to new location
+<var class="var">dist</var>, or by unplanting it altogether if <var class="var">dist</var> is absent. The
+default scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. Parameters to <code class="code">ch</code> are specified
+in the opposite order from <code class="code">wh</code>. If <var class="var">name</var> is the earliest
+planted macro of multiple traps at the same location, (re)moving it from
+that location exposes the macro next least recently planted at the same
+place.<a class="footnote" id="DOCF108" href="#FOOT108"><sup>108</sup></a>
+</p>
+<p>Changing a trap&rsquo;s location is useful for building up footnotes in a
+diversion to allow more space at the bottom of the page for them.
+</p>
+
+</dd></dl>
+
+<p>The same macro can be installed simultaneously at multiple locations;
+however, only the earliest-planted instance&mdash;that has not yet been
+deleted with <code class="code">wh</code>&mdash;will be moved by <code class="code">ch</code>. The following
+example (using an <code class="code">nroff</code> device) illustrates this behavior. Blank
+lines have been elided from the output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de T
+Trap sprung at \\n(nlu.
+.br
+..
+.wh 1i T
+.wh 2i T
+foo
+.sp 11i
+.bp
+.ch T 4i
+bar
+.sp 11i
+.bp
+.ch T 5i
+baz
+.sp 11i
+.bp
+.wh 5i
+.ch T 6i
+qux
+.sp 11i
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; foo
+ &rArr; Trap sprung at 240u.
+ &rArr; Trap sprung at 480u.
+ &rArr; bar
+ &rArr; Trap sprung at 480u.
+ &rArr; Trap sprung at 960u.
+ &rArr; baz
+ &rArr; Trap sprung at 480u.
+ &rArr; Trap sprung at 1200u.
+ &rArr; qux
+ &rArr; Trap sprung at 1440u.
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002ene_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ne]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ene_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ene-1"></a>
+<p>The read-only register <code class="code">.ne</code> contains the amount of space that was
+needed in the last <code class="code">ne</code> request that caused a trap to be sprung;
+it is useful in conjunction with the <code class="code">.trunc</code> register. See <a class="xref" href="#Page-Control">Page Control</a>. Since the <code class="code">.ne</code> register is set only by traps, it
+doesn&rsquo;t make sense to interpolate it outside of macros called by traps.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002etrunc_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.trunc]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002etrunc_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002etrunc"></a>
+<a class="index-entry-id" id="index-ne-request_002c-and-the-_002etrunc-register"></a>
+<a class="index-entry-id" id="index-truncated-vertical-space-register-_0028_002etrunc_0029"></a>
+<p>A read-only register containing the amount of vertical space truncated
+from an <code class="code">sp</code> request by the most recently sprung vertical
+position trap, or, if the trap was sprung by an <code class="code">ne</code> request,
+minus the amount of vertical motion produced by the <code class="code">ne</code>
+request. In other words, at the point a trap is sprung, it
+represents the difference of what the vertical position would have
+been but for the trap, and what the vertical position actually is.
+Since the <code class="code">.trunc</code> register is set only by traps, it doesn&rsquo;t make
+sense to interpolate it outside of macros called by traps.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002epe_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.pe]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002epe_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002epe"></a>
+<a class="index-entry-id" id="index-bp-request_002c-and-traps-_0028_002epe_0029"></a>
+<a class="index-entry-id" id="index-traps_002c-sprung-by-bp-request-_0028_002epe_0029"></a>
+<a class="index-entry-id" id="index-page-ejection-status-register-_0028_002epe_0029"></a>
+<p>This Boolean-valued, read-only register interpolates&nbsp;1 while a page
+is being ejected, and 0&nbsp;otherwise.
+</p>
+<p>In the following example, we plant the same trap at the top and the
+bottom of the page. We also make the trap report its name and the
+vertical drawing position.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de T
+.tm \\$0: page \\n%, nl=\\n[nl] .pe=\\n[.pe]
+..
+.ll 46n
+.wh 0 T
+.wh -1v T
+Those who can make you believe absurdities can make you
+commit atrocities. \[em] Voltaire
+ error&rarr; T: page 1, nl=0 .pe=0
+ error&rarr; T: page 1, nl=2600 .pe=1
+ &rArr; Those who can make you believe absurdities can
+ &rArr; make you commit atrocities. -- Voltaire
+</pre></div></div>
+</dd></dl>
+
+<a class="index-entry-id" id="index-diversions_002c-and-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-and-diversions"></a>
+<p>When designing macros, keep in mind that diversions and traps do
+normally interact. For example, if a trap calls a header macro (while
+outputting a diversion) that tries to change the font on the current
+page, the effect is not visible before the diversion has completely been
+printed (except for input protected with <code class="code">\!</code> or <code class="code">\?</code>) since
+the data in the diversion is already formatted. In most cases, this is
+not the expected behaviour.
+</p>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="The-Implicit-Page-Trap">
+<div class="nav-panel">
+<p>
+Next: <a href="#Diversion-Traps" accesskey="n" rel="next">Diversion Traps</a>, Previous: <a href="#Page-Location-Traps" accesskey="p" rel="prev">Page Location Traps</a>, Up: <a href="#Vertical-Position-Traps" accesskey="u" rel="up">Vertical Position Traps</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="The-Implicit-Page-Trap-1">5.28.1.2 The Implicit Page Trap</h4>
+<a class="index-entry-id" id="index-implicit-trap"></a>
+<a class="index-entry-id" id="index-trap_002c-implicit"></a>
+
+<a class="index-entry-id" id="index-page-break-2"></a>
+<a class="index-entry-id" id="index-break_002c-page-2"></a>
+<a class="index-entry-id" id="index-page-ejection-2"></a>
+<a class="index-entry-id" id="index-ejection_002c-page-2"></a>
+<p>If, after starting GNU <code class="code">troff</code> without loading a macro package, you
+use the <code class="code">ptr</code> request to dump a list of the active traps to the
+standard error stream,<a class="footnote" id="DOCF109" href="#FOOT109"><sup>109</sup></a> nothing is reported.
+Yet the <code class="code">.t</code> register will report a steadily decreasing value with
+every output line your document produces, and once the value of
+<code class="code">.t</code> gets to within <code class="code">.V</code> of zero, you will notice that
+something trap-like happens&mdash;the page is ejected, a new one begins, and
+the value of <code class="code">.t</code> becomes large once more.
+</p>
+<p>This <em class="dfn">implicit page trap</em> always exists in the top-level
+diversion;<a class="footnote" id="DOCF110" href="#FOOT110"><sup>110</sup></a> it works like a trap in some
+ways but not others. Its purpose is to eject the current page and start
+the next one. It has no name, so it cannot be moved or deleted with
+<code class="code">wh</code> or <code class="code">ch</code> requests. You cannot hide it by placing another
+trap at its location, and can move it only by redefining the page length
+with <code class="code">pl</code>. Its operation is suppressed when vertical page traps
+are disabled with GNU <code class="code">troff</code>&rsquo;s <code class="code">vpt</code> request.
+</p>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Diversion-Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="#Input-Line-Traps" accesskey="n" rel="next">Input Line Traps</a>, Previous: <a href="#The-Implicit-Page-Trap" accesskey="p" rel="prev">The Implicit Page Trap</a>, Up: <a href="#Vertical-Position-Traps" accesskey="u" rel="up">Vertical Position Traps</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Diversion-Traps-1">5.28.1.3 Diversion Traps</h4>
+<a class="index-entry-id" id="index-diversion-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-diversion"></a>
+
+<p>A diversion is not formatted in the context of a page, so it lacks page
+location traps; instead it can have a <em class="dfn">diversion trap</em>. There can
+exist at most one such vertical position trap per diversion.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edt"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.dt</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">dist</i></span> <span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002edt'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-dt"></a>
+<a class="index-entry-id" id="index-_002et-register_002c-and-diversions"></a>
+<a class="index-entry-id" id="index-setting-diversion-trap-_0028dt_0029"></a>
+<a class="index-entry-id" id="index-diversion-trap_002c-setting-_0028dt_0029"></a>
+<a class="index-entry-id" id="index-trap_002c-diversion_002c-setting-_0028dt_0029"></a>
+<p>Set a trap <em class="emph">within</em> a diversion at location <var class="var">dist</var>, which is
+interpreted relative to diversion rather than page boundaries. If invoked with
+fewer than two arguments, any diversion trap in the current diversion is
+removed. The register <code class="code">.t</code> works within diversions. It is an
+error to invoke <code class="code">dt</code> in the top-level diversion.
+See <a class="xref" href="#Diversions">Diversions</a>.
+</p></dd></dl>
+
+
+<hr>
+</div>
+</div>
+<div class="subsection-level-extent" id="Input-Line-Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="#Blank-Line-Traps" accesskey="n" rel="next">Blank Line Traps</a>, Previous: <a href="#Diversion-Traps" accesskey="p" rel="prev">Diversion Traps</a>, Up: <a href="#Traps" accesskey="u" rel="up">Traps</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Input-Line-Traps-1">5.28.2 Input Line Traps</h4>
+<a class="index-entry-id" id="index-input-line-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-input-line"></a>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eit"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.it</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span> <span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eit'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-it"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eitc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.itc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span> <span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eitc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-itc"></a>
+<a class="index-entry-id" id="index-setting-input-line-trap-_0028it_002c-itc_0029"></a>
+<a class="index-entry-id" id="index-input-line-trap_002c-setting-_0028it_002c-itc_0029"></a>
+<a class="index-entry-id" id="index-trap_002c-input-line_002c-setting-_0028it_002c-itc_0029"></a>
+<a class="index-entry-id" id="index-clearing-input-line-trap-_0028it_002c-itc_0029"></a>
+<a class="index-entry-id" id="index-input-line-trap_002c-clearing-_0028it_002c-itc_0029"></a>
+<a class="index-entry-id" id="index-trap_002c-input-line_002c-clearing-_0028it_002c-itc_0029"></a>
+<p>Set an input line trap, calling macro <var class="var">name</var> after processing the
+next <var class="var">n</var>&nbsp;productive input lines (recall <a class="ref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>). Any existing input line trap in the
+environment is replaced. Without arguments, <code class="code">it</code> and <code class="code">itc</code>
+clear any input line trap that has not yet sprung.
+</p>
+<p>Consider a macro &lsquo;<samp class="samp">.ST <var class="var">s n</var></samp>&rsquo; which sets the next
+<var class="var">n</var>&nbsp;input lines in the font style&nbsp;<var class="var">s</var>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de ST \&quot; Use style $1 for next $2 text lines.
+. it \\$2 ES
+. ft \\$1
+..
+.de ES \&quot; end ST
+. ft R
+..
+.ST I 1
+oblique
+face
+.ST I 1
+oblique\c
+face
+ &rArr; <i class="i">oblique</i> face <i class="i">oblique</i>face &nbsp;<span class="r">(second &ldquo;face&rdquo; upright)</span>
+</pre></div></div>
+
+<a class="index-entry-id" id="index-input-line-traps-and-interrupted-lines-_0028itc_0029"></a>
+<a class="index-entry-id" id="index-interrupted-lines-and-input-line-traps-_0028itc_0029"></a>
+<a class="index-entry-id" id="index-traps_002c-input-line_002c-and-interrupted-lines-_0028itc_0029"></a>
+<a class="index-entry-id" id="index-lines_002c-interrupted_002c-and-input-line-traps-_0028itc_0029"></a>
+<p>Unlike the <code class="code">ce</code> and <code class="code">rj</code> requests, <code class="code">it</code> counts lines
+interrupted with the <code class="code">\c</code> escape sequence separately (see <a class="pxref" href="#Line-Continuation">Line Continuation</a>); <code class="code">itc</code> does not. To see the difference, let&rsquo;s
+change the previous example to use <code class="code">itc</code> instead.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"><span class="r">&hellip;</span>
+. itc \\$2 ES
+<span class="r">&hellip;</span>
+ &rArr; <i class="i">oblique</i> face <i class="i">obliqueface</i> &nbsp;<span class="r">(second &ldquo;face&rdquo; oblique)</span>
+</pre></div></div>
+
+<p>You can think of the <code class="code">ce</code> and <code class="code">rj</code> requests as implicitly
+creating an input line trap with <code class="code">itc</code> that schedules a break when
+the trap is sprung.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de BR
+. br
+. <i class="slanted">internal: disable centering-without-filling</i>
+..
+.
+.de ce
+. if \\n[.br] .br
+. itc \\$1 BR
+. <i class="slanted">internal: enable centering-without-filling</i>
+..
+</pre></div></div>
+
+<p>Let us consider in more detail the sorts of input lines that are or are
+not &ldquo;productive&rdquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de Trap
+TRAP SPRUNG
+..
+.de Mac
+.if r a \l'5n'
+..
+.it 2 Trap
+.
+foo
+.Mac
+bar
+baz
+.it 1 Trap
+.sp \&quot; moves, but does not write or draw
+qux
+.itc 1 Trap
+\h'5n'\c \&quot; moves, but does not write or draw
+jat
+</pre></div></div>
+
+<p>When &lsquo;<samp class="samp">Trap</samp>&rsquo; gets called depends on whether the &lsquo;<samp class="samp">a</samp>&rsquo; register is
+defined; the control line with the <code class="code">if</code> request may or may not
+produce written output. We also see that the spacing request <code class="code">sp</code>,
+while certainly affecting the output, does not spring the input line
+trap. Similarly, the horizontal motion escape sequence <code class="code">\h</code> also
+affected the output, but was not &ldquo;written&rdquo;. Observe that we had to
+follow it with <code class="code">\c</code> and use <code class="code">itc</code> to prevent the newline at
+the end of the text line from causing a word break, which, like an
+ordinary space character, counts as written output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ groff -Tascii input-trap-example.groff
+ &rArr; foo bar TRAP SPRUNG baz
+ &rArr;
+ &rArr; qux TRAP SPRUNG jat TRAP SPRUNG
+$ groff -Tascii -ra1 input-trap-example.groff
+ &rArr; foo _____ TRAP SPRUNG bar baz
+ &rArr;
+ &rArr; qux TRAP SPRUNG jat TRAP SPRUNG
+</pre></div></div>
+</dd></dl>
+
+<p>Input line traps are associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>); switching to another environment suspends the
+current input line trap, and going back resumes it, restoring the count
+of qualifying lines enumerated in that environment.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Blank-Line-Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="#Leading-Space-Traps" accesskey="n" rel="next">Leading Space Traps</a>, Previous: <a href="#Input-Line-Traps" accesskey="p" rel="prev">Input Line Traps</a>, Up: <a href="#Traps" accesskey="u" rel="up">Traps</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Blank-Line-Traps-1">5.28.3 Blank Line Traps</h4>
+<a class="index-entry-id" id="index-blank-line-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-blank-line"></a>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eblm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.blm</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eblm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-blm"></a>
+<a class="index-entry-id" id="index-blank-line-macro-_0028blm_0029-2"></a>
+<p>Set a blank line trap, calling the macro <var class="var">name</var> when GNU
+<code class="code">troff</code> encounters a blank line in an input file, instead of the
+usual behavior (see <a class="pxref" href="#Breaking">Breaking</a>). A line consisting only of spaces is
+also treated as blank and subject to this trap. If no argument is
+supplied, the default blank line behavior is (re-)established.
+</p></dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Leading-Space-Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="#End_002dof_002dinput-Traps" accesskey="n" rel="next">End-of-input Traps</a>, Previous: <a href="#Blank-Line-Traps" accesskey="p" rel="prev">Blank Line Traps</a>, Up: <a href="#Traps" accesskey="u" rel="up">Traps</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Leading-Space-Traps-1">5.28.4 Leading Space Traps</h4>
+<a class="index-entry-id" id="index-leading-space-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-leading-space"></a>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elsm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lsm</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002elsm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lsm"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005blsn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[lsn]</code></strong><a class="copiable-link" href='#index-_005cn_005blsn_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lsn"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005blss_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[lss]</code></strong><a class="copiable-link" href='#index-_005cn_005blss_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lss"></a>
+<a class="index-entry-id" id="index-leading-spaces-macro-_0028lsm_0029"></a>
+<p>Set a leading space trap, calling the macro <var class="var">name</var> when GNU
+<code class="code">troff</code> encounters leading spaces in an input line; the implicit
+line break that normally happens in this case is suppressed. If no
+argument is supplied, the default leading space behavior is
+(re-)established (see <a class="pxref" href="#Breaking">Breaking</a>).
+</p>
+<p>The count of leading spaces on an input line is stored in register
+<code class="code">lsn</code>, and the amount of corresponding horizontal motion in
+register <code class="code">lss</code>, irrespective of whether a leading space trap is
+set. When it is, the leading spaces are removed from the input line,
+and no motion is produced before calling <var class="var">name</var>.
+</p>
+</dd></dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="End_002dof_002dinput-Traps">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Leading-Space-Traps" accesskey="p" rel="prev">Leading Space Traps</a>, Up: <a href="#Traps" accesskey="u" rel="up">Traps</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="End_002dof_002dinput-Traps-1">5.28.5 End-of-input Traps</h4>
+<a class="index-entry-id" id="index-end_002dof_002dinput-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-end_002dof_002dinput"></a>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eem"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.em</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eem'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-em"></a>
+<a class="index-entry-id" id="index-setting-end_002dof_002dinput-trap-_0028em_0029"></a>
+<a class="index-entry-id" id="index-end_002dof_002dinput-trap_002c-setting-_0028em_0029"></a>
+<a class="index-entry-id" id="index-trap_002c-end_002dof_002dinput_002c-setting-_0028em_0029"></a>
+<a class="index-entry-id" id="index-end_002dof_002dinput-macro-_0028em_0029"></a>
+<a class="index-entry-id" id="index-macro_002c-end_002dof_002dinput-_0028em_0029"></a>
+<p>Set a trap at the end of input, calling macro <var class="var">name</var> after the last
+line of the last input file has been processed. If no argument is
+given, any existing end-of-input trap is removed.
+</p>
+<p>For example, if the document had to have a section at the bottom of the
+last page for someone to approve it, the <code class="code">em</code> request could be
+used.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de approval
+\c
+. ne 3v
+. sp (\\n[.t]u - 3v)
+. in +4i
+. lc _
+. br
+Approved:\t\a
+. sp
+Date:\t\t\a
+..
+.
+.em approval
+</pre></div></div>
+
+<p>The <code class="code">\c</code> in the above example needs explanation. For historical
+reasons (compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>), the
+end-of-input macro exits as soon as it causes a page break if no
+partially collected line remains.<a class="footnote" id="DOCF111" href="#FOOT111"><sup>111</sup></a>
+</p>
+<a class="index-entry-id" id="index-page-break_002c-final"></a>
+<a class="index-entry-id" id="index-break_002c-page_002c-final"></a>
+<a class="index-entry-id" id="index-page-ejection_002c-of-final-page"></a>
+<a class="index-entry-id" id="index-ejection_002c-page_002c-of-final-page"></a>
+<p>Let us assume that there is no <code class="code">\c</code> in the above <code class="code">approval</code>
+macro, that the page is full, and last output line has been broken with,
+say, a <code class="code">br</code> request. Because there is no more room, a <code class="code">ne</code>
+request at this point causes a page ejection, which in turn makes
+<code class="code">troff</code> exit immediately as just described. In most situations,
+this is not desired; people generally want to format the input after
+<code class="code">ne</code>.
+</p>
+<p>To force processing of the whole end-of-input macro independently of
+this behavior, it is thus advisable to (invisibly) ensure the existence
+of a partially collected line (<code class="code">\c</code>) whenever there is a chance
+that a page break can happen. In the above example, invoking the
+<code class="code">ne</code> request ensures that there is room for the subsequent
+formatted output on the same page, so we need insert <code class="code">\c</code> only
+once.
+</p>
+<p>The next example shows how to append three lines, then start a new page
+unconditionally. Since &lsquo;<samp class="samp">.ne&nbsp;1</samp>&rsquo;<!-- /@w --> doesn&rsquo;t give the desired
+effect&mdash;there is always one line available or we are already at the
+beginning of the next page&mdash;we temporarily increase the page length by
+one line so that we can use &lsquo;<samp class="samp">.ne&nbsp;2</samp>&rsquo;<!-- /@w -->.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de EM
+.pl +1v
+\c
+.ne 2
+line one
+.br
+\c
+.ne 2
+line two
+.br
+\c
+.ne 2
+line three
+.br
+.pl -1v
+\c
+'bp
+..
+.em EM
+</pre></div></div>
+
+<p>This specific feature affects only the first potential page break caused
+by the end-of-input macro; further page breaks emitted by the macro are
+handled normally.
+</p>
+<p>Another possible use of the <code class="code">em</code> request is to make GNU
+<code class="code">troff</code> emit a single large page instead of multiple pages. For
+example, one may want to produce a long plain text file for reading
+in a terminal or emulator without page footers and headers interrupting
+the body of the document. One approach is to set the page length at the
+beginning of the document to a very large value to hold all the
+text,<a class="footnote" id="DOCF112" href="#FOOT112"><sup>112</sup></a> and
+automatically adjust it to the exact height of the document after the
+text has been output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de adjust-page-length
+. br
+. pl \\n[nl]u \&quot; \n[nl]: current vertical position
+..
+.
+.de single-page-mode
+. pl 99999
+. em adjust-page-length
+..
+.
+.\&quot; Activate the above code if configured.
+.if \n[do-continuous-rendering] \
+. single-page-mode
+</pre></div></div>
+
+<p>Since only one end-of-input trap exists and another macro package may
+already use it, care must be taken not to break the mechanism. A simple
+solution would be to append the above macro to the macro package&rsquo;s
+end-of-input macro using the <code class="code">am</code> request.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+</div>
+<div class="section-level-extent" id="Diversions">
+<div class="nav-panel">
+<p>
+Next: <a href="#Punning-Names" accesskey="n" rel="next">Punning Names</a>, Previous: <a href="#Traps" accesskey="p" rel="prev">Traps</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Diversions-1">5.29 Diversions</h3>
+<a class="index-entry-id" id="index-diversions"></a>
+
+<p>In <code class="code">roff</code> systems it is possible to format text as if for output,
+but instead of writing it immediately, one can <em class="dfn">divert</em> the
+formatted text into a named storage area. It is retrieved later by
+specifying its name after a control character. The same name space is
+used for such <i class="slanted">diversions</i> as for strings and macros; see
+<a class="ref" href="#Identifiers">Identifiers</a>. Such text is sometimes said to be &ldquo;stored in a
+macro&rdquo;, but this coinage obscures the important distinction between
+macros and strings on one hand and diversions on the other; the former
+store <em class="emph">unformatted</em> input text, and the latter capture
+<em class="emph">formatted</em> output. Diversions also do not interpret arguments.
+Applications of diversions include &ldquo;keeps&rdquo; (preventing a page break
+from occurring at an inconvenient place by forcing a set of output lines
+to be set as a group), footnotes, tables of contents, and indices.
+<a class="index-entry-id" id="index-top_002dlevel-diversion"></a>
+<a class="index-entry-id" id="index-diversion_002c-top_002dlevel"></a>
+For orthogonality it is said that GNU <code class="code">troff</code> is in the
+<em class="dfn">top-level diversion</em> if no diversion is active (that is, formatted
+output is being &ldquo;diverted&rdquo; immediately to the output device).
+</p>
+<p>Dereferencing an undefined diversion will create an empty one of that
+name and cause a warning in category &lsquo;<samp class="samp">mac</samp>&rsquo; to be emitted.
+See <a class="xref" href="#Warnings">Warnings</a>, for information about the enablement and suppression of
+warnings. A diversion does not exist for the purpose of testing with
+the <code class="code">d</code> conditional operator until its initial definition ends
+(see <a class="pxref" href="#Operators-in-Conditionals">Operators in Conditionals</a>). The following requests are used to
+create and alter diversions.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edi"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.di</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002edi'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-di"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eda"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.da</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eda'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-da"></a>
+<a class="index-entry-id" id="index-beginning-diversion-_0028di_002c-box_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-beginning-_0028di_002c-box_0029"></a>
+<a class="index-entry-id" id="index-ending-diversion-_0028di_002c-box_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-ending-_0028di_002c-box_0029"></a>
+<a class="index-entry-id" id="index-appending-to-a-diversion-_0028da_002c-boxa_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-appending-to-_0028da_002c-boxa_0029"></a>
+<p>Start collecting formatted output in a diversion called <var class="var">name</var>. The
+<code class="code">da</code> request appends to a diversion called <var class="var">name</var>, creating it
+if necessary. If <var class="var">name</var> already exists as an alias, the target of
+the alias is replaced or appended to; recall <a class="ref" href="#Strings">Strings</a>. The pending
+output line is diverted as well. Switching to another environment (with
+the <code class="code">ev</code> request) before invoking <code class="code">di</code> or <code class="code">da</code> avoids
+including any pending output line in the diversion; see
+<a class="ref" href="#Environments">Environments</a>.
+</p>
+<p>Invoking <code class="code">di</code> or <code class="code">da</code> without an argument stops diverting
+output to the diversion named by the most recent corresponding request.
+If <code class="code">di</code> or <code class="code">da</code> is called without an argument when there is no
+current diversion, a warning in category &lsquo;<samp class="samp">di</samp>&rsquo; is produced.
+See <a class="xref" href="#Warnings">Warnings</a>, for information about the enablement and suppression
+of warnings.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Before the diversion.
+.di yyy
+In the diversion.
+.br
+.di
+After the diversion.
+.br
+ &rArr; After the diversion.
+.yyy
+ &rArr; Before the diversion. In the diversion.
+</pre></div></div>
+</dd></dl>
+
+<a class="index-entry-id" id="index-box-_0028diversion-operation_0029"></a>
+<p>GNU <code class="code">troff</code> supports <em class="dfn">box</em> requests to exclude a partially
+collected line from a diversion, as this is often desirable.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebox"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.box</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002ebox'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-box"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eboxa"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.boxa</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eboxa'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-boxa"></a>
+<p>Divert (or append) output to <var class="var">name</var>, similarly to the <code class="code">di</code> and
+<code class="code">da</code> requests, respectively. Any pending output line is <em class="emph">not</em>
+included in the diversion. Without an argument, stop diverting output;
+any pending output line inside the diversion is discarded.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Before the box.
+.box xxx
+In the box.
+.br
+Hidden treasure.
+.box
+After the box.
+.br
+ &rArr; Before the box. After the box.
+.xxx
+ &rArr; In the box.
+</pre></div></div>
+</dd></dl>
+
+<p>Apart from pending output line inclusion and the request names that
+populate them, boxes are handled exactly as diversions are. All of the
+following <code class="code">groff</code> language elements can be used with them
+interchangeably.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002ez_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.z]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ez_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ez"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ed_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.d]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ed_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ed"></a>
+<a class="index-entry-id" id="index-nl-register_002c-and-_002ed"></a>
+<a class="index-entry-id" id="index-nested-diversions"></a>
+<a class="index-entry-id" id="index-diversion_002c-nested"></a>
+<a class="index-entry-id" id="index-diversion-name-register-_0028_002ez_0029"></a>
+<a class="index-entry-id" id="index-vertical-position-in-diversion-register-_0028_002ed_0029"></a>
+<a class="index-entry-id" id="index-position_002c-vertical_002c-in-diversion_002c-register-_0028_002ed_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-vertical-position-in_002c-register-_0028_002ed_0029"></a>
+<p>Diversions may be nested. The read-only string-valued register
+<code class="code">.z</code> contains the name of the current diversion. The read-only
+register <code class="code">.d</code> contains the current vertical place in the diversion.
+If the input text is not being diverted, <code class="code">.d</code> reports the same
+location as the register <code class="code">nl</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002eh_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.h]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eh_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eh"></a>
+<a class="index-entry-id" id="index-high_002dwater-mark-register-_0028_002eh_0029"></a>
+<a class="index-entry-id" id="index-mark_002c-high_002dwater_002c-register-_0028_002eh_0029"></a>
+<a class="index-entry-id" id="index-position-of-lowest-text-line-_0028_002eh_0029"></a>
+<a class="index-entry-id" id="index-text-line_002c-position-of-lowest-_0028_002eh_0029"></a>
+<p>The read-only register <code class="code">.h</code> stores the <em class="dfn">high-water mark</em> on the
+current page or in the current diversion. It corresponds to the text
+baseline of the lowest line on the page.<a class="footnote" id="DOCF113" href="#FOOT113"><sup>113</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tm .h==\n[.h], nl==\n[nl]
+ &rArr; .h==0, nl==-1
+This is a test.
+.br
+.sp 2
+.tm .h==\n[.h], nl==\n[nl]
+ &rArr; .h==40, nl==120
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_002eh-register_002c-difference-from-nl"></a>
+<a class="index-entry-id" id="index-nl-register_002c-difference-from-_002eh"></a>
+<p>As implied by the example, vertical motion does not produce text
+baselines and thus does not increase the value interpolated by
+&lsquo;<samp class="samp">\n[.h]</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bdn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[dn]</code></strong><a class="copiable-link" href='#index-_005cn_005bdn_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-dn"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bdl_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[dl]</code></strong><a class="copiable-link" href='#index-_005cn_005bdl_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-dl"></a>
+<a class="index-entry-id" id="index-dn-register_002c-and-da-_0028boxa_0029"></a>
+<a class="index-entry-id" id="index-dl-register_002c-and-da-_0028boxa_0029"></a>
+<a class="index-entry-id" id="index-da-request_002c-and-dn-_0028dl_0029"></a>
+<a class="index-entry-id" id="index-boxa-request_002c-and-dn-_0028dl_0029"></a>
+<p>After completing a diversion, the writable registers <code class="code">dn</code> and
+<code class="code">dl</code> contain its vertical and horizontal sizes. Only the lines
+just processed are counted: for the computation of <code class="code">dn</code> and
+<code class="code">dl</code>, the requests <code class="code">da</code> and <code class="code">boxa</code> are handled as if
+<code class="code">di</code> and <code class="code">box</code> had been used, respectively&mdash;lines that have
+been already stored in the diversion (box) are not taken into account.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; Center text both horizontally and vertically.
+.\&quot; Macro .(c starts centering mode; .)c terminates it.
+.
+.\&quot; Disable the escape character with .eo so that we
+.\&quot; don't have to double backslashes on the &quot;\n&quot;s.
+.eo
+.de (c
+. br
+. ev (c
+. evc 0
+. in 0
+. nf
+. di @c
+..
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de )c
+. br
+. ev
+. di
+. nr @s (((\n[.t]u - \n[dn]u) / 2u) - 1v)
+. sp \n[@s]u
+. ce 1000
+. @c
+. ce 0
+. sp \n[@s]u
+. br
+. fi
+. rr @s
+. rm @c
+..
+.ec
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0021anything"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\!</code><span class="r"><i class="slanted">anything</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0021anything'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0021"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_003fanything_005c_003f"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\?</code><span class="r"><i class="slanted">anything</i></span><code class="t">\?</code></strong><a class="copiable-link" href='#index-_005c_003fanything_005c_003f'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_003f"></a>
+<a class="index-entry-id" id="index-transparent-output-_0028_005c_0021_002c-_005c_003f_0029"></a>
+<a class="index-entry-id" id="index-output_002c-transparent-_0028_005c_0021_002c-_005c_003f_0029"></a>
+<p><em class="dfn">Transparently</em> embed <var class="var">anything</var> into the current diversion,
+preventing requests, macro calls, and escape sequences from being
+interpreted when read into a diversion. This is useful for preventing
+them from taking effect until the diverted text is actually output. The
+<code class="code">\!</code> escape sequence transparently embeds input up to and including
+the end of the line. The <code class="code">\?</code> escape sequence transparently embeds
+input until its own next occurrence.
+</p>
+<a class="index-entry-id" id="index-_005c_003f_002c-and-copy-mode-1"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-_005c_003f-1"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005c_003f-1"></a>
+<a class="index-entry-id" id="index-_005c_0021_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-_005c_0021"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005c_0021"></a>
+<p><var class="var">anything</var> may not contain newlines; use <code class="code">\!</code> by itself to
+embed newlines in a diversion. The escape sequence <code class="code">\?</code> is also
+recognized in copy mode and turned into a single internal code; it is
+this code that terminates <var class="var">anything</var>. Thus the following example
+prints&nbsp;4.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr x 1
+.nf
+.di d
+\?\\?\\\\?\\\\\\\\nx\\\\?\\?\?
+.di
+.nr x 2
+.di e
+.d
+.di
+.nr x 3
+.di f
+.e
+.di
+.nr x 4
+.f
+</pre></div></div>
+
+<p>Both escape sequences read the data in copy mode.
+</p>
+<a class="index-entry-id" id="index-_005c_0021_002c-in-top_002dlevel-diversion"></a>
+<a class="index-entry-id" id="index-top_002dlevel-diversion_002c-and-_005c_0021"></a>
+<a class="index-entry-id" id="index-diversion_002c-top_002dlevel_002c-and-_005c_0021"></a>
+<p>If <code class="code">\!</code> is used in the top-level diversion, its argument is
+directly embedded into GNU <code class="code">troff</code>&rsquo;s intermediate output. This can
+be used, for example, to control a postprocessor that processes the data
+before it is sent to an output driver.
+</p>
+<a class="index-entry-id" id="index-_005c_003f_002c-in-top_002dlevel-diversion"></a>
+<a class="index-entry-id" id="index-top_002dlevel-diversion_002c-and-_005c_003f"></a>
+<a class="index-entry-id" id="index-diversion_002c-top_002dlevel_002c-and-_005c_003f"></a>
+<p>The <code class="code">\?</code> escape used in the top-level diversion produces no output
+at all; its argument is simply ignored.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-_005c_0021_002c-and-output-request"></a>
+<a class="index-entry-id" id="index-output-request_002c-and-_005c_0021"></a>
+<a class="index-entry-id" id="index-output-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-output-request"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-output-request"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eoutput"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.output</code></strong> <var class="def-var-arguments">contents</var><a class="copiable-link" href='#index-_002eoutput'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-output"></a>
+<p>Emit <var class="var">contents</var> directly to GNU <code class="code">troff</code>&rsquo;s intermediate output
+(subject to copy mode interpretation); this is similar to <code class="code">\!</code> used
+at the top level. An initial neutral double quote in <var class="var">contents</var> is
+stripped to allow embedding of leading spaces.
+</p>
+<p>This request can&rsquo;t be used before the first page has started&mdash;if you
+get an error, simply insert <code class="code">.br</code> before the <code class="code">output</code> request.
+</p>
+<p>Use with caution! It is normally only needed for mark-up used by a
+postprocessor that does something with the output before sending it to
+the output device, filtering out <var class="var">contents</var> again.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002easciify"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.asciify</code></strong> <var class="def-var-arguments">div</var><a class="copiable-link" href='#index-_002easciify'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-asciify"></a>
+<a class="index-entry-id" id="index-unformatting-diversions-_0028asciify_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-unformatting-_0028asciify_0029"></a>
+<a class="index-entry-id" id="index-trin-request_002c-and-asciify"></a>
+<p><em class="dfn">Unformat</em> the diversion <var class="var">div</var> in a way such that Unicode basic
+Latin (<abbr class="acronym">ASCII</abbr>) characters, characters translated with the
+<code class="code">trin</code> request, space characters, and some escape sequences, that
+were formatted and diverted into <var class="var">div</var> are treated like ordinary
+input characters when <var class="var">div</var> is reread. Doing so can be useful in
+conjunction with the <code class="code">writem</code> request. <code class="code">asciify</code> can be also
+used for gross hacks; for example, the following sets
+register&nbsp;<code class="code">n</code> to&nbsp;1.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tr @.
+.di x
+@nr n 1
+.br
+.di
+.tr @@
+.asciify x
+.x
+</pre></div></div>
+
+<p><code class="code">asciify</code> cannot return all items in a diversion to their source
+equivalent: nodes such as those produced by the <code class="code">\N</code> escape
+sequence will remain nodes, so the result cannot be guaranteed to be a
+pure string. See <a class="xref" href="#Copy-Mode">Copy Mode</a>. Glyph parameters such as the type face
+and size are not preserved; use <code class="code">unformat</code> to achieve that.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eunformat"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.unformat</code></strong> <var class="def-var-arguments">div</var><a class="copiable-link" href='#index-_002eunformat'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-unformat"></a>
+<p>Like <code class="code">asciify</code>, unformat the diversion <var class="var">div</var>. However,
+<code class="code">unformat</code> handles only tabs and spaces between words, the latter
+usually arising from spaces or newlines in the input. Tabs are treated
+as input tokens, and spaces become adjustable again. The vertical sizes
+of lines are not preserved, but glyph information (font, type size,
+space width, and so on) is retained.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Punning-Names">
+<div class="nav-panel">
+<p>
+Next: <a href="#Environments" accesskey="n" rel="next">Environments</a>, Previous: <a href="#Diversions" accesskey="p" rel="prev">Diversions</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Punning-Names-1">5.30 Punning Names</h3>
+<a class="index-entry-id" id="index-diversions-1"></a>
+
+<p>Macros, strings, and diversions share a name space; recall
+<a class="ref" href="#Identifiers">Identifiers</a>. Internally, the same mechanism is used to store
+them. You can thus call a macro with string interpolation syntax and
+vice versa.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de subject
+Typesetting
+..
+.de predicate
+rewards attention to detail
+..
+\*[subject] \*[predicate].
+Truly.
+ &rArr; Typesetting
+ &rArr; rewards attention to detail Truly.
+</pre></div></div>
+
+<p>What went wrong? Strings don&rsquo;t contain newlines, but macros do. String
+interpolation placed a newline at the end of &lsquo;<samp class="samp">\*[subject]</samp>&rsquo;, and the
+next thing on the input was a space. Then when &lsquo;<samp class="samp">\*[predicate]</samp>&rsquo; was
+interpolated, it was followed by the empty request &lsquo;<samp class="samp">.</samp>&rsquo; on a line by
+itself. If we want to use macros as strings, we must take interpolation
+behavior into account.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de subject
+Typesetting\\
+..
+.de predicate
+rewards attention to detail\\
+..
+\*[subject] \*[predicate].
+Truly.
+ &rArr; Typesetting rewards attention to detail. Truly.
+</pre></div></div>
+
+<p>By ending each text line of the macros with an escaped
+<code class="code">\<kbd class="key">RET</kbd></code>, we get the desired effect (see <a class="pxref" href="#Line-Continuation">Line Continuation</a>).<a class="footnote" id="DOCF114" href="#FOOT114"><sup>114</sup></a>
+What would have happened if we had used only one backslash at a time
+instead?
+</p>
+<p>Interpolating a string does not hide existing macro arguments. We can
+also place the escaped newline outside the string interpolation instead
+of within the string definition. Thus, in a macro, a more efficient way
+of doing
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.xx \\$@
+</pre></div></div>
+
+<p>is
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">\\*[xx]\\
+</pre></div></div>
+
+<p>The latter calling syntax doesn&rsquo;t change the value of <code class="code">\$0</code>, which
+is then inherited from the calling macro (see <a class="pxref" href="#Parameters">Parameters</a>).
+</p>
+<p>Diversions can be also called with string syntax. It is sometimes
+convenient to copy one-line diversions to a string.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.di xx
+the
+.ft I
+interpolation system
+.ft
+.br
+.di
+.ds yy This is a test of \*(xx\c
+\*(yy.
+ &rArr; This is a test of the <i class="i">interpolation system</i>.
+</pre></div></div>
+
+<p>As the previous example shows, it is possible to store formatted output
+in strings. The <code class="code">\c</code> escape sequence prevents the subsequent
+newline from being interpreted as a break (again,
+see <a class="pxref" href="#Line-Continuation">Line Continuation</a>).
+</p>
+<p>Copying multi-output line diversions produces unexpected results.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.di xxx
+a funny
+.br
+test
+.br
+.di
+.ds yyy This is \*[xxx]\c
+\*[yyy].
+ &rArr; test This is a funny.
+</pre></div></div>
+
+<p>Usually, it is not predictable whether a diversion contains one or more
+output lines, so this mechanism should be avoided. With <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code>, this was the only solution to strip off a final newline
+from a diversion. Another disadvantage is that the spaces in the copied
+string are already formatted, preventing their adjustment. This can
+cause ugly results.
+</p>
+<a class="index-entry-id" id="index-stripping-final-newline-in-diversions"></a>
+<a class="index-entry-id" id="index-diversion_002c-stripping-final-newline"></a>
+<a class="index-entry-id" id="index-final-newline_002c-stripping-in-diversions"></a>
+<a class="index-entry-id" id="index-newline_002c-final_002c-stripping-in-diversions"></a>
+<a class="index-entry-id" id="index-horizontal-space_002c-unformatting"></a>
+<a class="index-entry-id" id="index-space_002c-horizontal_002c-unformatting"></a>
+<a class="index-entry-id" id="index-unformatting-horizontal-space"></a>
+<p>A clean solution to this problem is available in GNU <code class="code">troff</code>, using
+the requests <code class="code">chop</code> to remove the final newline of a diversion, and
+<code class="code">unformat</code> to make the horizontal spaces adjustable again.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.box xxx
+a funny
+.br
+test
+.br
+.box
+.chop xxx
+.unformat xxx
+This is \*[xxx].
+ &rArr; This is a funny test.
+</pre></div></div>
+
+<p>See <a class="xref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>.
+</p>
+
+<hr>
+</div>
+<div class="section-level-extent" id="Environments">
+<div class="nav-panel">
+<p>
+Next: <a href="#Suppressing-Output" accesskey="n" rel="next">Suppressing Output</a>, Previous: <a href="#Diversions" accesskey="p" rel="prev">Diversions</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Environments-1">5.31 Environments</h3>
+<a class="index-entry-id" id="index-environments"></a>
+
+<p>As discussed in <a class="ref" href="#Deferring-Output">Deferring Output</a>, environments store most of the
+parameters that determine the appearance of text. A default environment
+named &lsquo;<samp class="samp">0</samp>&rsquo; exists when GNU <code class="code">troff</code> starts up; it is modified by
+formatting-related requests and escape sequences.
+</p>
+<a class="index-entry-id" id="index-stack"></a>
+<p>You can create new environments and switch among them. Only one is
+current at any given time. Active environments are managed using a
+<em class="dfn">stack</em>, a data structure supporting &ldquo;push&rdquo; and &ldquo;pop&rdquo;
+operations. The current environment is at the top of the stack.
+The same environment name can be pushed onto the stack multiple times,
+possibly interleaved with others. Popping the environment stack does
+not destroy the current environment; it remains accessible by name and
+can be made current again by pushing it at any time. Environments
+cannot be renamed or deleted, and can only be modified when current. To
+inspect the environment stack, use the <code class="code">pev</code> request; see
+<a class="ref" href="#Debugging">Debugging</a>.
+</p>
+<p>Environments store the following information.
+</p>
+<ul class="itemize mark-bullet">
+<li>a partially collected line, if any
+
+</li><li>data about the most recently output glyph and line (registers
+<code class="code">.cdp</code>, <code class="code">.cht</code>, <code class="code">.csk</code>, <code class="code">.n</code>, <code class="code">.w</code>)
+
+</li><li>typeface parameters (size, family, style, height and slant, inter-word
+and inter-sentence space sizes)
+
+</li><li>page parameters (line length, title length, vertical spacing, line
+spacing, indentation, line numbering, centering, right-alignment,
+underlining, hyphenation parameters)
+
+</li><li>filling enablement; adjustment enablement and mode
+
+</li><li>tab stops; tab, leader, escape, control, no-break control, hyphenation,
+and margin characters
+
+</li><li>input line traps
+
+</li><li>stroke and fill colors
+</li></ul>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eev"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ev</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">ident</i></span>]</var><a class="copiable-link" href='#index-_002eev'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ev"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eev_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ev]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eev_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eev-1"></a>
+<a class="index-entry-id" id="index-switching-environments-_0028ev_0029"></a>
+<a class="index-entry-id" id="index-environment_002c-switching-_0028ev_0029"></a>
+<a class="index-entry-id" id="index-environment-number_002fname-register-_0028_002eev_0029"></a>
+<p>Enter the environment <var class="var">ident</var>, which is created if it does not
+already exist, using the same parameters as for the default environment
+used at startup. With no argument, GNU <code class="code">troff</code> switches to the
+previous environment.
+</p>
+<p>Invoking <code class="code">ev</code> with an argument puts environment <var class="var">ident</var> onto
+the top of the environment stack. (If it isn&rsquo;t already present in the
+stack, this is a proper push.) Without an argument, <code class="code">ev</code> pops the
+environment stack, making the previous environment current. It is an
+error to pop the environment stack with no previous environment
+available. The read-only string-valued register <code class="code">.ev</code> contains the
+name of the current environment&mdash;the one at the top of the stack.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ev footnote-env
+.fam N
+.ps 6
+.vs 8
+.ll -.5i
+.ev
+
+<span class="r">&hellip;</span>
+
+.ev footnote-env
+\[dg] Observe the smaller text and vertical spacing.
+.ev
+</pre></div></div>
+
+<p>We can familiarize ourselves with stack behavior by wrapping the
+<code class="code">ev</code> request with a macro that reports the contents of the
+<code class="code">.ev</code> register to the standard error stream.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de EV
+. ev \\$1
+. tm environment is now \\n[.ev]
+..
+.
+.EV foo
+.EV bar
+.EV
+.EV baz
+.EV
+.EV
+.EV
+</pre></div></div>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted"> error&rarr; environment is now foo
+ error&rarr; environment is now bar
+ error&rarr; environment is now foo
+ error&rarr; environment is now baz
+ error&rarr; environment is now foo
+ error&rarr; environment is now 0
+ error&rarr; error: environment stack underflow
+ error&rarr; environment is now 0
+</pre></div></div>
+
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eevc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.evc</code></strong> <var class="def-var-arguments">environment</var><a class="copiable-link" href='#index-_002eevc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-evc"></a>
+<a class="index-entry-id" id="index-copying-environment-_0028evc_0029"></a>
+<a class="index-entry-id" id="index-environment_002c-copying-_0028evc_0029"></a>
+<p>Copy the contents of <var class="var">environment</var> to the current environment.
+</p>
+<p>The following environment data are not copied.
+</p>
+<ul class="itemize mark-bullet">
+<li>a partially collected line, if present;
+
+</li><li>the interruption status of the previous input line (due to use of the
+<code class="code">\c</code> escape sequence);
+
+</li><li>the count of remaining lines to center, to right-justify, or to
+underline (with or without underlined spaces)&mdash;these are set to zero;
+
+</li><li>the activation status of temporary indentation;
+
+</li><li>input line traps and their associated data;
+
+</li><li>the activation status of line numbering (which can be reactivated with
+&lsquo;<samp class="samp">.nm&nbsp;+0</samp>&rsquo;<!-- /@w -->); and
+
+</li><li>the count of consecutive hyphenated lines (set to zero).
+</li></ul>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002ew_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.w]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ew_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ew"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002echt_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.cht]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002echt_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002echt"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ecdp_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.cdp]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ecdp_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ecdp"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ecsk_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.csk]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ecsk_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ecsk"></a>
+<a class="index-entry-id" id="index-environment_002c-dimensions-of-last-glyph-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029"></a>
+<a class="index-entry-id" id="index-width_002c-of-last-glyph-_0028_002ew_0029"></a>
+<a class="index-entry-id" id="index-height_002c-of-last-glyph-_0028_002echt_0029"></a>
+<a class="index-entry-id" id="index-depth_002c-of-last-glyph-_0028_002ecdp_0029"></a>
+<a class="index-entry-id" id="index-skew_002c-of-last-glyph-_0028_002ecsk_0029"></a>
+<a class="index-entry-id" id="index-last-glyph_002c-dimensions-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-last_002c-dimensions-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029"></a>
+<p>The <code class="code">\n[.w]</code> register contains the width of the last glyph
+formatted in the environment.
+</p>
+<p>The <code class="code">\n[.cht]</code> register contains the height of the last glyph
+formatted in the environment.
+</p>
+<p>The <code class="code">\n[.cdp]</code> register contains the depth of the last glyph
+formatted in the environment. It is positive for glyphs extending below
+the baseline.
+</p>
+<p>The <code class="code">\n[.csk]</code> register contains the <em class="dfn">skew</em> (how far to the
+right of the glyph&rsquo;s center that GNU <code class="code">troff</code> should place an
+accent) of the last glyph formatted in the environment.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002en_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.n]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002en_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002en"></a>
+<a class="index-entry-id" id="index-environment_002c-previous-line-length-_0028_002en_0029"></a>
+<a class="index-entry-id" id="index-line-length_002c-previous-_0028_002en_0029"></a>
+<a class="index-entry-id" id="index-length-of-previous-line-_0028_002en_0029"></a>
+<a class="index-entry-id" id="index-previous-line-length-_0028_002en_0029"></a>
+<p>The <code class="code">\n[.n]</code> register contains the length of the previous output
+line emitted in the environment.
+</p></dd></dl>
+
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Suppressing-Output">
+<div class="nav-panel">
+<p>
+Next: <a href="#Colors" accesskey="n" rel="next">Colors</a>, Previous: <a href="#Environments" accesskey="p" rel="prev">Environments</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Suppressing-Output-1">5.32 Suppressing Output</h3>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cO_005bnum_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\O[</code><span class="r"><i class="slanted">num</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cO_005bnum_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cO"></a>
+<a class="index-entry-id" id="index-suppressing-output-_0028_005cO_0029"></a>
+<a class="index-entry-id" id="index-output_002c-suppressing-_0028_005cO_0029"></a>
+<p>Suppress GNU <code class="code">troff</code> output of glyphs and geometric objects. The
+sequences <code class="code">\O2</code>, <code class="code">\O3</code>, <code class="code">\O4</code>, and <code class="code">\O5</code> are
+intended for internal use by <code class="code">grohtml</code>.
+</p>
+<dl class="table">
+<dt>&lsquo;<samp class="samp">\O0</samp>&rsquo;</dt>
+<dd><p>Disable the emission of glyphs and geometric objects to the output
+driver, provided that this sequence occurs at the outermost suppression
+level (see <code class="code">\O3</code> and <code class="code">\04</code> below). Horizontal motions
+corresponding to non-overstruck glyph widths still occur.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">\O1</samp>&rsquo;</dt>
+<dd><p>Enable the emission of glyphs and geometric objects to the output
+driver, provided that this sequence occurs at the outermost suppression
+level.
+</p></dd>
+</dl>
+
+<a class="index-entry-id" id="index-opminx"></a>
+<a class="index-entry-id" id="index-opminy"></a>
+<a class="index-entry-id" id="index-opmaxx"></a>
+<a class="index-entry-id" id="index-opmaxy"></a>
+<p><code class="code">\O0</code> and <code class="code">\O1</code> also reset the four registers <code class="code">opminx</code>,
+<code class="code">opminy</code>, <code class="code">opmaxx</code>, and <code class="code">opmaxy</code> to &minus;1. These
+four registers mark the top left and bottom right hand corners of a box
+encompassing all written or drawn output.
+</p>
+<dl class="table">
+<dt>&lsquo;<samp class="samp">\O2</samp>&rsquo;</dt>
+<dd><p>At the outermost suppression level, enable emission of glyphs and
+geometric objects, and write to the standard error stream the page
+number and values of the four aforementioned registers encompassing
+glyphs written since the last interpolation of a <code class="code">\O</code> sequence, as
+well as the page offset, line length, image file name (if any),
+horizontal and vertical device motion quanta, and input file name.
+Numeric values are in basic units.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">\O3</samp>&rsquo;</dt>
+<dd><p>Begin a nested suppression level. <code class="command">grohtml</code> uses this mechanism
+to create images of output preprocessed with <code class="command">gpic</code>,
+<code class="command">geqn</code>, and <code class="command">gtbl</code>. At startup, GNU <code class="code">troff</code> is at
+the outermost suppression level. <code class="command">pre-grohtml</code> generates these
+sequences when processing the document, using GNU <code class="command">troff</code> with
+the <code class="code">ps</code> output device, Ghostscript, and the PNM tools to produce
+images in PNG format. They start a new page if the device is not
+<code class="code">html</code> or <code class="code">xhtml</code>, to reduce the number of images crossing a
+page boundary.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">\O4</samp>&rsquo;</dt>
+<dd><p>End a nested suppression level.
+</p></dd>
+</dl>
+
+<dl class="table">
+<dt>&lsquo;<samp class="samp">\O[5<var class="var">P</var><var class="var">file</var>]</samp>&rsquo;</dt>
+<dd><p>At the outermost suppression level, write the name <code class="code">file</code> to the
+standard error stream at position <var class="var">P</var>, which must be one of
+<code class="code">l</code>, <code class="code">r</code>, <code class="code">c</code>, or&nbsp;<code class="code">i</code>, corresponding to left,
+right, centered, and inline alignments within the document,
+respectively. <var class="var">file</var> is a name associated with the production of
+the next image.
+</p></dd>
+</dl>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002eO_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.O]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eO_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eO"></a>
+<a class="index-entry-id" id="index-suppression-nesting-level-register"></a>
+<a class="index-entry-id" id="index-nesting-level_002c-suppression_002c-register"></a>
+<a class="index-entry-id" id="index-level_002c-suppression-nesting_002c-register"></a>
+<p>Output suppression nesting level applied by <code class="code">\O3</code> and <code class="code">\O4</code>
+escape sequences.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="I_002fO">
+<div class="nav-panel">
+<p>
+Next: <a href="#Postprocessor-Access" accesskey="n" rel="next">Postprocessor Access</a>, Previous: <a href="#Suppressing-Output" accesskey="p" rel="prev">Suppressing Output</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="I_002fO-1">5.33 I/O</h3>
+<a class="index-entry-id" id="index-i_002fo"></a>
+<a class="index-entry-id" id="index-input-and-output-requests"></a>
+<a class="index-entry-id" id="index-requests-for-input-and-output"></a>
+<a class="index-entry-id" id="index-output-and-input-requests"></a>
+
+<p><code class="code">gtroff</code> has several requests for including files:
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eso"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.so</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002eso'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-so"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002esoquiet"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.soquiet</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002esoquiet'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-soquiet"></a>
+<a class="index-entry-id" id="index-including-a-file-_0028so_0029"></a>
+<a class="index-entry-id" id="index-file_002c-inclusion-_0028so_0029"></a>
+<p>Replace the <code class="code">so</code> request&rsquo;s control line with the contents of the
+file named by the argument, &ldquo;sourcing&rdquo; it. <var class="var">file</var> is sought in
+the directories specified by <samp class="option">-I</samp> command-line option. If
+<var class="var">file</var> does not exist, a warning in category &lsquo;<samp class="samp">file</samp>&rsquo; is produced
+and the request has no further effect. See <a class="xref" href="#Warnings">Warnings</a>, for
+information about the enablement and suppression of warnings.
+</p>
+<p><code class="code">so</code> can be useful for large documents; e.g., allowing each chapter
+of a book to be kept in a separate file. However, files interpolated
+with <code class="code">so</code> are not preprocessed; to overcome this limitation, see
+the <cite class="cite">gsoelim<span class="r">(1)</span></cite> man page.
+</p>
+<p>Since GNU <code class="code">troff</code> replaces the entire control line with the
+contents of a file, it matters whether <code class="code">file</code> is terminated with a
+newline or not. Assume that file <samp class="file">xxx</samp> contains only the word
+&lsquo;<samp class="samp">foo</samp>&rsquo; without a trailing newline.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ printf 'foo' &gt; xxx
+
+The situation is
+.so xxx
+bar.
+ &rArr; The situation is foobar.
+</pre></div></div>
+
+<p><code class="code">soquiet</code> works the same way, except that no warning diagnostic is
+issued if <var class="var">file</var> does not exist.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epso"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pso</code></strong> <var class="def-var-arguments">command</var><a class="copiable-link" href='#index-_002epso'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pso"></a>
+<p>Read the standard output from the specified <var class="var">command</var> and include
+it in place of the <code class="code">pso</code> request.
+</p>
+<a class="index-entry-id" id="index-safer-mode-3"></a>
+<a class="index-entry-id" id="index-mode_002c-safer-3"></a>
+<a class="index-entry-id" id="index-unsafe-mode-3"></a>
+<a class="index-entry-id" id="index-mode_002c-unsafe-3"></a>
+<p>It is an error to use this request in safer mode, which is the
+default. Invoke GNU <code class="code">troff</code> or a front end with the <samp class="option">-U</samp>
+option to enable unsafe mode.
+</p>
+<p>The comment regarding a final newline for the <code class="code">so</code> request is valid
+for <code class="code">pso</code> also.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002emso"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.mso</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002emso'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-mso"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002emsoquiet"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.msoquiet</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002emsoquiet'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-msoquiet"></a>
+<p>Identical to the <code class="code">so</code> and <code class="code">soquiet</code> requests, respectively,
+except that <code class="code">gtroff</code> searches for the specified <var class="var">file</var> in the
+same directories as macro files for the <samp class="option">-m</samp> command-line option.
+If the file name to be included has the form <samp class="file"><var class="var">name</var>.tmac</samp> and
+it isn&rsquo;t found, these requests try to include <samp class="file">tmac.<var class="var">name</var></samp> and
+vice versa.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etrf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.trf</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002etrf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-trf"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ecf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cf</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002ecf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-cf"></a>
+<a class="index-entry-id" id="index-transparent-output-_0028cf_002c-trf_0029"></a>
+<a class="index-entry-id" id="index-output_002c-transparent-_0028cf_002c-trf_0029"></a>
+<a class="index-entry-id" id="index-cf-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-cf-request"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-cf-request"></a>
+<a class="index-entry-id" id="index-trf-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-trf-request"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-trf-request"></a>
+<p>Transparently output the contents of <var class="var">file</var>. Each line is output as
+if it were preceded by <code class="code">\!</code>; however, the lines are <em class="emph">not</em>
+subject to copy mode interpretation. If the file does not end with a
+newline, <code class="code">trf</code> adds one. Both requests cause a break.
+</p>
+<p>When used in a diversion, these requests embed a node (see <a class="pxref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>) in it that, when reread, causes the contents of <var class="var">file</var>
+to be transparently copied to the output. In <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code>, the contents of <var class="var">file</var> are immediately copied to the
+output regardless of whether there is a current diversion; this
+behaviour is so anomalous that it must be considered a bug.
+</p>
+<a class="index-entry-id" id="index-trf-request_002c-and-invalid-characters"></a>
+<a class="index-entry-id" id="index-characters_002c-invalid-for-trf-request"></a>
+<a class="index-entry-id" id="index-invalid-characters-for-trf-request"></a>
+<p>While <code class="code">cf</code> copies the contents of <var class="var">file</var> completely
+unprocessed, <code class="code">trf</code> disallows characters such as NUL that are not
+valid <code class="code">gtroff</code> input characters (see <a class="pxref" href="#Identifiers">Identifiers</a>).
+</p>
+<p>For <code class="code">cf</code>, within a diversion, &ldquo;completely unprocessed&rdquo; means that
+each line of a file to be inserted is handled as if it were preceded by
+<code class="code">\!\\!</code>.
+</p>
+<p>To define a macro&nbsp;<code class="code">x</code> containing the contents of
+file&nbsp;<samp class="file">f</samp>, use
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ev 1
+.di x
+.trf f
+.di
+.ev
+</pre></div></div>
+
+<p>The calls to <code class="code">ev</code> prevent the partially collected output line
+from becoming part of the diversion (see <a class="pxref" href="#Diversions">Diversions</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enx"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nx</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">file</i></span>]</var><a class="copiable-link" href='#index-_002enx'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nx"></a>
+<a class="index-entry-id" id="index-processing-next-file-_0028nx_0029"></a>
+<a class="index-entry-id" id="index-file_002c-processing-next-_0028nx_0029"></a>
+<a class="index-entry-id" id="index-next-file_002c-processing-_0028nx_0029"></a>
+<p>Force <code class="code">gtroff</code> to continue processing of the file specified as an
+argument. If no argument is given, immediately jump to the end of file.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002erd"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rd</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">prompt</i></span> [<span class="r"><i class="slanted">arg1</i></span> <span class="r"><i class="slanted">arg2</i></span> &hellip;]]</var><a class="copiable-link" href='#index-_002erd'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rd"></a>
+<a class="index-entry-id" id="index-reading-from-standard-input-_0028rd_0029"></a>
+<a class="index-entry-id" id="index-standard-input_002c-reading-from-_0028rd_0029"></a>
+<a class="index-entry-id" id="index-input_002c-standard_002c-reading-from-_0028rd_0029"></a>
+<p>Read from standard input, and include what is read as though it were
+part of the input file. Text is read until a blank line is encountered.
+</p>
+<p>If standard input is a TTY input device (keyboard), write <var class="var">prompt</var>
+to standard error, followed by a colon (or send BEL for a beep if no
+argument is given).
+</p>
+<p>Arguments after <var class="var">prompt</var> are available for the input. For example,
+the line
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.rd data foo bar
+</pre></div></div>
+
+<p>with the input &lsquo;<samp class="samp">This&nbsp;is&nbsp;\$2.</samp>&rsquo;<!-- /@w --> prints
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">This is bar.
+</pre></div></div>
+</dd></dl>
+
+<a class="index-entry-id" id="index-form-letters"></a>
+<a class="index-entry-id" id="index-letters_002c-form"></a>
+<p>Using the <code class="code">nx</code> and <code class="code">rd</code> requests, it is easy to set up form
+letters. The form letter template is constructed like this, putting the
+following lines into a file called <samp class="file">repeat.let</samp>:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ce
+\*(td
+.sp 2
+.nf
+.rd
+.sp
+.rd
+.fi
+Body of letter.
+.bp
+.nx repeat.let
+</pre></div></div>
+
+<a class="index-entry-id" id="index-ex-request_002c-used-with-nx-and-rd"></a>
+<p>When this is run, a file containing the following lines should be
+redirected in. Requests included in this file are executed as though
+they were part of the form letter. The last block of input is the
+<code class="code">ex</code> request, which tells GNU <code class="code">troff</code> to stop processing. If
+this were not there, <code class="code">troff</code> would not know when to stop.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Trent A. Fisher
+708 NW 19th Av., #202
+Portland, OR 97209
+
+Dear Trent,
+
+Len Adollar
+4315 Sierra Vista
+San Diego, CA 92103
+
+Dear Mr. Adollar,
+
+.ex
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epi"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pi</code></strong> <var class="def-var-arguments">pipe</var><a class="copiable-link" href='#index-_002epi'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pi"></a>
+<p>Pipe the output of <code class="code">gtroff</code> to the shell command(s) specified by
+<var class="var">pipe</var>. This request must occur before <code class="code">gtroff</code> has a chance
+to print anything.
+</p>
+<a class="index-entry-id" id="index-safer-mode-4"></a>
+<a class="index-entry-id" id="index-mode_002c-safer-4"></a>
+<a class="index-entry-id" id="index-unsafe-mode-4"></a>
+<a class="index-entry-id" id="index-mode_002c-unsafe-4"></a>
+<p>It is an error to use this request in safer mode, which is the
+default. Invoke GNU <code class="code">troff</code> or a front end with the <samp class="option">-U</samp>
+option to enable unsafe mode.
+</p>
+<p>Multiple calls to <code class="code">pi</code> are allowed, acting as a chain. For
+example,
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.pi foo
+.pi bar
+...
+</pre></div></div>
+
+<p>is the same as &lsquo;<samp class="samp">.pi&nbsp;foo&nbsp;|&nbsp;bar</samp>&rsquo;<!-- /@w -->.
+</p>
+<a class="index-entry-id" id="index-groff_002c-and-pi-request"></a>
+<a class="index-entry-id" id="index-pi-request_002c-and-groff"></a>
+<p>The intermediate output format of GNU <code class="code">troff</code> is piped to the
+specified commands. Consequently, calling <code class="code">groff</code> without the
+<samp class="option">-Z</samp> option normally causes a fatal error.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-system-commands_002c-running"></a>
+<a class="index-entry-id" id="index-running-system-commands"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002esy"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sy</code></strong> <var class="def-var-arguments">cmds</var><a class="copiable-link" href='#index-_002esy'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-sy"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bsystat_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[systat]</code></strong><a class="copiable-link" href='#index-_005cn_005bsystat_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-systat"></a>
+<p>Execute the shell command(s) specified by <var class="var">cmds</var>. The output is not
+saved anywhere, so it is up to the user to do so.
+</p>
+<a class="index-entry-id" id="index-safer-mode-5"></a>
+<a class="index-entry-id" id="index-mode_002c-safer-5"></a>
+<a class="index-entry-id" id="index-unsafe-mode-5"></a>
+<a class="index-entry-id" id="index-mode_002c-unsafe-5"></a>
+<p>It is an error to use this request in safer mode; this is the default.
+Give GNU <code class="code">troff</code> or a front end program the <samp class="option">-U</samp> option to
+enable unsafe mode.
+</p>
+<p>The following code fragment introduces the current time into a document.
+</p>
+<a class="index-entry-id" id="index-perl"></a>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.sy perl -e 'printf &quot;.nr H %d\\n.nr M %d\\n.nr S %d\\n&quot;,\
+ (localtime(time))[2,1,0]' &gt; /tmp/x\n[$$]
+.so /tmp/x\n[$$]
+.sy rm /tmp/x\n[$$]
+\nH:\nM:\nS
+</pre></div></div>
+
+<p>This works by having the Perl script (run by <code class="code">sy</code>) write
+<code class="code">nr</code> requests that set the registers <code class="code">H</code>, <code class="code">M</code>, and
+<code class="code">S</code> to a temporary file. The <code class="code">roff</code> document then reads the
+temporary file using the <code class="code">so</code> request.
+</p>
+<a class="index-entry-id" id="index-time_002c-formatting"></a>
+<a class="index-entry-id" id="index-formatting-the-time"></a>
+<p>The registers <code class="code">seconds</code>, <code class="code">minutes</code>, and <code class="code">hours</code>,
+initialized at startup of GNU <code class="code">troff</code>, should satisfy most
+requirements. Use the <code class="code">af</code> request to format their values for
+output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.af hours 00
+.af minutes 00
+.af seconds 00
+\n[hours]:\n[minutes]:\n[seconds]
+ &rArr; 02:17:54
+</pre></div></div>
+
+<a class="index-entry-id" id="index-system_0028_0029-return-value-register-_0028systat_0029"></a>
+<p>The writable register <code class="code">systat</code> contains the return value of the
+<code class="code">system()</code> function executed by the last <code class="code">sy</code> request.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eopen"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.open</code></strong> <var class="def-var-arguments">stream file</var><a class="copiable-link" href='#index-_002eopen'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-open"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eopena"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.opena</code></strong> <var class="def-var-arguments">stream file</var><a class="copiable-link" href='#index-_002eopena'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-opena"></a>
+<a class="index-entry-id" id="index-opening-file-_0028open_0029"></a>
+<a class="index-entry-id" id="index-file_002c-opening-_0028open_0029"></a>
+<a class="index-entry-id" id="index-appending-to-a-file-_0028opena_0029"></a>
+<a class="index-entry-id" id="index-file_002c-appending-to-_0028opena_0029"></a>
+<p>Open the specified <var class="var">file</var> for writing and associates the specified
+<var class="var">stream</var> with it.
+</p>
+<p>The <code class="code">opena</code> request is like <code class="code">open</code>, but if the file exists,
+append to it instead of truncating it.
+</p>
+<a class="index-entry-id" id="index-safer-mode-6"></a>
+<a class="index-entry-id" id="index-mode_002c-safer-6"></a>
+<a class="index-entry-id" id="index-unsafe-mode-6"></a>
+<a class="index-entry-id" id="index-mode_002c-unsafe-6"></a>
+<p>It is an error to use these requests in safer mode; this is the default.
+Give GNU <code class="code">troff</code> or a front end program the <samp class="option">-U</samp> option to
+enable unsafe mode.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewrite"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.write</code></strong> <var class="def-var-arguments">stream data</var><a class="copiable-link" href='#index-_002ewrite'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-write"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ewritec"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.writec</code></strong> <var class="def-var-arguments">stream data</var><a class="copiable-link" href='#index-_002ewritec'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-writec"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-write-request"></a>
+<a class="index-entry-id" id="index-write-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-write-request"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-writec-request"></a>
+<a class="index-entry-id" id="index-writec-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-writec-request"></a>
+<a class="index-entry-id" id="index-writing-to-file-_0028write_002c-writec_0029"></a>
+<a class="index-entry-id" id="index-file_002c-writing-to-_0028write_002c-writec_0029"></a>
+<p>Write to the file associated with the specified <var class="var">stream</var>. The
+stream must previously have been the subject of an open request. The
+remainder of the line is interpreted as the <code class="code">ds</code> request reads its
+second argument: an initial neutral double quote in <var class="var">contents</var> is
+stripped to allow embedding of leading spaces, and it is read in copy
+mode.
+</p>
+<p>The <code class="code">writec</code> request is like <code class="code">write</code>, but only <code class="code">write</code>
+appends a newline to the data.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewritem"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.writem</code></strong> <var class="def-var-arguments">stream xx</var><a class="copiable-link" href='#index-_002ewritem'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-writem"></a>
+<a class="index-entry-id" id="index-asciify-request_002c-and-writem"></a>
+<p>Write the contents of the macro or string <var class="var">xx</var> to the file
+associated with the specified <var class="var">stream</var>.
+</p>
+<a class="index-entry-id" id="index-writem-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-writem-request"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-writem-request"></a>
+<p><var class="var">xx</var> is read in copy mode, i.e., already formatted elements are
+ignored. Consequently, diversions must be unformatted with the
+<code class="code">asciify</code> request before calling <code class="code">writem</code>. Usually, this
+means a loss of information.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eclose"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.close</code></strong> <var class="def-var-arguments">stream</var><a class="copiable-link" href='#index-_002eclose'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-close"></a>
+<a class="index-entry-id" id="index-closing-file-_0028close_0029"></a>
+<a class="index-entry-id" id="index-file_002c-closing-_0028close_0029"></a>
+<p>Close the specified <var class="var">stream</var>; the stream is no longer an acceptable
+argument to the <code class="code">write</code> request.
+</p>
+<p>Here a simple macro to write an index entry.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.open idx test.idx
+.
+.de IX
+. write idx \\n[%] \\$*
+..
+.
+.IX test entry
+.
+.close idx
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cVe"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\V</code><span class="r"><i class="slanted">e</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cVe'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cV"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cV_0028ev"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\V(</code><span class="r"><i class="slanted">ev</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cV_0028ev'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cV_005benv_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\V[</code><span class="r"><i class="slanted">env</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cV_005benv_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cV_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-_005cV"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005cV"></a>
+<p>Interpolate the contents of the specified environment variable <var class="var">env</var>
+(one-character name&nbsp;<var class="var">e</var>, two-character name <var class="var">ev</var>) as
+returned by the function <cite class="cite">getenv<span class="r">(3)</span></cite>. <code class="code">\V</code> is interpreted
+even in copy mode (see <a class="pxref" href="#Copy-Mode">Copy Mode</a>).
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Postprocessor-Access">
+<div class="nav-panel">
+<p>
+Next: <a href="#Miscellaneous" accesskey="n" rel="next">Miscellaneous</a>, Previous: <a href="#I_002fO" accesskey="p" rel="prev">I/O</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Postprocessor-Access-1">5.34 Postprocessor Access</h3>
+<a class="index-entry-id" id="index-postprocessor-access"></a>
+<a class="index-entry-id" id="index-access-to-postprocessor"></a>
+
+<p>Two escape sequences and two requests enable documents to pass
+information directly to a postprocessor. These are useful for
+exercising device-specific capabilities that the <code class="code">groff</code> language
+does not abstract or generalize; examples include the embedding of
+hyperlinks and image files. Device-specific functions are documented in
+each output driver&rsquo;s man page, such as <cite class="cite">gropdf<span class="r">(1)</span></cite>,
+<cite class="cite">grops<span class="r">(1)</span></cite>, or <cite class="cite">grotty<span class="r">(1)</span></cite>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edevice"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.device</code></strong> <var class="def-var-arguments">xxx <span class="r">&hellip;</span></var><a class="copiable-link" href='#index-_002edevice'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-device"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cX_0027xxx-_2026_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\X<code class="code">'</code></code><span class="r"><i class="slanted">xxx <span class="r">&hellip;</span></i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cX_0027xxx-_2026_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cX"></a>
+<p>Embed all <var class="var">xxx</var> arguments into GNU <code class="code">troff</code> output as parameters
+to a device control command &lsquo;<samp class="samp">x&nbsp;X</samp>&rsquo;<!-- /@w -->. The meaning and
+interpretation of such parameters is determined by the output driver or
+other postprocessor.
+</p>
+<a class="index-entry-id" id="index-device-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-device-request"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-device-request"></a>
+<p>The <code class="code">device</code> request processes its arguments in copy mode
+(see <a class="pxref" href="#Copy-Mode">Copy Mode</a>). An initial neutral double quote in <var class="var">contents</var>
+is stripped to allow embedding of leading spaces.
+<a class="index-entry-id" id="index-_005c_0026_002c-in-_005cX"></a>
+<a class="index-entry-id" id="index-_005c_0029_002c-in-_005cX"></a>
+<a class="index-entry-id" id="index-_005c_0025_002c-in-_005cX"></a>
+<a class="index-entry-id" id="index-_005c_003a_002c-in-_005cX"></a>
+By contrast, within <code class="code">\X</code> arguments, the escape sequences <code class="code">\&amp;</code>,
+<code class="code">\)</code>, <code class="code">\%</code>, and <code class="code">\:</code> are ignored; <code class="code">\<kbd class="key">SP</kbd></code> and
+<code class="code">\~</code> are converted to single space characters; and <code class="code">\\</code> has
+its escape character stripped. So that the basic Latin subset of the
+Unicode character set<a class="footnote" id="DOCF115" href="#FOOT115"><sup>115</sup></a> can be reliably encoded in device control
+commands, seven special character escape sequences (&lsquo;<samp class="samp">\-</samp>&rsquo;,
+&lsquo;<samp class="samp">\[aq]</samp>&rsquo;, &lsquo;<samp class="samp">\[dq]</samp>&rsquo;, &lsquo;<samp class="samp">\[ga]</samp>&rsquo;, &lsquo;<samp class="samp">\[ha]</samp>&rsquo;, &lsquo;<samp class="samp">\[rs]</samp>&rsquo;,
+and &lsquo;<samp class="samp">\[ti]</samp>&rsquo;,) are mapped to basic Latin characters; see the
+<cite class="cite">groff_char<span class="r">(7)</span></cite> man page. For this transformation, character
+translations and special character definitions are
+ignored.<a class="footnote" id="DOCF116" href="#FOOT116"><sup>116</sup></a> The use of any
+other escape sequence in <code class="code">\X</code> parameters is normally an error.
+</p>
+<a class="index-entry-id" id="index-use_005fcharnames_005fin_005fspecial"></a>
+<a class="index-entry-id" id="index-DESC-file_002c-and-use_005fcharnames_005fin_005fspecial-keyword"></a>
+<a class="index-entry-id" id="index-_005cX_002c-and-special-characters"></a>
+<p>If the <code class="code">use_charnames_in_special</code> directive appears in the output
+device&rsquo;s <samp class="file">DESC</samp> file, the use of special character escape sequences
+is <em class="emph">not</em> an error; they are simply output verbatim (with the
+exception of the seven mapped to Unicode basic Latin characters,
+discussed above). <code class="code">use_charnames_in_special</code> is currently employed
+only by <code class="code">grohtml</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edevicem"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.devicem</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002edevicem'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-devicem"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cYn"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\Y</code><span class="r"><i class="slanted">n</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cYn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cY"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cY_0028nm"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\Y(</code><span class="r"><i class="slanted">nm</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cY_0028nm'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cY_005bname_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\Y[</code><span class="r"><i class="slanted">name</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cY_005bname_005d'> &para;</a></span></dt>
+<dd><p>This is approximately equivalent to &lsquo;<samp class="samp">\X'\*[<var class="var">name</var>]'</samp>&rsquo;
+(one-character name&nbsp;<var class="var">n</var>, two-character name <var class="var">nm</var>).
+However, the contents of the string or macro <var class="var">name</var> are not
+interpreted; also it is permitted for <var class="var">name</var> to have been defined as
+a macro and thus contain newlines (it is not permitted for the argument
+to <code class="code">\X</code> to contain newlines). The inclusion of newlines requires
+an extension to the <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> output format, and
+confuses drivers that do not know about this extension (see <a class="pxref" href="#Device-Control-Commands">Device Control Commands</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etag"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tag</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002etag'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tag"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002etaga"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.taga</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002etaga'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-taga"></a>
+<p>Reserved for internal use.
+</p></dd></dl>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Miscellaneous">
+<div class="nav-panel">
+<p>
+Next: <a href="#Gtroff-Internals" accesskey="n" rel="next"><code class="code">gtroff</code> Internals</a>, Previous: <a href="#Postprocessor-Access" accesskey="p" rel="prev">Postprocessor Access</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Miscellaneous-1">5.35 Miscellaneous</h3>
+
+<p>We document here GNU <code class="code">troff</code> features that fit poorly elsewhere.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nm</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">start</i></span> [<span class="r"><i class="slanted">increment</i></span> [<span class="r"><i class="slanted">space</i></span> [<span class="r"><i class="slanted">indentation</i></span>]]]]</var><a class="copiable-link" href='#index-_002enm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nm"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bln_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[ln]</code></strong><a class="copiable-link" href='#index-_005cn_005bln_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ln"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002enm_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.nm]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002enm_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002enm-1"></a>
+<a class="index-entry-id" id="index-printing-line-numbers-_0028nm_0029"></a>
+<a class="index-entry-id" id="index-line-numbers_002c-printing-_0028nm_0029"></a>
+<a class="index-entry-id" id="index-numbers_002c-line_002c-printing-_0028nm_0029"></a>
+<p>Begin (or, with no arguments, cease) numbering output lines.
+<var class="var">start</var> assigns the number of the <em class="emph">next</em> output line. Only
+line numbers divisible by <var class="var">increment</var> are marked (default:
+&lsquo;<samp class="samp">1</samp>&rsquo;). <var class="var">space</var> configures the horizontal spacing between the
+number and the text (default: &lsquo;<samp class="samp">1</samp>&rsquo;). Any given <var class="var">indentation</var> is
+applied to the numbers (default: &lsquo;<samp class="samp">0</samp>&rsquo;). The third and fourth
+arguments are reckoned in numeral widths (<code class="code">\0</code>). <var class="var">start</var> must
+be non-negative and <var class="var">increment</var> positive.
+</p>
+<p>The formatter aligns the number to the right in a width of three numeral
+spaces plus <var class="var">indentation</var>, then catenates <var class="var">space</var> and the output
+line. The line length is <em class="emph">not</em> reduced. Depending on the value of
+the page offset,<a class="footnote" id="DOCF117" href="#FOOT117"><sup>117</sup></a> numbers wider than
+the allocated space protrude into the left margin, or shift the output
+line to the right.
+</p>
+<p>Line numbering parameters corresponding to missing arguments are not
+altered. After numbering is disabled, &lsquo;<samp class="samp">.nm +0</samp>&rsquo; resumes it using
+the previously active parameters.
+</p>
+<p>The parameters of <code class="code">nm</code> are associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<a class="index-entry-id" id="index-output-line-number-register-_0028ln_0029"></a>
+<a class="index-entry-id" id="index-line-number_002c-output_002c-register-_0028ln_0029"></a>
+<p>While numbering is enabled, the output line number register <code class="code">ln</code> is
+updated as each line is output, even if no line number is formatted with
+it because it is being skipped (it is not a multiple of <var class="var">increment</var>)
+or because numbering is suppressed (see the <code class="code">nn</code> request below).
+</p>
+<p>The <code class="code">.nm</code> register tracks the enablement status of numbering.
+Temporary suspension of numbering with the <code class="code">nn</code> request does
+<em class="emph">not</em> alter its value.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.po 5n
+.ll 44n
+Programming,
+when stripped of all its circumstantial irrelevancies,
+.nm 999 1 1 -4
+boils down to no more and no less than
+.nm +0 3
+very effective thinking so as to avoid unmastered
+.nn 2
+complexity,
+to very vigorous separation of your many
+different concerns.
+.br
+\(em Edsger Dijkstra
+.sp
+.nm 1 1 1
+This guy's arrogance takes your breath away.
+.br
+\(em John Backus
+ &rArr; Programming, when stripped of all its cir-
+ &rArr; 999 cumstantial irrelevancies, boils down to no
+ &rArr; more and no less than very effective think-
+ &rArr; ing so as to avoid unmastered complexity, to
+ &rArr; very vigorous separation of your many dif-
+ &rArr; ferent concerns.
+ &rArr; 1002 -- Edsger Dijkstra
+ &rArr;
+ &rArr; 1 This guy&rsquo;s arrogance takes your breath away.
+ &rArr; 2 -- John Backus
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nn</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">skip</i></span>]</var><a class="copiable-link" href='#index-_002enn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nn"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002enn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.nn]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002enn_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002enn-1"></a>
+<p>Suppress numbering of the next <var class="var">skip</var> output lines that would
+otherwise be numbered. The default is&nbsp;1. <code class="code">nn</code> can be invoked
+when line numbering is not active; suppression of numbering will take
+effect for <var class="var">skip</var> lines once <code class="code">nm</code> enables it.
+</p>
+<p>The <code class="code">.nn</code> register stores the count of output lines still to have
+their numbering suppressed.
+</p>
+<p>This count is associated with the environment (see <a class="pxref" href="#Environments">Environments</a>).
+</p></dd></dl>
+
+<p>To test whether the current output line will be numbered, you must check
+both the <code class="code">.nm</code> and <code class="code">.nn</code> registers.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> .de is-numbered
+ . nop This line
+ . ie (\\n[.nm] &amp; (1-\\n[.nn])) IS
+ . el ISN'T
+ . nop numbered.
+ . br
+ ..
+ Test line numbering.
+ .is-numbered
+ .nm 1
+ .nn 1
+ .is-numbered
+ .is-numbered
+ .nm
+ .is-numbered
+ &rArr; Test line numbering. This line ISN&rsquo;T numbered.
+ &rArr; This line ISN&rsquo;T numbered.
+ &rArr; 1 This line IS numbered.
+ &rArr; This line ISN&rsquo;T numbered.
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002emc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.mc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">margin-character</i></span> [<span class="r"><i class="slanted">distance</i></span>]</var><a class="copiable-link" href='#index-_002emc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-mc"></a>
+<a class="index-entry-id" id="index-margin-glyph-_0028mc_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-for-margins-_0028mc_0029"></a>
+<p>Begin (or, with no arguments, cease) writing a <em class="dfn">margin-character</em> to
+the right of each output line. The <var class="var">distance</var> argument separates
+<var class="var">margin-character</var> from the right margin. If absent, the most
+recent value is used; the default is 10&nbsp;points. If an output line
+exceeds the line length, the margin character is appended to it.
+<a class="index-entry-id" id="index-tl-request_002c-and-mc"></a>
+No margin character is written on lines produced by the <code class="code">tl</code>
+request.
+</p>
+<p>The margin character is a property of the output line; the margin
+character last configured when the line is output controls. If the
+margin character is disabled before an output line breaks, none is
+output (but see below).
+</p>
+<p>The margin character is associated with the environment
+(see <a class="pxref" href="#Environments">Environments</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 5i
+.nf
+.mc \[br]
+This paragraph is marked with a margin character.
+.sp
+As seen above, vertical space isn't thus marked.
+\&amp;
+An output line that is present, but empty, is.
+ &rArr; This paragraph is marked with a margin character. |
+ &rArr;
+ &rArr; As seen above, vertical space isn&rsquo;t thus marked. |
+ &rArr; |
+ &rArr; An output line that is present, but empty, is. |
+</pre></div></div>
+</dd></dl>
+
+<p>For compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, a call to <code class="code">mc</code>
+to set the margin character can&rsquo;t be undone immediately; at least one
+line gets a margin character.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 10n
+.nf
+.mc |
+.mc *
+.mc
+foo
+bar
+ &rArr; foo *
+ &rArr; bar
+</pre></div></div>
+
+<a class="index-entry-id" id="index-gdiffmk"></a>
+<a class="index-entry-id" id="index-nrchbar"></a>
+<a class="index-entry-id" id="index-changebar"></a>
+<a class="index-entry-id" id="index-diffmk"></a>
+<p>The margin character mechanism is commonly used to annotate changes in
+documents. The <code class="code">groff</code> distribution ships a program,
+<code class="command">gdiffmk</code>, to assist with this task.<a class="footnote" id="DOCF118" href="#FOOT118"><sup>118</sup></a>
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epsbb"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.psbb</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002epsbb'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-psbb"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bllx_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[llx]</code></strong><a class="copiable-link" href='#index-_005cn_005bllx_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-llx"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005blly_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[lly]</code></strong><a class="copiable-link" href='#index-_005cn_005blly_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lly"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005burx_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[urx]</code></strong><a class="copiable-link" href='#index-_005cn_005burx_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-urx"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bury_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[ury]</code></strong><a class="copiable-link" href='#index-_005cn_005bury_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ury"></a>
+<a class="index-entry-id" id="index-PostScript_002c-bounding-box"></a>
+<a class="index-entry-id" id="index-bounding-box"></a>
+<p>Retrieve the bounding box of the PostScript image found in <var class="var">file</var>,
+which must conform to Adobe&rsquo;s <em class="dfn">Document Structuring Conventions</em>
+(DSC), locate a <code class="code">%%BoundingBox</code> comment, and store the (upper-,
+lower-, <span class="w-nolinebreak-text">-left</span><!-- /@w -->, <span class="w-nolinebreak-text">-right</span><!-- /@w -->) values into the registers <code class="code">llx</code>,
+<code class="code">lly</code>, <code class="code">urx</code>, and <code class="code">ury</code>. If an error occurs (for
+example, if no <code class="code">%%BoundingBox</code> comment is present), the formatter
+sets these registers to&nbsp;0.
+</p>
+<p>The search path for <var class="var">file</var> can be controlled with the <samp class="option">-I</samp>
+command-line option.
+</p></dd></dl>
+
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Gtroff-Internals">
+<div class="nav-panel">
+<p>
+Next: <a href="#Debugging" accesskey="n" rel="next">Debugging</a>, Previous: <a href="#Miscellaneous" accesskey="p" rel="prev">Miscellaneous</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="gtroff-Internals">5.36 <code class="code">gtroff</code> Internals</h3>
+
+<a class="index-entry-id" id="index-input-token"></a>
+<a class="index-entry-id" id="index-token_002c-input"></a>
+<a class="index-entry-id" id="index-output-node"></a>
+<a class="index-entry-id" id="index-node_002c-output"></a>
+<p><code class="code">gtroff</code> processes input in three steps. One or more input
+characters are converted to an <em class="dfn">input token</em>.<a class="footnote" id="DOCF119" href="#FOOT119"><sup>119</sup></a> Then, one or more input tokens are converted to
+an <em class="dfn">output node</em>. Finally, output nodes are converted to the
+intermediate output language understood by all output devices.
+</p>
+<p>Actually, before step one happens, <code class="code">gtroff</code> converts certain escape
+sequences into reserved input characters (not accessible by the user);
+such reserved characters are used for other internal processing also &ndash;
+this is the very reason why not all characters are valid input.
+See <a class="xref" href="#Identifiers">Identifiers</a>, for more on this topic.
+</p>
+<p>For example, the input string &lsquo;<samp class="samp">fi\[:u]</samp>&rsquo; is converted into a
+character token &lsquo;<samp class="samp">f</samp>&rsquo;, a character token &lsquo;<samp class="samp">i</samp>&rsquo;, and a special
+token &lsquo;<samp class="samp">:u</samp>&rsquo; (representing u&nbsp;umlaut). Later on, the character
+tokens &lsquo;<samp class="samp">f</samp>&rsquo; and &lsquo;<samp class="samp">i</samp>&rsquo; are merged to a single output node
+representing the ligature glyph &lsquo;<samp class="samp">fi</samp>&rsquo; (provided the current font has
+a glyph for this ligature); the same happens with &lsquo;<samp class="samp">:u</samp>&rsquo;. All output
+glyph nodes are &lsquo;processed&rsquo;, which means that they are invariably
+associated with a given font, font size, advance width, etc. During the
+formatting process, <code class="code">gtroff</code> itself adds various nodes to control
+the data flow.
+</p>
+<p>Macros, diversions, and strings collect elements in two chained lists: a
+list of input tokens that have been passed unprocessed, and a list of
+output nodes. Consider the following diversion.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.di xxx
+a
+\!b
+c
+.br
+.di
+</pre></div></div>
+
+<p>It contains these elements.
+</p>
+<table class="multitable">
+<tbody><tr><td>node list</td><td>token list</td><td>element number</td></tr>
+<tr><td><i class="i">line start node</i></td><td>&mdash;</td><td>1</td></tr>
+<tr><td><i class="i">glyph node <code class="code">a</code></i></td><td>&mdash;</td><td>2</td></tr>
+<tr><td><i class="i">word space node</i></td><td>&mdash;</td><td>3</td></tr>
+<tr><td>&mdash;</td><td><code class="code">b</code></td><td>4</td></tr>
+<tr><td>&mdash;</td><td><code class="code">\n</code></td><td>5</td></tr>
+<tr><td><i class="i">glyph node <code class="code">c</code></i></td><td>&mdash;</td><td>6</td></tr>
+<tr><td><i class="i">vertical size node</i></td><td>&mdash;</td><td>7</td></tr>
+<tr><td><i class="i">vertical size node</i></td><td>&mdash;</td><td>8</td></tr>
+<tr><td>&mdash;</td><td><code class="code">\n</code></td><td>9</td></tr>
+</tbody>
+</table>
+
+<a class="index-entry-id" id="index-_005cv_002c-internal-representation"></a>
+<p>Elements 1, 7, and&nbsp;8 are inserted by <code class="code">gtroff</code>; the latter two
+(which are always present) specify the vertical extent of the last line,
+possibly modified by <code class="code">\x</code>. The <code class="code">br</code> request finishes the
+pending output line, inserting a newline input token, which is
+subsequently converted to a space when the diversion is reread. Note
+that the word space node has a fixed width that isn&rsquo;t adjustable
+anymore. To convert horizontal space nodes back to input tokens, use
+the <code class="code">unformat</code> request.
+</p>
+<p>Macros only contain elements in the token list (and the node list is
+empty); diversions and strings can contain elements in both lists.
+</p>
+<p>The <code class="code">chop</code> request simply reduces the number of elements in a
+macro, string, or diversion by one. Exceptions are <em class="dfn">compatibility
+save</em> and <em class="dfn">compatibility ignore</em> input tokens, which are ignored.
+The <code class="code">substring</code> request also ignores those input tokens.
+</p>
+<p>Some requests like <code class="code">tr</code> or <code class="code">cflags</code> work on glyph identifiers
+only; this means that the associated glyph can be changed without
+destroying this association. This can be very helpful for substituting
+glyphs. In the following example, we assume that glyph &lsquo;<samp class="samp">foo</samp>&rsquo; isn&rsquo;t
+available by default, so we provide a substitution using the
+<code class="code">fchar</code> request and map it to input character &lsquo;<samp class="samp">x</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.fchar \[foo] foo
+.tr x \[foo]
+</pre></div></div>
+
+<p>Now let us assume that we install an additional special font &lsquo;<samp class="samp">bar</samp>&rsquo;
+that has glyph &lsquo;<samp class="samp">foo</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.special bar
+.rchar \[foo]
+</pre></div></div>
+
+<p>Since glyphs defined with <code class="code">fchar</code> are searched before glyphs in
+special fonts, we must call <code class="code">rchar</code> to remove the definition of the
+fallback glyph. Anyway, the translation is still active; &lsquo;<samp class="samp">x</samp>&rsquo; now
+maps to the real glyph &lsquo;<samp class="samp">foo</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-compatibility-mode_002c-and-parameters"></a>
+<a class="index-entry-id" id="index-mode_002c-compatibility_002c-and-parameters"></a>
+<a class="index-entry-id" id="index-arguments_002c-and-compatibility-mode"></a>
+<a class="index-entry-id" id="index-parameters_002c-and-compatibility-mode"></a>
+<a class="index-entry-id" id="index-macro-arguments_002c-and-compatibility-mode"></a>
+<a class="index-entry-id" id="index-request-arguments_002c-and-compatibility-mode"></a>
+<p>Macro and request arguments preserve compatibility mode enablement.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.cp 1 \&quot; switch to compatibility mode
+.de xx
+\\$1
+..
+.cp 0 \&quot; switch compatibility mode off
+.xx caf\['e]
+ &rArr; café
+</pre></div></div>
+
+<p>Since compatibility mode is enabled while <code class="code">de</code> is invoked, the
+macro <code class="code">xx</code> enables compatibility mode when it is called. Argument
+<code class="code">$1</code> can still be handled properly because it inherits the
+compatibility mode enablement status that was active at the point where
+<code class="code">xx</code> was called.
+</p>
+<p>After interpolation of the parameters, the compatibility save and
+restore tokens are removed.
+</p>
+
+
+
+<hr>
+</div>
+<div class="section-level-extent" id="Debugging">
+<div class="nav-panel">
+<p>
+Next: <a href="#Implementation-Differences" accesskey="n" rel="next">Implementation Differences</a>, Previous: <a href="#Gtroff-Internals" accesskey="p" rel="prev"><code class="code">gtroff</code> Internals</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Debugging-1">5.37 Debugging</h3>
+<a class="index-entry-id" id="index-debugging"></a>
+
+<div class="flushright"><p class="flushright-paragraph"><i class="slanted">Standard troff voodoo, just put a power of two backslashes in
+front of it until it works and if you still have problems add a \c.</i>
+&mdash; Ron Natalie
+</p></div>
+<p>GNU <code class="code">troff</code> is not the easiest language to debug, in part thanks to
+its design features of recursive interpolation and the use of
+multi-stage pipeline processing in the surrounding system. Nevertheless
+there exist several features useful for troubleshooting.
+</p>
+<p>Preprocessors use the <code class="code">lf</code> request to preserve the identity of the
+line numbers and names of input files. GNU <code class="code">troff</code> emits a variety
+of error diagnostics and supports several categories of warning; the
+output of these can be selectively suppressed. A trace of the
+formatter&rsquo;s input processing stack can be emitted when errors or
+warnings occur by means of GNU <code class="code">troff</code>&rsquo;s <samp class="option">-b</samp> option, or
+produced on demand with the <code class="code">backtrace</code> request. The <code class="code">tm</code>
+and related requests can be used to emit customized diagnostic messages
+or for instrumentation while troubleshooting. The <code class="code">ex</code> and
+<code class="code">ab</code> requests cause early termination with successful and error
+exit codes respectively, to halt further processing when continuing
+would be fruitless. Examine the state of the formatter with requests
+that write lists of defined names (macros, strings, and diversions),
+environments, registers, and page location traps to the standard error
+stream.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lf</code></strong> <var class="def-var-arguments">line [<span class="r"><i class="slanted">file</i></span>]</var><a class="copiable-link" href='#index-_002elf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lf"></a>
+<a class="index-entry-id" id="index-soelim"></a>
+<a class="index-entry-id" id="index-multi_002dfile-documents"></a>
+<a class="index-entry-id" id="index-documents_002c-multi_002dfile"></a>
+<a class="index-entry-id" id="index-setting-input-line-number-_0028lf_0029"></a>
+<a class="index-entry-id" id="index-input-line-number_002c-setting-_0028lf_0029"></a>
+<a class="index-entry-id" id="index-number_002c-input-line_002c-setting-_0028lf_0029"></a>
+<p>Set the input line number (and, optionally, the file name) GNU
+<code class="code">troff</code> shall use for error and warning messages. <var class="var">line</var> is
+the input line number of the <em class="emph">next</em> line. Without an argument, the
+request is ignored.
+</p>
+<p><code class="code">lf</code>&rsquo;s primary purpose is to aid the debugging of documents that
+undergo preprocessing. Programs like <code class="command">tbl</code> that transform input
+in their own languages into <code class="code">roff</code> requests use it so that any
+diagnostic messages emitted by <code class="code">troff</code> correspond to the source
+document.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tm</code></strong> <var class="def-var-arguments">message</var><a class="copiable-link" href='#index-_002etm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tm"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002etm1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tm1</code></strong> <var class="def-var-arguments">message</var><a class="copiable-link" href='#index-_002etm1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tm1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002etmc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tmc</code></strong> <var class="def-var-arguments">message</var><a class="copiable-link" href='#index-_002etmc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tmc"></a>
+<a class="index-entry-id" id="index-printing-to-stderr-_0028tm_002c-tm1_002c-tmc_0029"></a>
+<a class="index-entry-id" id="index-stderr_002c-printing-to-_0028tm_002c-tm1_002c-tmc_0029"></a>
+<p>Send <var class="var">message</var>, which consumes the remainder of the input line and
+cannot contain special characters, to the standard error stream,
+followed by a newline. Leading spaces in <var class="var">message</var> are ignored.
+</p>
+<p><code class="code">tm1</code> is similar, but recognizes and strips a leading neutral
+double quote from <var class="var">message</var> to allow the embedding of leading
+spaces.
+</p>
+<p><code class="code">tmc</code> works as <code class="code">tm1</code>, but does not append a newline.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eab"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ab</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">message</i></span>]</var><a class="copiable-link" href='#index-_002eab'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ab"></a>
+<a class="index-entry-id" id="index-aborting-_0028ab_0029"></a>
+<p>Write any <var class="var">message</var> to the standard error stream (like <code class="code">tm</code>)
+and then abort GNU <code class="code">troff</code>; that is, stop processing and terminate
+with a failure status.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eex"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ex</code></strong><a class="copiable-link" href='#index-_002eex'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ex"></a>
+<a class="index-entry-id" id="index-ex-request_002c-use-in-debugging"></a>
+<a class="index-entry-id" id="index-exiting-_0028ex_0029"></a>
+<p>Exit GNU <code class="code">troff</code>; that is, stop processing and terminate with a
+successful status. To stop processing only the current file, use the
+<code class="code">nx</code> request; see <a class="ref" href="#I_002fO">I/O</a>.
+</p></dd></dl>
+
+<p>When doing something involved, it is useful to leave the debugging
+statements in the code and have them turned on by a command-line flag.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.if \n[DB] .tm debugging output
+</pre></div></div>
+
+<p>To activate such statements, use the <samp class="option">-r</samp> option to set the
+register.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -rDB=1 <i class="slanted">file</i>
+</pre></div></div>
+
+<p>If it is known in advance that there are many errors and no useful
+output, GNU <code class="code">troff</code> can be forced to suppress formatted output with
+the <samp class="option">-z</samp> option.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epev"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pev</code></strong><a class="copiable-link" href='#index-_002epev'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pev"></a>
+<a class="index-entry-id" id="index-dumping-environments-_0028pev_0029"></a>
+<a class="index-entry-id" id="index-environments_002c-dumping-_0028pev_0029"></a>
+<p>Report the state of the current environment followed by that of all
+other environments to the standard error stream.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pm</code></strong><a class="copiable-link" href='#index-_002epm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pm"></a>
+<a class="index-entry-id" id="index-dumping-symbol-table-_0028pm_0029"></a>
+<a class="index-entry-id" id="index-symbol-table_002c-dumping-_0028pm_0029"></a>
+<p>Report, to the standard error stream, the names of all defined macros,
+strings, and diversions with their sizes in bytes.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epnr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pnr</code></strong><a class="copiable-link" href='#index-_002epnr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pnr"></a>
+<a class="index-entry-id" id="index-dumping-registers-_0028pnr_0029"></a>
+<a class="index-entry-id" id="index-registers_002c-dumping-_0028pnr_0029"></a>
+<p>Report the names and contents of all currently defined registers to the
+standard error stream.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eptr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ptr</code></strong><a class="copiable-link" href='#index-_002eptr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ptr"></a>
+<a class="index-entry-id" id="index-dumping-page-location-traps-_0028ptr_0029"></a>
+<a class="index-entry-id" id="index-listing-page-location-traps-_0028ptr_0029"></a>
+<a class="index-entry-id" id="index-traps_002c-page-location_002c-dumping-_0028ptr_0029"></a>
+<a class="index-entry-id" id="index-traps_002c-page-location_002c-listing-_0028ptr_0029"></a>
+<p>Report the names and positions of all page location traps to the
+standard error stream. Empty slots in the list, where a trap has been
+planted but subsequently (re)moved, are printed as well.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efl"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fl</code></strong><a class="copiable-link" href='#index-_002efl'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fl"></a>
+<a class="index-entry-id" id="index-flush-output-_0028fl_0029"></a>
+<a class="index-entry-id" id="index-output_002c-flush-_0028fl_0029"></a>
+<a class="index-entry-id" id="index-interactive-use-of-gtroff"></a>
+<a class="index-entry-id" id="index-gtroff_002c-interactive-use"></a>
+<p>Instruct <code class="code">gtroff</code> to flush its output immediately. The intent is
+for interactive use, but this behaviour is currently not implemented in
+<code class="code">gtroff</code>. Contrary to Unix <code class="code">troff</code>, TTY output is sent to a
+device driver also (<code class="code">grotty</code>), making it non-trivial to communicate
+interactively.
+</p>
+<p>This request causes a line break.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebacktrace"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.backtrace</code></strong><a class="copiable-link" href='#index-_002ebacktrace'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-backtrace"></a>
+<a class="index-entry-id" id="index-backtrace-of-input-stack-_0028backtrace_0029"></a>
+<a class="index-entry-id" id="index-input-stack_002c-backtrace-_0028backtrace_0029"></a>
+<p>Write the state of the input stack to the standard error stream.
+</p>
+<p>Consider the following in a file <samp class="file">test</samp>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de xxx
+. backtrace
+..
+.de yyy
+. xxx
+..
+.
+.yyy
+ error&rarr; troff: backtrace: 'test':2: macro 'xxx'
+ error&rarr; troff: backtrace: 'test':5: macro 'yyy'
+ error&rarr; troff: backtrace: file 'test':8
+</pre></div></div>
+
+<p>The <samp class="option">-b</samp> option of GNU <code class="code">troff</code> causes a backtrace to be
+generated on each error or warning. Some warnings have to be enabled;
+See <a class="xref" href="#Warnings">Warnings</a>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bslimit_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[slimit]</code></strong><a class="copiable-link" href='#index-_005cn_005bslimit_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-slimit"></a>
+<a class="index-entry-id" id="index-input-stack_002c-setting-limit"></a>
+<p>If greater than&nbsp;0, sets the maximum quantity of objects on GNU
+<code class="code">troff</code>&rsquo;s internal input stack. If less than or equal to&nbsp;0,
+there is no limit: recursion can continue until program memory is
+exhausted. The default is 1,000.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewarnscale"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.warnscale</code></strong> <var class="def-var-arguments">su</var><a class="copiable-link" href='#index-_002ewarnscale'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-warnscale"></a>
+<p>Set the scaling unit used in certain warnings to <var class="var">su</var>, which can take the values &lsquo;<samp class="samp">u</samp>&rsquo;, &lsquo;<samp class="samp">i</samp>&rsquo;, &lsquo;<samp class="samp">c</samp>&rsquo;,
+&lsquo;<samp class="samp">p</samp>&rsquo;, and &lsquo;<samp class="samp">P</samp>&rsquo;. The default is &lsquo;<samp class="samp">i</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002espreadwarn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.spreadwarn</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">limit</i></span>]</var><a class="copiable-link" href='#index-_002espreadwarn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-spreadwarn"></a>
+<p>Emit a <code class="code">break</code> warning if the additional space inserted for each
+space between words in an output line adjusted to both margins with
+&lsquo;<samp class="samp">.ad&nbsp;b</samp>&rsquo;<!-- /@w --> is larger than or equal to <var class="var">limit</var>. A negative
+value is treated as zero; an absent argument toggles the warning on and
+off without changing <var class="var">limit</var>. The default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;.
+At startup, <code class="code">spreadwarn</code> is inactive and <var class="var">limit</var> is 3<span class="dmn">m</span>.
+</p>
+<p>For example,
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.spreadwarn 0.2m
+</pre></div></div>
+
+<p>causes a warning if <code class="code">break</code> warnings are not suppressed and
+<code class="code">gtroff</code> must add 0.2<span class="dmn">m</span> or more for each inter-word space in a
+line. See <a class="xref" href="#Warnings">Warnings</a>.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-warnings"></a>
+<p>GNU <code class="code">troff</code> has command-line options for reporting warnings
+(<samp class="option">-w</samp>) and backtraces (<samp class="option">-b</samp>) when a warning or an error
+occurs.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewarn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.warn</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ewarn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-warn"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ewarn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.warn]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ewarn_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ewarn-1"></a>
+<a class="index-entry-id" id="index-warning-level-_0028warn_0029"></a>
+<p>Select the categories, or &ldquo;types&rdquo;, of reported warnings.
+<var class="var">n</var>&nbsp;is the sum of the numeric codes associated with each
+warning category that is to be enabled; all other categories are
+disabled. The categories and their associated codes are listed in
+<a class="ref" href="#Warnings">Warnings</a>. For example, &lsquo;<samp class="samp">.warn 0</samp>&rsquo; disables all warnings, and
+&lsquo;<samp class="samp">.warn 1</samp>&rsquo; disables all warnings except those about missing glyphs.
+If no argument is given, all warning categories are enabled.
+</p>
+<p>The read-only register <code class="code">.warn</code> contains the sum of the numeric
+codes of enabled warning categories.
+</p></dd></dl>
+
+
+
+<ul class="mini-toc">
+<li><a href="#Warnings" accesskey="1">Warnings</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Warnings">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Debugging" accesskey="p" rel="prev">Debugging</a>, Up: <a href="#Debugging" accesskey="u" rel="up">Debugging</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Warnings-1">5.37.1 Warnings</h4>
+<a class="index-entry-id" id="index-warnings-1"></a>
+
+<p>Warning diagnostics emitted by GNU <code class="code">troff</code> are divided into named,
+numbered categories. The name associated with each warning category is
+used by the <samp class="option">-w</samp> and <samp class="option">-W</samp> options. Each category is also
+assigned a power of two; the sum of enabled category values is used by
+the <code class="code">warn</code> request and the <code class="code">.warn</code> register.
+</p>
+<p>Warnings of each category are produced under the following
+circumstances.
+</p>
+<a class="index-entry-id" id="index-categories_002c-warning"></a>
+<a class="index-entry-id" id="index-warning-categories"></a>
+<dl class="table">
+<dt>&lsquo;<samp class="samp">char</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">1</samp>&rsquo;</dt>
+<dd><p>No mounted font defines a glyph for the requested character. This
+category is enabled by default.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">number</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">2</samp>&rsquo;</dt>
+<dd><p>An invalid numeric expression was encountered. This category is enabled
+by default.
+See <a class="xref" href="#Numeric-Expressions">Numeric Expressions</a>.
+</p>
+</dd>
+<dt id='index-filling_002c-and-break-warnings'><span>&lsquo;<samp class="samp">break</samp>&rsquo;<a class="copiable-link" href='#index-filling_002c-and-break-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">4</samp>&rsquo;</dt>
+<dd><a class="index-entry-id" id="index-mode_002c-fill_002c-and-break-warnings"></a>
+<p>A filled output line could not be broken such that its length was less
+than the output line length &lsquo;<samp class="samp">\n[.l]</samp>&rsquo;. This category is enabled by
+default.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">delim</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">8</samp>&rsquo;</dt>
+<dd><p>The closing delimiter in an escape sequence was missing or mismatched.
+</p>
+</dd>
+<dt id='index-ie-request_002c-and-warnings'><span>&lsquo;<samp class="samp">el</samp>&rsquo;<a class="copiable-link" href='#index-ie-request_002c-and-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">16</samp>&rsquo;</dt>
+<dd><a class="index-entry-id" id="index-el-request_002c-and-warnings"></a>
+<p>The <code class="code">el</code> request was encountered with no prior corresponding
+<code class="code">ie</code> request. See <a class="xref" href="#if_002delse">if-else</a>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">scale</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">32</samp>&rsquo;</dt>
+<dd><p>A scaling unit inappropriate to its context was used in a numeric
+expression.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">range</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">64</samp>&rsquo;</dt>
+<dd><p>A numeric expression was out of range for its context.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">syntax</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">128</samp>&rsquo;</dt>
+<dd><p>A self-contradictory hyphenation mode was requested; an empty or
+incomplete numeric expression was encountered; an operand to a numeric
+operator was missing; an attempt was made to define a recursive, empty,
+or nonsensical character class; or a <code class="code">groff</code> extension conditional
+expression operator was used while in compatibility mode.
+</p>
+</dd>
+<dt id='index-di-request_002c-and-warnings'><span>&lsquo;<samp class="samp">di</samp>&rsquo;<a class="copiable-link" href='#index-di-request_002c-and-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">256</samp>&rsquo;</dt>
+<dd><a class="index-entry-id" id="index-da-request_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-box-request_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-boxa-request_002c-and-warnings"></a>
+<p>A <code class="code">di</code>, <code class="code">da</code>, <code class="code">box</code>, or <code class="code">boxa</code> request was invoked
+without an argument when there was no current diversion.
+</p>
+</dd>
+<dt id='index-de_002c-de1_002c-dei-requests_002c-and-warnings'><span>&lsquo;<samp class="samp">mac</samp>&rsquo;<a class="copiable-link" href='#index-de_002c-de1_002c-dei-requests_002c-and-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">512</samp>&rsquo;</dt>
+<dd><a class="index-entry-id" id="index-am_002c-am1_002c-ami-requests_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-ds_002c-ds1-requests_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-as_002c-as1-requests_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-di-request_002c-and-warnings-1"></a>
+<a class="index-entry-id" id="index-da-request_002c-and-warnings-1"></a>
+<a class="index-entry-id" id="index-box_002c-boxa-requests_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-_005c_002a_002c-and-warnings"></a>
+<p>An undefined string, macro, or diversion was used. When such an object
+is dereferenced, an empty one of that name is automatically created.
+So, unless it is later deleted, at most one warning is given for each.
+</p>
+<p>This warning is also emitted upon an attempt to move an unplanted trap
+macro (see <a class="pxref" href="#Page-Location-Traps">Page Location Traps</a>). In such cases, the unplanted macro
+is <em class="emph">not</em> dereferenced, so it is not created if it does not exist.
+</p>
+</dd>
+<dt id='index-nr-request_002c-and-warnings'><span>&lsquo;<samp class="samp">reg</samp>&rsquo;<a class="copiable-link" href='#index-nr-request_002c-and-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">1024</samp>&rsquo;</dt>
+<dd><a class="index-entry-id" id="index-_005cR_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-_005cn_002c-and-warnings"></a>
+<p>An undefined register was used. When an undefined register is
+dereferenced, it is automatically defined with a value of&nbsp;0. So,
+unless it is later deleted, at most one warning is given for each.
+</p>
+</dd>
+<dt id='index-_005ct_002c-and-warnings'><span>&lsquo;<samp class="samp">tab</samp>&rsquo;<a class="copiable-link" href='#index-_005ct_002c-and-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">2048</samp>&rsquo;</dt>
+<dd><p>A tab character was encountered where a number was expected, or appeared
+in an unquoted macro argument.
+</p>
+</dd>
+<dt id='index-_005c_007d_002c-and-warnings'><span>&lsquo;<samp class="samp">right-brace</samp>&rsquo;<a class="copiable-link" href='#index-_005c_007d_002c-and-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">4096</samp>&rsquo;</dt>
+<dd><p>A right brace escape sequence <code class="code">\}</code> was encountered where a number
+was expected.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">missing</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">8192</samp>&rsquo;</dt>
+<dd><p>A request was invoked with a mandatory argument absent.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">input</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">16384</samp>&rsquo;</dt>
+<dd><p>An invalid character occurred on the input stream.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">escape</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">32768</samp>&rsquo;</dt>
+<dd><p>An unsupported escape sequence was encountered.
+</p>
+</dd>
+<dt id='index-compatibility-mode'><span>&lsquo;<samp class="samp">space</samp>&rsquo;<a class="copiable-link" href='#index-compatibility-mode'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">65536</samp>&rsquo;</dt>
+<dd><p>A space was missing between a request or macro and its argument. This
+warning is produced when an undefined name longer than two characters is
+encountered and the first two characters of the name constitute a
+defined name. No request is invoked, no macro called, and an empty
+macro is not defined. This category is enabled by default. It never
+occurs in compatibility mode.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">font</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">131072</samp>&rsquo;</dt>
+<dd><p>A non-existent font was selected, or the selection was ignored because a
+font selection escape sequence was used after the output line
+continuation escape sequence on an input line. This category is enabled
+by default.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">ig</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">262144</samp>&rsquo;</dt>
+<dd><p>An invalid escape sequence occurred in input ignored using the <code class="code">ig</code>
+request. This warning category diagnoses a condition that is an error
+when it occurs in non-ignored input.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">color</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">524288</samp>&rsquo;</dt>
+<dd><p>An undefined color was selected, an attempt was made to define a color
+using an unrecognized color space, an invalid component in a color
+definition was encountered, or an attempt was made to redefine a default
+color.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">file</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">1048576</samp>&rsquo;</dt>
+<dd><p>An attempt was made to load a file that does not exist. This category
+is enabled by default.
+</p></dd>
+</dl>
+
+<p>Two warning names group other warning categories for convenience.
+</p>
+<dl class="table">
+<dt>&lsquo;<samp class="samp">all</samp>&rsquo;</dt>
+<dd><p>All warning categories except &lsquo;<samp class="samp">di</samp>&rsquo;, &lsquo;<samp class="samp">mac</samp>&rsquo; and &lsquo;<samp class="samp">reg</samp>&rsquo;.
+This shorthand is intended to produce all warnings that are useful with
+macro packages written for <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> and its
+descendants, which have less fastidious diagnostics than GNU
+<code class="code">troff</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">w</samp>&rsquo;</dt>
+<dd><p>All warning categories. Authors of documents and macro packages
+targeting <code class="code">groff</code> are encouraged to use this setting.
+</p></dd>
+</dl>
+
+
+<hr>
+</div>
+</div>
+<div class="section-level-extent" id="Implementation-Differences">
+<div class="nav-panel">
+<p>
+Next: <a href="#Safer-Mode" accesskey="n" rel="next">Safer Mode</a>, Previous: <a href="#Debugging" accesskey="p" rel="prev">Debugging</a>, Up: <a href="#GNU-troff-Reference" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Implementation-Differences-1">5.38 Implementation Differences</h3>
+<a class="index-entry-id" id="index-implementation-differences"></a>
+<a class="index-entry-id" id="index-differences-in-implementation"></a>
+<a class="index-entry-id" id="index-incompatibilities-with-AT_0026T-troff"></a>
+
+<p>GNU <code class="code">troff</code> has a number of features that cause incompatibilities
+with documents written for other versions of <code class="code">troff</code>. Some GNU
+extensions to <code class="code">troff</code> have become supported by other
+implementations.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#Safer-Mode" accesskey="1">Safer Mode</a></li>
+<li><a href="#Compatibility-Mode" accesskey="2">Compatibility Mode</a></li>
+<li><a href="#Other-Differences" accesskey="3">Other Differences</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Safer-Mode">
+<div class="nav-panel">
+<p>
+Next: <a href="#Compatibility-Mode" accesskey="n" rel="next">Compatibility Mode</a>, Previous: <a href="#Implementation-Differences" accesskey="p" rel="prev">Implementation Differences</a>, Up: <a href="#Implementation-Differences" accesskey="u" rel="up">Implementation Differences</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Safer-Mode-1">5.38.1 Safer Mode</h4>
+<a class="index-entry-id" id="index-safer-mode-7"></a>
+<a class="index-entry-id" id="index-mode_002c-safer-7"></a>
+
+<a class="index-entry-id" id="index-pi-request_002c-disabled-by-default"></a>
+<a class="index-entry-id" id="index-sy-request_002c-disabled-by-default"></a>
+<p>The formatter operates in &ldquo;safer&rdquo; mode by default; to mitigate risks
+from untrusted input documents, the <code class="code">pi</code> and <code class="code">sy</code> requests are
+disabled. GNU <code class="code">troff</code>&rsquo;s <samp class="option">-U</samp> option enables &ldquo;unsafe
+mode&rdquo;, restoring their function and enabling additional <code class="code">groff</code>
+extension requests, <code class="code">open</code>, <code class="code">opena</code>, and <code class="code">pso</code>.
+See <a class="xref" href="#I_002fO">I/O</a>.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Compatibility-Mode">
+<div class="nav-panel">
+<p>
+Next: <a href="#Safer-Mode" accesskey="n" rel="next">Safer Mode</a>, Previous: <a href="#Other-Differences" accesskey="p" rel="prev">Other Differences</a>, Up: <a href="#Implementation-Differences" accesskey="u" rel="up">Implementation Differences</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Compatibility-Mode-1">5.38.2 Compatibility Mode</h4>
+<a class="index-entry-id" id="index-compatibility-mode-1"></a>
+<a class="index-entry-id" id="index-mode_002c-compatibility"></a>
+
+<a class="index-entry-id" id="index-long-names"></a>
+<a class="index-entry-id" id="index-names_002c-long"></a>
+<a class="index-entry-id" id="index-_005c_002a_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005cn_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>Long identifier names may be GNU <code class="code">troff</code>&rsquo;s most obvious innovation.
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> interprets &lsquo;<samp class="samp">.dsabcd</samp>&rsquo; as defining a
+string &lsquo;<samp class="samp">ab</samp>&rsquo; with contents &lsquo;<samp class="samp">cd</samp>&rsquo;. Normally, GNU <code class="code">troff</code>
+interprets this as a call of a macro named <code class="code">dsabcd</code>.
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> also interprets &lsquo;<samp class="samp">\*[</samp>&rsquo; and &lsquo;<samp class="samp">\n[</samp>&rsquo; as
+an interpolation of a string or register, respectively, named &lsquo;<samp class="samp">[</samp>&rsquo;.
+In GNU <code class="code">troff</code>, however, the &lsquo;<samp class="samp">[</samp>&rsquo; is normally interpreted as
+delimiting a long name. In compatibility mode, GNU <code class="code">troff</code>
+interprets names in the traditional way; they thus can be two characters
+long at most.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cp</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ecp'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-cp"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eC_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.C]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eC_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eC"></a>
+<p>If <var class="var">n</var> is missing or non-zero, turn on compatibility mode;
+otherwise, turn it off.
+</p>
+<p>The read-only register <code class="code">.C</code> is&nbsp;1 if compatibility mode is on,
+0&nbsp;otherwise.
+</p>
+<p>Compatibility mode can be also turned on with the <samp class="option">-C</samp>
+command-line option.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edo"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.do</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002edo'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-do"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ecp_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.cp]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ecp_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ecp-1"></a>
+<p>The <code class="code">do</code> request interprets the string, request, diversion, or
+macro <var class="var">name</var> (along with any further arguments) with compatibility
+mode disabled. Compatibility mode is restored (only if it was active)
+when the <em class="emph">expansion</em> of <var class="var">name</var> is interpreted; that is, the
+restored compatibility state applies to the contents of the macro,
+string, or diversion <var class="var">name</var> as well as data read from files or pipes
+if <var class="var">name</var> is any of the <code class="code">so</code>, <code class="code">soquiet</code>, <code class="code">mso</code>,
+<code class="code">msoquiet</code>, or <code class="code">pso</code> requests.
+</p>
+<p>The following example illustrates several aspects of <code class="code">do</code> behavior.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de mac1
+FOO
+..
+.de1 mac2
+groff
+.mac1
+..
+.de mac3
+compatibility
+.mac1
+..
+.de ma
+\\$1
+..
+.cp 1
+.do mac1
+.do mac2 \&quot; mac2, defined with .de1, calls &quot;mac1&quot;
+.do mac3 \&quot; mac3 calls &quot;ma&quot; with argument &quot;c1&quot;
+.do mac3 \[ti] \&quot; groff syntax accepted in .do arguments
+ &rArr; FOO groff FOO compatibility c1 ~
+</pre></div></div>
+
+<p>The read-only register <code class="code">.cp</code>, meaningful only when dereferenced
+from a <code class="code">do</code> request, is&nbsp;1 if compatibility mode was on when
+the <code class="code">do</code> request was encountered, and 0&nbsp;if it was not. This
+register is specialized and may require a statement of rationale.
+</p>
+<p>When writing macro packages or documents that use GNU <code class="code">troff</code>
+features and which may be mixed with other packages or documents that do
+not&mdash;common scenarios include serial processing of man pages or use of
+the <code class="code">so</code> or <code class="code">mso</code> requests&mdash;you may desire correct operation
+regardless of compatibility mode enablement in the surrounding context.
+It may occur to you to save the existing value of &lsquo;<samp class="samp">\n(.C</samp>&rsquo; into a
+register, say, &lsquo;<samp class="samp">_C</samp>&rsquo;, at the beginning of your file, turn
+compatibility mode off with &lsquo;<samp class="samp">.cp 0</samp>&rsquo;, then restore it from that
+register at the end with &lsquo;<samp class="samp">.cp \n(_C</samp>&rsquo;. At the same time, a modular
+design of a document or macro package may lead you to multiple layers of
+inclusion. You cannot use the same register name everywhere lest you
+&ldquo;clobber&rdquo; the value from a preceding or enclosing context. The
+two-character register name space of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> is
+confining and mnemonically challenging; you may wish to use the more
+capacious name space of GNU <code class="code">troff</code>. However, attempting &lsquo;<samp class="samp">.nr
+_my_saved_C \n(.C</samp>&rsquo; will not work in compatibility mode; the register
+name is too long. &ldquo;This is exactly what <code class="code">do</code> is for,&rdquo; you think,
+&lsquo;<samp class="samp">.do nr _my_saved_C \n(.C</samp>&rsquo;. The foregoing will always save zero to
+your register, because <code class="code">do</code> turns compatibility mode <em class="emph">off</em>
+while it interprets its argument list.
+</p>
+<p>To robustly save compatibility mode before switching it off, use
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.do nr _my_saved_C \n[.cp]
+.cp 0
+</pre></div></div>
+
+<p>at the beginning of your file, followed by
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.cp \n[_my_saved_C]
+.do rr _my_saved_C
+</pre></div></div>
+
+<p>at the end. As in the C language, we all have to share one big
+name space, so choose a register name that is unlikely to collide with
+other uses.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-input-level-in-delimited-arguments"></a>
+<a class="index-entry-id" id="index-interpolation-depth-in-delimited-arguments"></a>
+<a class="index-entry-id" id="index-delimited-arguments_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>Normally, GNU <code class="code">troff</code> preserves the interpolation depth in
+delimited arguments, but not in compatibility mode.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds xx '
+\w'abc\*(xxdef'
+ &rArr; 168 <span class="r">(normal mode on a terminal device)</span>
+ &rArr; 72def' <span class="r">(compatibility mode on a terminal device)</span>
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_005cf_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005cH_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005cs_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005cS_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>Furthermore, the escape sequences <code class="code">\f</code>, <code class="code">\H</code>, <code class="code">\m</code>,
+<code class="code">\M</code>, <code class="code">\R</code>, <code class="code">\s</code>, and <code class="code">\S</code> are transparent for the
+purpose of recognizing a control character at the beginning of a line
+only in compatibility mode. For example, this code produces bold output
+in both cases, but the text differs.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de xx
+Hello!
+..
+\fB.xx\fP
+ &rArr; .xx <span class="r">(normal mode)</span>
+ &rArr; Hello! <span class="r">(compatibility mode)</span>
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_005cs_002c-incompatibilities-with-AT_0026T-troff-1"></a>
+<p>Normally, the syntax form <code class="code">\s</code><var class="var">n</var> accepts only a single
+character (a digit) for <var class="var">n</var>, consistently with other forms that
+originated in <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, like <code class="code">\*</code>, <code class="code">\$</code>,
+<code class="code">\f</code>, <code class="code">\g</code>, <code class="code">\k</code>, <code class="code">\n</code>, and <code class="code">\z</code>. In
+compatibility mode only, a non-zero&nbsp;<var class="var">n</var> must be in the range
+4&ndash;39. Legacy documents relying upon this quirk of parsing<a class="footnote" id="DOCF120" href="#FOOT120"><sup>120</sup></a> should be migrated to another
+<code class="code">\s</code> form.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Other-Differences">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Compatibility-Mode" accesskey="p" rel="prev">Compatibility Mode</a>, Up: <a href="#Implementation-Differences" accesskey="u" rel="up">Implementation Differences</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Other-Differences-1">5.38.3 Other Differences</h4>
+
+<p><code class="code">groff</code> request names unrecognized by other <code class="code">troff</code>
+implementations will likely be ignored by them; escape sequences that
+are <code class="code">groff</code> extensions are liable to be interpreted as if the
+escape character were not present.
+<a class="index-entry-id" id="index-_005c_007e_002c-incompatibilities-with-AT_0026T-troff"></a>
+For example, the adjustable, non-breaking escape sequence <code class="code">\~</code>
+is also supported by Heirloom Doctools <code class="code">troff</code> 050915 (September
+2005), <code class="code">mandoc</code> 1.9.5 (2009-09-21), <code class="code">neatroff</code> (commit
+1c6ab0f6e, 2016-09-13), and Plan&nbsp;9 from User Space <code class="code">troff</code>
+(commit 93f8143600, 2022-08-12), but not by Solaris or Documenter&rsquo;s
+Workbench <code class="code">troff</code>s.
+See <a class="xref" href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a>.
+</p>
+<a class="index-entry-id" id="index-_005cA_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_007c_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_005e_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_0026_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_007b_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_007d_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005cSP_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_0027_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_0060_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_002d_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_005f_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_0021_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_0025_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005cc_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>GNU <code class="code">troff</code> does not allow the use of the escape sequences
+<code class="code">\|</code>, <code class="code">\^</code>, <code class="code">\&amp;</code>, <code class="code">\{</code>, <code class="code">\}</code>,
+<code class="code">\<kbd class="key">SP</kbd></code>, <code class="code">\'</code>, <code class="code">\`</code>, <code class="code">\-</code>, <code class="code">\_</code>, <code class="code">\!</code>,
+<code class="code">\%</code>, and <code class="code">\c</code> in identifiers; <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>
+does. The <code class="code">\A</code> escape sequence (see <a class="pxref" href="#Identifiers">Identifiers</a>) may be
+helpful in avoiding use of these escape sequences in names.
+</p>
+<a class="index-entry-id" id="index-adjustment-to-both-margins_002c-difference-from-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-rivers"></a>
+<p>When adjusting to both margins, <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> at first
+adjusts spaces starting from the right; GNU <code class="code">troff</code> begins from
+the left. Both implementations adjust spaces from opposite ends on
+alternating output lines in this adjustment mode to prevent &ldquo;rivers&rdquo;
+in the text.
+</p>
+<a class="index-entry-id" id="index-hyphenation_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>GNU <code class="code">troff</code> does not always hyphenate words as <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> does. The <abbr class="acronym">AT&amp;T</abbr> implementation uses a set of
+hard-coded rules specific to English, while GNU <code class="code">troff</code> uses
+language-specific hyphenation pattern files derived from TeX.
+Furthermore, in old versions of <code class="code">troff</code> there was a limited amount
+of space to store hyphenation exceptions (arguments to the <code class="code">hw</code>
+request); GNU <code class="code">troff</code> has no such restriction.
+</p>
+<a class="index-entry-id" id="index-output-device-name-string-_0028_002eT_0029_002c-in-other-implementations"></a>
+<p>GNU <code class="code">troff</code> predefines a string <code class="code">.T</code> containing the argument
+given to the <samp class="option">-T</samp> command-line option, namely the current output
+device (for example, &lsquo;<samp class="samp">pdf</samp>&rsquo; or &lsquo;<samp class="samp">utf8</samp>&rsquo;). The existence of this
+string is a common feature of post-CSTR&nbsp;#54
+<code class="code">troff</code>s<a class="footnote" id="DOCF121" href="#FOOT121"><sup>121</sup></a> but valid values are specific
+to each implementation.
+</p>
+<a class="index-entry-id" id="index-removal-of-read_002donly-registers_002c-incompatibility-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-register_002c-read_002donly_002c-removal_002c-incompatibility-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-read_002donly-register-removal_002c-incompatibility-with-AT_0026T-troff"></a>
+<p><abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> ignored attempts to remove read-only
+registers; GNU <code class="code">troff</code> honors such requests. See <a class="xref" href="#Built_002din-Registers">Built-in Registers</a>.
+</p>
+<a class="index-entry-id" id="index-output-device-usage-register-_0028_002eT_0029_002c-incompatibility-with-AT_0026T-troff"></a>
+<p>The (read-only) register <code class="code">.T</code> interpolates&nbsp;1 if GNU
+<code class="code">troff</code> is called with the <samp class="option">-T</samp> command-line option, and
+0&nbsp;otherwise. This behavior differs from AT&amp;T <code class="code">troff</code>, which
+interpolated&nbsp;1 only if <code class="code">nroff</code> was the formatter and was
+called with <samp class="option">-T</samp>.
+</p>
+<a class="index-entry-id" id="index-lf-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p><abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> and other implementations handle the
+<code class="code">lf</code> request differently. For them, its <var class="var">line</var> argument
+changes the line number of the <em class="emph">current</em> line.
+</p>
+<a class="index-entry-id" id="index-environment-availability-and-naming_002c-incompatibilities-with"></a>
+<p><abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> had only environments named &lsquo;<samp class="samp">0</samp>&rsquo;,
+&lsquo;<samp class="samp">1</samp>&rsquo;, and &lsquo;<samp class="samp">2</samp>&rsquo;. In GNU <code class="code">troff</code>, any number of environments
+may exist, using any valid identifiers for their names
+(see <a class="pxref" href="#Identifiers">Identifiers</a>.)
+</p>
+<a class="index-entry-id" id="index-fractional-point-sizes-1"></a>
+<a class="index-entry-id" id="index-fractional-type-sizes-1"></a>
+<a class="index-entry-id" id="index-point-sizes_002c-fractional-1"></a>
+<a class="index-entry-id" id="index-type-sizes_002c-fractional-1"></a>
+<a class="index-entry-id" id="index-sizes_002c-fractional"></a>
+<a class="index-entry-id" id="index-ps-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>Fractional type sizes cause one noteworthy incompatibility. In
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> the <code class="code">ps</code> request ignores scaling units
+and thus &lsquo;<samp class="samp">.ps 10u</samp>&rsquo; sets the type size to 10&nbsp;points, whereas in
+GNU <code class="code">troff</code> it sets the type size to 10&nbsp;<em class="emph">scaled</em> points.
+See <a class="xref" href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a>.
+</p>
+<a class="index-entry-id" id="index-ab-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>The <code class="code">ab</code> request differs from <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>:
+GNU <code class="code">troff</code> writes no message to the standard error stream if no
+arguments are given, and it exits with a failure status instead of a
+successful one.
+</p>
+<a class="index-entry-id" id="index-bp-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>The <code class="code">bp</code> request differs from <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>:
+GNU <code class="code">troff</code> does not accept a scaling unit on the argument, a page
+number; the former (somewhat uselessly) does.
+</p>
+<a class="index-entry-id" id="index-pm-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>The <code class="code">pm</code> request differs from <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>:
+GNU <code class="code">troff</code> reports the sizes of macros, strings, and diversions in
+bytes and ignores an argument to report only the sum of the sizes.
+</p>
+<a class="index-entry-id" id="index-ss-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>Unlike <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, GNU <code class="code">troff</code> does not ignore the
+<code class="code">ss</code> request if the output is a terminal device; instead, the
+values of minimal inter-word and additional inter-sentence space are
+each rounded down to the nearest multiple of&nbsp;12.
+</p>
+<a class="index-entry-id" id="index-bd-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-cs-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-tr-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-fp-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-input-characters-and-output-glyphs_002c-compatibility-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-output-glyphs_002c-and-input-characters_002c-compatibility-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-characters_002c-input_002c-and-output-glyphs_002c-compatibility-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-glyphs_002c-output_002c-and-input-characters_002c-compatibility-with-AT_0026T-troff"></a>
+<p>In GNU <code class="code">troff</code> there is a fundamental difference between
+(unformatted) characters and (formatted) glyphs. Everything that
+affects how a glyph is output is stored with the glyph node; once a
+glyph node has been constructed, it is unaffected by any subsequent
+requests that are executed, including <code class="code">bd</code>, <code class="code">cs</code>, <code class="code">tkf</code>,
+<code class="code">tr</code>, or <code class="code">fp</code> requests. Normally, glyphs are constructed from
+characters immediately before the glyph is added to an output line.
+Macros, diversions, and strings are all, in fact, the same type of
+object; they contain a sequence of intermixed character and glyph nodes.
+Special characters transform from one to the other: before being added
+to the output, they behave as characters; afterward, they are glyphs. A
+glyph node does not behave like a character node when it is processed by
+a macro: it does not inherit any of the special properties that the
+character from which it was constructed might have had. For example,
+the input
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.di x
+\\\\
+.br
+.di
+.x
+</pre></div></div>
+
+<p>produces &lsquo;<samp class="samp">\\</samp>&rsquo; in GNU <code class="code">troff</code>. Each pair of backslashes
+becomes one backslash <em class="emph">glyph</em>; the resulting backslashes are thus
+not interpreted as escape <em class="emph">characters</em> when they are reread as the
+diversion is output. <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> <em class="emph">would</em> interpret
+them as escape characters when rereading them and end up printing one
+&lsquo;<samp class="samp">\</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-printing-backslash-_0028_005c_005c_002c-_005ce_002c-_005cE_002c-_005c_005brs_005d_0029"></a>
+<a class="index-entry-id" id="index-backslash_002c-printing-_0028_005c_005c_002c-_005ce_002c-_005cE_002c-_005c_005brs_005d_0029"></a>
+<a class="index-entry-id" id="index-_005ce_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_0021_002c-incompatibilities-with-AT_0026T-troff-1"></a>
+<a class="index-entry-id" id="index-_005c_003f_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-transparent-output_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-output_002c-transparent_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>One correct way to obtain a printable backslash in most documents is to
+use the <code class="code">\e</code> escape sequence; this always prints a single instance
+of the current escape character,<a class="footnote" id="DOCF122" href="#FOOT122"><sup>122</sup></a> regardless of whether or not it is used in a diversion; it
+also works in both GNU <code class="code">troff</code> and <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>.
+</p>
+<p>The other correct way, appropriate in contexts independent of the
+backslash&rsquo;s common use as a <code class="code">troff</code> escape character&mdash;perhaps in
+discussion of character sets or other programming languages&mdash;is
+the character escape <code class="code">\(rs</code> or <code class="code">\[rs]</code>, for &ldquo;reverse
+solidus&rdquo;, from its name in the <abbr class="acronym">ECMA-6</abbr> (<abbr class="acronym">ISO/IEC</abbr> 646)
+standard.<a class="footnote" id="DOCF123" href="#FOOT123"><sup>123</sup></a>
+</p>
+<p>To store an escape sequence in a diversion that is interpreted when the
+diversion is reread, either use the traditional <code class="code">\!</code> transparent
+output facility, or, if this is unsuitable, the new <code class="code">\?</code> escape
+sequence. See <a class="xref" href="#Diversions">Diversions</a> and <a class="ref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>.
+</p>
+<p>In the somewhat pathological case where a diversion exists containing a
+partially collected line and a partially collected line at the top-level
+diversion has never existed, <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> will output the
+partially collected line at the end of input; GNU <code class="code">troff</code> will not.
+</p>
+
+
+
+
+<hr>
+</div>
+</div>
+</div>
+<div class="chapter-level-extent" id="File-Formats">
+<div class="nav-panel">
+<p>
+Next: <a href="#Copying-This-Manual" accesskey="n" rel="next">Copying This Manual</a>, Previous: <a href="#GNU-troff-Reference" accesskey="p" rel="prev">GNU <code class="code">troff</code> Reference</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="chapter" id="File-Formats-1">6 File Formats</h2>
+<a class="index-entry-id" id="index-file-formats"></a>
+<a class="index-entry-id" id="index-formats_002c-file"></a>
+
+<p>All files read and written by <code class="code">gtroff</code> are text files. The
+following two sections describe their format.
+</p>
+
+
+
+
+<ul class="mini-toc">
+<li><a href="#gtroff-Output" accesskey="1"><code class="code">gtroff</code> Output</a></li>
+<li><a href="#Device-and-Font-Description-Files" accesskey="2">Device and Font Description Files</a></li>
+</ul>
+<hr>
+<div class="section-level-extent" id="gtroff-Output">
+<div class="nav-panel">
+<p>
+Next: <a href="#Device-and-Font-Description-Files" accesskey="n" rel="next">Device and Font Description Files</a>, Previous: <a href="#File-Formats" accesskey="p" rel="prev">File Formats</a>, Up: <a href="#File-Formats" accesskey="u" rel="up">File Formats</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="gtroff-Output-1">6.1 <code class="code">gtroff</code> Output</h3>
+<a class="index-entry-id" id="index-gtroff_002c-output"></a>
+<a class="index-entry-id" id="index-output_002c-gtroff"></a>
+
+<p>This section describes the <code class="code">groff</code> intermediate output format
+produced by GNU <code class="code">troff</code>.
+</p>
+<p>As <code class="code">groff</code> is a wrapper program around GNU <code class="code">troff</code> and
+automatically calls an output driver (or &ldquo;postprocessor&rdquo;), this output
+does not show up normally. This is why it is called
+<em class="emph">intermediate</em>. <code class="code">groff</code> provides the option <samp class="option">-Z</samp> to
+inhibit postprocessing such that the produced intermediate output is
+sent to standard output just as it is when calling GNU <code class="code">troff</code>
+directly.
+</p>
+<a class="index-entry-id" id="index-troff-output"></a>
+<a class="index-entry-id" id="index-output_002c-troff"></a>
+<a class="index-entry-id" id="index-intermediate-output"></a>
+<a class="index-entry-id" id="index-output_002c-intermediate"></a>
+<p>Here, the term <em class="dfn">troff output</em> describes what is output by
+GNU <code class="code">troff</code>, while <em class="dfn">intermediate output</em> refers to the language
+that is accepted by the parser that prepares this output for the output
+drivers. This parser handles whitespace more flexibly than
+<abbr class="acronym">AT&amp;T</abbr>&rsquo;s implementation and implements obsolete elements for
+compatibility; otherwise, both formats are the same.<a class="footnote" id="DOCF124" href="#FOOT124"><sup>124</sup></a>
+</p>
+<p>The main purpose of the intermediate output concept is to facilitate the
+development of postprocessors by providing a common programming
+interface for all devices. It has a language of its own that is
+completely different from the <code class="code">gtroff</code> language. While the
+<code class="code">gtroff</code> language is a high-level programming language for text
+processing, the intermediate output language is a kind of low-level
+assembler language by specifying all positions on the page for writing
+and drawing.
+</p>
+<p>The intermediate output produced by <code class="code">gtroff</code> is fairly readable,
+while output from <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> is rather hard to
+understand because of strange habits that are still supported, but not
+used any longer by <code class="code">gtroff</code>.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#Language-Concepts" accesskey="1">Language Concepts</a></li>
+<li><a href="#Command-Reference" accesskey="2">Command Reference</a></li>
+<li><a href="#Intermediate-Output-Examples" accesskey="3">Intermediate Output Examples</a></li>
+<li><a href="#Output-Language-Compatibility" accesskey="4">Output Language Compatibility</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="Language-Concepts">
+<div class="nav-panel">
+<p>
+Next: <a href="#Command-Reference" accesskey="n" rel="next">Command Reference</a>, Previous: <a href="#gtroff-Output" accesskey="p" rel="prev"><code class="code">gtroff</code> Output</a>, Up: <a href="#gtroff-Output" accesskey="u" rel="up"><code class="code">gtroff</code> Output</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Language-Concepts-1">6.1.1 Language Concepts</h4>
+
+<p>The fundamental operation of the GNU <code class="code">troff</code> formatter is the
+translation of the <code class="code">groff</code> input language into a device-independent
+form primarily concerned with what has to be written or drawn at
+specific positions on the output device. This language is simple and
+imperative. In the following discussion, the term <em class="dfn">command</em> always
+refers to this intermediate output language, and never to the
+<code class="code">groff</code> language intended for direct use by document authors.
+Intermediate output commands comprise several categories: glyph output;
+font, color, and text size selection; motion of the printing position;
+page advancement; drawing of geometric objects; and device control
+commands, a catch-all for operations not easily classified as any of the
+foregoing, such as directives to start and stop output, identify the
+intended output device, or place URL hyperlinks in supported output
+formats.
+</p>
+
+<ul class="mini-toc">
+<li><a href="#Separation" accesskey="1">Separation</a></li>
+<li><a href="#Argument-Units" accesskey="2">Argument Units</a></li>
+<li><a href="#Document-Parts" accesskey="3">Document Parts</a></li>
+</ul>
+<hr>
+<div class="subsubsection-level-extent" id="Separation">
+<div class="nav-panel">
+<p>
+Next: <a href="#Argument-Units" accesskey="n" rel="next">Argument Units</a>, Previous: <a href="#Language-Concepts" accesskey="p" rel="prev">Language Concepts</a>, Up: <a href="#Language-Concepts" accesskey="u" rel="up">Language Concepts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Separation-1">6.1.1.1 Separation</h4>
+
+<p><abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> output has strange requirements regarding
+whitespace. The <code class="code">gtroff</code> output parser, however, is more tolerant,
+making whitespace maximally optional. Such characters, i.e., the tab,
+space, and newline, always have a syntactical meaning. They are never
+printable because spacing within the output is always done by
+positioning commands.
+</p>
+<p>Any sequence of space or tab characters is treated as a single
+<em class="dfn">syntactical space</em>. It separates commands and arguments, but is
+only required when there would occur a clashing between the command code
+and the arguments without the space. Most often, this happens when
+variable-length command names, arguments, argument lists, or command
+clusters meet. Commands and arguments with a known, fixed length need
+not be separated by syntactical space.
+</p>
+<p>A line break is a syntactical element, too. Every command argument can
+be followed by whitespace, a comment, or a newline character. Thus a
+<em class="dfn">syntactical line break</em> is defined to consist of optional
+syntactical space that is optionally followed by a comment, and a
+newline character.
+</p>
+<p>The normal commands, those for positioning and text, consist of a single
+letter taking a fixed number of arguments. For historical reasons, the
+parser allows stacking of such commands on the same line, but
+fortunately, in <code class="code">gtroff</code>&rsquo;s intermediate output, every command with
+at least one argument is followed by a line break, thus providing
+excellent readability.
+</p>
+<p>The other commands&mdash;those for drawing and device controlling&mdash;have a
+more complicated structure; some recognize long command names, and some
+take a variable number of arguments. So all &lsquo;<samp class="samp">D</samp>&rsquo; and &lsquo;<samp class="samp">x</samp>&rsquo;
+commands were designed to request a syntactical line break after their
+last argument. Only one command, &lsquo;<samp class="samp">x&nbsp;X</samp>&rsquo;<!-- /@w -->, has an argument that
+can span several input lines; all other commands must have all of
+their arguments on the same line as the command, i.e., the arguments may
+not be split by a line break.
+</p>
+<p>Empty lines (these are lines containing only space and/or a comment),
+can occur everywhere. They are just ignored.
+</p>
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Argument-Units">
+<div class="nav-panel">
+<p>
+Next: <a href="#Document-Parts" accesskey="n" rel="next">Document Parts</a>, Previous: <a href="#Separation" accesskey="p" rel="prev">Separation</a>, Up: <a href="#Language-Concepts" accesskey="u" rel="up">Language Concepts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Argument-Units-1">6.1.1.2 Argument Units</h4>
+
+<p>Some commands take integer arguments that are assumed to represent
+values in a measurement unit, but the letter for the corresponding
+scaling unit is not written with the output command arguments. Most
+commands assume the scaling unit &lsquo;<samp class="samp">u</samp>&rsquo;, the basic unit of the device,
+some use &lsquo;<samp class="samp">z</samp>&rsquo;, the scaled point unit of the device, while others,
+such as the color commands, expect plain integers.
+</p>
+<p>Single characters can have the eighth bit set, as can the names of
+fonts and special characters. The names of characters and fonts can be
+of arbitrary length. A character that is to be printed is always in
+the current font.
+</p>
+<p>A string argument is always terminated by the next whitespace character
+(space, tab, or newline); an embedded &lsquo;<samp class="samp">#</samp>&rsquo; character is regarded as
+part of the argument, not as the beginning of a comment command. An
+integer argument is already terminated by the next non-digit character,
+which then is regarded as the first character of the next argument or
+command.
+</p>
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Document-Parts">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Argument-Units" accesskey="p" rel="prev">Argument Units</a>, Up: <a href="#Language-Concepts" accesskey="u" rel="up">Language Concepts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Document-Parts-1">6.1.1.3 Document Parts</h4>
+
+<p>A correct intermediate output document consists of two parts, the
+<em class="dfn">prologue</em> and the <em class="dfn">body</em>.
+</p>
+<p>The task of the prologue is to set the general device parameters using
+three exactly specified commands. <code class="code">gtroff</code>&rsquo;s prologue is
+guaranteed to consist of the following three lines (in that order):
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">x T <var class="var">device</var>
+x res <var class="var">n</var> <var class="var">h</var> <var class="var">v</var>
+x init
+</pre></div></div>
+
+<p>with the arguments set as outlined in <a class="ref" href="#Device-Control-Commands">Device Control Commands</a>.
+The parser for the intermediate output format is able to interpret
+additional whitespace and comments as well even in the prologue.
+</p>
+<p>The body is the main section for processing the document data.
+Syntactically, it is a sequence of any commands different from the ones
+used in the prologue. Processing is terminated as soon as the first
+&lsquo;<samp class="samp">x&nbsp;stop</samp>&rsquo;<!-- /@w --> command is encountered; the last line of any
+<code class="code">gtroff</code> intermediate output always contains such a command.
+</p>
+<p>Semantically, the body is page oriented. A new page is started by a
+&lsquo;<samp class="samp">p</samp>&rsquo; command. Positioning, writing, and drawing commands are always
+done within the current page, so they cannot occur before the first
+&lsquo;<samp class="samp">p</samp>&rsquo; command. Absolute positioning (by the &lsquo;<samp class="samp">H</samp>&rsquo; and &lsquo;<samp class="samp">V</samp>&rsquo;
+commands) is done relative to the current page; all other positioning is
+done relative to the current location within this page.
+</p>
+
+<hr>
+</div>
+</div>
+<div class="subsection-level-extent" id="Command-Reference">
+<div class="nav-panel">
+<p>
+Next: <a href="#Intermediate-Output-Examples" accesskey="n" rel="next">Intermediate Output Examples</a>, Previous: <a href="#Language-Concepts" accesskey="p" rel="prev">Language Concepts</a>, Up: <a href="#gtroff-Output" accesskey="u" rel="up"><code class="code">gtroff</code> Output</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Command-Reference-1">6.1.2 Command Reference</h4>
+
+<p>This section describes all intermediate output commands, both from
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> as well as the <code class="code">gtroff</code> extensions.
+</p>
+
+<ul class="mini-toc">
+<li><a href="#Comment-Command" accesskey="1">Comment Command</a></li>
+<li><a href="#Simple-Commands" accesskey="2">Simple Commands</a></li>
+<li><a href="#Graphics-Commands" accesskey="3">Graphics Commands</a></li>
+<li><a href="#Device-Control-Commands" accesskey="4">Device Control Commands</a></li>
+<li><a href="#Obsolete-Command" accesskey="5">Obsolete Command</a></li>
+</ul>
+<hr>
+<div class="subsubsection-level-extent" id="Comment-Command">
+<div class="nav-panel">
+<p>
+Next: <a href="#Simple-Commands" accesskey="n" rel="next">Simple Commands</a>, Previous: <a href="#Command-Reference" accesskey="p" rel="prev">Command Reference</a>, Up: <a href="#Command-Reference" accesskey="u" rel="up">Command Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Comment-Command-1">6.1.2.1 Comment Command</h4>
+
+<dl class="table">
+<dt><code class="code">#<var class="var">anything</var>&lsaquo;<span class="r">end of line</span>&rsaquo;</code></dt>
+<dd><p>A comment. Ignore any characters from the &lsquo;<samp class="samp">#</samp>&rsquo; character up to the
+next newline character.
+</p>
+<p>This command is the only possibility for commenting in the intermediate
+output. Each comment can be preceded by arbitrary syntactical space;
+every command can be terminated by a comment.
+</p></dd>
+</dl>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Simple-Commands">
+<div class="nav-panel">
+<p>
+Next: <a href="#Graphics-Commands" accesskey="n" rel="next">Graphics Commands</a>, Previous: <a href="#Comment-Command" accesskey="p" rel="prev">Comment Command</a>, Up: <a href="#Command-Reference" accesskey="u" rel="up">Command Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Simple-Commands-1">6.1.2.2 Simple Commands</h4>
+
+<p>The commands in this subsection have a command code consisting of a
+single character, taking a fixed number of arguments. Most of them are
+commands for positioning and text writing. These commands are tolerant
+of whitespace. Optionally, syntactical space can be inserted before,
+after, and between the command letter and its arguments. All of these
+commands are stackable; i.e., they can be preceded by other simple
+commands or followed by arbitrary other commands on the same line. A
+separating syntactical space is necessary only when two integer
+arguments would clash or if the preceding argument ends with a string
+argument.
+</p>
+<dl class="table">
+<dt><code class="code">C <var class="var">id</var>&lsaquo;<span class="r">whitespace</span>&rsaquo;</code></dt>
+<dd><p>Typeset the glyph of the special character <var class="var">id</var>. Trailing
+syntactical space is necessary to allow special character names of
+arbitrary length. The drawing position is not advanced.
+</p>
+</dd>
+<dt><code class="code">c <var class="var">g</var></code></dt>
+<dd><p>Typeset the glyph of the ordinary character&nbsp;<var class="var">c</var>. The drawing
+position is not advanced.
+</p>
+</dd>
+<dt><code class="code">f <var class="var">n</var></code></dt>
+<dd><p>Select the font mounted at position&nbsp;<var class="var">n</var>. <var class="var">n</var>&nbsp;cannot
+be negative.
+</p>
+</dd>
+<dt><code class="code">H <var class="var">n</var></code></dt>
+<dd><p>Horizontally move the drawing position to <var class="var">n</var>&nbsp;basic units from
+the left edge of the page. <var class="var">n</var>&nbsp;cannot be negative.
+</p>
+</dd>
+<dt><code class="code">h <var class="var">n</var></code></dt>
+<dd><p>Move the drawing position right <var class="var">n</var> basic units. <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> allowed negative <var class="var">n</var>; GNU <code class="code">troff</code> does not produce
+such values, but <code class="code">groff</code>&rsquo;s output driver library handles them.
+</p>
+</dd>
+<dt><code class="code">m <var class="var">color-scheme</var> <span class="r">[</span><var class="var">component</var> &hellip;<span class="r">]</span></code></dt>
+<dd><p>Select the stroke color using the <var class="var">component</var>s in the color space
+<var class="var">scheme</var>. Each <var class="var">component</var> is an integer between 0 and 65535.
+The quantity of components and their meanings vary with each
+<var class="var">scheme</var>. This command is a <code class="code">groff</code> extension.
+</p>
+<dl class="table">
+<dt><code class="code">mc <var class="var">cyan</var> <var class="var">magenta</var> <var class="var">yellow</var></code></dt>
+<dd><p>Use the CMY color scheme with components cyan, magenta, and yellow.
+</p>
+</dd>
+<dt><code class="code">md</code></dt>
+<dd><p>Use the default color (no components; black in most cases).
+</p>
+</dd>
+<dt><code class="code">mg <var class="var">gray</var></code></dt>
+<dd><p>Use a grayscale color scheme with a component ranging between 0 (black)
+and 65535 (white).
+</p>
+</dd>
+<dt><code class="code">mk <var class="var">cyan</var> <var class="var">magenta</var> <var class="var">yellow</var> <var class="var">black</var></code></dt>
+<dd><p>Use the CMYK color scheme with components cyan, magenta, yellow, and
+black.
+</p>
+</dd>
+<dt><code class="code">mr <var class="var">red</var> <var class="var">green</var> <var class="var">blue</var></code></dt>
+<dd><p>Use the RGB color scheme with components red, green, and blue.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code class="code">N <var class="var">n</var></code></dt>
+<dd><p>Typeset the glyph with index&nbsp;<var class="var">n</var> in the current font.
+<var class="var">n</var>&nbsp;is normally a non-negative integer. The drawing position
+is not advanced. The <code class="code">html</code> and <code class="code">xhtml</code> devices use this
+command with negative&nbsp;<var class="var">n</var> to produce unbreakable space; the
+absolute value of <var class="var">n</var> is taken and interpreted in basic units.
+</p>
+</dd>
+<dt><code class="code">n <var class="var">b</var> <var class="var">a</var></code></dt>
+<dd><p>Indicate a break. No action is performed; the command is present to
+make the output more easily parsed. The integers <var class="var">b</var>
+and&nbsp;<var class="var">a</var> describe the vertical space amounts before and after
+the break, respectively. GNU <code class="code">troff</code> issues this command but
+<code class="code">groff</code>&rsquo;s output driver library ignores it. See <code class="code">v</code> and
+<code class="code">V</code> below.
+</p>
+</dd>
+<dt><code class="code">p <var class="var">n</var></code></dt>
+<dd><p>Begin a new page, setting its number to&nbsp;<var class="var">n</var>. Each page is
+independent, even from those using the same number. The vertical
+drawing position is set to&nbsp;0. All positioning, writing, and
+drawing commands are interpreted in the context of a page, so a
+<code class="code">p</code>&nbsp;command must precede them.
+</p>
+</dd>
+<dt><code class="code">s <var class="var">n</var></code></dt>
+<dd><p>Set type size to <var class="var">n</var> scaled points (unit&nbsp;<code class="code">z</code> in GNU
+<code class="code">troff</code>.
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> used unscaled points <code class="code">p</code> instead;
+see <a class="ref" href="#Output-Language-Compatibility">Output Language Compatibility</a>.
+</p>
+</dd>
+<dt><code class="code">t <var class="var">xyz</var>&lsaquo;<span class="r">whitespace</span>&rsaquo;</code></dt>
+<dt><code class="code">t <var class="var">xyz</var> <var class="var">dummy-arg</var>&lsaquo;<span class="r">whitespace</span>&rsaquo;</code></dt>
+<dd><p>Typeset a word <var class="var">xyz</var>; that is, set a sequence of ordinary glyphs
+named <var class="var">x</var>, <var class="var">y</var>, <var class="var">z</var>, &hellip;, terminated by a space
+character or a line break; an optional second integer argument is
+ignored (this allows the formatter to generate an even number of
+arguments). Each glyph is set at the current drawing position, and the position is
+then advanced horizontally by the glyph&rsquo;s width. A glyph&rsquo;s width is
+read from its metrics in the font description file, scaled to the
+current type size, and rounded to a multiple of the horizontal motion
+quantum. Use the <code class="code">C</code> command to emplace glyphs of special
+characters. The <code class="code">t</code>&nbsp;command is a <code class="code">groff</code> extension and
+is output only for devices whose <samp class="file">DESC</samp> file contains the
+<code class="code">tcommand</code> directive; see <a class="ref" href="#DESC-File-Format"><samp class="file">DESC</samp> File Format</a>.
+</p>
+</dd>
+<dt><code class="code">u <var class="var">n</var> <var class="var">xyz</var>&lsaquo;<span class="r">whitespace</span>&rsaquo;</code></dt>
+<dd><p>Typeset word <var class="var">xyz</var> with track kerning. As <code class="code">t</code>, but after
+placing each glyph, the drawing position is further advanced
+horizontally by&nbsp;<var class="var">n</var> basic units (<code class="code">u</code>). The
+<code class="code">u</code>&nbsp;command is a <code class="code">groff</code> extension and is output only for
+devices whose <samp class="file">DESC</samp> file contains the <code class="code">tcommand</code> directive;
+see <a class="ref" href="#DESC-File-Format"><samp class="file">DESC</samp> File Format</a>.
+</p>
+</dd>
+<dt><code class="code">V <var class="var">n</var></code></dt>
+<dd><p>Vertically move the drawing position to <var class="var">n</var>&nbsp;basic units from
+the top edge of the page. <var class="var">n</var>&nbsp;cannot be negative.
+</p>
+</dd>
+<dt><code class="code">v <var class="var">n</var></code></dt>
+<dd><p>Move the drawing position down <var class="var">n</var> basic units. <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> allowed negative <var class="var">n</var>; GNU <code class="code">troff</code> does not produce
+such values, but <code class="code">groff</code>&rsquo;s output driver library handles them.
+</p>
+</dd>
+<dt><code class="code">w</code></dt>
+<dd><p>Indicate an inter-word space. No action is performed; the command is
+present to make the output more easily parsed. Only adjustable,
+breakable inter-word spaces are thus described; those resulting from
+<code class="code">\~</code> or horizontal motion escape sequences are not. GNU
+<code class="code">troff</code> issues this command but <code class="code">groff</code>&rsquo;s output driver
+library ignores it. See <code class="code">h</code> and <code class="code">H</code> above.
+</p></dd>
+</dl>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Graphics-Commands">
+<div class="nav-panel">
+<p>
+Next: <a href="#Device-Control-Commands" accesskey="n" rel="next">Device Control Commands</a>, Previous: <a href="#Simple-Commands" accesskey="p" rel="prev">Simple Commands</a>, Up: <a href="#Command-Reference" accesskey="u" rel="up">Command Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Graphics-Commands-1">6.1.2.3 Graphics Commands</h4>
+
+<p>Each graphics or drawing command in the intermediate output starts with
+the letter &lsquo;<samp class="samp">D</samp>&rsquo;, followed by one or two characters that specify a
+subcommand; this is followed by a fixed or variable number of integer
+arguments that are separated by a single space character. A &lsquo;<samp class="samp">D</samp>&rsquo;
+command may not be followed by another command on the same line (apart
+from a comment), so each &lsquo;<samp class="samp">D</samp>&rsquo; command is terminated by a syntactical
+line break.
+</p>
+<p><code class="code">gtroff</code> output follows the classical spacing rules (no space
+between command and subcommand, all arguments are preceded by a single
+space character), but the parser allows optional space between the
+command letters and makes the space before the first argument optional.
+As usual, each space can be any sequence of tab and space characters.
+</p>
+<p>Some graphics commands can take a variable number of arguments. In this
+case, they are integers representing a size measured in basic units
+&lsquo;<samp class="samp">u</samp>&rsquo;. The arguments called <var class="var">h1</var>, <var class="var">h2</var>, &hellip;, <var class="var">hn</var>
+stand for horizontal distances where positive means right, negative
+left. The arguments called <var class="var">v1</var>, <var class="var">v2</var>, &hellip;, <var class="var">vn</var> stand
+for vertical distances where positive means down, negative up. All
+these distances are offsets relative to the current location.
+</p>
+<p>Each graphics command directly corresponds to a similar <code class="code">gtroff</code>
+<code class="code">\D</code> escape sequence. See <a class="xref" href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a>.
+</p>
+<p>Unknown &lsquo;<samp class="samp">D</samp>&rsquo; commands are assumed to be device-specific. Its
+arguments are parsed as strings; the whole information is then sent to
+the postprocessor.
+</p>
+<p>In the following command reference, the syntax element &lsaquo;<span class="r">line
+break</span>&rsaquo; means a syntactical line break as defined above.
+</p>
+<dl class="table">
+<dt><code class="code">D~ <var class="var">h1</var> <var class="var">v1</var> <var class="var">h2</var> <var class="var">v2</var> &hellip; <var class="var">hn</var> <var class="var">vn</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw B-spline from current position to offset (<var class="var">h1</var>,<var class="var">v1</var>), then
+to offset (<var class="var">h2</var>,<var class="var">v2</var>), if given, etc., up to
+(<var class="var">hn</var>,<var class="var">vn</var>). This command takes a variable number of argument
+pairs; the current position is moved to the terminal point of the drawn
+curve.
+</p>
+</dd>
+<dt><code class="code">Da <var class="var">h1</var> <var class="var">v1</var> <var class="var">h2</var> <var class="var">v2</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw arc from current position to
+(<var class="var">h1</var>,<var class="var">v1</var>)<em class="math">+</em>(<var class="var">h2</var>,<var class="var">v2</var>) with center at
+(<var class="var">h1</var>,<var class="var">v1</var>); then move the current position to the final point
+of the arc.
+</p>
+</dd>
+<dt><code class="code">DC <var class="var">d</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dt><code class="code">DC <var class="var">d</var> <var class="var">dummy-arg</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw a solid circle using the current fill color with
+diameter&nbsp;<var class="var">d</var> (integer in basic units &lsquo;<samp class="samp">u</samp>&rsquo;) with leftmost
+point at the current position; then move the current position to the
+rightmost point of the circle. An optional second integer argument is
+ignored (this allows the formatter to generate an even number of
+arguments). This command is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">Dc <var class="var">d</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw circle line with diameter&nbsp;<var class="var">d</var> (integer in basic units
+&lsquo;<samp class="samp">u</samp>&rsquo;) with leftmost point at the current position; then move the
+current position to the rightmost point of the circle.
+</p>
+</dd>
+<dt><code class="code">DE <var class="var">h</var> <var class="var">v</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw a solid ellipse in the current fill color with a horizontal
+diameter of&nbsp;<var class="var">h</var> and a vertical diameter of&nbsp;<var class="var">v</var> (both
+integers in basic units &lsquo;<samp class="samp">u</samp>&rsquo;) with the leftmost point at the current
+position; then move to the rightmost point of the ellipse. This command
+is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">De <var class="var">h</var> <var class="var">v</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw an outlined ellipse with a horizontal diameter of&nbsp;<var class="var">h</var> and
+a vertical diameter of&nbsp;<var class="var">v</var> (both integers in basic units
+&lsquo;<samp class="samp">u</samp>&rsquo;) with the leftmost point at current position; then move to the
+rightmost point of the ellipse.
+</p>
+</dd>
+<dt><code class="code">DF <var class="var">color-scheme</var> <span class="r">[</span><var class="var">component</var> &hellip;<span class="r">]</span>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set fill color for solid drawing objects using different color schemes;
+the analogous command for setting the color of text, line graphics, and
+the outline of graphic objects is &lsquo;<samp class="samp">m</samp>&rsquo;. The color components are
+specified as integer arguments between 0 and 65535. The number of color
+components and their meaning vary for the different color schemes.
+These commands are generated by <code class="code">gtroff</code>&rsquo;s escape sequences
+&lsquo;<samp class="samp">\D'F &hellip;'</samp>&rsquo; and <code class="code">\M</code> (with no other corresponding
+graphics commands). No position changing. This command is a
+<code class="code">gtroff</code> extension.
+</p>
+<dl class="table">
+<dt><code class="code">DFc <var class="var">cyan</var> <var class="var">magenta</var> <var class="var">yellow</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set fill color for solid drawing objects using the CMY color scheme,
+having the 3&nbsp;color components <var class="var">cyan</var>, <var class="var">magenta</var>, and
+<var class="var">yellow</var>.
+</p>
+</dd>
+<dt><code class="code">DFd&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set fill color for solid drawing objects to the default fill color value
+(black in most cases). No component arguments.
+</p>
+</dd>
+<dt><code class="code">DFg <var class="var">gray</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set fill color for solid drawing objects to the shade of gray given by
+the argument, an integer between 0 (black) and 65535 (white).
+</p>
+</dd>
+<dt><code class="code">DFk <var class="var">cyan</var> <var class="var">magenta</var> <var class="var">yellow</var> <var class="var">black</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set fill color for solid drawing objects using the CMYK color scheme,
+having the 4&nbsp;color components <var class="var">cyan</var>, <var class="var">magenta</var>,
+<var class="var">yellow</var>, and <var class="var">black</var>.
+</p>
+</dd>
+<dt><code class="code">DFr <var class="var">red</var> <var class="var">green</var> <var class="var">blue</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set fill color for solid drawing objects using the RGB color scheme,
+having the 3&nbsp;color components <var class="var">red</var>, <var class="var">green</var>, and
+<var class="var">blue</var>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code class="code">Df <var class="var">n</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The argument&nbsp;<var class="var">n</var> must be an integer in the range <em class="math">-32767</em>
+to 32767.
+</p>
+<dl class="table">
+<dt><em class="math">0 &le; <var class="var">n</var> &le; 1000</em></dt>
+<dd><p>Set the color for filling solid drawing objects to a shade of gray,
+where 0 corresponds to solid white, 1000 (the default) to solid black,
+and values in between to intermediate shades of gray; this is obsoleted
+by command &lsquo;<samp class="samp">DFg</samp>&rsquo;.
+</p>
+</dd>
+<dt><em class="math"><var class="var">n</var> &lt; 0</em> or <em class="math"><var class="var">n</var> &gt; 1000</em></dt>
+<dd><p>Set the filling color to the color that is currently being used for the
+text and the outline, see command &lsquo;<samp class="samp">m</samp>&rsquo;. For example, the command
+sequence
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">mg 0 0 65535
+Df -1
+</pre></div></div>
+
+<p>sets all colors to blue.
+</p></dd>
+</dl>
+
+<p>No position changing. This command is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">Dl <var class="var">h</var> <var class="var">v</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw line from current position to offset (<var class="var">h</var>,<var class="var">v</var>) (integers in
+basic units &lsquo;<samp class="samp">u</samp>&rsquo;); then set current position to the end of the drawn
+line.
+</p>
+</dd>
+<dt><code class="code">Dp <var class="var">h1</var> <var class="var">v1</var> <var class="var">h2</var> <var class="var">v2</var> &hellip; <var class="var">hn</var> <var class="var">vn</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw a polygon line from current position to offset (<var class="var">h1</var>,<var class="var">v1</var>),
+from there to offset (<var class="var">h2</var>,<var class="var">v2</var>), etc., up to offset
+(<var class="var">hn</var>,<var class="var">vn</var>), and from there back to the starting position. For
+historical reasons, the position is changed by adding the sum of all
+arguments with odd index to the actual horizontal position and the even
+ones to the vertical position. Although this doesn&rsquo;t make sense it is
+kept for compatibility.
+This command is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">DP <var class="var">h1</var> <var class="var">v1</var> <var class="var">h2</var> <var class="var">v2</var> &hellip; <var class="var">hn</var> <var class="var">vn</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw a solid polygon in the current fill color rather than an outlined
+polygon, using the same arguments and positioning as the corresponding
+&lsquo;<samp class="samp">Dp</samp>&rsquo; command.
+This command is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">Dt <var class="var">n</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set the current line thickness to&nbsp;<var class="var">n</var> (an integer in basic
+units &lsquo;<samp class="samp">u</samp>&rsquo;) if <em class="math"><var class="var">n</var>&gt;0</em>; if <em class="math"><var class="var">n</var>=0</em> select the
+smallest available line thickness; if <em class="math"><var class="var">n</var>&lt;0</em> set the line
+thickness proportional to the type size (this is the default before the
+first &lsquo;<samp class="samp">Dt</samp>&rsquo; command was specified). For historical reasons, the
+horizontal position is changed by adding the argument to the actual
+horizontal position, while the vertical position is not changed.
+Although this doesn&rsquo;t make sense it is kept for compatibility.
+This command is a <code class="code">gtroff</code> extension.
+</p></dd>
+</dl>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Device-Control-Commands">
+<div class="nav-panel">
+<p>
+Next: <a href="#Obsolete-Command" accesskey="n" rel="next">Obsolete Command</a>, Previous: <a href="#Graphics-Commands" accesskey="p" rel="prev">Graphics Commands</a>, Up: <a href="#Command-Reference" accesskey="u" rel="up">Command Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Device-Control-Commands-1">6.1.2.4 Device Control Commands</h4>
+
+<p>Each device control command starts with the letter &lsquo;<samp class="samp">x</samp>&rsquo;, followed by
+a space character (optional or arbitrary space or tab in <code class="code">gtroff</code>)
+and a subcommand letter or word; each argument (if any) must be preceded
+by a syntactical space. All &lsquo;<samp class="samp">x</samp>&rsquo; commands are terminated by a
+syntactical line break; no device control command can be followed by
+another command on the same line (except a comment).
+</p>
+<p>The subcommand is basically a single letter, but to increase
+readability, it can be written as a word, i.e., an arbitrary sequence of
+characters terminated by the next tab, space, or newline character. All
+characters of the subcommand word but the first are simply ignored. For
+example, <code class="code">gtroff</code> outputs the initialization command &lsquo;<samp class="samp">x&nbsp;i</samp>&rsquo;<!-- /@w -->
+as &lsquo;<samp class="samp">x&nbsp;init</samp>&rsquo;<!-- /@w --> and the resolution command &lsquo;<samp class="samp">x&nbsp;r</samp>&rsquo;<!-- /@w --> as
+&lsquo;<samp class="samp">x&nbsp;res</samp>&rsquo;<!-- /@w -->.
+</p>
+<p>In the following, the syntax element &lsaquo;<span class="r">line break</span>&rsaquo; means a
+syntactical line break (see <a class="pxref" href="#Separation">Separation</a>).
+</p>
+<dl class="table">
+<dt><code class="code">xF <var class="var">name</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">F</samp>&rsquo; stands for <var class="var">Filename</var>.
+</p>
+<p>Use <var class="var">name</var> as the intended name for the current file in error
+reports. This is useful for remembering the original file name when
+<code class="code">gtroff</code> uses an internal piping mechanism. The input file is not
+changed by this command. This command is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">xf <var class="var">n</var> <var class="var">s</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">f</samp>&rsquo; stands for <var class="var">font</var>.
+</p>
+<p>Mount font position&nbsp;<var class="var">n</var> (a non-negative integer) with font
+named&nbsp;<var class="var">s</var> (a text word). See <a class="xref" href="#Font-Positions">Font Positions</a>.
+</p>
+</dd>
+<dt><code class="code">xH <var class="var">n</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">H</samp>&rsquo; stands for <var class="var">Height</var>.
+</p>
+<p>Set glyph height to&nbsp;<var class="var">n</var> (a positive integer in scaled points
+&lsquo;<samp class="samp">z</samp>&rsquo;). <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> uses the unit points (&lsquo;<samp class="samp">p</samp>&rsquo;)
+instead. See <a class="xref" href="#Output-Language-Compatibility">Output Language Compatibility</a>.
+</p>
+</dd>
+<dt><code class="code">xi&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">i</samp>&rsquo; stands for <var class="var">init</var>.
+</p>
+<p>Initialize device. This is the third command of the prologue.
+</p>
+</dd>
+<dt><code class="code">xp&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">p</samp>&rsquo; stands for <var class="var">pause</var>.
+</p>
+<p>Parsed but ignored. The <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> manual documents
+this command as
+</p>
+<div class="display">
+<pre class="display-preformatted">pause device, can be restarted
+</pre></div>
+
+<p>but GNU <code class="code">troff</code> output drivers do nothing with this command.
+</p>
+</dd>
+<dt><code class="code">xr <var class="var">n</var> <var class="var">h</var> <var class="var">v</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">r</samp>&rsquo; stands for <var class="var">resolution</var>.
+</p>
+<p>Resolution is&nbsp;<var class="var">n</var>, while <var class="var">h</var> is the minimal horizontal
+motion, and <var class="var">v</var> the minimal vertical motion possible with this
+device; all arguments are positive integers in basic units &lsquo;<samp class="samp">u</samp>&rsquo; per
+inch. This is the second command of the prologue.
+</p>
+</dd>
+<dt><code class="code">xS <var class="var">n</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">S</samp>&rsquo; stands for <var class="var">Slant</var>.
+</p>
+<p>Set slant to&nbsp;<var class="var">n</var> (an integer in basic units &lsquo;<samp class="samp">u</samp>&rsquo;).
+</p>
+</dd>
+<dt><code class="code">xs&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">s</samp>&rsquo; stands for <var class="var">stop</var>.
+</p>
+<p>Terminates the processing of the current file; issued as the last
+command of any intermediate <code class="code">troff</code> output.
+</p>
+</dd>
+<dt><code class="code">xt&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">t</samp>&rsquo; stands for <var class="var">trailer</var>.
+</p>
+<p>Generate trailer information, if any. In GNU <code class="code">troff</code>, this is
+ignored.
+</p>
+</dd>
+<dt><code class="code">xT <var class="var">xxx</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">T</samp>&rsquo; stands for <var class="var">Typesetter</var>.
+</p>
+<p>Set the name of the output driver to <var class="var">xxx</var>, a sequence of
+non-whitespace characters terminated by whitespace. The possible names
+correspond to those of <code class="code">groff</code>&rsquo;s <samp class="option">-T</samp> option. This is the
+first command of the prologue.
+</p>
+</dd>
+<dt><code class="code">xu <var class="var">n</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">u</samp>&rsquo; stands for <var class="var">underline</var>.
+</p>
+<p>Configure underlining of spaces. If <var class="var">n</var> is&nbsp;1, start
+underlining of spaces; if <var class="var">n</var> is&nbsp;0, stop underlining of spaces.
+This is needed for the <code class="code">cu</code> request in <code class="code">nroff</code> mode and is
+ignored otherwise. This command is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">xX <var class="var">anything</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">x</samp>&rsquo; stands for <var class="var">X-escape</var>.
+</p>
+<p>Send string <var class="var">anything</var> uninterpreted to the device. If the line
+following this command starts with a &lsquo;<samp class="samp">+</samp>&rsquo; character this line is
+interpreted as a continuation line in the following sense. The &lsquo;<samp class="samp">+</samp>&rsquo;
+is ignored, but a newline character is sent instead to the device, the
+rest of the line is sent uninterpreted. The same applies to all
+following lines until the first character of a line is not a &lsquo;<samp class="samp">+</samp>&rsquo;
+character. This command is generated by the <code class="code">gtroff</code> escape
+sequence <code class="code">\X</code>. The line-continuing feature is a <code class="code">gtroff</code>
+extension.
+</p></dd>
+</dl>
+
+<hr>
+</div>
+<div class="subsubsection-level-extent" id="Obsolete-Command">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Device-Control-Commands" accesskey="p" rel="prev">Device Control Commands</a>, Up: <a href="#Command-Reference" accesskey="u" rel="up">Command Reference</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsubsection" id="Obsolete-Command-1">6.1.2.5 Obsolete Command</h4>
+<p>In <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> output, the writing of a single glyph is
+mostly done by a very strange command that combines a horizontal move
+and a single character giving the glyph name. It doesn&rsquo;t have a command
+code, but is represented by a 3-character argument consisting of exactly
+2&nbsp;digits and a character.
+</p>
+<dl class="table">
+<dt><var class="var">dd</var><var class="var">g</var></dt>
+<dd><p>Move right <var class="var">dd</var> (exactly two decimal digits) basic units &lsquo;<samp class="samp">u</samp>&rsquo;,
+then print glyph&nbsp;<var class="var">g</var> (represented as a single character).
+</p>
+<p>In GNU <code class="code">troff</code>, arbitrary syntactical space around and within this
+command is allowed. Only when a preceding command on the same line ends
+with an argument of variable length is a separating space obligatory.
+In <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, large clusters of these and other
+commands are used, mostly without spaces; this made such output almost
+unreadable.
+</p></dd>
+</dl>
+
+<p>For modern high-resolution devices, this command does not make sense
+because the width of the glyphs can become much larger than two decimal
+digits. In <code class="code">gtroff</code>, this is only used for the devices <code class="code">X75</code>,
+<code class="code">X75-12</code>, <code class="code">X100</code>, and <code class="code">X100-12</code>. For other devices, the
+commands &lsquo;<samp class="samp">t</samp>&rsquo; and &lsquo;<samp class="samp">u</samp>&rsquo; provide a better functionality.
+</p>
+
+<hr>
+</div>
+</div>
+<div class="subsection-level-extent" id="Intermediate-Output-Examples">
+<div class="nav-panel">
+<p>
+Next: <a href="#Output-Language-Compatibility" accesskey="n" rel="next">Output Language Compatibility</a>, Previous: <a href="#Command-Reference" accesskey="p" rel="prev">Command Reference</a>, Up: <a href="#gtroff-Output" accesskey="u" rel="up"><code class="code">gtroff</code> Output</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Intermediate-Output-Examples-1">6.1.3 Intermediate Output Examples</h4>
+
+<p>This section presents the intermediate output generated from the same
+input for three different devices. The input is the sentence &lsquo;<samp class="samp">hell
+world</samp>&rsquo; fed into <code class="code">gtroff</code> on the command line.
+</p>
+<dl class="table">
+<dt>High-resolution device <code class="code">ps</code></dt>
+<dd>
+<p>This is the standard output of <code class="code">gtroff</code> if no <samp class="option">-T</samp> option is
+given.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">shell&gt; echo &quot;hell world&quot; | groff -Z -T ps
+
+x T ps
+x res 72000 1 1
+x init
+</pre></div><pre class="example-preformatted">p1
+x font 5 TR
+f5
+s10000
+V12000
+H72000
+thell
+wh2500
+tw
+H96620
+torld
+n12000 0
+</pre><div class="group"><pre class="example-preformatted">x trailer
+V792000
+x stop
+</pre></div></div>
+
+<p>This output can be fed into <code class="code">grops</code> to get its representation as a
+PostScript file.
+</p>
+</dd>
+<dt>Low-resolution device <code class="code">latin1</code></dt>
+<dd>
+<p>This is similar to the high-resolution device except that the
+positioning is done at a minor scale. Some comments (lines starting
+with &lsquo;<samp class="samp">#</samp>&rsquo;) were added for clarification; they were not generated by
+the formatter.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">shell&gt; echo &quot;hell world&quot; | groff -Z -T latin1
+
+# prologue
+x T latin1
+x res 240 24 40
+x init
+</pre></div><pre class="example-preformatted"># begin a new page
+p1
+# font setup
+x font 1 R
+f1
+s10
+# initial positioning on the page
+V40
+H0
+# write text 'hell'
+thell
+# inform about space, and issue a horizontal jump
+wh24
+# write text 'world'
+tworld
+# announce line break, but do nothing because...
+n40 0
+</pre><div class="group"><pre class="example-preformatted"># ...the end of the document has been reached
+x trailer
+V2640
+x stop
+</pre></div></div>
+
+<p>This output can be fed into <code class="code">grotty</code> to get a formatted text
+document.
+</p>
+</dd>
+<dt><abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> output</dt>
+<dd><p>Since a computer monitor has a much lower resolution than modern
+printers, the intermediate output for X11 devices can use the
+jump-and-write command with its 2-digit displacements.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">shell&gt; echo &quot;hell world&quot; | groff -Z -T X100
+
+x T X100
+x res 100 1 1
+x init
+</pre></div><pre class="example-preformatted">p1
+x font 5 TR
+f5
+s10
+V16
+H100
+# write text with jump-and-write commands
+ch07e07l03lw06w11o07r05l03dh7
+n16 0
+</pre><div class="group"><pre class="example-preformatted">x trailer
+V1100
+x stop
+</pre></div></div>
+
+<p>This output can be fed into <code class="code">xditview</code> or <code class="code">gxditview</code> for
+displaying in&nbsp;X.
+</p>
+<p>Due to the obsolete jump-and-write command, the text clusters in the
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> output are almost unreadable.
+</p></dd>
+</dl>
+
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Output-Language-Compatibility">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Intermediate-Output-Examples" accesskey="p" rel="prev">Intermediate Output Examples</a>, Up: <a href="#gtroff-Output" accesskey="u" rel="up"><code class="code">gtroff</code> Output</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Output-Language-Compatibility-1">6.1.4 Output Language Compatibility</h4>
+
+<p>The intermediate output language of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> was
+first documented in <cite class="cite">A Typesetter-independent TROFF</cite>, by Brian
+Kernighan, and by 1992 the <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> manual was
+updated to incorprate a description of it.
+</p>
+<p>The GNU <code class="code">troff</code> intermediate output format is compatible with this
+specification except for the following features.
+</p>
+<ul class="itemize mark-bullet">
+<li>The classical quasi-device independence is not yet implemented.
+
+</li><li>The old hardware was very different from what we use today. So the
+<code class="code">groff</code> devices are also fundamentally different from the ones
+in <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>. For example, the <abbr class="acronym">AT&amp;T</abbr>
+PostScript device is called <code class="code">post</code> and has a resolution of only 720
+units per inch, suitable for printers 20 years ago, while <code class="code">groff</code>&rsquo;s
+<code class="code">ps</code> device has a resolution of 72000 units per inch. Maybe, by
+implementing some rescaling mechanism similar to the classical
+quasi-device independence, <code class="code">groff</code> could emulate <abbr class="acronym">AT&amp;T</abbr>&rsquo;s
+<code class="code">post</code> device.
+
+</li><li>The B-spline command &lsquo;<samp class="samp">D~</samp>&rsquo; is correctly handled by the intermediate
+output parser, but the drawing routines aren&rsquo;t implemented in some of
+the postprocessor programs.
+
+</li><li>The argument of the commands &lsquo;<samp class="samp">s</samp>&rsquo; and &lsquo;<samp class="samp">x&nbsp;H</samp>&rsquo;<!-- /@w --> has the
+implicit unit scaled point &lsquo;<samp class="samp">z</samp>&rsquo; in <code class="code">gtroff</code>, while
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> has point (&lsquo;<samp class="samp">p</samp>&rsquo;). This isn&rsquo;t an
+incompatibility but a compatible extension, for both units coincide for
+all devices without a <code class="code">sizescale</code> parameter in the <samp class="file">DESC</samp>
+file, including all postprocessors from <abbr class="acronym">AT&amp;T</abbr> and
+<code class="code">groff</code>&rsquo;s text devices. The few <code class="code">groff</code> devices with a
+<code class="code">sizescale</code> parameter either do not exist for <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code>, have a different name, or seem to have a different
+resolution. So conflicts are very unlikely.
+
+</li><li>The position changing after the commands &lsquo;<samp class="samp">Dp</samp>&rsquo;, &lsquo;<samp class="samp">DP</samp>&rsquo;, and
+&lsquo;<samp class="samp">Dt</samp>&rsquo; is illogical, but as old versions of <code class="code">gtroff</code> used this
+feature it is kept for compatibility reasons.
+
+
+</li></ul>
+
+
+
+<hr>
+</div>
+</div>
+<div class="section-level-extent" id="Device-and-Font-Description-Files">
+<div class="nav-panel">
+<p>
+Previous: <a href="#gtroff-Output" accesskey="p" rel="prev"><code class="code">gtroff</code> Output</a>, Up: <a href="#File-Formats" accesskey="u" rel="up">File Formats</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h3 class="section" id="Device-and-Font-Description-Files-1">6.2 Device and Font Description Files</h3>
+<a class="index-entry-id" id="index-font-files"></a>
+<a class="index-entry-id" id="index-files_002c-font"></a>
+
+<p>The <code class="code">groff</code> font and output device description formats are slight
+extensions of those used by <abbr class="acronym">AT&amp;T</abbr> device-independent
+<code class="code">troff</code>. In distinction to the <abbr class="acronym">AT&amp;T</abbr> implementation,
+<code class="code">groff</code> lacks a binary format; all files are text
+files.<a class="footnote" id="DOCF125" href="#FOOT125"><sup>125</sup></a> The device and font description files for a device <var class="var">name</var>
+are stored in a <samp class="file">dev<var class="var">name</var></samp> directory. The device description
+file is called <samp class="file">DESC</samp>, and, for each font supported by the device,
+a font description file is called&nbsp;<samp class="file"><var class="var">f</var></samp>, where
+<var class="var">f</var>&nbsp;is usually an abbreviation of a font&rsquo;s name and/or style.
+For example, the <code class="code">ps</code> (PostScript) device has <code class="code">groff</code> font
+description files for Times roman (<samp class="file">TR</samp>) and Zapf Chancery Medium
+italic (<samp class="file">ZCMI</samp>), among many others, while the <code class="code">utf8</code> device
+(for terminal emulators) has only font descriptions for the roman,
+italic, bold, and bold-italic styles (<samp class="file">R</samp>, <samp class="file">I</samp>, <samp class="file">B</samp>, and
+<samp class="file">BI</samp>, respectively).
+</p>
+<p>Device and font description files are read both by the formatter, GNU
+<code class="code">troff</code>, and by output drivers. The programs delegate these files&rsquo;
+processing to an internal library, <samp class="file">libgroff</samp>, ensuring their
+consistent interpretation.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="#DESC-File-Format" accesskey="1"><samp class="file">DESC</samp> File Format</a></li>
+<li><a href="#Font-Description-File-Format" accesskey="2">Font Description File Format</a></li>
+</ul>
+<hr>
+<div class="subsection-level-extent" id="DESC-File-Format">
+<div class="nav-panel">
+<p>
+Next: <a href="#Font-Description-File-Format" accesskey="n" rel="next">Font Description File Format</a>, Previous: <a href="#Device-and-Font-Description-Files" accesskey="p" rel="prev">Device and Font Description Files</a>, Up: <a href="#Device-and-Font-Description-Files" accesskey="u" rel="up">Device and Font Description Files</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="DESC-File-Format-1">6.2.1 <samp class="file">DESC</samp> File Format</h4>
+<a class="index-entry-id" id="index-DESC-file-format"></a>
+<a class="index-entry-id" id="index-font-description-file-format"></a>
+<a class="index-entry-id" id="index-format-of-font-description-file"></a>
+
+<p>The <samp class="file">DESC</samp> file contains a series of directives; each begins a
+line. Their order is not important, with two exceptions: (1) the
+<code class="code">res</code> directive must precede any <code class="code">papersize</code> directive; and
+(2) the <code class="code">charset</code> directive must come last (if at all). If a
+directive name is repeated, later entries in the file override previous
+ones (except that the paper dimensions are computed based on the
+<code class="code">res</code> directive last seen when <code class="code">papersize</code> is encountered).
+Spaces and/or tabs separate words and are ignored at line boundaries.
+<a class="index-entry-id" id="index-comments-in-device-description-files"></a>
+<a class="index-entry-id" id="index-device-description-files_002c-comments"></a>
+<a class="index-entry-id" id="index-_0023"></a>
+Comments start with the &lsquo;<samp class="samp">#</samp>&rsquo; character and extend to the end of a
+line. Empty lines are ignored.
+</p>
+<dl class="table">
+<dt id='index-family-1'><span><code class="code">family <var class="var">fam</var></code><a class="copiable-link" href='#index-family-1'> &para;</a></span></dt>
+<dd><p>The default font family is <var class="var">fam</var>.
+</p>
+</dd>
+<dt id='index-fonts-2'><span><code class="code">fonts <var class="var">n</var> <var class="var">F1</var> <span class="r">&hellip;</span> <var class="var">Fn</var></code><a class="copiable-link" href='#index-fonts-2'> &para;</a></span></dt>
+<dd><p>Fonts <var class="var">F1</var>, &hellip;, <var class="var">Fn</var> are mounted at font positions
+<var class="var">m</var>+1, &hellip;, <var class="var">m</var>+<var class="var">n</var> where <var class="var">m</var> is the number of
+<code class="code">styles</code> (see below). This directive may extend over more than one
+line. A font name of&nbsp;<code class="code">0</code> causes no font to be mounted at the
+corresponding position.
+</p>
+</dd>
+<dt id='index-hor'><span><code class="code">hor <var class="var">n</var></code><a class="copiable-link" href='#index-hor'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-horizontal-motion-quantum"></a>
+<a class="index-entry-id" id="index-motion-quantum_002c-horizontal"></a>
+<a class="index-entry-id" id="index-quantum_002c-horizontal-motion"></a>
+<a class="index-entry-id" id="index-horizontal-resolution"></a>
+<a class="index-entry-id" id="index-resolution_002c-horizontal"></a>
+<p>The horizontal motion quantum is <var class="var">n</var>&nbsp;basic units. All
+horizontal quantities are rounded to multiples of&nbsp;<var class="var">n</var>.
+</p>
+</dd>
+<dt id='index-image_005fgenerator'><span><code class="code">image_generator <var class="var">program</var></code><a class="copiable-link" href='#index-image_005fgenerator'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PostScript_002c-PNG-image-generation"></a>
+<a class="index-entry-id" id="index-PNG-image-generation-from-PostScript"></a>
+<p>Use <var class="var">program</var> to generate PNG images from PostScript input. Under
+GNU/Linux, this is usually <code class="code">gs</code>, but under other systems (notably
+Cygwin) it might be set to another name. The <code class="code">grohtml</code> driver uses
+this directive.
+</p>
+</dd>
+<dt id='index-paperlength'><span><code class="code">paperlength <var class="var">n</var></code><a class="copiable-link" href='#index-paperlength'> &para;</a></span></dt>
+<dd><p>The vertical dimension of the output medium is <var class="var">n</var>&nbsp;basic units
+(deprecated: use <code class="code">papersize</code> instead).
+</p>
+</dd>
+<dt id='index-papersize'><span><code class="code">papersize <var class="var">format-or-dimension-pair-or-file-name</var> <span class="r">&hellip;</span></code><a class="copiable-link" href='#index-papersize'> &para;</a></span></dt>
+<dd><p>The dimensions of the output medium are as according to the
+argument, which is either a standard paper format, a pair of dimensions,
+or the name of a plain text file containing either of the foregoing.
+</p>
+<p>Recognized paper formats are the ISO and DIN formats
+<code class="code">A0</code>&ndash;<code class="code">A7</code>, <code class="code">B0</code>&ndash;<code class="code">B7</code>, <code class="code">C0</code>&ndash;<code class="code">C7</code>,
+<code class="code">D0</code>&ndash;<code class="code">D7</code>; the U.S. paper types <code class="code">letter</code>,
+<code class="code">legal</code>, <code class="code">tabloid</code>, <code class="code">ledger</code>, <code class="code">statement</code>, and
+<code class="code">executive</code>; and the envelope formats <code class="code">com10</code>, <code class="code">monarch</code>,
+and <code class="code">DL</code>. Matching is performed without regard for lettercase.
+</p>
+<p>Alternatively, the argument can be a custom paper format in the format
+<code class="code"><var class="var">length</var>,<var class="var">width</var></code> (with no spaces before or after the
+comma). Both <var class="var">length</var> and <var class="var">width</var> must have a unit appended;
+valid units are &lsquo;<samp class="samp">i</samp>&rsquo; for inches, &lsquo;<samp class="samp">c</samp>&rsquo; for centimeters, &lsquo;<samp class="samp">p</samp>&rsquo;
+for points, and &lsquo;<samp class="samp">P</samp>&rsquo; for picas. Example: &lsquo;<samp class="samp">12c,235p</samp>&rsquo;. An
+argument that starts with a digit is always treated as a custom paper
+format.
+</p>
+<p>Finally, the argument can be a file name (e.g., <samp class="file">/etc/papersize</samp>);
+if the file can be opened, the first line is read and a match attempted
+against each of the other forms. No comment syntax is supported.
+</p>
+<p>More than one argument can be specified;
+each is scanned in turn and the first valid paper specification used.
+</p>
+</dd>
+<dt id='index-paperwidth'><span><code class="code">paperwidth <var class="var">n</var></code><a class="copiable-link" href='#index-paperwidth'> &para;</a></span></dt>
+<dd><p>The horizontal dimension of the output medium is <var class="var">n</var>&nbsp;basic
+units (deprecated: use <code class="code">papersize</code> instead).
+</p>
+</dd>
+<dt id='index-pass_005ffilenames'><span><code class="code">pass_filenames</code><a class="copiable-link" href='#index-pass_005ffilenames'> &para;</a></span></dt>
+<dd><p>Direct GNU <code class="code">troff</code> to emit the name of the source file being
+processed. This is achieved with the intermediate output command
+&lsquo;<samp class="samp">x F</samp>&rsquo;, which <code class="code">grohtml</code> interprets.
+</p>
+</dd>
+<dt id='index-postpro'><span><code class="code">postpro <var class="var">program</var></code><a class="copiable-link" href='#index-postpro'> &para;</a></span></dt>
+<dd><p>Use <var class="var">program</var> as the postprocessor.
+</p>
+</dd>
+<dt id='index-prepro'><span><code class="code">prepro <var class="var">program</var></code><a class="copiable-link" href='#index-prepro'> &para;</a></span></dt>
+<dd><p>Use <var class="var">program</var> as a preprocessor. The <code class="code">html</code> and <code class="code">xhtml</code>
+output devices use this directive.
+</p>
+</dd>
+<dt id='index-print'><span><code class="code">print <var class="var">program</var></code><a class="copiable-link" href='#index-print'> &para;</a></span></dt>
+<dd><p>Use <var class="var">program</var> as a spooler program for printing. If omitted, the
+<samp class="option">-l</samp> and <samp class="option">-L</samp> options of <code class="code">groff</code> are ignored.
+</p>
+</dd>
+<dt id='index-res'><span><code class="code">res <var class="var">n</var></code><a class="copiable-link" href='#index-res'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-device-resolution-1"></a>
+<a class="index-entry-id" id="index-resolution_002c-device-1"></a>
+<p>The device resolution is <var class="var">n</var>&nbsp;basic units per inch.
+</p>
+</dd>
+<dt id='index-sizes'><span><code class="code">sizes <var class="var">s1</var> <span class="r">&hellip;</span> <var class="var">sn</var> 0</code><a class="copiable-link" href='#index-sizes'> &para;</a></span></dt>
+<dd><p>The device has fonts at <var class="var">s1</var>, &hellip;, <var class="var">sn</var> scaled points (see
+below). The list of sizes must be terminated by&nbsp;<code class="code">0</code>. Each
+<var class="var">si</var> can also be a range of sizes <var class="var">m</var>&ndash;<var class="var">n</var>. The list can
+extend over more than one line.
+</p>
+</dd>
+<dt id='index-sizescale'><span><code class="code">sizescale <var class="var">n</var></code><a class="copiable-link" href='#index-sizescale'> &para;</a></span></dt>
+<dd><p>A typographical point is subdivided into <var class="var">n</var>&nbsp;scaled points.
+The default is&nbsp;<code class="code">1</code>. See <a class="xref" href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a>.
+</p>
+</dd>
+<dt id='index-styles-2'><span><code class="code">styles <var class="var">S1</var> <span class="r">&hellip;</span> <var class="var">Sm</var></code><a class="copiable-link" href='#index-styles-2'> &para;</a></span></dt>
+<dd><p>The first&nbsp;<var class="var">m</var> mounting positions are associated with styles
+<var class="var">S1</var>, &hellip;, <var class="var">Sm</var>.
+</p>
+</dd>
+<dt id='index-tcommand'><span><code class="code">tcommand</code><a class="copiable-link" href='#index-tcommand'> &para;</a></span></dt>
+<dd><p>The postprocessor can handle the &lsquo;<samp class="samp">t</samp>&rsquo; and &lsquo;<samp class="samp">u</samp>&rsquo; intermediate
+output commands.
+</p>
+</dd>
+<dt id='index-unicode'><span><code class="code">unicode</code><a class="copiable-link" href='#index-unicode'> &para;</a></span></dt>
+<dd><p>The output device supports the complete Unicode repertoire. This
+directive is useful only for devices that produce character entities
+instead of glyphs.
+</p>
+<p>If <code class="code">unicode</code> is present, no <code class="code">charset</code> section is required in
+the font description files since the Unicode handling built into
+<code class="code">groff</code> is used. However, if there are entries in a font
+description file&rsquo;s <code class="code">charset</code> section, they either override the
+default mappings for those particular characters or add new mappings
+(normally for composite characters).
+</p>
+<p>The <code class="code">utf8</code>, <code class="code">html</code>, and <code class="code">xhtml</code> output devices use this
+directive.
+</p>
+</dd>
+<dt id='index-unitwidth'><span><code class="code">unitwidth <var class="var">n</var></code><a class="copiable-link" href='#index-unitwidth'> &para;</a></span></dt>
+<dd><p>Quantities in the font description files are in basic units for fonts
+whose type size is <var class="var">n</var>&nbsp;scaled points.
+</p>
+</dd>
+<dt id='index-unscaled_005fcharwidths'><span><code class="code">unscaled_charwidths</code><a class="copiable-link" href='#index-unscaled_005fcharwidths'> &para;</a></span></dt>
+<dd><p>Make the font handling module always return unscaled character widths.
+The <code class="code">grohtml</code> driver uses this directive.
+</p>
+</dd>
+<dt id='index-use_005fcharnames_005fin_005fspecial-1'><span><code class="code">use_charnames_in_special</code><a class="copiable-link" href='#index-use_005fcharnames_005fin_005fspecial-1'> &para;</a></span></dt>
+<dd><p>GNU <code class="code">troff</code> should encode special characters inside device control
+commands; see <a class="ref" href="#Postprocessor-Access">Postprocessor Access</a>. The <code class="code">grohtml</code> driver
+uses this directive.
+</p>
+</dd>
+<dt id='index-vert'><span><code class="code">vert <var class="var">n</var></code><a class="copiable-link" href='#index-vert'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-vertical-motion-quantum"></a>
+<a class="index-entry-id" id="index-motion-quantum_002c-vertical"></a>
+<a class="index-entry-id" id="index-quantum_002c-vertical-motion"></a>
+<a class="index-entry-id" id="index-vertical-resolution"></a>
+<a class="index-entry-id" id="index-resolution_002c-vertical"></a>
+<p>The vertical motion quantum is <var class="var">n</var>&nbsp;basic units. All vertical
+quantities are rounded to multiples of&nbsp;<var class="var">n</var>.
+</p>
+</dd>
+<dt id='index-charset'><span><code class="code">charset</code><a class="copiable-link" href='#index-charset'> &para;</a></span></dt>
+<dd><p>This line and everything following it in the file are ignored. It is
+recognized for compatibility with other <code class="code">troff</code> implementations.
+In GNU <code class="code">troff</code>, character set repertoire is described on a
+per-font basis.
+</p></dd>
+</dl>
+
+<a class="index-entry-id" id="index-spare1"></a>
+<a class="index-entry-id" id="index-spare2"></a>
+<a class="index-entry-id" id="index-biggestfont"></a>
+<p>GNU <code class="code">troff</code> recognizes but ignores the directives <code class="code">spare1</code>,
+<code class="code">spare2</code>, and <code class="code">biggestfont</code>.
+</p>
+<p>The <code class="code">res</code>, <code class="code">unitwidth</code>, <code class="code">fonts</code>, and <code class="code">sizes</code> lines
+are mandatory. Directives not listed above are ignored by GNU
+<code class="code">troff</code> but may be used by postprocessors to obtain further
+information about the device.
+</p>
+
+<hr>
+</div>
+<div class="subsection-level-extent" id="Font-Description-File-Format">
+<div class="nav-panel">
+<p>
+Previous: <a href="#DESC-File-Format" accesskey="p" rel="prev"><samp class="file">DESC</samp> File Format</a>, Up: <a href="#Device-and-Font-Description-Files" accesskey="u" rel="up">Device and Font Description Files</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="subsection" id="Font-Description-File-Format-1">6.2.2 Font Description File Format</h4>
+<a class="index-entry-id" id="index-font-file_002c-format"></a>
+<a class="index-entry-id" id="index-font-description-file_002c-format"></a>
+<a class="index-entry-id" id="index-format-of-font-files"></a>
+<a class="index-entry-id" id="index-format-of-font-description-files"></a>
+
+<p>On typesetting output devices, each font is typically available at
+multiple sizes. While paper measurements in the device description file
+are in absolute units, measurements applicable to fonts must be
+proportional to the type size. <code class="code">groff</code> achieves this using the
+precedent set by <abbr class="acronym">AT&amp;T</abbr> device-independent <code class="code">troff</code>: one
+font size is chosen as a norm, and all others are scaled linearly
+relative to that basis. The &ldquo;unit width&rdquo; is the number of basic units
+per point when the font is rendered at this nominal size.
+</p>
+<p>For instance, <code class="code">groff</code>&rsquo;s <code class="code">lbp</code> device uses a <code class="code">unitwidth</code>
+of&nbsp;800. Its Times roman font &lsquo;<samp class="samp">TR</samp>&rsquo; has a <code class="code">spacewidth</code>
+of&nbsp;833; this is also the width of its comma, period, centered
+period, and mathematical asterisk, while its &lsquo;<samp class="samp">M</samp>&rsquo; is 2,963 basic
+units. Thus, an &lsquo;<samp class="samp">M</samp>&rsquo; on the <code class="code">lbp</code> device is 2,963 basic units
+wide at a notional type size of 800&nbsp;points.<a class="footnote" id="DOCF126" href="#FOOT126"><sup>126</sup></a>
+</p>
+<p>A font description file has two sections. The first is a sequence of
+directives, and is parsed similarly to the <samp class="file">DESC</samp> file described
+above. Except for the directive names that begin the second section,
+their ordering is immaterial. Later directives of the same name
+override earlier ones, spaces and tabs are handled in the same way,
+<a class="index-entry-id" id="index-comments-in-font-description-files"></a>
+<a class="index-entry-id" id="index-font-description-files_002c-comments"></a>
+<a class="index-entry-id" id="index-_0023-1"></a>
+and the same comment syntax is supported. Empty lines are ignored
+throughout.
+</p>
+<dl class="table">
+<dt id='index-name'><span><code class="code">name <var class="var">f</var></code><a class="copiable-link" href='#index-name'> &para;</a></span></dt>
+<dd><p>The name of the font is&nbsp;<var class="var">f</var>. &lsquo;<samp class="samp">DESC</samp>&rsquo; is an invalid font
+name. Simple integers are valid, but their use is
+discouraged.<a class="footnote" id="DOCF127" href="#FOOT127"><sup>127</sup></a>
+</p>
+</dd>
+<dt id='index-spacewidth'><span><code class="code">spacewidth <var class="var">n</var></code><a class="copiable-link" href='#index-spacewidth'> &para;</a></span></dt>
+<dd><p>The width of an unadjusted inter-word space is <var class="var">n</var>&nbsp;basic units.
+</p></dd>
+</dl>
+
+<p>The directives above must appear in the first section; those below are
+optional.
+</p>
+<dl class="table">
+<dt id='index-slant'><span><code class="code">slant <var class="var">n</var></code><a class="copiable-link" href='#index-slant'> &para;</a></span></dt>
+<dd><p>The font&rsquo;s glyphs have a slant of <var class="var">n</var>&nbsp;degrees; a positive
+<var class="var">n</var> slants in the direction of text flow.
+</p>
+</dd>
+<dt id='index-ligatures'><span><code class="code">ligatures <var class="var">lig1</var> <span class="r">&hellip;</span> <var class="var">lign</var> <span class="r">[</span>0<span class="r">]</span></code><a class="copiable-link" href='#index-ligatures'> &para;</a></span></dt>
+<dd><p>Glyphs <var class="var">lig1</var>, &hellip;, <var class="var">lign</var> are ligatures; possible ligatures
+are &lsquo;<samp class="samp">ff</samp>&rsquo;, &lsquo;<samp class="samp">fi</samp>&rsquo;, &lsquo;<samp class="samp">fl</samp>&rsquo;, &lsquo;<samp class="samp">ffi</samp>&rsquo; and &lsquo;<samp class="samp">ffl</samp>&rsquo;. For
+compatibility with other <code class="code">troff</code> implementations, the list of
+ligatures may be terminated with a&nbsp;<code class="code">0</code>. The list of ligatures
+must not extend over more than one line.
+</p>
+</dd>
+<dt id='index-special-fonts-2'><span><code class="code">special</code><a class="copiable-link" href='#index-special-fonts-2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-special-1"></a>
+<p>The font is <em class="dfn">special</em>: when a glyph is requested that is not present
+in the current font, it is sought in any mounted fonts that bear this
+property.
+</p></dd>
+</dl>
+
+<p>Other directives in this section are ignored by GNU <code class="code">troff</code>, but
+may be used by postprocessors to obtain further information about the
+font.
+</p>
+<p>The second section contains one or two subsections. These can appear in
+either order; the first one encountered commences the second section.
+Each starts with a directive on a line by itself. A <code class="code">charset</code>
+subsection is mandatory unless the associated <samp class="file">DESC</samp> file contains
+the <code class="code">unicode</code> directive. Another subsection, <code class="code">kernpairs</code>,
+is optional.
+</p>
+<a class="index-entry-id" id="index-charset-1"></a>
+<p>The directive <code class="code">charset</code> starts the character set
+subsection.<a class="footnote" id="DOCF128" href="#FOOT128"><sup>128</sup></a> It precedes a series
+of glyph descriptions, one per line. Each such glyph description
+comprises a set of fields separated by spaces or tabs and organized as
+follows.
+</p>
+<blockquote class="quotation">
+<p><var class="var">name</var> <var class="var">metrics</var> <var class="var">type</var> <var class="var">code</var> [<var class="var">entity-name</var>]
+[<code class="code">--</code> <var class="var">comment</var>]
+</p></blockquote>
+
+<a class="index-entry-id" id="index-8_002dbit-input"></a>
+<a class="index-entry-id" id="index-input_002c-8_002dbit"></a>
+<a class="index-entry-id" id="index-accessing-unnamed-glyphs-with-_005cN"></a>
+<a class="index-entry-id" id="index-unnamed-glyphs_002c-accessing-with-_005cN"></a>
+<a class="index-entry-id" id="index-characters_002c-unnamed_002c-accessing-with-_005cN"></a>
+<a class="index-entry-id" id="index-glyphs_002c-unnamed_002c-accessing-with-_005cN"></a>
+<a class="index-entry-id" id="index-_002d_002d_002d"></a>
+<p><var class="var">name</var> identifies the glyph:
+if <var class="var">name</var> is a printable character&nbsp;<var class="var">c</var>, it corresponds to
+the <code class="code">troff</code> ordinary character&nbsp;<var class="var">c</var>. If <var class="var">name</var> is a
+multi-character sequence not beginning with <code class="code">\</code>, it corresponds to
+the GNU <code class="code">troff</code> special character escape sequence
+&lsquo;<samp class="samp">\[<var class="var">name</var>]</samp>&rsquo;. A name consisting of three minus signs,
+&lsquo;<samp class="samp">---</samp>&rsquo;, is special and indicates that the glyph is unnamed: such
+glyphs can be accessed only by the <code class="code">\N</code> escape sequence in
+<code class="code">troff</code>. A special character named &lsquo;<samp class="samp">---</samp>&rsquo; can still be defined
+using <code class="code">char</code> and similar requests. The <var class="var">name</var> &lsquo;<samp class="samp">\-</samp>&rsquo;
+defines the minus sign glyph. Finally, <var class="var">name</var> can be the
+unbreakable one-sixth and one-twelfth space escape sequences, <code class="code">\|</code>
+and <code class="code">\^</code> (&ldquo;thin&rdquo; and &ldquo;hair&rdquo; spaces, respectively), in which
+case only the width metric described below is interpreted; a font can
+thus customize the widths of these spaces.
+</p>
+<p>The form of the <var class="var">metrics</var> field is as follows.
+</p>
+<div class="display">
+<div class="group"><pre class="display-preformatted"><var class="var">width</var>[<code class="code">,</code>[<var class="var">height</var>[<code class="code">,</code>[<var class="var">depth</var>[<code class="code">,</code>[<var class="var">italic-correction</var>
+ [<code class="code">,</code>[<var class="var">left-italic-correction</var>[<code class="code">,</code>[<var class="var">subscript-correction</var>]]]]]]]]]]
+</pre></div></div>
+
+<p>There must not be any spaces, tabs, or newlines between these
+<em class="dfn">subfields</em> (which have been split here into two lines only for
+better legibility). The subfields are in basic units expressed as
+decimal integers. Unspecified subfields default to&nbsp;<code class="code">0</code>.
+Since there is no associated binary format, these values are not
+required to fit into the C language data type &lsquo;<samp class="samp">char</samp>&rsquo; as they are in
+<abbr class="acronym">AT&amp;T</abbr> device-independent <code class="code">troff</code>.
+</p>
+<p>The <var class="var">width</var> subfield gives the width of the glyph. The <var class="var">height</var>
+subfield gives the height of the glyph (upward is positive); if a glyph
+does not extend above the baseline, it should be given a zero height,
+rather than a negative height. The <var class="var">depth</var> subfield gives the depth
+of the glyph, that is, the distance below the baseline to which the
+glyph extends (downward is positive); if a glyph does not extend below
+the baseline, it should be given a zero depth, rather than a negative
+depth. Italic corrections are relevant to glyphs in italic or oblique
+styles. The <var class="var">italic-correction</var> is the amount of space that should
+be added after an oblique glyph to be followed immediately by an upright
+glyph. The <var class="var">left-italic-correction</var> is the amount of space that
+should be added before an oblique glyph to be preceded immediately by an
+upright glyph. The <var class="var">subscript-correction</var> is the amount of space
+that should be added after an oblique glyph to be followed by a
+subscript; it should be less than the italic correction.
+</p>
+<p>For fonts used with typesetting devices, the <var class="var">type</var> field gives a
+featural description of the glyph: it is a bit mask recording whether
+the glyph is an ascender, descender, both, or neither. When a <code class="code">\w</code>
+escape sequence is interpolated, these values are bitwise or-ed
+together for each glyph and stored in the <code class="code">nr</code> register. In font
+descriptions for terminal devices, all glyphs might have a type of zero,
+regardless of their appearance.
+</p>
+<dl class="table">
+<dt><code class="code">0</code></dt>
+<dd><p>means the glyph lies entirely between the baseline and a horizontal line
+at the &ldquo;x-height&rdquo; of the font; typical examples are &lsquo;<samp class="samp">a</samp>&rsquo;,
+&lsquo;<samp class="samp">c</samp>&rsquo;, and &lsquo;<samp class="samp">x</samp>&rsquo;;
+</p>
+</dd>
+<dt><code class="code">1</code></dt>
+<dd><p>means the glyph descends below the baseline, like &lsquo;<samp class="samp">p</samp>&rsquo;;
+</p>
+</dd>
+<dt><code class="code">2</code></dt>
+<dd><p>means the glyph ascends above the font&rsquo;s x-height, like &lsquo;<samp class="samp">A</samp>&rsquo; or
+&lsquo;<samp class="samp">b</samp>&rsquo;; and
+</p>
+</dd>
+<dt><code class="code">3</code></dt>
+<dd><p>means the glyph is both an ascender and a descender&mdash;this is true of
+parentheses in some fonts.
+</p></dd>
+</dl>
+
+<p>The <var class="var">code</var> field gives a numeric identifier that the postprocessor
+uses to render the glyph. The glyph can be specified to <code class="code">troff</code>
+using this code by means of the <code class="code">\N</code> escape sequence. <var class="var">code</var>
+can be any integer.<a class="footnote" id="DOCF129" href="#FOOT129"><sup>129</sup></a>
+</p>
+<p>The <var class="var">entity-name</var> field defines an identifier for the glyph that the
+postprocessor uses to print the GNU <code class="code">troff</code> glyph <var class="var">name</var>. This
+field is optional; it was introduced so that the <code class="code">grohtml</code> output
+driver could encode its character set. For example, the glyph
+&lsquo;<samp class="samp">\[Po]</samp>&rsquo; is represented by &lsquo;<samp class="samp">&amp;pound;</samp>&rsquo; in <abbr class="acronym">HTML</abbr> 4.0.
+For efficiency, these data are now compiled directly into
+<code class="code">grohtml</code>. <code class="code">grops</code> uses the field to build sub-encoding
+arrays for PostScript fonts containing more than 256 glyphs. Anything
+on the line after the <var class="var">entity-name</var> field or &lsquo;<samp class="samp">--</samp>&rsquo; is ignored.
+</p>
+<p>A line in the <code class="code">charset</code> section can also have the form
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"><var class="var">name</var> &quot;
+</pre></div></div>
+
+<p>identifying <var class="var">name</var> as another name for the glyph mentioned in the
+preceding line. Such aliases can be chained.
+</p>
+<a class="index-entry-id" id="index-kernpairs"></a>
+<p>The directive <code class="code">kernpairs</code> starts a list of kerning adjustments to
+be made to adjacent glyph pairs from this font. It contains a sequence
+of lines formatted as follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"><var class="var">g1</var> <var class="var">g2</var> <var class="var">n</var>
+</pre></div></div>
+
+<p>The foregoing means that when glyph <var class="var">g1</var> is typeset immediately
+before <var class="var">g2</var>, the space between them should be increased
+by&nbsp;<var class="var">n</var>. Most kerning pairs should have a negative value
+for&nbsp;<var class="var">n</var>.
+</p>
+
+
+
+
+<hr>
+</div>
+</div>
+</div>
+<div class="appendix-level-extent" id="Copying-This-Manual">
+<div class="nav-panel">
+<p>
+Next: <a href="#Request-Index" accesskey="n" rel="next">Request Index</a>, Previous: <a href="#Font-Description-File-Format" accesskey="p" rel="prev">Font Description File Format</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="appendix" id="Copying-This-Manual-1">Appendix A Copying This Manual</h2>
+
+<div class="center">Version 1.3, 3 November 2008
+</div>
+
+<div class="display">
+<pre class="display-preformatted">Copyright &copy; 2000-2018 Free Software Foundation, Inc.
+<a class="uref" href="http://fsf.org/">http://fsf.org/</a>
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+</pre></div>
+
+<ol class="enumerate" start="0">
+<li> PREAMBLE
+
+<p>The purpose of this License is to make a manual, textbook, or other
+functional and useful document <em class="dfn">free</em> in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+</p>
+<p>This License is a kind of &ldquo;copyleft&rdquo;, which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+</p>
+<p>We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+</p>
+</li><li> APPLICABILITY AND DEFINITIONS
+
+<p>This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The &ldquo;Document&rdquo;, below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as &ldquo;you&rdquo;. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+</p>
+<p>A &ldquo;Modified Version&rdquo; of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+</p>
+<p>A &ldquo;Secondary Section&rdquo; is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document&rsquo;s overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+</p>
+<p>The &ldquo;Invariant Sections&rdquo; are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+</p>
+<p>The &ldquo;Cover Texts&rdquo; are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+</p>
+<p>A &ldquo;Transparent&rdquo; copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
+</p>
+<p>Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input
+format, SGML or XML using a publicly available
+DTD, and standard-conforming simple HTML,
+PostScript or PDF designed for human modification. Examples
+of transparent image formats include PNG, XCF and
+JPG. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, SGML or
+XML for which the DTD and/or processing tools are
+not generally available, and the machine-generated HTML,
+PostScript or PDF produced by some word processors for
+output purposes only.
+</p>
+<p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, &ldquo;Title Page&rdquo; means
+the text near the most prominent appearance of the work&rsquo;s title,
+preceding the beginning of the body of the text.
+</p>
+<p>The &ldquo;publisher&rdquo; means any person or entity that distributes copies
+of the Document to the public.
+</p>
+<p>A section &ldquo;Entitled XYZ&rdquo; means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as &ldquo;Acknowledgements&rdquo;,
+&ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.) To &ldquo;Preserve the Title&rdquo;
+of such a section when you modify the Document means that it remains a
+section &ldquo;Entitled XYZ&rdquo; according to this definition.
+</p>
+<p>The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+</p>
+</li><li> VERBATIM COPYING
+
+<p>You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+</p>
+<p>You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+</p>
+</li><li> COPYING IN QUANTITY
+
+<p>If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document&rsquo;s license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+</p>
+<p>If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+</p>
+<p>If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+</p>
+<p>It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+</p>
+</li><li> MODIFICATIONS
+
+<p>You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+</p>
+<ol class="enumerate" type="A" start="1">
+<li> Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+</li><li> List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+</li><li> State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+</li><li> Preserve all the copyright notices of the Document.
+
+</li><li> Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+</li><li> Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+</li><li> Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document&rsquo;s license notice.
+
+</li><li> Include an unaltered copy of this License.
+
+</li><li> Preserve the section Entitled &ldquo;History&rdquo;, Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled &ldquo;History&rdquo; in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+</li><li> Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the &ldquo;History&rdquo; section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+</li><li> For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+</li><li> Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+
+</li><li> Delete any section Entitled &ldquo;Endorsements&rdquo;. Such a section
+may not be included in the Modified Version.
+
+</li><li> Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
+to conflict in title with any Invariant Section.
+
+</li><li> Preserve any Warranty Disclaimers.
+</li></ol>
+
+<p>If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version&rsquo;s license notice.
+These titles must be distinct from any other section titles.
+</p>
+<p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
+nothing but endorsements of your Modified Version by various
+parties&mdash;for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+</p>
+<p>You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+</p>
+<p>The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+</p>
+</li><li> COMBINING DOCUMENTS
+
+<p>You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+</p>
+<p>The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+</p>
+<p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
+in the various original documents, forming one section Entitled
+&ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
+and any sections Entitled &ldquo;Dedications&rdquo;. You must delete all
+sections Entitled &ldquo;Endorsements.&rdquo;
+</p>
+</li><li> COLLECTIONS OF DOCUMENTS
+
+<p>You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+</p>
+<p>You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+</p>
+</li><li> AGGREGATION WITH INDEPENDENT WORKS
+
+<p>A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an &ldquo;aggregate&rdquo; if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation&rsquo;s users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+</p>
+<p>If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document&rsquo;s Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+</p>
+</li><li> TRANSLATION
+
+<p>Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+</p>
+<p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
+&ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+</p>
+</li><li> TERMINATION
+
+<p>You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+</p>
+<p>However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+</p>
+<p>Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+</p>
+<p>Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+</p>
+</li><li> FUTURE REVISIONS OF THIS LICENSE
+
+<p>The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+<a class="uref" href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
+</p>
+<p>Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License &ldquo;or any later version&rdquo; applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy&rsquo;s public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+</p>
+</li><li> RELICENSING
+
+<p>&ldquo;Massive Multiauthor Collaboration Site&rdquo; (or &ldquo;MMC Site&rdquo;) means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+&ldquo;Massive Multiauthor Collaboration&rdquo; (or &ldquo;MMC&rdquo;) contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+</p>
+<p>&ldquo;CC-BY-SA&rdquo; means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+</p>
+<p>&ldquo;Incorporate&rdquo; means to publish or republish a Document, in whole or
+in part, as part of another Document.
+</p>
+<p>An MMC is &ldquo;eligible for relicensing&rdquo; if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+</p>
+<p>The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+</p>
+</li></ol>
+
+<h3 class="heading" id="ADDENDUM_003a-How-to-use-this-License-for-your-documents">ADDENDUM: How to use this License for your documents</h3>
+
+<p>To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+</p>
+<div class="example smallexample">
+<div class="group"><pre class="example-preformatted"> Copyright (C) <var class="var">year</var> <var class="var">your name</var>.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+</pre></div></div>
+
+<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the &ldquo;with&hellip;Texts.&rdquo; line with this:
+</p>
+<div class="example smallexample">
+<div class="group"><pre class="example-preformatted"> with the Invariant Sections being <var class="var">list their titles</var>, with
+ the Front-Cover Texts being <var class="var">list</var>, and with the Back-Cover Texts
+ being <var class="var">list</var>.
+</pre></div></div>
+
+<p>If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+</p>
+<p>If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</p>
+
+
+
+
+
+<hr>
+</div>
+<div class="appendix-level-extent" id="Request-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="#Escape-Sequence-Index" accesskey="n" rel="next">Escape Sequence Index</a>, Previous: <a href="#Copying-This-Manual" accesskey="p" rel="prev">Copying This Manual</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="appendix" id="Request-Index-1">Appendix B Request Index</h2>
+
+<p>Request names appear without a leading control character; the defaults
+are <code class="code">.</code> for the regular control character and <code class="code">'</code> for the
+no-break control character.
+</p>
+<div class="printindex rq-printindex">
+<table class="rq-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Request-Index_rq_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-W"><b>W</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="rq-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ab"><code>ab</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ad"><code>ad</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-af"><code>af</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-aln"><code>aln</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-als"><code>als</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-am"><code>am</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-am1"><code>am1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ami"><code>ami</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ami1"><code>ami1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-as"><code>as</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-as1"><code>as1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-asciify"><code>asciify</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-B">B</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-backtrace"><code>backtrace</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bd"><code>bd</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-blm"><code>blm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Blank-Line-Traps">Blank Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-box"><code>box</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-boxa"><code>boxa</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bp"><code>bp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-br"><code>br</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-break-2"><code>break</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#while">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-brp"><code>brp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-c2"><code>c2</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cc"><code>cc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ce"><code>ce</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cf"><code>cf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cflags"><code>cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ch"><code>ch</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-char"><code>char</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-chop"><code>chop</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-class"><code>class</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-close"><code>close</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-color"><code>color</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-composite"><code>composite</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-continue"><code>continue</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#while">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cp"><code>cp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cs"><code>cs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cu"><code>cu</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-da"><code>da</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-de"><code>de</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-de1"><code>de1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-defcolor"><code>defcolor</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dei"><code>dei</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dei1"><code>dei1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-device"><code>device</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-devicem"><code>devicem</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-di"><code>di</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-do"><code>do</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ds"><code>ds</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ds-1"><code>ds</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ds1"><code>ds1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dt"><code>dt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-E">E</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ec"><code>ec</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ecr"><code>ecr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ecs"><code>ecs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-el"><code>el</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#if_002delse">if-else</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-em"><code>em</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-eo"><code>eo</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ev"><code>ev</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-evc"><code>evc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ex"><code>ex</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fam"><code>fam</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fc"><code>fc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fchar"><code>fchar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fcolor"><code>fcolor</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fi"><code>fi</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fl"><code>fl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fp"><code>fp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fschar"><code>fschar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fspecial"><code>fspecial</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Special-Fonts">Special Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ft"><code>ft</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ftr"><code>ftr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fzoom"><code>fzoom</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-G">G</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-gcolor"><code>gcolor</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-H">H</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hc"><code>hc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hcode"><code>hcode</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hla"><code>hla</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hlm"><code>hlm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hpf"><code>hpf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hpfa"><code>hpfa</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hpfcode"><code>hpfcode</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hw"><code>hw</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hy"><code>hy</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hym"><code>hym</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hys"><code>hys</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-I">I</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ie"><code>ie</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#if_002delse">if-else</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-if"><code>if</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#if_002dthen">if-then</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ig"><code>ig</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-in-1"><code>in</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-it"><code>it</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-itc"><code>itc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-K">K</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-kern"><code>kern</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lc"><code>lc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-length"><code>length</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lf"><code>lf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lg"><code>lg</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-linetabs"><code>linetabs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ll-1"><code>ll</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ls"><code>ls</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lsm"><code>lsm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leading-Space-Traps">Leading Space Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lt"><code>lt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mc"><code>mc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mk"><code>mk</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mso"><code>mso</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-msoquiet"><code>msoquiet</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-na"><code>na</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ne"><code>ne</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nf"><code>nf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nh"><code>nh</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nm"><code>nm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nn"><code>nn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nop"><code>nop</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#if_002dthen">if-then</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nr"><code>nr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nr-1"><code>nr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nr-2"><code>nr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nr-3"><code>nr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nroff"><code>nroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ns"><code>ns</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nx"><code>nx</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-O">O</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-open"><code>open</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-opena"><code>opena</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-os"><code>os</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output"><code>output</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pc"><code>pc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pev"><code>pev</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pi"><code>pi</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pl"><code>pl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pm"><code>pm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pn"><code>pn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pnr"><code>pnr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-po-1"><code>po</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ps"><code>ps</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-psbb"><code>psbb</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pso"><code>pso</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ptr"><code>ptr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pvs"><code>pvs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rchar"><code>rchar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rd"><code>rd</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-return"><code>return</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rfschar"><code>rfschar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rj"><code>rj</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rm"><code>rm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rn"><code>rn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rnn"><code>rnn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rr"><code>rr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rs"><code>rs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rt"><code>rt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-schar"><code>schar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-shc"><code>shc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-shift"><code>shift</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sizes-1"><code>sizes</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-so"><code>so</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-soquiet"><code>soquiet</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sp"><code>sp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-2"><code>special</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Special-Fonts">Special Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spreadwarn"><code>spreadwarn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ss"><code>ss</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stringdown"><code>stringdown</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stringup"><code>stringup</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sty"><code>sty</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-substring"><code>substring</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sv"><code>sv</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sy"><code>sy</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ta"><code>ta</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tag"><code>tag</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-taga"><code>taga</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tc"><code>tc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ti"><code>ti</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tkf"><code>tkf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tl"><code>tl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tm"><code>tm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tm1"><code>tm1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tmc"><code>tmc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tr"><code>tr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trf"><code>trf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trin"><code>trin</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trnt"><code>trnt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-troff"><code>troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-uf"><code>uf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ul"><code>ul</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unformat"><code>unformat</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vpt"><code>vpt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vs"><code>vs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-W">W</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-warn"><code>warn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-warnscale"><code>warnscale</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-wh"><code>wh</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-while-1"><code>while</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#while">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-write"><code>write</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-writec"><code>writec</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-writem"><code>writem</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="rq-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Request-Index_rq_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-W"><b>W</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+
+
+<hr>
+</div>
+<div class="appendix-level-extent" id="Escape-Sequence-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="#Operator-Index" accesskey="n" rel="next">Operator Index</a>, Previous: <a href="#Request-Index" accesskey="p" rel="prev">Request Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="appendix" id="Escape-Sequence-Index-1">Appendix C Escape Sequence Index</h2>
+
+<p>The escape character, <code class="code">\</code> by default, is always followed by at
+least one more input character, making an escape <em class="emph">sequence</em>. Any
+input token <code class="code">\<var class="var">X</var></code> with <var class="var">X</var> not in the list below emits a
+warning and interpolates glyph <var class="var">X</var>. Note the entries for <code class="code">\.</code>,
+which may be obscured by the leader dots, and for <code class="code">\<kbd class="key">RET</kbd></code> and
+<code class="code">\<kbd class="key">SP</kbd></code>, which are sorted alphabetically, not by code point
+order.
+</p>
+<div class="printindex es-printindex">
+<table class="es-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Escape-Sequence-Index_es_symbol-1">\</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c"><code>\</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c-1"><code>\</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021"><code>\!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0022"><code>\&quot;</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0023"><code>\#</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0024"><code>\$</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0024_002a"><code>\$*</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_00240"><code>\$0</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0024_0040"><code>\$@</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0024_005e"><code>\$^</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025"><code>\%</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026"><code>\&amp;</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0027"><code>\<code class="code">'</code></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0028"><code>\(</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0029"><code>\)</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002a"><code>\*</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002c"><code>\,</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002d"><code>\-</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002e"><code>\.</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002f"><code>\/</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c0"><code>\0</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003a"><code>\:</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003f"><code>\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cA"><code>\A</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ca"><code>\a</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cB"><code>\B</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cb"><code>\b</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cc"><code>\c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cC"><code>\C</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cd"><code>\d</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cD"><code>\D</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ce"><code>\e</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cE"><code>\E</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cf"><code>\f</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cF"><code>\F</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cg"><code>\g</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cH"><code>\H</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ch"><code>\h</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ck"><code>\k</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cl"><code>\l</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cL"><code>\L</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cm"><code>\m</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cM"><code>\M</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cn"><code>\n</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cn-1"><code>\n</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cN"><code>\N</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cnewline"><code>\<i class="slanted">newline</i></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005co"><code>\o</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cO"><code>\O</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cp"><code>\p</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR"><code>\R</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR-1"><code>\R</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cr"><code>\r</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cRET"><code>\<kbd class="key">RET</kbd></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cS"><code>\S</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cs"><code>\s</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cSP"><code>\<kbd class="key">SP</kbd></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cspace"><code>\<i class="slanted">space</i></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ct"><code>\t</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cu"><code>\u</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cv"><code>\v</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cV"><code>\V</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cw"><code>\w</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cx"><code>\x</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cX"><code>\X</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cY"><code>\Y</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cz"><code>\z</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cZ"><code>\Z</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005b"><code>\[</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005c"><code>\\</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005e"><code>\^</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005f"><code>\_</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0060"><code>\<code class="code">`</code></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007b"><code>\{</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007b-1"><code>\{</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007c"><code>\|</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007d"><code>\}</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007e"><code>\~</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+</div>
+
+
+
+
+<hr>
+</div>
+<div class="appendix-level-extent" id="Operator-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="#Register-Index" accesskey="n" rel="next">Register Index</a>, Previous: <a href="#Escape-Sequence-Index" accesskey="p" rel="prev">Escape Sequence Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="appendix" id="Operator-Index-1">Appendix D Operator Index</h2>
+
+<div class="printindex op-printindex">
+<table class="op-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Operator-Index_op_symbol-1"><b>!</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-2"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-3"><b>&amp;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-4"><b>(</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-5"><b>)</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-6"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-7"><b>+</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-8"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-9"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-10"><b>:</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-11"><b>;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-12"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-13"><b>=</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-14"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-15"><b>|</b></a>
+</td></tr></table>
+<table class="op-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-1">!</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0021"><code>!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-2">%</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0025"><code>%</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-3">&amp;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026"><code>&amp;</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-4">(</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0028"><code>(</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-5">)</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0029"><code>)</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-6">*</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002a"><code>*</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-7">+</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002b"><code>+</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002b-1"><code>+</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002b-_0028unary_0029"><code>+ <span class="r">(unary)</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-8">-</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d"><code>-</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d-1"><code>-</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d-_0028unary_0029"><code>- <span class="r">(unary)</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-9">/</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002f"><code>/</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-10">:</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003a"><code>:</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-11">;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003b"><code>;</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-12">&lt;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003c"><code>&lt;</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003c_003d"><code>&lt;=</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003c_003f"><code>&lt;?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-13">=</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003d"><code>=</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003d_003d"><code>==</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-14">&gt;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003e"><code>&gt;</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003e_003d"><code>&gt;=</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003e_003f"><code>&gt;?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-15">|</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_007c"><code>|</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="op-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Operator-Index_op_symbol-1"><b>!</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-2"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-3"><b>&amp;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-4"><b>(</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-5"><b>)</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-6"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-7"><b>+</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-8"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-9"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-10"><b>:</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-11"><b>;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-12"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-13"><b>=</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-14"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-15"><b>|</b></a>
+</td></tr></table>
+</div>
+
+
+
+
+<hr>
+</div>
+<div class="appendix-level-extent" id="Register-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="#Macro-Index" accesskey="n" rel="next">Macro Index</a>, Previous: <a href="#Operator-Index" accesskey="p" rel="prev">Operator Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="appendix" id="Register-Index-1">Appendix E Register Index</h2>
+
+<p>The macro package or program a specific register belongs to is appended
+in brackets.
+</p>
+<p>A register name&nbsp;<code class="code">x</code> consisting of exactly one character can be
+accessed as &lsquo;<samp class="samp">\nx</samp>&rsquo;. A register name <code class="code">xx</code> consisting of exactly
+two characters can be accessed as &lsquo;<samp class="samp">\n(xx</samp>&rsquo;. Register names
+<code class="code">xxx</code> of any length can be accessed as &lsquo;<samp class="samp">\n[xxx]</samp>&rsquo;.
+</p>
+<div class="printindex vr-printindex">
+<table class="vr-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Register-Index_vr_symbol-1"><b>$</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_symbol-2"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_symbol-3"><b>.</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-Y"><b>Y</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="vr-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_symbol-1">$</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0024_0024"><code>$$</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_symbol-2">%</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0025-1"><code>%</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0025-2"><code>%</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_symbol-3">.</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002e_0024"><code>.$</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eA"><code>.A</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ea"><code>.a</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eb"><code>.b</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ebr-1"><code>.br</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ec"><code>.c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eC"><code>.C</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ecdp"><code>.cdp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ece-1"><code>.ce</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002echt"><code>.cht</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ecolor-1"><code>.color</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ecp-1"><code>.cp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ecsk"><code>.csk</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ed"><code>.d</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eev-1"><code>.ev</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eF"><code>.F</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ef"><code>.f</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002efam-1"><code>.fam</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002efn"><code>.fn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002efp-1"><code>.fp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eg"><code>.g</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eH"><code>.H</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eh"><code>.h</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eheight"><code>.height</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ehla-1"><code>.hla</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ehlc"><code>.hlc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ehlm-1"><code>.hlm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ehy-1"><code>.hy</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ehym-1"><code>.hym</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ehys-1"><code>.hys</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ei"><code>.i</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ein-3"><code>.in</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eint"><code>.int</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ej"><code>.j</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ek"><code>.k</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ekern-1"><code>.kern</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eL"><code>.L</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002el"><code>.l</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002elg-1"><code>.lg</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002elinetabs-1"><code>.linetabs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ell-3"><code>.ll</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002elt-3"><code>.lt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002em"><code>.m</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eM"><code>.M</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002en"><code>.n</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ene-1"><code>.ne</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002enm-1"><code>.nm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002enn-1"><code>.nn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ens-1"><code>.ns</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eo"><code>.o</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eO"><code>.O</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eP"><code>.P</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ep"><code>.p</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002epe"><code>.pe</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002epn-3"><code>.pn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eps-3"><code>.ps</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002epsr"><code>.psr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002epvs-3"><code>.pvs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eR-2"><code>.R</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002erj-1"><code>.rj</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002es"><code>.s</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eslant"><code>.slant</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002esr"><code>.sr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ess-1"><code>.ss</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002esss"><code>.sss</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002esty-1"><code>.sty</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eT-2"><code>.T</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002et"><code>.t</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002etabs"><code>.tabs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002etrunc"><code>.trunc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eU"><code>.U</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eu"><code>.u</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eV"><code>.V</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ev"><code>.v</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002evpt-1"><code>.vpt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ew"><code>.w</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ewarn-1"><code>.warn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ex"><code>.x</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ey"><code>.y</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eY"><code>.Y</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ez"><code>.z</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002ezoom"><code>.zoom</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-c_002e"><code>c.</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ct"><code>ct</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DD-_005bms_005d"><code>DD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DI-_005bms_005d"><code>DI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dl"><code>dl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dn"><code>dn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dw"><code>dw</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dy"><code>dy</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-FF-_005bms_005d"><code>FF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-FI-_005bms_005d"><code>FI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-FM-_005bms_005d"><code>FM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-FPD-_005bms_005d"><code>FPD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-FPS-_005bms_005d"><code>FPS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-FVS-_005bms_005d"><code>FVS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-G">G</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GROWPS-_005bms_005d"><code>GROWPS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GS-_005bms_005d"><code>GS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Differences-from-AT_0026T-ms">Differences from AT&amp;T ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-H">H</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-HM-_005bms_005d"><code>HM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-HORPHANS-_005bms_005d"><code>HORPHANS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hours"><code>hours</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hp"><code>hp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-HY-_005bms_005d"><code>HY <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-LL-_005bms_005d"><code>LL <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-llx"><code>llx</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lly"><code>lly</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ln"><code>ln</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lsn"><code>lsn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leading-Space-Traps">Leading Space Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lss"><code>lss</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leading-Space-Traps">Leading Space Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-LT-_005bms_005d"><code>LT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MINGW-_005bms_005d"><code>MINGW <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-minutes"><code>minutes</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mo"><code>mo</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nl"><code>nl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-O">O</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-opmaxx"><code>opmaxx</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-opmaxy"><code>opmaxy</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-opminx"><code>opminx</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-opminy"><code>opminy</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PD-_005bms_005d"><code>PD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PI-_005bms_005d"><code>PI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PO-_005bms_005d"><code>PO <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PORPHANS-_005bms_005d"><code>PORPHANS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PS-_005bms_005d-1"><code>PS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PSINCR-_005bms_005d"><code>PSINCR <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-Q">Q</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-QI-_005bms_005d"><code>QI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rsb"><code>rsb</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rst"><code>rst</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sb"><code>sb</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-seconds"><code>seconds</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-skw"><code>skw</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-slimit"><code>slimit</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ssc"><code>ssc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-st"><code>st</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-systat"><code>systat</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-TC_002dMARGIN-_005bms_005d"><code>TC-MARGIN <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-urx"><code>urx</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ury"><code>ury</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-VS-_005bms_005d"><code>VS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-Y">Y</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-year"><code>year</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-yr"><code>yr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="vr-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Register-Index_vr_symbol-1"><b>$</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_symbol-2"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_symbol-3"><b>.</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-Y"><b>Y</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+
+
+<hr>
+</div>
+<div class="appendix-level-extent" id="Macro-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="#String-Index" accesskey="n" rel="next">String Index</a>, Previous: <a href="#Register-Index" accesskey="p" rel="prev">Register Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="appendix" id="Macro-Index-1">Appendix F Macro Index</h2>
+
+<p>The macro package a specific macro belongs to is appended in brackets.
+They appear without the leading control character (normally &lsquo;<samp class="samp">.</samp>&rsquo;).
+</p>
+<div class="printindex ma-printindex">
+<table class="ma-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-1"><b>1</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-2"><b>2</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-3"><b>[</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-4"><b>]</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-X"><b>X</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="ma-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_symbol-1">1</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-1C-_005bms_005d"><code>1C <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Multiple-Columns">ms Multiple Columns</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_symbol-2">2</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-2C-_005bms_005d"><code>2C <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Multiple-Columns">ms Multiple Columns</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_symbol-3">[</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005b-_005bms_005d"><code>[ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_symbol-4">]</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005d-_005bms_005d"><code>] <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-AB-_005bms_005d"><code>AB <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-AE-_005bms_005d"><code>AE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-AI-_005bms_005d"><code>AI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-AM-_005bms_005d"><code>AM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-AU-_005bms_005d"><code>AU <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-B">B</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-B-_005bms_005d"><code>B <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-B1-_005bms_005d"><code>B1 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-B2-_005bms_005d"><code>B2 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-BD-_005bms_005d"><code>BD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-BI-_005bms_005d"><code>BI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-BT-_005bman_005d"><code>BT <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-BX-_005bms_005d"><code>BX <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CD-_005bms_005d"><code>CD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CT-_005bman_005d"><code>CT <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CW-_005bman_005d"><code>CW <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CW-_005bms_005d"><code>CW <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DA-_005bms_005d"><code>DA <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-De-_005bman_005d"><code>De <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DE-_005bms_005d"><code>DE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Ds-_005bman_005d"><code>Ds <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DS-_005bms_005d"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DS-_005bms_005d-1"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DS-_005bms_005d-2"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DS-_005bms_005d-3"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DS-_005bms_005d-4"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-E">E</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-EE-_005bman_005d"><code>EE <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-EF-_005bms_005d"><code>EF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-EH-_005bms_005d"><code>EH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-EN-_005bms_005d"><code>EN <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-EQ-_005bms_005d"><code>EQ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-EX-_005bman_005d"><code>EX <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-FE-_005bms_005d"><code>FE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-FS-_005bms_005d"><code>FS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-G">G</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-G-_005bman_005d"><code>G <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GL-_005bman_005d"><code>GL <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-H">H</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-HB-_005bman_005d"><code>HB <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-I">I</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-I-_005bms_005d"><code>I <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ID-_005bms_005d"><code>ID <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-IP-_005bms_005d"><code>IP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-K">K</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-KE-_005bms_005d"><code>KE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-KF-_005bms_005d"><code>KF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-KS-_005bms_005d"><code>KS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-LD-_005bms_005d"><code>LD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-LG-_005bms_005d"><code>LG <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-LP-_005bms_005d"><code>LP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MC-_005bms_005d"><code>MC <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Multiple-Columns">ms Multiple Columns</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MS-_005bman_005d"><code>MS <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ND-_005bms_005d"><code>ND <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-NE-_005bman_005d"><code>NE <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-NH-_005bms_005d"><code>NH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-NL-_005bms_005d"><code>NL <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-NT-_005bman_005d"><code>NT <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-O">O</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-OF-_005bms_005d"><code>OF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-OH-_005bms_005d"><code>OH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-P1-_005bms_005d"><code>P1 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PE-_005bms_005d"><code>PE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PF-_005bms_005d"><code>PF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PN-_005bman_005d"><code>PN <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Pn-_005bman_005d"><code>Pn <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PP-_005bms_005d"><code>PP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PS-_005bms_005d"><code>PS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PT-_005bman_005d"><code>PT <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PX-_005bms_005d"><code>PX <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-Q">Q</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-QE-_005bms_005d"><code>QE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-QP-_005bms_005d"><code>QP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-QS-_005bms_005d"><code>QS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-R-_005bman_005d"><code>R <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-R-_005bms_005d"><code>R <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-RD-_005bms_005d"><code>RD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-RE-_005bms_005d"><code>RE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Indented-regions-in-ms">Indented regions in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-RN-_005bman_005d"><code>RN <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-RP-_005bms_005d"><code>RP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-RS-_005bms_005d"><code>RS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Indented-regions-in-ms">Indented regions in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-SH-_005bms_005d"><code>SH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-SM-_005bms_005d"><code>SM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-TA-_005bms_005d"><code>TA <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tab-Stops-in-ms">Tab Stops in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-TB-_005bman_005d"><code>TB <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-TC-_005bms_005d"><code>TC <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-TE-_005bms_005d"><code>TE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-TL-_005bms_005d"><code>TL <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-TS-_005bms_005d"><code>TS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-UL-_005bms_005d"><code>UL <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-VE-_005bman_005d"><code>VE <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-VS-_005bman_005d"><code>VS <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-X">X</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-XA-_005bms_005d"><code>XA <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-XE-_005bms_005d"><code>XE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-XH-_005bms_005d"><code>XH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-XH_002dREPLACEMENT-_005bms_005d"><code>XH-REPLACEMENT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-XH_002dUPDATE_002dTOC-_005bms_005d"><code>XH-UPDATE-TOC <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-XN-_005bms_005d"><code>XN <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-XN_002dINIT-_005bms_005d"><code>XN-INIT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-XN_002dREPLACEMENT-_005bms_005d"><code>XN-REPLACEMENT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-XP-_005bms_005d"><code>XP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-XS-_005bms_005d"><code>XS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="ma-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-1"><b>1</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-2"><b>2</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-3"><b>[</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-4"><b>]</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-X"><b>X</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+
+
+<hr>
+</div>
+<div class="appendix-level-extent" id="String-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="#File-Keyword-Index" accesskey="n" rel="next">File Keyword Index</a>, Previous: <a href="#Macro-Index" accesskey="p" rel="prev">Macro Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="appendix" id="String-Index-1">Appendix G String Index</h2>
+
+<p>The macro package or program a that defines or uses each string is
+appended in brackets. (Only one string, <code class="code">.T</code>, is defined by the
+<code class="code">troff</code> formatter itself.) See <a class="xref" href="#Strings">Strings</a>.
+</p>
+
+<div class="printindex st-printindex">
+<table class="st-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#String-Index_st_symbol-1"><b>!</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-2"><b>'</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-3"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-4"><b>,</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-5"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-6"><b>.</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-7"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-8"><b>3</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-9"><b>8</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-10"><b>:</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-11"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-12"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-13"><b>?</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-14"><b>^</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-15"><b>_</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-16"><b>`</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-17"><b>{</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-18"><b>}</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-19"><b>~</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#String-Index_st_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-V"><b>V</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="st-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-1">!</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0021-_005bms_005d"><code>! <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-2">'</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0027-_005bms_005d"><code><code class="code">'</code> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0027-_005bms_005d-1"><code><code class="code">'</code> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-3">*</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002a-_005bms_005d"><code>* <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-4">,</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002c-_005bms_005d"><code>, <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002c-_005bms_005d-1"><code>, <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-5">-</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d-_005bms_005d"><code>- <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typographical-symbols-in-ms">Typographical symbols in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-6">.</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002e-_005bms_005d"><code>. <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eT"><code>.T</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eT-1"><code>.T</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-7">/</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002f-_005bms_005d"><code>/ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-8">3</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-3-_005bms_005d"><code>3 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-9">8</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-8-_005bms_005d"><code>8 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-10">:</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003a-_005bms_005d"><code>: <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003a-_005bms_005d-1"><code>: <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-11">&lt;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003c-_005bms_005d"><code>&lt; <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-12">&gt;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003e-_005bms_005d"><code>&gt; <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-13">?</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003f-_005bms_005d"><code>? <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-14">^</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005e-_005bms_005d"><code>^ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005e-_005bms_005d-1"><code>^ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-15">_</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005f-_005bms_005d"><code>_ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-16">`</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0060-_005bms_005d"><code><code class="code">`</code> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0060-_005bms_005d-1"><code><code class="code">`</code> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-17">{</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_007b-_005bms_005d"><code>{ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-18">}</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_007d-_005bms_005d"><code>} <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typeface-and-decoration">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-19">~</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_007e-_005bms_005d"><code>~ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_007e-_005bms_005d-1"><code>~ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ABSTRACT-_005bms_005d"><code>ABSTRACT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ae-_005bms_005d"><code>ae <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Ae-_005bms_005d"><code>Ae <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-C-_005bms_005d"><code>C <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CF-_005bms_005d"><code>CF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CH-_005bms_005d"><code>CH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-d_002d-_005bms_005d"><code>d- <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-D_002d-_005bms_005d"><code>D- <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-FAM-_005bms_005d"><code>FAM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-FR-_005bms_005d"><code>FR <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-LF-_005bms_005d"><code>LF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-LH-_005bms_005d"><code>LH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH1-_005bms_005d"><code>MONTH1 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH10-_005bms_005d"><code>MONTH10 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH11-_005bms_005d"><code>MONTH11 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH12-_005bms_005d"><code>MONTH12 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH2-_005bms_005d"><code>MONTH2 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH3-_005bms_005d"><code>MONTH3 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH4-_005bms_005d"><code>MONTH4 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH5-_005bms_005d"><code>MONTH5 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH6-_005bms_005d"><code>MONTH6 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH7-_005bms_005d"><code>MONTH7 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH8-_005bms_005d"><code>MONTH8 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-MONTH9-_005bms_005d"><code>MONTH9 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-O">O</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-o-_005bms_005d"><code>o <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-oe-_005bms_005d"><code>oe <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-OE-_005bms_005d"><code>OE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-Q">Q</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Q-_005bms_005d"><code>Q <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typographical-symbols-in-ms">Typographical symbols in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-q-_005bms_005d"><code>q <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-REFERENCES-_005bms_005d"><code>REFERENCES <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-RF-_005bms_005d"><code>RF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-RH-_005bms_005d"><code>RH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-SN-_005bms_005d"><code>SN <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-SN_002dDOT-_005bms_005d"><code>SN-DOT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-SN_002dNO_002dDOT-_005bms_005d"><code>SN-NO-DOT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-SN_002dSTYLE-_005bms_005d"><code>SN-STYLE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-SN_002dSTYLE-_005bms_005d-1"><code>SN-STYLE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-th-_005bms_005d"><code>th <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Th-_005bms_005d"><code>Th <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-TOC-_005bms_005d"><code>TOC <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-U-_005bms_005d"><code>U <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typographical-symbols-in-ms">Typographical symbols in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-v-_005bms_005d"><code>v <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="st-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#String-Index_st_symbol-1"><b>!</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-2"><b>'</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-3"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-4"><b>,</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-5"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-6"><b>.</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-7"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-8"><b>3</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-9"><b>8</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-10"><b>:</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-11"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-12"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-13"><b>?</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-14"><b>^</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-15"><b>_</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-16"><b>`</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-17"><b>{</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-18"><b>}</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-19"><b>~</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#String-Index_st_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-V"><b>V</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+
+
+<hr>
+</div>
+<div class="appendix-level-extent" id="File-Keyword-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="#Program-and-File-Index" accesskey="n" rel="next">Program and File Index</a>, Previous: <a href="#String-Index" accesskey="p" rel="prev">String Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="appendix" id="File-Keyword-Index-1">Appendix H File Keyword Index</h2>
+
+<div class="printindex ky-printindex">
+<table class="ky-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#File-Keyword-Index_ky_symbol-1"><b>#</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_symbol-2"><b>-</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-V"><b>V</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="ky-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_symbol-1">#</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0023"><code>#</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0023-1"><code>#</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_symbol-2">-</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d_002d_002d"><code>---</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-B">B</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-biggestfont"><code>biggestfont</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-charset"><code>charset</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-charset-1"><code>charset</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-family"><code>family</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-family-1"><code>family</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts"><code>fonts</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts-1"><code>fonts</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Special-Fonts">Special Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts-2"><code>fonts</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-H">H</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hor"><code>hor</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-I">I</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-image_005fgenerator"><code>image_generator</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-K">K</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-kernpairs"><code>kernpairs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ligatures"><code>ligatures</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-name"><code>name</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-paperlength"><code>paperlength</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-papersize"><code>papersize</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-paperwidth"><code>paperwidth</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pass_005ffilenames"><code>pass_filenames</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-postpro"><code>postpro</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-prepro"><code>prepro</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-print"><code>print</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-res"><code>res</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sizes"><code>sizes</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sizescale"><code>sizescale</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-slant"><code>slant</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spacewidth"><code>spacewidth</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spare1"><code>spare1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spare2"><code>spare2</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special"><code>special</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-1"><code>special</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-styles"><code>styles</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-styles-1"><code>styles</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-styles-2"><code>styles</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tcommand"><code>tcommand</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unicode"><code>unicode</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unitwidth"><code>unitwidth</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unscaled_005fcharwidths"><code>unscaled_charwidths</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-use_005fcharnames_005fin_005fspecial"><code>use_charnames_in_special</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-use_005fcharnames_005fin_005fspecial-1"><code>use_charnames_in_special</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vert"><code>vert</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="ky-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#File-Keyword-Index_ky_symbol-1"><b>#</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_symbol-2"><b>-</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-V"><b>V</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+
+
+<hr>
+</div>
+<div class="appendix-level-extent" id="Program-and-File-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="#File-Keyword-Index" accesskey="p" rel="prev">File Keyword Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="appendix" id="Program-and-File-Index-1">Appendix I Program and File Index</h2>
+
+<div class="printindex pg-printindex">
+<table class="pg-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-J"><b>J</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-Z"><b>Z</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="pg-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-an_002etmac"><code>an.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#man">man</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-changebar"><code>changebar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-composite_002etmac"><code>composite.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cp1047_002etmac"><code>cp1047.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cs_002etmac"><code>cs.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-de_002etmac"><code>de.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC"><code>DESC</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-1"><code>DESC</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-2"><code>DESC</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-3"><code>DESC</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-4"><code>DESC</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Special-Fonts">Special Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diffmk"><code>diffmk</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-E">E</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ec_002etmac"><code>ec.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-en_002etmac"><code>en.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-eqn"><code>eqn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fr_002etmac"><code>fr.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-freeeuro_002epfa"><code>freeeuro.pfa</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-G">G</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-gchem"><code>gchem</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-gdiffmk"><code>gdiffmk</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-geqn"><code>geqn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ggrn"><code>ggrn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-gpic"><code>gpic</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-grap"><code>grap</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-grefer"><code>grefer</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-groff"><code>groff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-gsoelim"><code>gsoelim</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-gtbl"><code>gtbl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-gtroff"><code>gtroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-I">I</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-it_002etmac"><code>it.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-J">J</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ja_002etmac"><code>ja.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-latin1_002etmac"><code>latin1.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-latin2_002etmac"><code>latin2.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-latin5_002etmac"><code>latin5.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-latin9_002etmac"><code>latin9.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-makeindex"><code>makeindex</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Indexing">Indexing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-man_002elocal"><code>man.local</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-man_002etmac"><code>man.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#man">man</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-man_002eultrix"><code>man.ultrix</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nrchbar"><code>nrchbar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-papersize_002etmac"><code>papersize.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-perl"><code>perl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pic"><code>pic</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-post_002dgrohtml"><code>post-grohtml</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pre_002dgrohtml"><code>pre-grohtml</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-preconv"><code>preconv</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-refer"><code>refer</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-soelim"><code>soelim</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sv_002etmac"><code>sv.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tbl"><code>tbl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trace_002etmac"><code>trace.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc"><code>troffrc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc-1"><code>troffrc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc-2"><code>troffrc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc-3"><code>troffrc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc-4"><code>troffrc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc_002dend"><code>troffrc-end</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc_002dend-1"><code>troffrc-end</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-troffrc_002dend-2"><code>troffrc-end</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tty_002etmac"><code>tty.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tty_002etmac-1"><code>tty.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vtroff"><code>vtroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-Z">Z</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-zh_002etmac"><code>zh.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="pg-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-J"><b>J</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-Z"><b>Z</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+
+
+<hr>
+</div>
+<div class="appendix-level-extent" id="Concept-Index">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Program-and-File-Index" accesskey="p" rel="prev">Program and File Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h2 class="appendix" id="Concept-Index-1">Appendix J Concept Index</h2>
+
+<div class="printindex cp-printindex">
+<table class="cp-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-1"><b>&quot;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-2"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-3"><b>&amp;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-4"><b>'</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-5"><b>(</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-6"><b>)</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-7"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-8"><b>+</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-9"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-10"><b>.</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-11"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-12"><b>8</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-13"><b>:</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-14"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-15"><b>=</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-16"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-17"><b>[</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-18"><b>\</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-19"><b>]</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-20"><b>|</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-J"><b>J</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-W"><b>W</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Y"><b>Y</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Z"><b>Z</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="cp-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-1">&quot;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0022_002c-as-delimiter"><code class="code">&quot;</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0022_002c-at-end-of-sentence"><code class="code">&quot;</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0022_002c-at-end-of-sentence-1"><code class="code">&quot;</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0022_002c-embedding-in-a-macro-argument"><code class="code">&quot;</code>, embedding in a macro argument</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-2">%</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0025_002c-as-delimiter"><code class="code">%</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-3">&amp;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026_002c-as-delimiter"><code class="code">&amp;</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-4">'</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0027_002c-as-a-comment"><code class="code">'</code>, as a comment</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0027_002c-as-delimiter"><code class="code">'</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0027_002c-at-end-of-sentence"><code class="code">'</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0027_002c-at-end-of-sentence-1"><code class="code">'</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-5">(</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0028_002c-as-delimiter"><code class="code">(</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-6">)</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0029_002c-as-delimiter"><code class="code">)</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0029_002c-at-end-of-sentence"><code class="code">)</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_0029_002c-at-end-of-sentence-1"><code class="code">)</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-7">*</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002a_002c-as-delimiter"><code class="code">*</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002a_002c-at-end-of-sentence"><code class="code">*</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002a_002c-at-end-of-sentence-1"><code class="code">*</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-8">+</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002b_002c-and-page-motion"><code class="code">+</code>, and page motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002b_002c-as-delimiter"><code class="code">+</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-9">-</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d_002c-and-page-motion"><code class="code">-</code>, and page motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002d_002c-as-delimiter"><code class="code">-</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-10">.</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002e_002c-as-delimiter"><code class="code">.</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eh-register_002c-difference-from-nl"><code class="code">.h</code> register, difference from <code class="code">nl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eps-register_002c-in-comparison-with-_002epsr"><code class="code">.ps</code> register, in comparison with <code class="code">.psr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002es-register_002c-in-comparison-with-_002esr"><code class="code">.s</code> register, in comparison with <code class="code">.sr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eS-register_002c-Plan-9-alias-for-_002etabs"><code class="code">.S</code> register, Plan&nbsp;9 alias for <code class="code">.tabs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002et-register_002c-and-diversions"><code class="code">.t</code> register, and diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002etabs-register_002c-Plan-9-alias-_0028_002eS_0029"><code class="code">.tabs</code> register, Plan&nbsp;9 alias (<code class="code">.S</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002eV-register_002c-and-vs"><code class="code">.V</code> register, and <code class="code">vs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-11">/</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_002f_002c-as-delimiter"><code class="code">/</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-12">8</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-8_002dbit-input">8-bit input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-13">:</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003a_002c-as-delimiter"><code class="code">:</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-14">&lt;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003c_002c-as-delimiter"><code class="code">&lt;</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-15">=</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003d_002c-as-delimiter"><code class="code">=</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-16">&gt;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_003e_002c-as-delimiter"><code class="code">&gt;</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-17">[</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005b_002c-macro-names-starting-with_002c-and-refer"><code class="code">[</code>, macro names starting with, and <code class="code">refer</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-18">\</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-and-copy-mode"><code class="code">\!</code>, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-and-output-request"><code class="code">\!</code>, and <code class="code">output</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-and-trnt"><code class="code">\!</code>, and <code class="code">trnt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-as-delimiter"><code class="code">\!</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-as-delimiter-1"><code class="code">\!</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-in-top_002dlevel-diversion"><code class="code">\!</code>, in top-level diversion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\!</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0021_002c-incompatibilities-with-AT_0026T-troff-1"><code class="code">\!</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0024_002c-when-reading-text-for-a-macro"><code class="code">\$</code>, when reading text for a macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025_002c-and-translations"><code class="code">\%</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025_002c-as-delimiter"><code class="code">\%</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025_002c-as-delimiter-1"><code class="code">\%</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025_002c-following-_005cX-or-_005cY"><code class="code">\%</code>, following <code class="code">\X</code> or <code class="code">\Y</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025_002c-in-_005cX"><code class="code">\%</code>, in <code class="code">\X</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0025_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\%</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026_002c-and-glyph-definitions"><code class="code">\&amp;</code>, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026_002c-and-translations"><code class="code">\&amp;</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026_002c-as-delimiter"><code class="code">\&amp;</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026_002c-at-end-of-sentence"><code class="code">\&amp;</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026_002c-in-_005cX"><code class="code">\&amp;</code>, in <code class="code">\X</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0026_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\&amp;</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0027_002c-and-translations"><code class="code">\'</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0027_002c-as-delimiter"><code class="code">\'</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0027_002c-as-delimiter-1"><code class="code">\'</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0027_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\'</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0028_002c-and-translations"><code class="code">\(</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0029_002c-as-delimiter"><code class="code">\)</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0029_002c-in-_005cX"><code class="code">\)</code>, in <code class="code">\X</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002a_002c-and-warnings"><code class="code">\*</code>, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002a_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\*</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002a_002c-when-reading-text-for-a-macro"><code class="code">\*</code>, when reading text for a macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002c-disabling-_0028eo_0029"><code class="code">\</code>, disabling (<code class="code">eo</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002c-embedding-in-a-macro-argument"><code class="code">\</code>, embedding in a macro argument</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002c_002c-as-delimiter"><code class="code">\,</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002d-glyph_002c-and-cflags"><code class="code">\-</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002d_002c-and-translations"><code class="code">\-</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002d_002c-as-delimiter"><code class="code">\-</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002d_002c-as-delimiter-1"><code class="code">\-</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002d_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\-</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002f_002c-as-delimiter"><code class="code">\/</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_002f_002c-as-delimiter-1"><code class="code">\/</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c0_002c-as-delimiter"><code class="code">\0</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003a_002c-as-delimiter"><code class="code">\:</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003a_002c-as-delimiter-1"><code class="code">\:</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003a_002c-in-_005cX"><code class="code">\:</code>, in <code class="code">\X</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003f_002c-and-copy-mode"><code class="code">\?</code>, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003f_002c-and-copy-mode-1"><code class="code">\?</code>, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003f_002c-as-delimiter"><code class="code">\?</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003f_002c-in-top_002dlevel-diversion"><code class="code">\?</code>, in top-level diversion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_003f_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\?</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ca_002c-and-copy-mode"><code class="code">\a</code>, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ca_002c-and-translations"><code class="code">\a</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ca_002c-as-delimiter"><code class="code">\a</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cA_002c-delimiters-allowed-by"><code class="code">\A</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cA_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\A</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cb_002c-delimiters-allowed-by"><code class="code">\b</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cb_002c-limitations-of"><code class="code">\b</code>, limitations of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cC_002c-and-translations"><code class="code">\C</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cc_002c-as-delimiter"><code class="code">\c</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cc_002c-as-delimiter-1"><code class="code">\c</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cc_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\c</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cc_002c-when-filling-disabled"><code class="code">\c</code>, when filling disabled</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cc_002c-when-filling-enabled"><code class="code">\c</code>, when filling enabled</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cd_002c-as-delimiter"><code class="code">\d</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cD_002c-delimiters-allowed-by"><code class="code">\D</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ce_002c-and-glyph-definitions"><code class="code">\e</code>, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ce_002c-and-translations"><code class="code">\e</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ce_002c-as-delimiter"><code class="code">\e</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cE_002c-as-delimiter"><code class="code">\E</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ce_002c-as-delimiter-1"><code class="code">\e</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ce_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\e</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cF_002c-and-changing-fonts"><code class="code">\F</code>, and changing fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cf_002c-and-font-translations"><code class="code">\f</code>, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cf_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\f</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ch_002c-delimiters-allowed-by"><code class="code">\h</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cH_002c-delimiters-allowed-by"><code class="code">\H</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cH_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\H</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cH_002c-using-_002b-and-_002d-with"><code class="code">\H</code>, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cH_002c-with-fractional-type-sizes"><code class="code">\H</code>, with fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cl_002c-and-glyph-definitions"><code class="code">\l</code>, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cL_002c-and-glyph-definitions"><code class="code">\L</code>, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cl_002c-delimiters-allowed-by"><code class="code">\l</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cL_002c-delimiters-allowed-by"><code class="code">\L</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cN_002c-and-translations"><code class="code">\N</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cn_002c-and-warnings"><code class="code">\n</code>, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cN_002c-delimiters-allowed-by"><code class="code">\N</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cn_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\n</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cn_002c-when-reading-text-for-a-macro"><code class="code">\n</code>, when reading text for a macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005co_002c-delimiters-allowed-by"><code class="code">\o</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cp_002c-as-delimiter"><code class="code">\p</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cp_002c-as-delimiter-1"><code class="code">\p</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR_002c-after-_005cc"><code class="code">\R</code>, after <code class="code">\c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR_002c-and-warnings"><code class="code">\R</code>, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cr_002c-as-delimiter"><code class="code">\r</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR_002c-delimiters-allowed-by"><code class="code">\R</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR_002c-difference-from-nr"><code class="code">\R</code>, difference from <code class="code">nr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cR_002c-using-_002b-and-_002d-with"><code class="code">\R</code>, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cRET_002c-when-reading-text-for-a-macro">\<kbd class="key">RET</kbd>, when reading text for a macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cs_002c-delimiters-allowed-by"><code class="code">\s</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cS_002c-delimiters-allowed-by"><code class="code">\S</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cs_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\s</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cS_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\S</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cs_002c-incompatibilities-with-AT_0026T-troff-1"><code class="code">\s</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cs_002c-using-_002b-and-_002d-with"><code class="code">\s</code>, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cs_002c-with-fractional-type-sizes"><code class="code">\s</code>, with fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cSP_002c-as-delimiter"><code class="code">\<kbd class="key">SP</kbd></code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cSP_002c-difference-from-_005c_007e"><code class="code">\<kbd class="key">SP</kbd></code>, difference from <code class="code">\~</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cSP_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\<kbd class="key">SP</kbd></code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ct_002c-and-copy-mode"><code class="code">\t</code>, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ct_002c-and-translations"><code class="code">\t</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ct_002c-and-warnings"><code class="code">\t</code>, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005ct_002c-as-delimiter"><code class="code">\t</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cu_002c-as-delimiter"><code class="code">\u</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cV_002c-and-copy-mode"><code class="code">\V</code>, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cv_002c-delimiters-allowed-by"><code class="code">\v</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cv_002c-internal-representation"><code class="code">\v</code>, internal representation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cw_002c-delimiters-allowed-by"><code class="code">\w</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cX_002c-and-special-characters"><code class="code">\X</code>, and special characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cX_002c-delimiters-allowed-by"><code class="code">\X</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cx_002c-delimiters-allowed-by"><code class="code">\x</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cX_002c-followed-by-_005c_0025"><code class="code">\X</code>, followed by <code class="code">\%</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cY_002c-followed-by-_005c_0025"><code class="code">\Y</code>, followed by <code class="code">\%</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005cZ_002c-delimiters-allowed-by"><code class="code">\Z</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005b_002c-and-translations"><code class="code">\[</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005c_002c-when-reading-text-for-a-macro"><code class="code">\\</code>, when reading text for a macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005e_002c-as-delimiter"><code class="code">\^</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005e_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\^</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005f_002c-and-translations"><code class="code">\_</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005f_002c-as-delimiter"><code class="code">\_</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005f_002c-as-delimiter-1"><code class="code">\_</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_005f_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\_</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0060_002c-and-translations"><code class="code">\`</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0060_002c-as-delimiter"><code class="code">\`</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0060_002c-as-delimiter-1"><code class="code">\`</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_0060_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\`</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007b_002c-as-delimiter"><code class="code">\{</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007b_002c-as-delimiter-1"><code class="code">\{</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007b_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\{</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007c_002c-as-delimiter"><code class="code">\|</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007c_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\|</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007d_002c-and-warnings"><code class="code">\}</code>, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007d_002c-as-delimiter"><code class="code">\}</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007d_002c-as-delimiter-1"><code class="code">\}</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007d_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\}</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007e_002c-and-translations"><code class="code">\~</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007e_002c-as-delimiter"><code class="code">\~</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007e_002c-difference-from-_005cSP"><code class="code">\~</code>, difference from <code class="code">\<kbd class="key">SP</kbd></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005c_007e_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\~</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-19">]</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005d_002c-as-part-of-an-identifier"><code class="code">]</code>, as part of an identifier</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005d_002c-at-end-of-sentence"><code class="code">]</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005d_002c-at-end-of-sentence-1"><code class="code">]</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005d_002c-macro-names-starting-with_002c-and-refer"><code class="code">]</code>, macro names starting with, and <code class="code">refer</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-20">|</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_007c_002c-and-page-motion"><code class="code">|</code>, and page motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ab-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">ab</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-aborting-_0028ab_0029">aborting (<code class="code">ab</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-absolute-_0028sic_0029-position-operator-_0028_007c_0029">absolute <i class="slanted">(sic)</i> position operator (<code class="code">|</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-abstract-font-style">abstract font style</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-abstract-font-style_002c-setting-up-_0028sty_0029">abstract font style, setting up (<code class="code">sty</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-accent-marks-_005bms_005d">accent marks [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-access-to-postprocessor">access to postprocessor</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-accessing-unnamed-glyphs-with-_005cN">accessing unnamed glyphs with <code class="code">\N</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-activating-kerning-_0028kern_0029">activating kerning (<code class="code">kern</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-activating-ligatures-_0028lg_0029">activating ligatures (<code class="code">lg</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-activating-track-kerning-_0028tkf_0029">activating track kerning (<code class="code">tkf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ad-request_002c-and-hyphenation-margin"><code class="code">ad</code> request, and hyphenation margin</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ad-request_002c-and-hyphenation-space"><code class="code">ad</code> request, and hyphenation space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-addition">addition</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-additional-inter_002dsentence-space">additional inter-sentence space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-adjustment-and-filling_002c-manipulating">adjustment and filling, manipulating</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-adjustment-mode-register-_0028_002ej_0029">adjustment mode register (<code class="code">.j</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-adjustment-to-both-margins_002c-difference-from-AT_0026T-troff">adjustment to both margins, difference from <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Adobe-Glyph-List-_0028AGL_0029">Adobe Glyph List (AGL)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-diversion_002c-creating-_0028als_0029">alias, diversion, creating (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-diversion_002c-removing-_0028rm_0029">alias, diversion, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-macro_002c-creating-_0028als_0029">alias, macro, creating (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-macro_002c-removing-_0028rm_0029">alias, macro, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-register_002c-creating-_0028aln_0029">alias, register, creating (<code class="code">aln</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-register_002c-removing-_0028rr_0029">alias, register, removing (<code class="code">rr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-string_002c-creating-_0028als_0029">alias, string, creating (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-alias_002c-string_002c-removing-_0028rm_0029">alias, string, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-aliasing-fonts-with-third-argument-to-fp-request">aliasing fonts with third argument to <code class="code">fp</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-als-request_002c-and-_005c_00240"><code class="code">als</code> request, and <code class="code">\$0</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-am_002c-am1_002c-ami-requests_002c-and-warnings"><code class="code">am</code>, <code class="code">am1</code>, <code class="code">ami</code> requests, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-appending-to-a-diversion-_0028da_002c-boxa_0029">appending to a diversion (<code class="code">da</code>, <code class="code">boxa</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-appending-to-a-file-_0028opena_0029">appending to a file (<code class="code">opena</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-appending-to-a-macro-_0028am_0029">appending to a macro (<code class="code">am</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-appending-to-a-string-_0028as_0029">appending to a string (<code class="code">as</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-approximation-output-register-_0028_002eA_0029">approximation output register (<code class="code">.A</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-arc_002c-drawing-_0028_005cD_0027a-_2026_0027_0029">arc, drawing (&lsquo;<samp class="samp">\D'a &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-argument">argument</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments-to-macros">arguments to macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments-to-macros_002c-and-tabs">arguments to macros, and tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments-to-requests">arguments to requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments-to-requests_002c-and-tabs">arguments to requests, and tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments_002c-and-compatibility-mode">arguments, and compatibility mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments_002c-to-escape-sequences_002c-delimiting">arguments, to escape sequences, delimiting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-arguments_002c-to-strings">arguments, to strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-arithmetic-operators">arithmetic operators</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-artificial-fonts">artificial fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-as_002c-as1-requests_002c-and-comments"><code class="code">as</code>, <code class="code">as1</code> requests, and comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-as_002c-as1-requests_002c-and-warnings"><code class="code">as</code>, <code class="code">as1</code> requests, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ASCII-output-encoding"><abbr class="acronym">ASCII</abbr> output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-asciify-request_002c-and-writem"><code class="code">asciify</code> request, and <code class="code">writem</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-assertion-_0028arithmetic-operator_0029">assertion (arithmetic operator)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-assign-number-format-to-register-_0028af_0029">assign number format to register (<code class="code">af</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-assignments_002c-indirect">assignments, indirect</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-assignments_002c-nested">assignments, nested</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-AT_0026T-ms_002c-macro-package-differences"><abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp>, macro package differences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Differences-from-AT_0026T-ms">Differences from AT&amp;T ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-attributes_002c-character-cell">attributes, character cell</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-auto_002dincrementation-of-a-register">auto-incrementation of a register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-automatic-font-mounting">automatic font mounting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-automatic-hyphenation">automatic hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-automatic-hyphenation-parameters">automatic hyphenation parameters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-auxiliary-macro-package">auxiliary macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-available-glyphs_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029">available glyphs, list of (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-B">B</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-background">background</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Background">Background</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-background-color-name-register-_0028_002eM_0029">background color name register (<code class="code">.M</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-backslash-glyph_002c-formatting-_0028_005c_005brs_005d_0029">backslash glyph, formatting (<code class="code">\[rs]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-backslash_002c-embedding-in-a-macro-argument">backslash, embedding in a macro argument</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-backslash_002c-printing-_0028_005c_005c_002c-_005ce_002c-_005cE_002c-_005c_005brs_005d_0029">backslash, printing (<code class="code">\\</code>, <code class="code">\e</code>, <code class="code">\E</code>, <code class="code">\[rs]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-backspace-character_002c-and-translations">backspace character, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-backtrace-of-input-stack-_0028backtrace_0029">backtrace of input stack (<code class="code">backtrace</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-baseline-rule-special-character_0028_005c_005bru_005d_0029">baseline rule special character(<code class="code">\[ru]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-baseline_002c-text">baseline, text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-baseline_002c-text-1">baseline, text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-basic-scaling-unit-_0028u_0029">basic scaling unit (<code class="code">u</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-basic-units">basic units</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-basic-units_002c-conversion-to">basic units, conversion to</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-basics-of-macro-package-usage">basics of macro package usage</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bd-request_002c-and-font-styles"><code class="code">bd</code> request, and font styles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bd-request_002c-and-font-translations"><code class="code">bd</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bd-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">bd</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-beginning-diversion-_0028di_002c-box_0029">beginning diversion (<code class="code">di</code>, <code class="code">box</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-beginning-of-conditional-block-_0028_005c_007b_0029">beginning of conditional block (<code class="code">\{</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-line">blank line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-line-macro-_0028blm_0029">blank line macro (<code class="code">blm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-line-macro-_0028blm_0029-1">blank line macro (<code class="code">blm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-line-macro-_0028blm_0029-2">blank line macro (<code class="code">blm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Blank-Line-Traps">Blank Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-line-trap-_0028blm_0029">blank line trap (<code class="code">blm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-line-traps">blank line traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Blank-Line-Traps">Blank Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-blank-lines_002c-disabling">blank lines, disabling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-block_002c-conditional_002c-beginning-_0028_005c_007b_0029">block, conditional, beginning (<code class="code">\{</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-block_002c-conditional_002c-end-_0028_005c_007d_0029">block, conditional, end (<code class="code">\}</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-blocks_002c-conditional">blocks, conditional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-body_002c-of-a-while-request">body, of a while request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#while">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-boldface_002c-imitating-_0028bd_0029">boldface, imitating (<code class="code">bd</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bottom-margin">bottom margin</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-boundary_002drelative-motion-operator-_0028_007c_0029">boundary-relative motion operator (<code class="code">|</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bounding-box">bounding box</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-box-_0028diversion-operation_0029">box (diversion operation)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-box-request_002c-and-warnings"><code class="code">box</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-box-rule-glyph-_0028_005c_005bbr_005d_0029">box rule glyph (<code class="code">\[br]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-box_002c-boxa-requests_002c-and-warnings"><code class="code">box</code>, <code class="code">boxa</code> requests, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-boxa-request_002c-and-dn-_0028dl_0029"><code class="code">boxa</code> request, and <code class="code">dn</code> (<code class="code">dl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-boxa-request_002c-and-warnings"><code class="code">boxa</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-boxes-_005bms_005d">boxes [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bp-request_002c-and-top_002dlevel-diversion"><code class="code">bp</code> request, and top-level diversion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bp-request_002c-and-traps-_0028_002epe_0029"><code class="code">bp</code> request, and traps (<code class="code">.pe</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bp-request_002c-causing-implicit-break"><code class="code">bp</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bp-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">bp</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bp-request_002c-using-_002b-and-_002d-with"><code class="code">bp</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-br-glyph_002c-and-cflags"><code class="code">br</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-brace-escape-sequence_002c-closing-_0028_005c_007d_0029">brace escape sequence, closing (<code class="code">\})</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-brace-escape-sequence_002c-opening-_0028_005c_007d_0029">brace escape sequence, opening (<code class="code">\})</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-brace-escape-sequences-_0028_005c_007b_002c-_005c_007d_0029">brace escape sequences (<code class="code">\{</code>, <code class="code">\}</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-break">break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-break-1">break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-break-_0028introduction_0029">break (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-break-request_002c-in-a-while-loop"><code class="code">break</code> request, in a <code class="code">while</code> loop</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#while">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-break_002c-page">break, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-break_002c-page-1">break, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-break_002c-page-2">break, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#The-Implicit-Page-Trap">The Implicit Page Trap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-break_002c-page-_0028introduction_0029">break, page (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-break_002c-page_002c-final">break, page, final</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-break_002c-page_002c-prevented-by-vpt">break, page, prevented by <code class="code">vpt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-breaking-file-names-_0028_005c_003a_0029">breaking file names (<code class="code">\:</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-breaking-URLs-_0028_005c_003a_0029">breaking URLs (<code class="code">\:</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-breaking-without-hyphens-_0028_005c_003a_0029">breaking without hyphens (<code class="code">\:</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-built_002din-register_002c-removing">built-in register, removing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-built_002din-registers">built-in registers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bulleted-list_002c-example-markup-_005bms_005d">bulleted list, example markup [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-c-scaling-unit"><code class="code">c</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-calling-a-macro">calling a macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-calling-macros">calling macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-capabilities-of-groff">capabilities of <code class="code">groff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#groff-Capabilities"><code class="code">groff</code> Capabilities</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-case_002dtransforming-a-string-_0028stringdown_002c-stringup_0029">case-transforming a string (<code class="code">stringdown</code>, <code class="code">stringup</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-categories_002c-warning">categories, warning</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CCSID-1047-output-encoding-_0028EBCDIC_0029">CCSID 1047 output encoding (EBCDIC)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ce-request_002c-causing-implicit-break"><code class="code">ce</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ce-request_002c-difference-from-_002ead-c"><code class="code">ce</code> request, difference from &lsquo;<samp class="samp">.ad&nbsp;c</samp>&rsquo;<!-- /@w --></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cell_002c-character_002c-attributes">cell, character, attributes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-centered-text-_0028filled_0029">centered text (filled)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-centered-text-_0028unfilled_0029">centered text (unfilled)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-centering-lines-_0028ce_0029">centering lines (<code class="code">ce</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-centering-lines-_0028introduction_0029">centering lines (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-centimeter-scaling-unit-_0028c_0029">centimeter scaling unit (<code class="code">c</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cf-request_002c-and-copy-mode"><code class="code">cf</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cf-request_002c-causing-implicit-break"><code class="code">cf</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-control-characters">changing control characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-font-family-_0028fam_002c-_005cF_0029">changing font family (<code class="code">fam</code>, <code class="code">\F</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-fonts-_0028ft_002c-_005cf_0029">changing fonts (<code class="code">ft</code>, <code class="code">\f</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-format_002c-and-read_002donly-registers">changing format, and read-only registers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-the-font-height-_0028_005cH_0029">changing the font height (<code class="code">\H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-the-font-slant-_0028_005cS_0029">changing the font slant (<code class="code">\S</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-the-page-number-character-_0028pc_0029">changing the page number character (<code class="code">pc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-trap-location-_0028ch_0029">changing trap location (<code class="code">ch</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-type-sizes-_0028ps_002c-_005cs_0029">changing type sizes (<code class="code">ps</code>, <code class="code">\s</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-changing-vertical-line-spacing-_0028vs_0029">changing vertical line spacing (<code class="code">vs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-char-request_002c-and-soft-hyphen-character"><code class="code">char</code> request, and soft hyphen character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-char-request_002c-and-translations"><code class="code">char</code> request, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-char-request_002c-used-with-_005cN"><code class="code">char</code> request, used with <code class="code">\N</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character">character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character-cell-attributes">character cell attributes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character-class-_0028class_0029">character class (<code class="code">class</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character-classes">character classes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character-properties-_0028cflags_0029">character properties (<code class="code">cflags</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character-translations">character translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-backspace_002c-and-translations">character, backspace, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-control-_0028_002e_0029">character, control (<code class="code">.</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-control_002c-changing-_0028cc_0029">character, control, changing (<code class="code">cc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-defining-_0028char_0029">character, defining (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-defining-fallback-_0028fchar_002c-fschar_002c-schar_0029">character, defining fallback (<code class="code">fchar</code>, <code class="code">fschar</code>, <code class="code">schar</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-distinguished-from-glyph">character, distinguished from glyph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-dummy-_0028_005c_0026_0029">character, dummy (<code class="code">\&amp;</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-dummy-_0028_005c_0026_0029_002c-as-control-character-suppressor">character, dummy (<code class="code">\&amp;</code>), as control character suppressor</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-dummy-_0028_005c_0026_0029_002c-effect-on-kerning">character, dummy (<code class="code">\&amp;</code>), effect on kerning</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-dummy-_0028_005c_0026_0029_002c-effect-on-_005cl-escape-sequence">character, dummy (<code class="code">\&amp;</code>), effect on <code class="code">\l</code> escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-escape_002c-changing-_0028ec_0029">character, escape, changing (<code class="code">ec</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-escape_002c-while-defining-glyph">character, escape, while defining glyph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-field-delimiting-_0028fc_0029">character, field delimiting (<code class="code">fc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-field-padding-_0028fc_0029">character, field padding (<code class="code">fc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-horizontal-tab">character, horizontal tab</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-hyphenation-_0028_005c_0025_0029">character, hyphenation (<code class="code">\%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-leader">character, leader</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-leader-repetition-_0028lc_0029">character, leader repetition (<code class="code">lc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-leader_002c-and-translations">character, leader, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-leader_002c-non_002dinterpreted-_0028_005ca_0029">character, leader, non-interpreted (<code class="code">\a</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-named-_0028_005cC_0029">character, named (<code class="code">\C</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-newline_002c-and-translations">character, newline, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-no_002dbreak-control-_0028_0027_0029">character, no-break control (<code class="code">'</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-no_002dbreak-control_002c-changing-_0028c2_0029">character, no-break control, changing (<code class="code">c2</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-ordinary">character, ordinary</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-soft-hyphen_002c-setting-_0028shc_0029">character, soft hyphen, setting (<code class="code">shc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-special">character, special</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-tab-repetition-_0028tc_0029">character, tab repetition (<code class="code">tc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-tab_002c-and-translations">character, tab, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-tab_002c-non_002dinterpreted-_0028_005ct_0029">character, tab, non-interpreted (<code class="code">\t</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-transparent">character, transparent</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002c-transparent-dummy-_0028_005c_0029_0029">character, transparent dummy (<code class="code">\)</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-end_002dof_002dsentence">characters, end-of-sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-end_002dof_002dsentence-transparent">characters, end-of-sentence transparent</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-hyphenation">characters, hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-input_002c-and-output-glyphs_002c-compatibility-with-AT_0026T-troff">characters, input, and output glyphs, compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-invalid-for-trf-request">characters, invalid for <code class="code">trf</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-invalid-input">characters, invalid input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-overlapping">characters, overlapping</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-special">characters, special</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-special_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029">characters, special, list of (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-characters_002c-unnamed_002c-accessing-with-_005cN">characters, unnamed, accessing with <code class="code">\N</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-circle_002c-filled_002c-drawing-_0028_005cD_0027C-_2026_0027_0029">circle, filled, drawing (&lsquo;<samp class="samp">\D'C &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-circle_002c-outlined_002c-drawing-_0028_005cD_0027c-_2026_0027_0029">circle, outlined, drawing (&lsquo;<samp class="samp">\D'c &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-circle_002c-solid_002c-drawing-_0028_005cD_0027C-_2026_0027_0029">circle, solid, drawing (&lsquo;<samp class="samp">\D'C &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-circle_002c-stroked_002c-drawing-_0028_005cD_0027c-_2026_0027_0029">circle, stroked, drawing (&lsquo;<samp class="samp">\D'c &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-class-of-characters-_0028class_0029">class of characters (<code class="code">class</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-classes_002c-character">classes, character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-clearing-input-line-trap-_0028it_002c-itc_0029">clearing input line trap (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-closing-brace-escape-sequence-_0028_005c_007d_0029">closing brace escape sequence (<code class="code">\})</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-closing-file-_0028close_0029">closing file (<code class="code">close</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-code-page-1047-output-encoding">code page 1047 output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-code-page-1047_002c-input-encoding">code page 1047, input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-code_002c-hyphenation-_0028hcode_0029">code, hyphenation (<code class="code">hcode</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-color-name_002c-background_002c-register-_0028_002eM_0029">color name, background, register (<code class="code">.M</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-color-name_002c-fill_002c-register-_0028_002eM_0029">color name, fill, register (<code class="code">.M</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-color-name_002c-stroke_002c-register-_0028_002em_0029">color name, stroke, register (<code class="code">.m</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-color_002c-default">color, default</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-color_002c-fill">color, fill</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-color_002c-stroke">color, stroke</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-colors">colors</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-command-prefix">command prefix</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-command_002dline-options">command-line options</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-comments">comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-comments-in-device-description-files">comments in device description files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-comments-in-font-description-files">comments in font description files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-comments_002c-lining-up-with-tabs">comments, lining up with tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-comments_002c-with-ds">comments, with <code class="code">ds</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-common-features">common features</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Common-Features">Common Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-common-name-space-of-macros_002c-diversions_002c-and-strings">common name space of macros, diversions, and strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-comparison-of-strings">comparison of strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-comparison-operators">comparison operators</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-compatibility-mode">compatibility mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-compatibility-mode-1">compatibility mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-compatibility-mode_002c-and-parameters">compatibility mode, and parameters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-complementation_002c-logical">complementation, logical</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-composite-glyph-names">composite glyph names</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-conditional-block_002c-beginning-_0028_005c_007b_0029">conditional block, beginning (<code class="code">\{</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-conditional-block_002c-end-_0028_005c_007d_0029">conditional block, end (<code class="code">\}</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-conditional-blocks">conditional blocks</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-conditional-expressions">conditional expressions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-conditional-output-for-terminal-_0028TTY_0029">conditional output for terminal (TTY)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-conditional-page-break-_0028ne_0029">conditional page break (<code class="code">ne</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-conditionals-and-loops">conditionals and loops</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditionals-and-Loops">Conditionals and Loops</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-configuring-control-characters">configuring control characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-configuring-the-page-length-_0028pl_0029">configuring the page length (<code class="code">pl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-consecutive-hyphenated-lines-_0028hlm_0029">consecutive hyphenated lines (<code class="code">hlm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-constant-glyph-space-mode-_0028cs_0029">constant glyph space mode (<code class="code">cs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-contents_002c-table-of">contents, table of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Table-of-Contents">Table of Contents</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-contents_002c-table-of-1">contents, table of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-continuation_002c-input-line-_0028_005cRET_0029">continuation, input line (<code class="code">\<kbd class="key">RET</kbd></code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-continuation_002c-output-line-_0028_005cc_0029">continuation, output line (<code class="code">\c</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-continue-request_002c-in-a-while-loop"><code class="code">continue</code> request, in a <code class="code">while</code> loop</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#while">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-continued-output-line-register-_0028_002eint_0029">continued output line register (<code class="code">.int</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-continuous-underlining-_0028cu_0029">continuous underlining (<code class="code">cu</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-control-character-_0028_002e_0029">control character (<code class="code">.</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-control-character_002c-changing-_0028cc_0029">control character, changing (<code class="code">cc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-control-character_002c-no_002dbreak-_0028_0027_0029">control character, no-break (<code class="code">'</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-control-character_002c-no_002dbreak_002c-changing-_0028c2_0029">control character, no-break, changing (<code class="code">c2</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-control-characters">control characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-control-line">control line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-control_002c-line">control, line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-control_002c-page">control, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-conventions-for-input">conventions for input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Conventions">Input Conventions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-conversion-to-basic-units">conversion to basic units</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode">copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode-1">copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-cf-request">copy mode, and <code class="code">cf</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-device-request">copy mode, and <code class="code">device</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-length-request">copy mode, and <code class="code">length</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-macro-parameters">copy mode, and macro parameters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-output-request">copy mode, and <code class="code">output</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-trf-request">copy mode, and <code class="code">trf</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-write-request">copy mode, and <code class="code">write</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-writec-request">copy mode, and <code class="code">writec</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-writem-request">copy mode, and <code class="code">writem</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-_005c_0021">copy mode, and <code class="code">\!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-_005c_003f">copy mode, and <code class="code">\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-_005c_003f-1">copy mode, and <code class="code">\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-_005ca">copy mode, and <code class="code">\a</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-_005ct">copy mode, and <code class="code">\t</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy-mode_002c-and-_005cV">copy mode, and <code class="code">\V</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copying-environment-_0028evc_0029">copying environment (<code class="code">evc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-correction-between-oblique-and-upright-glyph-_0028_005c_002f_002c-_005c_002c_0029">correction between oblique and upright glyph (<code class="code">\/</code>, <code class="code">\,</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-correction-between-upright-and-oblique-glyph-_0028_005c_002f_002c-_005c_002c_0029">correction between upright and oblique glyph (<code class="code">\/</code>, <code class="code">\,</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-correction_002c-italic-_0028_005c_002f_0029">correction, italic (<code class="code">\/</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-correction_002c-left-italic-_0028_005c_002c_0029">correction, left italic (<code class="code">\,</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cover-page-in-_005bms_005d_002c-example-markup">cover page in [<samp class="file">ms</samp>], example markup</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cp-request_002c-and-glyph-definitions"><code class="code">cp</code> request, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cq-glyph_002c-at-end-of-sentence"><code class="code">cq</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cq-glyph_002c-at-end-of-sentence-1"><code class="code">cq</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-creating-alias-for-register-_0028aln_0029">creating alias for register (<code class="code">aln</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-creating-alias_002c-for-diversion-_0028als_0029">creating alias, for diversion (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-creating-alias_002c-for-macro-_0028als_0029">creating alias, for macro (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-creating-alias_002c-for-string-_0028als_0029">creating alias, for string (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-creating-new-characters-_0028char_0029">creating new characters (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-credits">credits</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Credits">Credits</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cs-request_002c-and-font-styles"><code class="code">cs</code> request, and font styles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cs-request_002c-and-font-translations"><code class="code">cs</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cs-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">cs</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-cs-request_002c-with-fractional-type-sizes"><code class="code">cs</code> request, with fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-errata">CSTR&nbsp;#54 errata</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-errata-1">CSTR&nbsp;#54 errata</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-errata-2">CSTR&nbsp;#54 errata</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-errata-3">CSTR&nbsp;#54 errata</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-errata-4">CSTR&nbsp;#54 errata</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-errata-5">CSTR&nbsp;#54 errata</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-bp-request">CSTR&nbsp;#54 erratum, <code class="code">bp</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-po-request">CSTR&nbsp;#54 erratum, <code class="code">po</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-ps-request">CSTR&nbsp;#54 erratum, <code class="code">ps</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-sb-register">CSTR&nbsp;#54 erratum, <code class="code">sb</code> register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-st-register">CSTR&nbsp;#54 erratum, <code class="code">st</code> register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-yr-register">CSTR&nbsp;#54 erratum, <code class="code">yr</code> register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-_005cS-escape">CSTR&nbsp;#54 erratum, <code class="code">\S</code> escape</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-CSTR-_002354-erratum_002c-_005cs-escape-sequence">CSTR&nbsp;#54 erratum, <code class="code">\s</code> escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-current-directory">current directory</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-current-input-file-name-register-_0028_002eF_0029">current input file name register (<code class="code">.F</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-current-page-number-_0028_0025_0029">current page number (<code class="code">%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-current-time_002c-hours-_0028hours_0029">current time, hours (<code class="code">hours</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-current-time_002c-minutes-_0028minutes_0029">current time, minutes (<code class="code">minutes</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-current-time_002c-seconds-_0028seconds_0029">current time, seconds (<code class="code">seconds</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-da-request_002c-and-dn-_0028dl_0029"><code class="code">da</code> request, and <code class="code">dn</code> (<code class="code">dl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-da-request_002c-and-warnings"><code class="code">da</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-da-request_002c-and-warnings-1"><code class="code">da</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-date_002c-day-of-the-month-register-_0028dy_0029">date, day of the month register (<code class="code">dy</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-date_002c-day-of-the-week-register-_0028dw_0029">date, day of the week register (<code class="code">dw</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-date_002c-month-of-the-year-register-_0028mo_0029">date, month of the year register (<code class="code">mo</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-date_002c-year-register-_0028year_002c-yr_0029">date, year register (<code class="code">year</code>, <code class="code">yr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-day-of-the-month-register-_0028dy_0029">day of the month register (<code class="code">dy</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-day-of-the-week-register-_0028dw_0029">day of the week register (<code class="code">dw</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dd-glyph_002c-at-end-of-sentence"><code class="code">dd</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dd-glyph_002c-at-end-of-sentence-1"><code class="code">dd</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-de-request_002c-and-while"><code class="code">de</code> request, and <code class="code">while</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#while">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-de_002c-de1_002c-dei-requests_002c-and-warnings"><code class="code">de</code>, <code class="code">de1</code>, <code class="code">dei</code> requests, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-debugging">debugging</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-debugging-page-location-traps">debugging page location traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-decimal-point_002c-as-delimiter">decimal point, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-decrementation_002c-automatic_002c-of-a-register">decrementation, automatic, of a register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-default-color">default color</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-default-tab-stops">default tab stops</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-default-units">default units</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Default-Units">Default Units</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-deferred-output">deferred output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Deferring-Output">Deferring Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-defining-character-_0028char_0029">defining character (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-defining-character-class-_0028class_0029">defining character class (<code class="code">class</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-defining-fallback-character-_0028fchar_002c-fschar_002c-schar_0029">defining fallback character (<code class="code">fchar</code>, <code class="code">fschar</code>, <code class="code">schar</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-defining-glyph-_0028char_0029">defining glyph (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-defining-symbol-_0028char_0029">defining symbol (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-delimited-arguments_002c-incompatibilities-with-AT_0026T-troff">delimited arguments, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-delimiters_002c-for-escape-sequence-arguments">delimiters, for escape sequence arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-delimiting-character_002c-for-fields-_0028fc_0029">delimiting character, for fields (<code class="code">fc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-delimiting-escape-sequence-arguments">delimiting escape sequence arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-depth_002c-interpolation">depth, interpolation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-depth_002c-of-last-glyph-_0028_002ecdp_0029">depth, of last glyph (<code class="code">.cdp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-file-format"><samp class="file">DESC</samp> file format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-file_002c-and-font-mounting"><samp class="file">DESC</samp> file, and font mounting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-DESC-file_002c-and-use_005fcharnames_005fin_005fspecial-keyword"><samp class="file">DESC</samp> file, and <code class="code">use_charnames_in_special</code> keyword</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-description-file_002c-font">description file, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-device-description-files_002c-comments">device description files, comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-device-request_002c-and-copy-mode"><code class="code">device</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-device-resolution">device resolution</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-device-resolution-1">device resolution</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-device-resolution_002c-obtaining-in-the-formatter">device resolution, obtaining in the formatter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-devices-for-output">devices for output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Output-Device-Intro">Output Device Intro</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dg-glyph_002c-at-end-of-sentence"><code class="code">dg</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dg-glyph_002c-at-end-of-sentence-1"><code class="code">dg</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-di-request_002c-and-warnings"><code class="code">di</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-di-request_002c-and-warnings-1"><code class="code">di</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-differences-in-implementation">differences in implementation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Implementation-Differences">Implementation Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-digit_002dwidth-space-_0028_005c0_0029">digit-width space (<code class="code">\0</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-digits_002c-as-delimiters">digits, as delimiters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dimensions_002c-line">dimensions, line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-directories-for-fonts">directories for fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-directories-for-macros">directories for macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-directory_002c-current">directory, current</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-directory_002c-for-tmac-files">directory, for tmac files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-directory_002c-home">directory, home</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-directory_002c-platform_002dspecific">directory, platform-specific</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-directory_002c-site_002dlocal">directory, site-local</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-directory_002c-site_002dlocal-1">directory, site-local</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-disabling-hyphenation-_0028_005c_0025_0029">disabling hyphenation (<code class="code">\%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-disabling-_005c-_0028eo_0029">disabling <code class="code">\</code> (<code class="code">eo</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-discardable-horizontal-space">discardable horizontal space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-displays">displays</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Displays-and-Keeps">Displays and Keeps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-displays-_005bms_005d">displays [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-displays_002c-and-footnotes-_005bms_005d">displays, and footnotes [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-distance-to-next-vertical-position-trap-register-_0028_002et_0029">distance to next vertical position trap register (<code class="code">.t</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion">diversion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Deferring-Output">Deferring Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion-name-register-_0028_002ez_0029">diversion name register (<code class="code">.z</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion-trap_002c-setting-_0028dt_0029">diversion trap, setting (<code class="code">dt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion-traps">diversion traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-appending-to-_0028da_002c-boxa_0029">diversion, appending to (<code class="code">da</code>, <code class="code">boxa</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-beginning-_0028di_002c-box_0029">diversion, beginning (<code class="code">di</code>, <code class="code">box</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-creating-alias-for-_0028als_0029">diversion, creating alias for (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-ending-_0028di_002c-box_0029">diversion, ending (<code class="code">di</code>, <code class="code">box</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-nested">diversion, nested</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-removing-_0028rm_0029">diversion, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-removing-alias-for-_0028rm_0029">diversion, removing alias for (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-renaming-_0028rn_0029">diversion, renaming (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-stripping-final-newline">diversion, stripping final newline</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-top_002dlevel">diversion, top-level</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-top_002dlevel_002c-and-bp">diversion, top-level, and <code class="code">bp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-top_002dlevel_002c-and-_005c_0021">diversion, top-level, and <code class="code">\!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-top_002dlevel_002c-and-_005c_003f">diversion, top-level, and <code class="code">\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-unformatting-_0028asciify_0029">diversion, unformatting (<code class="code">asciify</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversion_002c-vertical-position-in_002c-register-_0028_002ed_0029">diversion, vertical position in, register (<code class="code">.d</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversions">diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversions-1">diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversions_002c-and-traps">diversions, and traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-diversions_002c-shared-name-space-with-macros-and-strings">diversions, shared name space with macros and strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-division_002c-truncating">division, truncating</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dl-register_002c-and-da-_0028boxa_0029"><code class="code">dl</code> register, and <code class="code">da</code> (<code class="code">boxa</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dn-register_002c-and-da-_0028boxa_0029"><code class="code">dn</code> register, and <code class="code">da</code> (<code class="code">boxa</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-document-description-macros_002c-_005bms_005d">document description macros, [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-document-formats">document formats</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Document-Formats">Document Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-documents_002c-multi_002dfile">documents, multi-file</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-documents_002c-structuring-the-source-of">documents, structuring the source of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dot_002c-as-delimiter">dot, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-double-quote_002c-embedding-in-a-macro-argument">double quote, embedding in a macro argument</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-double-quotes_002c-trailing_002c-in-strings">double quotes, trailing, in strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-double_002dspacing-_0028ls_0029">double-spacing (<code class="code">ls</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-double_002dspacing-_0028vs_002c-pvs_0029">double-spacing (<code class="code">vs</code>, <code class="code">pvs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-down_002dcasing-a-string-_0028stringdown_0029">down-casing a string (<code class="code">stringdown</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-filled-circle-_0028_005cD_0027C-_2026_0027_0029">drawing a filled circle (&lsquo;<samp class="samp">\D'C &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-filled-ellipse-_0028_005cD_0027E-_2026_0027_0029">drawing a filled ellipse (&lsquo;<samp class="samp">\D'E &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-filled-polygon-_0028_005cD_0027P-_2026_0027_0029">drawing a filled polygon (&lsquo;<samp class="samp">\D'P &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-line-_0028_005cD_0027l-_2026_0027_0029">drawing a line (&lsquo;<samp class="samp">\D'l &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-solid-circle-_0028_005cD_0027C-_2026_0027_0029">drawing a solid circle (&lsquo;<samp class="samp">\D'C &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-solid-ellipse-_0028_005cD_0027E-_2026_0027_0029">drawing a solid ellipse (&lsquo;<samp class="samp">\D'E &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-solid-polygon-_0028_005cD_0027P-_2026_0027_0029">drawing a solid polygon (&lsquo;<samp class="samp">\D'P &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-spline-_0028_005cD_0027_007e-_2026_0027_0029">drawing a spline (&lsquo;<samp class="samp">\D'~ &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-stroked-circle-_0028_005cD_0027c-_2026_0027_0029">drawing a stroked circle (&lsquo;<samp class="samp">\D'c &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-stroked-ellipse-_0028_005cD_0027e-_2026_0027_0029">drawing a stroked ellipse (&lsquo;<samp class="samp">\D'e &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-a-stroked-polygon-_0028_005cD_0027p-_2026_0027_0029">drawing a stroked polygon (&lsquo;<samp class="samp">\D'p &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-an-arc-_0028_005cD_0027a-_2026_0027_0029">drawing an arc (&lsquo;<samp class="samp">\D'a &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-an-outlined-circle-_0028_005cD_0027c-_2026_0027_0029">drawing an outlined circle (&lsquo;<samp class="samp">\D'c &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-an-outlined-ellipse-_0028_005cD_0027e-_2026_0027_0029">drawing an outlined ellipse (&lsquo;<samp class="samp">\D'e &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-an-outlined-polygon-_0028_005cD_0027p-_2026_0027_0029">drawing an outlined polygon (&lsquo;<samp class="samp">\D'p &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-horizontal-lines-_0028_005cl_0029">drawing horizontal lines (<code class="code">\l</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-position">drawing position</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-position_002c-vertical-_0028nl_0029">drawing position, vertical (<code class="code">nl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-requests">drawing requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-drawing-vertical-lines-_0028_005cL_0029">drawing vertical lines (<code class="code">\L</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ds-request_002c-and-comments"><code class="code">ds</code> request, and comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ds-request_002c-and-double-quotes"><code class="code">ds</code> request, and double quotes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ds-request_002c-and-leading-spaces"><code class="code">ds</code> request, and leading spaces</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ds_002c-ds1-requests_002c-and-comments"><code class="code">ds</code>, <code class="code">ds1</code> requests, and comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ds_002c-ds1-requests_002c-and-warnings"><code class="code">ds</code>, <code class="code">ds1</code> requests, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dummy-character-_0028_005c_0026_0029">dummy character (<code class="code">\&amp;</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dummy-character-_0028_005c_0026_0029_002c-as-control-character-suppressor">dummy character (<code class="code">\&amp;</code>), as control character suppressor</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dummy-character-_0028_005c_0026_0029_002c-effect-on-kerning">dummy character (<code class="code">\&amp;</code>), effect on kerning</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dummy-character-_0028_005c_0026_0029_002c-effect-on-_005cl-escape-sequence">dummy character (<code class="code">\&amp;</code>), effect on <code class="code">\l</code> escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dummy-character_002c-transparent-_0028_005c_0029_0029">dummy character, transparent (<code class="code">\)</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dummy-environment_002c-used-by-_005cw-escape-sequence">dummy environment, used by <code class="code">\w</code> escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dumping-environments-_0028pev_0029">dumping environments (<code class="code">pev</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dumping-page-location-traps-_0028ptr_0029">dumping page location traps (<code class="code">ptr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dumping-registers-_0028pnr_0029">dumping registers (<code class="code">pnr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dumping-symbol-table-_0028pm_0029">dumping symbol table (<code class="code">pm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-E">E</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-EBCDIC-output-encoding"><abbr class="acronym">EBCDIC</abbr> output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-EBCDIC_002c-input-encoding"><abbr class="acronym">EBCDIC</abbr>, input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ejection_002c-page">ejection, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ejection_002c-page-1">ejection, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ejection_002c-page-2">ejection, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#The-Implicit-Page-Trap">The Implicit Page Trap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ejection_002c-page_002c-of-final-page">ejection, page, of final page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ejection_002c-page_002c-prevented-by-vpt">ejection, page, prevented by <code class="code">vpt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-el-request_002c-and-warnings"><code class="code">el</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ellipse_002c-filled_002c-drawing-_0028_005cD_0027E-_2026_0027_0029">ellipse, filled, drawing (&lsquo;<samp class="samp">\D'E &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ellipse_002c-outlined_002c-drawing-_0028_005cD_0027e-_2026_0027_0029">ellipse, outlined, drawing (&lsquo;<samp class="samp">\D'e &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ellipse_002c-solid_002c-drawing-_0028_005cD_0027E-_2026_0027_0029">ellipse, solid, drawing (&lsquo;<samp class="samp">\D'E &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ellipse_002c-stroked_002c-drawing-_0028_005cD_0027e-_2026_0027_0029">ellipse, stroked, drawing (&lsquo;<samp class="samp">\D'e &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-em-glyph_002c-and-cflags"><code class="code">em</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-em-scaling-unit-_0028m_0029">em scaling unit (<code class="code">m</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-embolding-of-special-fonts">embolding of special fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-empty-line">empty line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-en-scaling-unit-_0028n_0029">en scaling unit (<code class="code">n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-enabling-vertical-position-traps-_0028vpt_0029">enabling vertical position traps (<code class="code">vpt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-input_002c-code-page-1047">encoding, input, code page 1047</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-input_002c-EBCDIC">encoding, input, <abbr class="acronym">EBCDIC</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-input_002c-Latin_002d1-_0028ISO-8859_002d1_0029">encoding, input, <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-input_002c-Latin_002d2-_0028ISO-8859_002d2_0029">encoding, input, <span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-2</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-input_002c-Latin_002d5-_0028ISO-8859_002d9_0029">encoding, input, <span class="w-nolinebreak-text">Latin-5</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-9</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-input_002c-Latin_002d9-_0028ISO-8859_002d15_0029">encoding, input, <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-15</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-output_002c-ASCII">encoding, output, <abbr class="acronym">ASCII</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-output_002c-code-page-1047">encoding, output, code page 1047</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-output_002c-EBCDIC">encoding, output, <abbr class="acronym">EBCDIC</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-output_002c-ISO-646">encoding, output, ISO&nbsp;646</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-output_002c-Latin_002d1-_0028ISO-8859_002d1_0029">encoding, output, <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-encoding_002c-output_002c-UTF_002d8">encoding, output, <span class="w-nolinebreak-text">UTF-8</span><!-- /@w --></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-end-of-conditional-block-_0028_005c_007d_0029">end of conditional block (<code class="code">\}</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dinput-macro-_0028em_0029">end-of-input macro (<code class="code">em</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dinput-trap_002c-setting-_0028em_0029">end-of-input trap, setting (<code class="code">em</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dinput-traps">end-of-input traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dsentence-characters">end-of-sentence characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dsentence-characters-1">end-of-sentence characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dsentence-transparent-characters">end-of-sentence transparent characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ending-diversion-_0028di_002c-box_0029">ending diversion (<code class="code">di</code>, <code class="code">box</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-endnotes">endnotes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Footnotes-and-Endnotes">Footnotes and Endnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-environment">environment</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Deferring-Output">Deferring Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-environment-availability-and-naming_002c-incompatibilities-with">environment availability and naming, incompatibilities with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-environment-number_002fname-register-_0028_002eev_0029">environment number/name register (<code class="code">.ev</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-environment-variables">environment variables</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-environment_002c-copying-_0028evc_0029">environment, copying (<code class="code">evc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-environment_002c-dimensions-of-last-glyph-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029">environment, dimensions of last glyph (<code class="code">.w</code>, <code class="code">.cht</code>, <code class="code">.cdp</code>, <code class="code">.csk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-environment_002c-dummy_002c-used-by-_005cw-escape-sequence">environment, dummy, used by <code class="code">\w</code> escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-environment_002c-previous-line-length-_0028_002en_0029">environment, previous line length (<code class="code">.n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-environment_002c-switching-_0028ev_0029">environment, switching (<code class="code">ev</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-environments">environments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-environments_002c-dumping-_0028pev_0029">environments, dumping (<code class="code">pev</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-equality-operator">equality operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-equation-example-_005bms_005d">equation example [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-equations-_005bms_005d">equations [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-character_002c-changing-_0028ec_0029">escape character, changing (<code class="code">ec</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-character_002c-formatting-_0028_005ce_0029">escape character, formatting (<code class="code">\e</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-character_002c-while-defining-glyph">escape character, while defining glyph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-sequence">escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Formatter-Instructions">Formatter Instructions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-sequence-argument-delimiters">escape sequence argument delimiters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-sequences">escape sequences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-escape-sequences_002c-brace-_0028_005c_007b_002c-_005c_007d_0029">escape sequences, brace (<code class="code">\{</code>, <code class="code">\}</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-escaping-newline-characters_002c-in-strings">escaping newline characters, in strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ex-request_002c-use-in-debugging"><code class="code">ex</code> request, use in debugging</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ex-request_002c-used-with-nx-and-rd"><code class="code">ex</code> request, used with <code class="code">nx</code> and <code class="code">rd</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-example-markup_002c-bulleted-list-_005bms_005d">example markup, bulleted list [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-example-markup_002c-cover-page-in-_005bms_005d">example markup, cover page in [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-example-markup_002c-glossary_002dstyle-list-_005bms_005d">example markup, glossary-style list [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-example-markup_002c-numbered-list-_005bms_005d">example markup, numbered list [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-examples-of-invocation">examples of invocation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invocation-Examples">Invocation Examples</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-exiting-_0028ex_0029">exiting (<code class="code">ex</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-expansion-of-strings-_0028_005c_002a_0029">expansion of strings (<code class="code">\*</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-explicit-hyphen-_0028_005c_0025_0029">explicit hyphen (<code class="code">\%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-explicit-hyphenation">explicit hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-expression_002c-limitation-of-logical-not-in">expression, limitation of logical not in</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-expression_002c-order-of-evaluation">expression, order of evaluation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-expressions_002c-and-register-format">expressions, and register format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-expressions_002c-and-space-characters">expressions, and space characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-expressions_002c-conditional">expressions, conditional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-expressions_002c-numeric">expressions, numeric</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-extra-post_002dvertical-line-space-_0028_005cx_0029">extra post-vertical line space (<code class="code">\x</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-extra-post_002dvertical-line-space-register-_0028_002ea_0029">extra post-vertical line space register (<code class="code">.a</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-extra-pre_002dvertical-line-space-_0028_005cx_0029">extra pre-vertical line space (<code class="code">\x</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-extra-spaces-between-words">extra spaces between words</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Adjustment">Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-extreme-values-representable-with-Roman-numerals">extreme values representable with Roman numerals</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-extremum-operators-_0028_003e_003f_002c-_003c_003f_0029">extremum operators (<code class="code">&gt;?</code>, <code class="code">&lt;?</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-f-scaling-unit"><code class="code">f</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-factor_002c-zoom_002c-of-a-font-_0028fzoom_0029">factor, zoom, of a font (<code class="code">fzoom</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fallback-character_002c-defining-_0028fchar_002c-fschar_002c-schar_0029">fallback character, defining (<code class="code">fchar</code>, <code class="code">fschar</code>, <code class="code">schar</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fallback-glyph_002c-removing-definition-_0028rchar_002c-rfschar_0029">fallback glyph, removing definition (<code class="code">rchar</code>, <code class="code">rfschar</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fam-request_002c-and-changing-fonts"><code class="code">fam</code> request, and changing fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-families_002c-font">families, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-family_002c-font">family, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-features_002c-common">features, common</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Common-Features">Common Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fi-request_002c-causing-implicit-break"><code class="code">fi</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-field-delimiting-character-_0028fc_0029">field delimiting character (<code class="code">fc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-field-padding-character-_0028fc_0029">field padding character (<code class="code">fc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fields">fields</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fields_002c-and-tabs">fields, and tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-figure-space-_0028_005c0_0029">figure space (<code class="code">\0</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-figures-_005bms_005d">figures [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-file-formats">file formats</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#File-Formats">File Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-file-names_002c-breaking-_0028_005c_003a_0029">file names, breaking (<code class="code">\:</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-appending-to-_0028opena_0029">file, appending to (<code class="code">opena</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-closing-_0028close_0029">file, closing (<code class="code">close</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-font-description">file, font description</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-inclusion-_0028so_0029">file, inclusion (<code class="code">so</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-macro_002c-search-path">file, macro, search path</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-opening-_0028open_0029">file, opening (<code class="code">open</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-processing-next-_0028nx_0029">file, processing next (<code class="code">nx</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-file_002c-writing-to-_0028write_002c-writec_0029">file, writing to (<code class="code">write</code>, <code class="code">writec</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-files_002c-font">files, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Device-and-Font-Description-Files">Device and Font Description Files</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fill-color">fill color</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fill-color-name-register-_0028_002eM_0029">fill color name register (<code class="code">.M</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fill-mode-_0028fi_0029_002c-enabling">fill mode (<code class="code">fi</code>), enabling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fill-mode_002c-and-_005cc">fill mode, and <code class="code">\c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fill-mode_002c-disabling">fill mode, disabling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-filled-circle_002c-drawing-_0028_005cD_0027C-_2026_0027_0029">filled circle, drawing (&lsquo;<samp class="samp">\D'C &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-filled-ellipse_002c-drawing-_0028_005cD_0027E-_2026_0027_0029">filled ellipse, drawing (&lsquo;<samp class="samp">\D'E &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-filled-polygon_002c-drawing-_0028_005cD_0027P-_2026_0027_0029">filled polygon, drawing (&lsquo;<samp class="samp">\D'P &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-filling">filling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Filling">Filling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-filling-and-adjustment_002c-manipulating">filling and adjustment, manipulating</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-filling-of-output_002c-disabling-_0028nf_0029">filling of output, disabling (<code class="code">nf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-filling-of-output_002c-enabling-_0028fi_0029">filling of output, enabling (<code class="code">fi</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-filling_002c-and-break-warnings">filling, and <code class="code">break</code> warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-filling_002c-and-inter_002dsentence-space">filling, and inter-sentence space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-final-newline_002c-stripping-in-diversions">final newline, stripping in diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fl-request_002c-causing-implicit-break"><code class="code">fl</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-floating-keep">floating keep</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Displays-and-Keeps">Displays and Keeps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-flush-output-_0028fl_0029">flush output (<code class="code">fl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font">font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-aliasing-with-third-argument-to-fp-request">font aliasing with third argument to <code class="code">fp</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-description-file">font description file</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-description-file-format">font description file format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-description-file_002c-format">font description file, format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-description-files_002c-comments">font description files, comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-directories">font directories</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-families">font families</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-family">font family</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-family_002c-changing-_0028fam_002c-_005cF_0029">font family, changing (<code class="code">fam</code>, <code class="code">\F</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-file_002c-format">font file, format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-files">font files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Device-and-Font-Description-Files">Device and Font Description Files</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-for-underlining-_0028uf_0029">font for underlining (<code class="code">uf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-height_002c-changing-_0028_005cH_0029">font height, changing (<code class="code">\H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-metrics">font metrics</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-mounting_002c-automatic">font mounting, automatic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-path">font path</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-position-register-_0028_002ef_0029">font position register (<code class="code">.f</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-positions">font positions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-slant_002c-changing-_0028_005cS_0029">font slant, changing (<code class="code">\S</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-style">font style</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-style_002c-abstract">font style, abstract</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-style_002c-abstract_002c-setting-up-_0028sty_0029">font style, abstract, setting up (<code class="code">sty</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-styles">font styles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font-translation-_0028ftr_0029">font translation (<code class="code">ftr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-magnification-_0028fzoom_0029">font, magnification (<code class="code">fzoom</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-mounting-_0028fp_0029">font, mounting (<code class="code">fp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-optical-size">font, optical size</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-previous_002c-selecting-_0028_005cf_005b_005d_002c-_005cfP_0029">font, previous, selecting (<code class="code">\f[]</code>, <code class="code">\fP</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-previous_002c-slecting-_0028ft_0029">font, previous, slecting (<code class="code">ft</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-selection">font, selection</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-special">font, special</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-text">font, text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-unstyled">font, unstyled</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-font_002c-zoom-factor-_0028fzoom_0029">font, zoom factor (<code class="code">fzoom</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts_002c-artificial">fonts, artificial</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts_002c-changing-_0028ft_002c-_005cf_0029">fonts, changing (<code class="code">ft</code>, <code class="code">\f</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts_002c-searching">fonts, searching</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fonts_002c-special">fonts, special</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Special-Fonts">Special Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-footers">footers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-footers-1">footers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-footers-_005bms_005d">footers [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-footnote-marker-_005bms_005d">footnote marker [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-footnotes">footnotes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Footnotes-and-Endnotes">Footnotes and Endnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-footnotes-_005bms_005d">footnotes [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-footnotes_002c-and-displays-_005bms_005d">footnotes, and displays [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-footnotes_002c-and-keeps-_005bms_005d">footnotes, and keeps [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-form-letters">form letters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-format-of-font-description-file">format of font description file</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-format-of-font-description-files">format of font description files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-format-of-font-files">format of font files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-format-of-register-_0028_005cg_0029">format of register (<code class="code">\g</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-format_002c-paper">format, paper</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-formats_002c-file">formats, file</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#File-Formats">File Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-formatter-instructions">formatter instructions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Formatter-Instructions">Formatter Instructions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-formatting-a-backslash-glyph-_0028_005c_005brs_005d_0029">formatting a backslash glyph (<code class="code">\[rs]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-formatting-a-title-line-_0028tl_0029">formatting a title line (<code class="code">tl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-formatting-the-escape-character-_0028_005ce_0029">formatting the escape character (<code class="code">\e</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-formatting-the-time">formatting the time</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fp-request_002c-and-font-translations"><code class="code">fp</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fp-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">fp</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fractional-point-sizes">fractional point sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fractional-point-sizes-1">fractional point sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fractional-type-sizes">fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fractional-type-sizes-1">fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fractional-type-sizes-in-ms-macros">fractional type sizes in <samp class="file">ms</samp> macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Differences-from-AT_0026T-ms">Differences from AT&amp;T ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-French-spacing">French spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fspecial-request_002c-and-font-styles"><code class="code">fspecial</code> request, and font styles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fspecial-request_002c-and-font-translations"><code class="code">fspecial</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fspecial-request_002c-and-glyph-search-order"><code class="code">fspecial</code> request, and glyph search order</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fspecial-request_002c-and-imitating-bold"><code class="code">fspecial</code> request, and imitating bold</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ft-request_002c-and-font-translations"><code class="code">ft</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-full_002dservice-macro-package">full-service macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-G">G</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-geometry_002c-page">geometry, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GGL-_0028groff-glyph-list_0029">GGL (<code class="code">groff</code> glyph list)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GGL-_0028groff-glyph-list_0029-1">GGL (<code class="code">groff</code> glyph list)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glossary_002dstyle-list_002c-example-markup-_005bms_005d">glossary-style list, example markup [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph">glyph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph-for-line-drawing">glyph for line drawing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph-names_002c-composite">glyph names, composite</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph-pile-_0028_005cb_0029">glyph pile (<code class="code">\b</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph-properties-_0028cflags_0029">glyph properties (<code class="code">cflags</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-box-rule-_0028_005c_005bbr_005d_0029">glyph, box rule (<code class="code">\[br]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-constant-space">glyph, constant space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-defining-_0028char_0029">glyph, defining (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-distinguished-from-character">glyph, distinguished from character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-for-line-drawing">glyph, for line drawing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-for-margins-_0028mc_0029">glyph, for margins (<code class="code">mc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-last_002c-dimensions-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029">glyph, last, dimensions (<code class="code">.w</code>, <code class="code">.cht</code>, <code class="code">.cdp</code>, <code class="code">.csk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-leader-repetition-_0028lc_0029">glyph, leader repetition (<code class="code">lc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-numbered-_0028_005cN_0029">glyph, numbered (<code class="code">\N</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-numbered-_0028_005cN_0029-1">glyph, numbered (<code class="code">\N</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-removing-definition-_0028rchar_002c-rfschar_0029">glyph, removing definition (<code class="code">rchar</code>, <code class="code">rfschar</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-soft-hyphen-_0028hy_0029">glyph, soft hyphen (<code class="code">hy</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-tab-repetition-_0028tc_0029">glyph, tab repetition (<code class="code">tc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyph_002c-underscore-_0028_005c_005bru_005d_0029">glyph, underscore (<code class="code">\[ru]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyphs_002c-available_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029">glyphs, available, list of (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyphs_002c-output_002c-and-input-characters_002c-compatibility-with-AT_0026T-troff">glyphs, output, and input characters, compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyphs_002c-overstriking-_0028_005co_0029">glyphs, overstriking (<code class="code">\o</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyphs_002c-unnamed">glyphs, unnamed</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-glyphs_002c-unnamed_002c-accessing-with-_005cN">glyphs, unnamed, accessing with <code class="code">\N</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GNU-troff_002c-identification-register-_0028_002eg_0029">GNU <code class="code">troff</code>, identification register (<code class="code">.g</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GNU-troff_002c-PID-register-_0028_0024_0024_0029">GNU <code class="code">troff</code>, PID register (<code class="code">$$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GNU-troff_002c-process-ID-register-_0028_0024_0024_0029">GNU <code class="code">troff</code>, process ID register (<code class="code">$$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GNU_002dspecific-register-_0028_002eg_0029">GNU-specific register (<code class="code">.g</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-graphic-renditions">graphic renditions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-greater-than-_0028or-equal-to_0029-operator">greater than (or equal to) operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-groff-capabilities"><code class="code">groff</code> capabilities</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#groff-Capabilities"><code class="code">groff</code> Capabilities</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-groff-glyph-list-_0028GGL_0029"><code class="code">groff</code> glyph list (GGL)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-groff-glyph-list-_0028GGL_0029-1"><code class="code">groff</code> glyph list (GGL)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Classes">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-groff-invocation"><code class="code">groff</code> invocation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-groff">Invoking groff</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-groff_002c-and-pi-request"><code class="code">groff</code>, and <code class="code">pi</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-groff_002d_002d_002dwhat-is-it_003f"><code class="code">groff</code>&mdash;what is it?</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#What-Is-groff_003f">What Is <code class="code">groff</code>?</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fBIN_005fPATH_002c-environment-variable"><code>GROFF_BIN_PATH<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fCOMMAND_005fPREFIX_002c-environment-variable"><code>GROFF_COMMAND_PREFIX<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fENCODING_002c-environment-variable"><code>GROFF_ENCODING<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fFONT_005fPATH_002c-environment-variable"><code>GROFF_FONT_PATH<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fFONT_005fPATH_002c-environment-variable-1"><code>GROFF_FONT_PATH<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fTMAC_005fPATH_002c-environment-variable"><code>GROFF_TMAC_PATH<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fTMAC_005fPATH_002c-environment-variable-1"><code>GROFF_TMAC_PATH<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fTMPDIR_002c-environment-variable"><code>GROFF_TMPDIR<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-GROFF_005fTYPESETTER_002c-environment-variable"><code>GROFF_TYPESETTER<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-grohtml_002c-the-program"><code class="code">grohtml</code>, the program</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-gtroff_002c-interactive-use"><code class="code">gtroff</code>, interactive use</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-gtroff_002c-output"><code class="code">gtroff</code>, output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#gtroff-Output">gtroff Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-gtroff_002c-reference"><code class="code">gtroff</code>, reference</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#GNU-troff-Reference">GNU troff Reference</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-H">H</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hair-space-_0028_005c_005e_0029">hair space (<code class="code">\^</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hcode-request_002c-and-glyph-definitions"><code class="code">hcode</code> request, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-headers">headers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-headers-1">headers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-headers-_005bms_005d">headers [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-height_002c-font_002c-changing-_0028_005cH_0029">height, font, changing (<code class="code">\H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-height_002c-of-last-glyph-_0028_002echt_0029">height, of last glyph (<code class="code">.cht</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-high_002dwater-mark-register-_0028_002eh_0029">high-water mark register (<code class="code">.h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-home-directory">home directory</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-discardable-space">horizontal discardable space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-input-line-position-register-_0028hp_0029">horizontal input line position register (<code class="code">hp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-input-line-position_002c-saving-_0028_005ck_0029">horizontal input line position, saving (<code class="code">\k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-line_002c-drawing-_0028_005cl_0029">horizontal line, drawing (<code class="code">\l</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-motion-_0028_005ch_0029">horizontal motion (<code class="code">\h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-motion-quantum">horizontal motion quantum</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-motion-quantum-register-_0028_002eH_0029">horizontal motion quantum register (<code class="code">.H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-output-line-position-register-_0028_002ek_0029">horizontal output line position register (<code class="code">.k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-resolution">horizontal resolution</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-resolution-register-_0028_002eH_0029">horizontal resolution register (<code class="code">.H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-space-_0028_005ch_0029">horizontal space (<code class="code">\h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-space_002c-unformatting">horizontal space, unformatting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal-tab-character">horizontal tab character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hours_002c-current-time-_0028hours_0029">hours, current time (<code class="code">hours</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hpf-request_002c-and-hyphenation-language"><code class="code">hpf</code> request, and hyphenation language</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hw-request_002c-and-hy-restrictions"><code class="code">hw</code> request, and <code class="code">hy</code> restrictions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hw-request_002c-and-hyphenation-language"><code class="code">hw</code> request, and hyphenation language</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hy-glyph_002c-and-cflags"><code class="code">hy</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphen_002c-explicit-_0028_005c_0025_0029">hyphen, explicit (<code class="code">\%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenated-lines_002c-consecutive-_0028hlm_0029">hyphenated lines, consecutive (<code class="code">hlm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenating-characters">hyphenating characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation">hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Hyphenation">Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-character-_0028_005c_0025_0029">hyphenation character (<code class="code">\%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-code-_0028hcode_0029">hyphenation code (<code class="code">hcode</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-consecutive-line-count-register-_0028_002ehlc_0029">hyphenation consecutive line count register (<code class="code">.hlc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-consecutive-line-limit-register-_0028_002ehlm_0029">hyphenation consecutive line limit register (<code class="code">.hlm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-exceptions">hyphenation exceptions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-language-register-_0028_002ehla_0029">hyphenation language register (<code class="code">.hla</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-margin-_0028hym_0029">hyphenation margin (<code class="code">hym</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-margin-register-_0028_002ehym_0029">hyphenation margin register (<code class="code">.hym</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-mode-register-_0028_002ehy_0029">hyphenation mode register (<code class="code">.hy</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-parameters_002c-automatic">hyphenation parameters, automatic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-pattern-files">hyphenation pattern files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-patterns-_0028hpf_0029">hyphenation patterns (<code class="code">hpf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-space-_0028hys_0029">hyphenation space (<code class="code">hys</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-space-adjustment-threshold">hyphenation space adjustment threshold</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation-space-adjustment-threshold-register-_0028_002ehys_0029">hyphenation space adjustment threshold register (<code class="code">.hys</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation_002c-automatic">hyphenation, automatic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation_002c-disabling-_0028_005c_0025_0029">hyphenation, disabling (<code class="code">\%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation_002c-explicit">hyphenation, explicit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation_002c-incompatibilities-with-AT_0026T-troff">hyphenation, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation_002c-manipulating">hyphenation, manipulating</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-hyphenation_002c-manual">hyphenation, manual</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-I">I</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-i-scaling-unit"><code class="code">i</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-i_002fo">i/o</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-IBM-code-page-1047-input-encoding">IBM code page 1047 input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-IBM-code-page-1047-output-encoding">IBM code page 1047 output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-identifiers">identifiers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-identifiers_002c-undefined">identifiers, undefined</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ie-request_002c-and-font-translations"><code class="code">ie</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ie-request_002c-and-warnings"><code class="code">ie</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ie-request_002c-operators-to-use-with"><code class="code">ie</code> request, operators to use with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-if-request_002c-and-font-translations"><code class="code">if</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-if-request_002c-and-the-_0021-operator"><code class="code">if</code> request, and the &lsquo;<samp class="samp">!</samp>&rsquo; operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-if-request_002c-operators-to-use-with"><code class="code">if</code> request, operators to use with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-if_002delse">if-else</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#if_002delse">if-else</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-if_002dthen">if-then</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#if_002dthen">if-then</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-imitating-boldface-_0028bd_0029">imitating boldface (<code class="code">bd</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-implementation-differences">implementation differences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Implementation-Differences">Implementation Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-implicit-line-break">implicit line break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-implicit-trap">implicit trap</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#The-Implicit-Page-Trap">The Implicit Page Trap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-in-request_002c-causing-implicit-break"><code class="code">in</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-in-request_002c-using-_002b-and-_002d-with"><code class="code">in</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-inch-scaling-unit-_0028i_0029">inch scaling unit (<code class="code">i</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-including-a-file-_0028so_0029">including a file (<code class="code">so</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-incompatibilities-with-AT_0026T-troff">incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Implementation-Differences">Implementation Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-increment-value-without-changing-the-register">increment value without changing the register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-incrementation_002c-automatic_002c-of-a-register">incrementation, automatic, of a register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-indentation-_0028in_0029">indentation (<code class="code">in</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-indentation_002c-of-roff-source-code">indentation, of <code class="code">roff</code> source code</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-index_002c-in-macro-package">index, in macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Indexing">Indexing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-indicator_002c-scaling">indicator, scaling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-indirect-assignments">indirect assignments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-and-output-requests">input and output requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-characters-and-output-glyphs_002c-compatibility-with-AT_0026T-troff">input characters and output glyphs, compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-characters_002c-invalid">input characters, invalid</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-conventions">input conventions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Conventions">Input Conventions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-encoding_002c-code-page-1047">input encoding, code page 1047</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-encoding_002c-EBCDIC">input encoding, <abbr class="acronym">EBCDIC</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-encoding_002c-Latin_002d1-_0028ISO-8859_002d1_0029">input encoding, <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-encoding_002c-Latin_002d2-_0028ISO-8859_002d2_0029">input encoding, <span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-2</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-encoding_002c-Latin_002d5-_0028ISO-8859_002d9_0029">input encoding, <span class="w-nolinebreak-text">Latin-5</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-9</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-encoding_002c-Latin_002d9-_0028ISO-8859_002d15_0029">input encoding, <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-15</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-file-name_002c-current_002c-register-_0028_002eF_0029">input file name, current, register (<code class="code">.F</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-level">input level</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-level-in-delimited-arguments">input level in delimited arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-continuation-_0028_005cRET_0029">input line continuation (<code class="code">\<kbd class="key">RET</kbd></code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-number-register-_0028_002ec_002c-c_002e_0029">input line number register (<code class="code">.c</code>, <code class="code">c.</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-number_002c-setting-_0028lf_0029">input line number, setting (<code class="code">lf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-position_002c-horizontal_002c-saving-_0028_005ck_0029">input line position, horizontal, saving (<code class="code">\k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-trap_002c-clearing-_0028it_002c-itc_0029">input line trap, clearing (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-trap_002c-setting-_0028it_002c-itc_0029">input line trap, setting (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-traps">input line traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line-traps-and-interrupted-lines-_0028itc_0029">input line traps and interrupted lines (<code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line_002c-horizontal-position_002c-register-_0028hp_0029">input line, horizontal position, register (<code class="code">hp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-line_002c-productive">input line, productive</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-stack_002c-backtrace-_0028backtrace_0029">input stack, backtrace (<code class="code">backtrace</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-stack_002c-setting-limit">input stack, setting limit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input-token">input token</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input_002c-8_002dbit">input, 8-bit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input_002c-standard_002c-reading-from-_0028rd_0029">input, standard, reading from (<code class="code">rd</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-inserting-horizontal-space-_0028_005ch_0029">inserting horizontal space (<code class="code">\h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-installation">installation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Installation">Installation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-instructing-the-formatter">instructing the formatter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Formatter-Instructions">Formatter Instructions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-inter_002dsentence-space-size-register-_0028_002esss_0029">inter-sentence space size register (<code class="code">.sss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-inter_002dsentence-space_002c-additional">inter-sentence space, additional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-inter_002dword-spacing_002c-minimal">inter-word spacing, minimal</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-interactive-use-of-gtroff">interactive use of <code class="code">gtroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-intercepting-requests">intercepting requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-intermediate-output">intermediate output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#gtroff-Output">gtroff Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-interpolating-registers-_0028_005cn_0029">interpolating registers (<code class="code">\n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-interpolation">interpolation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-interpolation-depth">interpolation depth</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-interpolation-depth-in-delimited-arguments">interpolation depth in delimited arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-interpolation-of-strings-_0028_005c_002a_0029">interpolation of strings (<code class="code">\*</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-interpretation-mode">interpretation mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-interrupted-line">interrupted line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-interrupted-line-register-_0028_002eint_0029">interrupted line register (<code class="code">.int</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-interrupted-lines-and-input-line-traps-_0028itc_0029">interrupted lines and input line traps (<code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-introduction">introduction</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Introduction">Introduction</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-invalid-characters-for-trf-request">invalid characters for <code class="code">trf</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-invalid-input-characters">invalid input characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-invocation-examples">invocation examples</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invocation-Examples">Invocation Examples</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-invoking-groff">invoking <code class="code">groff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-groff">Invoking groff</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-invoking-requests">invoking requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ISO-646-output-encoding">ISO&nbsp;646 output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ISO-8859_002d1-_0028Latin_002d1_0029-output-encoding">ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->) output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ISO-8859_002d1-_0028Latin_002d1_0029_002c-input-encoding">ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ISO-8859_002d15-_0028Latin_002d9_0029_002c-input-encoding">ISO <span class="w-nolinebreak-text">8859-15</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-9</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ISO-8859_002d2-_0028Latin_002d2_0029_002c-input-encoding">ISO <span class="w-nolinebreak-text">8859-2</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-2</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ISO-8859_002d9-_0028Latin_002d5_0029_002c-input-encoding">ISO <span class="w-nolinebreak-text">8859-9</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-5</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-italic-correction-_0028_005c_002f_0029">italic correction (<code class="code">\/</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-J">J</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-justifying-text">justifying text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-justifying-text-_0028rj_0029">justifying text (<code class="code">rj</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-K">K</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-keep_002c-floating">keep, floating</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Displays-and-Keeps">Displays and Keeps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-keeps-_0028introduction_0029">keeps (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Displays-and-Keeps">Displays and Keeps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-keeps-_005bms_005d">keeps [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-keeps_002c-and-footnotes-_005bms_005d">keeps, and footnotes [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-kerning-and-ligatures">kerning and ligatures</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-kerning-enabled-register-_0028_002ekern_0029">kerning enabled register (<code class="code">.kern</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-kerning_002c-activating-_0028kern_0029">kerning, activating (<code class="code">kern</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-kerning_002c-track">kerning, track</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-landscape-page-orientation">landscape page orientation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-language-_005bms_005d">language [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-last-glyph_002c-dimensions-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029">last glyph, dimensions (<code class="code">.w</code>, <code class="code">.cht</code>, <code class="code">.cdp</code>, <code class="code">.csk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-last_002drequested-point-size-registers-_0028_002epsr_002c-_002esr_0029">last-requested point size registers (<code class="code">.psr</code>, <code class="code">.sr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-last_002drequested-type-size-registers-_0028_002epsr_002c-_002esr_0029">last-requested type size registers (<code class="code">.psr</code>, <code class="code">.sr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Latin_002d1-_0028ISO-8859_002d1_0029-output-encoding"><span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->) output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Latin_002d1-_0028ISO-8859_002d1_0029_002c-input-encoding"><span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Latin_002d2-_0028ISO-8859_002d2_0029_002c-input-encoding"><span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-2</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Latin_002d5-_0028ISO-8859_002d9_0029_002c-input-encoding"><span class="w-nolinebreak-text">Latin-5</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-9</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Latin_002d9-_0028ISO-8859_002d15_0029_002c-input-encoding"><span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-15</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Encodings">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-layout_002c-line">layout, line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-layout_002c-page">layout, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lc-request_002c-and-glyph-definitions"><code class="code">lc</code> request, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-leader-character">leader character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-leader-character-1">leader character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-leader-character_002c-and-translations">leader character, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-leader-character_002c-non_002dinterpreted-_0028_005ca_0029">leader character, non-interpreted (<code class="code">\a</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-leader-repetition-character-_0028lc_0029">leader repetition character (<code class="code">lc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-leaders">leaders</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-leading">leading</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-leading-space-macro-_0028lsm_0029">leading space macro (<code class="code">lsm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-leading-space-traps">leading space traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leading-Space-Traps">Leading Space Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-leading-spaces">leading spaces</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-leading-spaces-macro-_0028lsm_0029">leading spaces macro (<code class="code">lsm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leading-Space-Traps">Leading Space Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-leading-spaces-with-ds">leading spaces with <code class="code">ds</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-left-italic-correction-_0028_005c_002c_0029">left italic correction (<code class="code">\,</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-left-margin-_0028po_0029">left margin (<code class="code">po</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-length-of-a-string-_0028length_0029">length of a string (<code class="code">length</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-length-of-line-_0028ll_0029">length of line (<code class="code">ll</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-length-of-previous-line-_0028_002en_0029">length of previous line (<code class="code">.n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-length-of-the-page_002c-configuring-_0028pl_0029">length of the page, configuring (<code class="code">pl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-length-of-title-line_002c-configuring-_0028lt_0029">length of title line, configuring (<code class="code">lt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-length-request_002c-and-copy-mode"><code class="code">length</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-less-than-_0028or-equal-to_0029-operator">less than (or equal to) operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-letters_002c-form">letters, form</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-level_002c-input">level, input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-level_002c-suppression-nesting_002c-register">level, suppression nesting, register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lf-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">lf</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ligature">ligature</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ligatures-and-kerning">ligatures and kerning</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ligatures-enabled-register-_0028_002elg_0029">ligatures enabled register (<code class="code">.lg</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ligatures_002c-activating-_0028lg_0029">ligatures, activating (<code class="code">lg</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-limitations-of-_005cb-escape-sequence">limitations of <code class="code">\b</code> escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-break">line break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-break-_0028introduction_0029">line break (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-break_002c-output">line break, output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-control">line control</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-dimensions">line dimensions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-drawing-glyph">line drawing glyph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-drawing-glyph-1">line drawing glyph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-indentation-_0028in_0029">line indentation (<code class="code">in</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-layout">line layout</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-length-_0028ll_0029">line length (<code class="code">ll</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-length-register-_0028_002el_0029">line length register (<code class="code">.l</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-length_002c-previous-_0028_002en_0029">line length, previous (<code class="code">.n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-number_002c-input_002c-register-_0028_002ec_002c-c_002e_0029">line number, input, register (<code class="code">.c</code>, <code class="code">c.</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-number_002c-output_002c-register-_0028ln_0029">line number, output, register (<code class="code">ln</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-numbers_002c-printing-_0028nm_0029">line numbers, printing (<code class="code">nm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-space_002c-extra-post_002dvertical-_0028_005cx_0029">line space, extra post-vertical (<code class="code">\x</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-space_002c-extra-pre_002dvertical-_0028_005cx_0029">line space, extra pre-vertical (<code class="code">\x</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-spacing-register-_0028_002eL_0029">line spacing register (<code class="code">.L</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-spacing_002c-post_002dvertical-_0028pvs_0029">line spacing, post-vertical (<code class="code">pvs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line-thickness-_0028_005cD_0027t-_2026_0027_0029">line thickness (&lsquo;<samp class="samp">\D't &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-blank">line, blank</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-drawing-_0028_005cD_0027l-_2026_0027_0029">line, drawing (&lsquo;<samp class="samp">\D'l &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-horizontal_002c-drawing-_0028_005cl_0029">line, horizontal, drawing (<code class="code">\l</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-input_002c-continuation-_0028_005cRET_0029">line, input, continuation (<code class="code">\<kbd class="key">RET</kbd></code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-input_002c-horizontal-position_002c-register-_0028hp_0029">line, input, horizontal position, register (<code class="code">hp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-input_002c-horizontal-position_002c-saving-_0028_005ck_0029">line, input, horizontal position, saving (<code class="code">\k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-interrupted">line, interrupted</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-output_002c-continuation-_0028_005cc_0029">line, output, continuation (<code class="code">\c</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-output_002c-horizontal-position_002c-register-_0028_002ek_0029">line, output, horizontal position, register (<code class="code">.k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-productive-input">line, productive input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002c-vertical_002c-drawing-_0028_005cL_0029">line, vertical, drawing (<code class="code">\L</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-line_002dtabs-mode">line-tabs mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-blank_002c-disabling">lines, blank, disabling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-centering-_0028ce_0029">lines, centering (<code class="code">ce</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-centering-_0028introduction_0029">lines, centering (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-consecutive-hyphenated-_0028hlm_0029">lines, consecutive hyphenated (<code class="code">hlm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-interrupted_002c-and-input-line-traps-_0028itc_0029">lines, interrupted, and input line traps (<code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-right_002daligning-_0028introduction_0029">lines, right-aligning (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lines_002c-right_002djustifying-_0028introduction_0029">lines, right-justifying (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-list-of-special-characters-_0028groff_005fchar_00287_0029-man-page_0029">list of special characters (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-listing-page-location-traps-_0028ptr_0029">listing page location traps (<code class="code">ptr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lists">lists</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paragraphs">Paragraphs</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ll-request_002c-using-_002b-and-_002d-with"><code class="code">ll</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-localization">localization</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-localization-_005bms_005d">localization [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-locating-macro-files">locating macro files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-locating-macro-packages">locating macro packages</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-location_002c-vertical_002c-page_002c-marking-_0028mk_0029">location, vertical, page, marking (<code class="code">mk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-location_002c-vertical_002c-page_002c-returning-to-marked-_0028rt_0029">location, vertical, page, returning to marked (<code class="code">rt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-_0060_0060and_0027_0027-operator">logical &ldquo;and&rdquo; operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-_0060_0060or_0027_0027-operator">logical &ldquo;or&rdquo; operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-complementation-operator">logical complementation operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-conjunction-operator">logical conjunction operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-disjunction-operator">logical disjunction operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-not_002c-limitation-in-expression">logical not, limitation in expression</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-logical-operators">logical operators</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-long-names">long names</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-loops-and-conditionals">loops and conditionals</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditionals-and-Loops">Conditionals and Loops</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lowercasing-a-string-_0028stringdown_0029">lowercasing a string (<code class="code">stringdown</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ls-request_002c-alternative-to-_0028pvs_0029"><code class="code">ls</code> request, alternative to (<code class="code">pvs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-lt-request_002c-using-_002b-and-_002d-with"><code class="code">lt</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-m-scaling-unit"><code class="code">m</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-M-scaling-unit"><code class="code">M</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-machine-units">machine units</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro">macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-arguments">macro arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-arguments_002c-and-compatibility-mode">macro arguments, and compatibility mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-arguments_002c-and-tabs">macro arguments, and tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-directories">macro directories</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-file-search-path">macro file search path</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-name-register-_0028_005c_00240_0029">macro name register (<code class="code">\$0</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-names_002c-starting-with-_005b-or-_005d_002c-and-refer">macro names, starting with <code class="code">[</code> or <code class="code">]</code>, and <code class="code">refer</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package">macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Packages">Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package-search-path">macro package search path</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package-usage_002c-basics-of">macro package usage, basics of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package_002c-auxiliary">macro package, auxiliary</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package_002c-full_002dservice">macro package, full-service</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package_002c-introduction">macro package, introduction</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Package-Intro">Macro Package Intro</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package_002c-major">macro package, major</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package_002c-minor">macro package, minor</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro-package_002c-structuring-the-source-of">macro package, structuring the source of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-appending-to-_0028am_0029">macro, appending to (<code class="code">am</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-creating-alias-for-_0028als_0029">macro, creating alias for (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-end_002dof_002dinput-_0028em_0029">macro, end-of-input (<code class="code">em</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-parameters-_0028_005c_0024_0029">macro, parameters (<code class="code">\$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-removing-_0028rm_0029">macro, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-removing-alias-for-_0028rm_0029">macro, removing alias for (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macro_002c-renaming-_0028rn_0029">macro, renaming (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macros_002c-recursive">macros, recursive</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#while">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macros_002c-searching">macros, searching</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macros_002c-shared-name-space-with-strings-and-diversions">macros, shared name space with strings and diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macros_002c-tutorial-for-users">macros, tutorial for users</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tutorial-for-Macro-Users">Tutorial for Macro Users</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-macros_002c-writing">macros, writing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-magnification-of-a-font-_0028fzoom_0029">magnification of a font (<code class="code">fzoom</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-major-macro-package">major macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-major-version-number-register-_0028_002ex_0029">major version number register (<code class="code">.x</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-man-macros_002c-custom-headers-and-footers"><code class="code">man</code> macros, custom headers and footers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-man-macros_002c-Ultrix_002dspecific"><code class="code">man</code> macros, Ultrix-specific</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-man-pages">man pages</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#man">man</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-manipulating-filling-and-adjustment">manipulating filling and adjustment</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-manipulating-hyphenation">manipulating hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-manipulating-spacing">manipulating spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-manipulating-type-size-and-vertical-spacing">manipulating type size and vertical spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-manual-hyphenation">manual hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-manual-pages">manual pages</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#man">man</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-margin-for-hyphenation-_0028hym_0029">margin for hyphenation (<code class="code">hym</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-margin-glyph-_0028mc_0029">margin glyph (<code class="code">mc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-margin_002c-bottom">margin, bottom</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-margin_002c-left-_0028po_0029">margin, left (<code class="code">po</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-margin_002c-right">margin, right</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-margin_002c-top">margin, top</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mark_002c-high_002dwater_002c-register-_0028_002eh_0029">mark, high-water, register (<code class="code">.h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-marker_002c-footnote-_005bms_005d">marker, footnote [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-marking-vertical-page-location-_0028mk_0029">marking vertical page location (<code class="code">mk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-maximum-operator">maximum operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-maximum-value-representable-with-Roman-numerals">maximum value representable with Roman numerals</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mdoc-macros"><code class="code">mdoc</code> macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#mdoc">mdoc</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-me-macro-package"><code class="code">me</code> macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#me">me</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-measurement-units">measurement units</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-measurements">measurements</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-measurements_002c-specifying-safely">measurements, specifying safely</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Default-Units">Default Units</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-metrics_002c-font">metrics, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-minimal-inter_002dword-spacing">minimal inter-word spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-minimum-operator">minimum operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-minimum-value-representable-with-Roman-numerals">minimum value representable with Roman numerals</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-minor-macro-package">minor macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-minor-version-number-register-_0028_002ey_0029">minor version number register (<code class="code">.y</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-minutes_002c-current-time-_0028minutes_0029">minutes, current time (<code class="code">minutes</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mm-macro-package"><code class="code">mm</code> macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#mm">mm</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode-for-constant-glyph-space-_0028cs_0029">mode for constant glyph space (<code class="code">cs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-compatibility">mode, compatibility</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-compatibility_002c-and-parameters">mode, compatibility, and parameters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy">mode, copy</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy-1">mode, copy</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-cf-request">mode, copy, and <code class="code">cf</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-device-request">mode, copy, and <code class="code">device</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-length-request">mode, copy, and <code class="code">length</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-macro-parameters">mode, copy, and macro parameters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-output-request">mode, copy, and <code class="code">output</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-trf-request">mode, copy, and <code class="code">trf</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-write-request">mode, copy, and <code class="code">write</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-writec-request">mode, copy, and <code class="code">writec</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-writem-request">mode, copy, and <code class="code">writem</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-_005c_0021">mode, copy, and <code class="code">\!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-_005c_003f">mode, copy, and <code class="code">\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-_005c_003f-1">mode, copy, and <code class="code">\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-_005ca">mode, copy, and <code class="code">\a</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-_005ct">mode, copy, and <code class="code">\t</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-copy_002c-and-_005cV">mode, copy, and <code class="code">\V</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-fill-_0028fi_0029_002c-enabling">mode, fill (<code class="code">fi</code>), enabling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-fill_002c-and-break-warnings">mode, fill, and <code class="code">break</code> warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-fill_002c-and-inter_002dsentence-space">mode, fill, and inter-sentence space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-fill_002c-and-_005cc">mode, fill, and <code class="code">\c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-fill_002c-disabling">mode, fill, disabling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-interpretation">mode, interpretation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Copy-Mode">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-line_002dtabs">mode, line-tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-no_002dfill">mode, no-fill</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-no_002dfill_002c-and-_005cc">mode, no-fill, and <code class="code">\c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-no_002dspace-_0028ns_0029">mode, no-space (<code class="code">ns</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-nroff">mode, <code class="code">nroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-1">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-2">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-3">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-4">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-5">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-6">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-safer-7">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Safer-Mode">Safer Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-troff">mode, <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe-1">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe-2">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe-3">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe-4">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe-5">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mode_002c-unsafe-6">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-modifying-requests">modifying requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-modulus">modulus</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mom-macro-package"><code class="code">mom</code> macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#mom">mom</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-month-of-the-year-register-_0028mo_0029">month of the year register (<code class="code">mo</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-motion-operators">motion operators</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-motion-quanta">motion quanta</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-motion-quantum_002c-horizontal">motion quantum, horizontal</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-motion-quantum_002c-horizontal_002c-register-_0028_002eH_0029">motion quantum, horizontal, register (<code class="code">.H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-motion-quantum_002c-vertical">motion quantum, vertical</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-motion_002c-horizontal-_0028_005ch_0029">motion, horizontal (<code class="code">\h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-motion_002c-vertical-_0028_005cv_0029">motion, vertical (<code class="code">\v</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-motions_002c-page">motions, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mounting-a-font-_0028fp_0029">mounting a font (<code class="code">fp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mounting-position">mounting position</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mounting-position-1">mounting position</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mounting_002c-font_002c-automatic">mounting, font, automatic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros"><samp class="file">ms</samp> macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms">ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-accent-marks"><samp class="file">ms</samp> macros, accent marks</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-body-text"><samp class="file">ms</samp> macros, body text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Body-Text">ms Body Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-creating-table-of-contents"><samp class="file">ms</samp> macros, creating table of contents</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-displays"><samp class="file">ms</samp> macros, displays</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-document-control-settings"><samp class="file">ms</samp> macros, document control settings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Control-Settings">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-document-description"><samp class="file">ms</samp> macros, document description</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Description-Macros">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-equations"><samp class="file">ms</samp> macros, equations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-figures"><samp class="file">ms</samp> macros, figures</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-footers"><samp class="file">ms</samp> macros, footers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-footnotes"><samp class="file">ms</samp> macros, footnotes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Footnotes">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-fractional-type-sizes-in"><samp class="file">ms</samp> macros, fractional type sizes in</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Differences-from-AT_0026T-ms">Differences from AT&amp;T ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-general-structure"><samp class="file">ms</samp> macros, general structure</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Document-Structure">ms Document Structure</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-groff-differences-from-AT_0026T"><samp class="file">ms</samp> macros, <code class="code">groff</code> differences from <abbr class="acronym">AT&amp;T</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Differences-from-AT_0026T-ms">Differences from AT&amp;T ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-headers"><samp class="file">ms</samp> macros, headers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Headers-and-Footers">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-headings"><samp class="file">ms</samp> macros, headings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Headings-in-ms">Headings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-keeps"><samp class="file">ms</samp> macros, keeps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-keeps-and-displays">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-language"><samp class="file">ms</samp> macros, language</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-lists"><samp class="file">ms</samp> macros, lists</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-localization"><samp class="file">ms</samp> macros, localization</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-language-and-localization">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-margins"><samp class="file">ms</samp> macros, margins</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Margins">ms Margins</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-multiple-columns"><samp class="file">ms</samp> macros, multiple columns</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Multiple-Columns">ms Multiple Columns</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-naming-conventions"><samp class="file">ms</samp> macros, naming conventions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Naming-Conventions">ms Naming Conventions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-nested-lists"><samp class="file">ms</samp> macros, nested lists</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Indented-regions-in-ms">Indented regions in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-obtaining-typographical-symbols"><samp class="file">ms</samp> macros, obtaining typographical symbols</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Typographical-symbols-in-ms">Typographical symbols in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-page-layout"><samp class="file">ms</samp> macros, page layout</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Page-Layout">ms Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-paragraph-handling"><samp class="file">ms</samp> macros, paragraph handling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paragraphs-in-ms">Paragraphs in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-references"><samp class="file">ms</samp> macros, references</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-special-characters"><samp class="file">ms</samp> macros, special characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-strings"><samp class="file">ms</samp> macros, strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-tables"><samp class="file">ms</samp> macros, tables</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ms-macros_002c-text-settings"><samp class="file">ms</samp> macros, text settings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Text-settings-in-ms">Text settings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-multi_002dfile-documents">multi-file documents</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-multi_002dline-strings">multi-line strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-multi_002dpage-table-example-_005bms_005d">multi-page table example [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-multiple-columns-_005bms_005d">multiple columns [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Multiple-Columns">ms Multiple Columns</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-multiplication">multiplication</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-n-scaling-unit"><code class="code">n</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-name-space_002c-common_002c-of-macros_002c-diversions_002c-and-strings">name space, common, of macros, diversions, and strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-name_002c-background-color_002c-register-_0028_002eM_0029">name, background color, register (<code class="code">.M</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-name_002c-fill-color_002c-register-_0028_002eM_0029">name, fill color, register (<code class="code">.M</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-name_002c-stroke-color_002c-register-_0028_002em_0029">name, stroke color, register (<code class="code">.m</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-named-character-_0028_005cC_0029">named character (<code class="code">\C</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-names_002c-long">names, long</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Compatibility-Mode">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-naming-conventions_002c-ms-macros">naming conventions, <samp class="file">ms</samp> macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Naming-Conventions">ms Naming Conventions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ne-request_002c-and-the-_002etrunc-register"><code class="code">ne</code> request, and the <code class="code">.trunc</code> register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ne-request_002c-comparison-with-sv"><code class="code">ne</code> request, comparison with <code class="code">sv</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-negating-register-values">negating register values</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-negation">negation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nested-assignments">nested assignments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nested-diversions">nested diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nested-lists-_005bms_005d">nested lists [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Indented-regions-in-ms">Indented regions in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nesting-level_002c-suppression_002c-register">nesting level, suppression, register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-new-page-_0028bp_0029">new page (<code class="code">bp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-newline-character_002c-and-translations">newline character, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-newline-character_002c-in-strings_002c-escaping">newline character, in strings, escaping</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-newline_002c-as-delimiter">newline, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-newline_002c-final_002c-stripping-in-diversions">newline, final, stripping in diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-next-file_002c-processing-_0028nx_0029">next file, processing (<code class="code">nx</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-next-free-font-position-register-_0028_002efp_0029">next free font position register (<code class="code">.fp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-next-page-number-register-_0028_002epn_0029">next page number register (<code class="code">.pn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-next-page-number_002c-configuring-_0028pn_0029">next page number, configuring (<code class="code">pn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nf-request_002c-causing-implicit-break"><code class="code">nf</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nl-register_002c-and-_002ed"><code class="code">nl</code> register, and <code class="code">.d</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nl-register_002c-difference-from-_002eh"><code class="code">nl</code> register, difference from <code class="code">.h</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nm-request_002c-using-_002b-and-_002d-with"><code class="code">nm</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-no_002dbreak-control-character-_0028_0027_0029">no-break control character (<code class="code">'</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-no_002dbreak-control-character_002c-changing-_0028c2_0029">no-break control character, changing (<code class="code">c2</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-no_002dfill-mode">no-fill mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-no_002dfill-mode_002c-and-_005cc">no-fill mode, and <code class="code">\c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-no_002dspace-mode-_0028ns_0029">no-space mode (<code class="code">ns</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-node_002c-output">node, output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-non_002dprinting-break-point-_0028_005c_003a_0029">non-printing break point (<code class="code">\:</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nr-request_002c-and-warnings"><code class="code">nr</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nr-request_002c-using-_002b-and-_002d-with"><code class="code">nr</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-nroff-mode"><code class="code">nroff</code> mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-number-formats_002c-assigning-to-register-_0028af_0029">number formats, assigning to register (<code class="code">af</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-number-of-registers-register-_0028_002eR_0029">number of registers register (<code class="code">.R</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-number_002c-input-line_002c-setting-_0028lf_0029">number, input line, setting (<code class="code">lf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-number_002c-page_002c-next_002c-configuring-_0028pn_0029">number, page, next, configuring (<code class="code">pn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-numbered-glyph-_0028_005cN_0029">numbered glyph (<code class="code">\N</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-numbered-glyph-_0028_005cN_0029-1">numbered glyph (<code class="code">\N</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-numbered-list_002c-example-markup-_005bms_005d">numbered list, example markup [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Lists-in-ms">Lists in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-numbers_002c-line_002c-printing-_0028nm_0029">numbers, line, printing (<code class="code">nm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-numeral_002dwidth-space-_0028_005c0_0029">numeral-width space (<code class="code">\0</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-numerals_002c-as-delimiters">numerals, as delimiters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-numerals_002c-Roman">numerals, Roman</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-numeric-expression_002c-valid">numeric expression, valid</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-numeric-expressions">numeric expressions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-O">O</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-object-creation">object creation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-offset_002c-page">offset, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-offset_002c-page-_0028po_0029">offset, page (<code class="code">po</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-open-request_002c-and-safer-mode"><code class="code">open</code> request, and safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-opena-request_002c-and-safer-mode"><code class="code">opena</code> request, and safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-opening-brace-escape-sequence-_0028_005c_007d_0029">opening brace escape sequence (<code class="code">\}</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Conditional-Blocks">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-opening-file-_0028open_0029">opening file (<code class="code">open</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-operator_002c-scaling">operator, scaling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-arithmetic">operators, arithmetic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-as-delimiters">operators, as delimiters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-comparison">operators, comparison</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-extremum-_0028_003e_003f_002c-_003c_003f_0029">operators, extremum (<code class="code">&gt;?</code>, <code class="code">&lt;?</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-logical">operators, logical</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-motion">operators, motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-operators_002c-unary-arithmetic">operators, unary arithmetic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-optical-size-of-a-font">optical size of a font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-options">options</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-order-of-evaluation-in-expressions">order of evaluation in expressions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ordinary-character">ordinary character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-orientation_002c-landscape">orientation, landscape</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-orphan">orphan</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-orphan-lines_002c-preventing-with-ne">orphan lines, preventing with <code class="code">ne</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-os-request_002c-and-no_002dspace-mode"><code class="code">os</code> request, and no-space mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-outlined-circle_002c-drawing-_0028_005cD_0027c-_2026_0027_0029">outlined circle, drawing (&lsquo;<samp class="samp">\D'c &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-outlined-ellipse_002c-drawing-_0028_005cD_0027e-_2026_0027_0029">outlined ellipse, drawing (&lsquo;<samp class="samp">\D'e &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-outlined-polygon_002c-drawing-_0028_005cD_0027p-_2026_0027_0029">outlined polygon, drawing (&lsquo;<samp class="samp">\D'p &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-and-input-requests">output and input requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-comparison-operator">output comparison operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-device-name-string-_0028_002eT_0029">output device name string (<code class="code">.T</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-device-name-string-_0028_002eT_0029-1">output device name string (<code class="code">.T</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-device-name-string-_0028_002eT_0029_002c-in-other-implementations">output device name string (<code class="code">.T</code>), in other implementations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-device-usage-register-_0028_002eT_0029">output device usage register (<code class="code">.T</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-device-usage-register-_0028_002eT_0029_002c-incompatibility-with-AT_0026T-troff">output device usage register (<code class="code">.T</code>), incompatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-devices">output devices</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Output-Device-Intro">Output Device Intro</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-encoding_002c-ASCII">output encoding, <abbr class="acronym">ASCII</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-encoding_002c-code-page-1047">output encoding, code page 1047</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-encoding_002c-EBCDIC">output encoding, <abbr class="acronym">EBCDIC</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-encoding_002c-ISO-646">output encoding, ISO&nbsp;646</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-encoding_002c-Latin_002d1-_0028ISO-8859_002d1_0029">output encoding, <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-encoding_002c-UTF_002d8">output encoding, <span class="w-nolinebreak-text">UTF-8</span><!-- /@w --></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-glyphs_002c-and-input-characters_002c-compatibility-with-AT_0026T-troff">output glyphs, and input characters, compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-line-break">output line break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-line-number-register-_0028ln_0029">output line number register (<code class="code">ln</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-line-properties">output line properties</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-line_002c-continuation-_0028_005cc_0029">output line, continuation (<code class="code">\c</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Continuation">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-line_002c-horizontal-position_002c-register-_0028_002ek_0029">output line, horizontal position, register (<code class="code">.k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-node">output node</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-request_002c-and-copy-mode"><code class="code">output</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output-request_002c-and-_005c_0021"><code class="code">output</code> request, and <code class="code">\!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-filling_002c-disablement-of-_0028nf_0029">output, filling, disablement of (<code class="code">nf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-filling_002c-enablement-of-_0028fi_0029">output, filling, enablement of (<code class="code">fi</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-flush-_0028fl_0029">output, flush (<code class="code">fl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-gtroff">output, <code class="code">gtroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#gtroff-Output">gtroff Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-intermediate">output, intermediate</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#gtroff-Output">gtroff Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-suppressing-_0028_005cO_0029">output, suppressing (<code class="code">\O</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-transparent-_0028cf_002c-trf_0029">output, transparent (<code class="code">cf</code>, <code class="code">trf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-transparent-_0028_005c_0021_002c-_005c_003f_0029">output, transparent (<code class="code">\!</code>, <code class="code">\?</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-transparent_002c-incompatibilities-with-AT_0026T-troff">output, transparent, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002c-troff">output, <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#gtroff-Output">gtroff Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-overlapping-characters">overlapping characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-overstriking-glyphs-_0028_005co_0029">overstriking glyphs (<code class="code">\o</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-p-scaling-unit"><code class="code">p</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-P-scaling-unit"><code class="code">P</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro">package, macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Packages">Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro_002c-auxiliary">package, macro, auxiliary</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro_002c-full_002dservice">package, macro, full-service</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro_002c-introduction">package, macro, introduction</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Package-Intro">Macro Package Intro</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro_002c-major">package, macro, major</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro_002c-minor">package, macro, minor</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Major-Macro-Packages">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-macro_002c-search-path">package, macro, search path</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-package_002c-package_002c-structuring-the-source-of">package, package, structuring the source of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-padding-character_002c-for-fields-_0028fc_0029">padding character, for fields (<code class="code">fc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Fields">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page">page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break">page break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break-1">page break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break-2">page break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#The-Implicit-Page-Trap">The Implicit Page Trap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break-_0028introduction_0029">page break (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break_002c-conditional-_0028ne_0029">page break, conditional (<code class="code">ne</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break_002c-final">page break, final</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-break_002c-prevented-by-vpt">page break, prevented by <code class="code">vpt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-control">page control</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-ejection">page ejection</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-ejection-1">page ejection</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-ejection-2">page ejection</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#The-Implicit-Page-Trap">The Implicit Page Trap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-ejection-status-register-_0028_002epe_0029">page ejection status register (<code class="code">.pe</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-ejection_002c-of-final-page">page ejection, of final page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-ejection_002c-prevented-by-vpt">page ejection, prevented by <code class="code">vpt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-footers">page footers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-headers">page headers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-layout">page layout</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-layout-_005bms_005d">page layout [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Page-Layout">ms Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-length-register-_0028_002ep_0029">page length register (<code class="code">.p</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-length_002c-configuring-_0028pl_0029">page length, configuring (<code class="code">pl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-location-traps">page location traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-location-traps_002c-debugging">page location traps, debugging</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-location_002c-vertical_002c-marking-_0028mk_0029">page location, vertical, marking (<code class="code">mk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-location_002c-vertical_002c-returning-to-marked-_0028rt_0029">page location, vertical, returning to marked (<code class="code">rt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-motions">page motions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-number-character-_0028_0025_0029">page number character (<code class="code">%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-number-character_002c-changing-_0028pc_0029">page number character, changing (<code class="code">pc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-number-register-_0028_0025_0029">page number register (<code class="code">%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-number_002c-configuring-next-_0028pn_0029">page number, configuring next (<code class="code">pn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-number_002c-next_002c-register-_0028_002epn_0029">page number, next, register (<code class="code">.pn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-offset">page offset</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-offset-_0028po_0029">page offset (<code class="code">po</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page-orientation_002c-landscape">page orientation, landscape</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page_002c-geometry-of">page, geometry of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page_002c-new-_0028bp_0029">page, new (<code class="code">bp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-paper-format">paper format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-paper-size">paper size</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-paragraphs">paragraphs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paragraphs">Paragraphs</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-parameter-count-register-_0028_002e_0024_0029">parameter count register (<code class="code">.$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-parameters">parameters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-parameters_002c-and-compatibility-mode">parameters, and compatibility mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-parameters_002c-macro-_0028_005c_0024_0029">parameters, macro (<code class="code">\$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Parameters">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-parentheses">parentheses</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-partially-collected-line">partially collected line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-path_002c-for-font-files">path, for font files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-path_002c-for-tmac-files">path, for tmac files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pattern-files_002c-for-hyphenation">pattern files, for hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-patterns-for-hyphenation-_0028hpf_0029">patterns for hyphenation (<code class="code">hpf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pending-output-line">pending output line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pi-request_002c-and-groff"><code class="code">pi</code> request, and <code class="code">groff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pi-request_002c-and-safer-mode"><code class="code">pi</code> request, and safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pi-request_002c-disabled-by-default"><code class="code">pi</code> request, disabled by default</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Safer-Mode">Safer Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pica-scaling-unit-_0028P_0029">pica scaling unit (<code class="code">P</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PID-of-GNU-troff-register-_0028_0024_0024_0029">PID of GNU <code class="code">troff</code> register (<code class="code">$$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pile_002c-glyph-_0028_005cb_0029">pile, glyph (<code class="code">\b</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pl-request_002c-using-_002b-and-_002d-with"><code class="code">pl</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-plain-text-approximation-output-register-_0028_002eA_0029">plain text approximation output register (<code class="code">.A</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-plain-text-approximation-output-register-_0028_002eA_0029-1">plain text approximation output register (<code class="code">.A</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-planting-a-trap">planting a trap</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Traps">Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-platform_002dspecific-directory">platform-specific directory</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pm-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">pm</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pn-request_002c-using-_002b-and-_002d-with"><code class="code">pn</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PNG-image-generation-from-PostScript">PNG image generation from PostScript</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-po-request_002c-using-_002b-and-_002d-with"><code class="code">po</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-point-scaling-unit-_0028p_0029">point scaling unit (<code class="code">p</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-point-size-registers-_0028_002es_002c-_002eps_0029">point size registers (<code class="code">.s</code>, <code class="code">.ps</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-point-size-registers_002c-last_002drequested-_0028_002epsr_002c-_002esr_0029">point size registers, last-requested (<code class="code">.psr</code>, <code class="code">.sr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-point-sizes_002c-changing-_0028ps_002c-_005cs_0029">point sizes, changing (<code class="code">ps</code>, <code class="code">\s</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-point-sizes_002c-fractional">point sizes, fractional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-point-sizes_002c-fractional-1">point sizes, fractional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-polygon_002c-filled_002c-drawing-_0028_005cD_0027P-_2026_0027_0029">polygon, filled, drawing (&lsquo;<samp class="samp">\D'P &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-polygon_002c-outlined_002c-drawing-_0028_005cD_0027p-_2026_0027_0029">polygon, outlined, drawing (&lsquo;<samp class="samp">\D'p &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-polygon_002c-solid_002c-drawing-_0028_005cD_0027P-_2026_0027_0029">polygon, solid, drawing (&lsquo;<samp class="samp">\D'P &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-polygon_002c-stroked_002c-drawing-_0028_005cD_0027p-_2026_0027_0029">polygon, stroked, drawing (&lsquo;<samp class="samp">\D'p &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-position-of-lowest-text-line-_0028_002eh_0029">position of lowest text line (<code class="code">.h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-absolute-_0028sic_0029-operator-_0028_007c_0029">position, absolute <i class="slanted">(sic)</i> operator (<code class="code">|</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-drawing">position, drawing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-horizontal-input-line_002c-saving-_0028_005ck_0029">position, horizontal input line, saving (<code class="code">\k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-horizontal_002c-in-input-line_002c-register-_0028hp_0029">position, horizontal, in input line, register (<code class="code">hp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-horizontal_002c-in-output-line_002c-register-_0028_002ek_0029">position, horizontal, in output line, register (<code class="code">.k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-mounting">position, mounting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-position_002c-vertical_002c-in-diversion_002c-register-_0028_002ed_0029">position, vertical, in diversion, register (<code class="code">.d</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-positions_002c-font">positions, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Positions">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-post_002dvertical-line-spacing">post-vertical line spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-post_002dvertical-line-spacing-register-_0028_002epvs_0029">post-vertical line spacing register (<code class="code">.pvs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-post_002dvertical-line-spacing_002c-changing-_0028pvs_0029">post-vertical line spacing, changing (<code class="code">pvs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-postprocessor-access">postprocessor access</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Postprocessor-Access">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-postprocessors">postprocessors</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Output-Device-Intro">Output Device Intro</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PostScript_002c-bounding-box">PostScript, bounding box</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-PostScript_002c-PNG-image-generation">PostScript, PNG image generation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-prefix_002c-for-commands">prefix, for commands</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-preprocessors">preprocessors</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Preprocessor-Intro">Preprocessor Intro</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-previous-font_002c-selecting-_0028ft_0029">previous font, selecting (<code class="code">ft</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-previous-font_002c-selecting-_0028_005cf_005b_005d_002c-_005cfP_0029">previous font, selecting (<code class="code">\f[]</code>, <code class="code">\fP</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-previous-line-length-_0028_002en_0029">previous line length (<code class="code">.n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-print-current-page-register-_0028_002eP_0029">print current page register (<code class="code">.P</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-printing-backslash-_0028_005c_005c_002c-_005ce_002c-_005cE_002c-_005c_005brs_005d_0029">printing backslash (<code class="code">\\</code>, <code class="code">\e</code>, <code class="code">\E</code>, <code class="code">\[rs]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-printing-line-numbers-_0028nm_0029">printing line numbers (<code class="code">nm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-printing-to-stderr-_0028tm_002c-tm1_002c-tmc_0029">printing to stderr (<code class="code">tm</code>, <code class="code">tm1</code>, <code class="code">tmc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-printing_002c-zero_002dwidth-_0028_005cz_002c-_005cZ_0029">printing, zero-width (<code class="code">\z</code>, <code class="code">\Z</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-printing_002c-zero_002dwidth-_0028_005cz_002c-_005cZ_0029-1">printing, zero-width (<code class="code">\z</code>, <code class="code">\Z</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-process-ID-of-GNU-troff-register-_0028_0024_0024_0029">process ID of GNU <code class="code">troff</code> register (<code class="code">$$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-processing-next-file-_0028nx_0029">processing next file (<code class="code">nx</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-productive-input-line">productive input line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-properties-of-characters-_0028cflags_0029">properties of characters (<code class="code">cflags</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-properties-of-glyphs-_0028cflags_0029">properties of glyphs (<code class="code">cflags</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-properties-of-output-lines">properties of output lines</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ps-request_002c-and-constant-glyph-space-mode"><code class="code">ps</code> request, and constant glyph space mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ps-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">ps</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ps-request_002c-using-_002b-and-_002d-with"><code class="code">ps</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ps-request_002c-with-fractional-type-sizes"><code class="code">ps</code> request, with fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pso-request_002c-and-safer-mode"><code class="code">pso</code> request, and safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-pvs-request_002c-using-_002b-and-_002d-with"><code class="code">pvs</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-Q">Q</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-quanta_002c-motion">quanta, motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-quantum_002c-horizontal-motion">quantum, horizontal motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-quantum_002c-vertical-motion">quantum, vertical motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-radicalex-glyph_002c-and-cflags"><code class="code">radicalex</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ragged_002dleft-text">ragged-left text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ragged_002dright-text">ragged-right text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rc-request_002c-and-glyph-definitions"><code class="code">rc</code> request, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-read_002donly-register-removal_002c-incompatibility-with-AT_0026T-troff">read-only register removal, incompatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-read_002donly-register_002c-changing-format">read-only register, changing format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-reading-from-standard-input-_0028rd_0029">reading from standard input (<code class="code">rd</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-recursive-macros">recursive macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#while">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-refer_002c-and-macro-names-starting-with-_005b-or-_005d"><code class="code">refer</code>, and macro names starting with <code class="code">[</code> or <code class="code">]</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-reference_002c-gtroff">reference, <code class="code">gtroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#GNU-troff-Reference">GNU troff Reference</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-references-_005bms_005d">references [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-register-format_002c-in-expressions">register format, in expressions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-assigning-number-format-to-_0028af_0029">register, assigning number format to (<code class="code">af</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-built_002din_002c-removing">register, built-in, removing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-creating-alias-for-_0028aln_0029">register, creating alias for (<code class="code">aln</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-format-_0028_005cg_0029">register, format (<code class="code">\g</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-read_002donly_002c-removal_002c-incompatibility-with-AT_0026T-troff">register, read-only, removal, incompatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-removing-_0028rr_0029">register, removing (<code class="code">rr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-removing-alias-for-_0028rr_0029">register, removing alias for (<code class="code">rr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-register_002c-renaming-_0028rnn_0029">register, renaming (<code class="code">rnn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-registers">registers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Registers">Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-registers_002c-built_002din">registers, built-in</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-registers_002c-dumping-_0028pnr_0029">registers, dumping (<code class="code">pnr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-registers_002c-interpolating-_0028_005cn_0029">registers, interpolating (<code class="code">\n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Interpolating-Registers">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-registers_002c-number-of_002c-register-_0028_002eR_0029">registers, number of, register (<code class="code">.R</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-registers_002c-setting-_0028nr_002c-_005cR_0029">registers, setting (<code class="code">nr</code>, <code class="code">\R</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-removal-of-read_002donly-registers_002c-incompatibility-with-AT_0026T-troff">removal of read-only registers, incompatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-a-built_002din-register">removing a built-in register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-a-register-_0028rr_0029">removing a register (<code class="code">rr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-alias-for-register-_0028rr_0029">removing alias for register (<code class="code">rr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-alias_002c-for-diversion-_0028rm_0029">removing alias, for diversion (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-alias_002c-for-macro-_0028rm_0029">removing alias, for macro (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-alias_002c-for-string-_0028rm_0029">removing alias, for string (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-diversion-_0028rm_0029">removing diversion (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-glyph-definition-_0028rchar_002c-rfschar_0029">removing glyph definition (<code class="code">rchar</code>, <code class="code">rfschar</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-macro-_0028rm_0029">removing macro (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-request-_0028rm_0029">removing request (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-removing-string-_0028rm_0029">removing string (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-renaming-a-register-_0028rnn_0029">renaming a register (<code class="code">rnn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-renaming-diversion-_0028rn_0029">renaming diversion (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-renaming-macro-_0028rn_0029">renaming macro (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-renaming-request-_0028rn_0029">renaming request (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-renaming-string-_0028rn_0029">renaming string (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-renditions_002c-graphic">renditions, graphic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-request">request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-request-1">request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Formatter-Instructions">Formatter Instructions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-request-arguments">request arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-request-arguments_002c-and-compatibility-mode">request arguments, and compatibility mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-request-arguments_002c-and-tabs">request arguments, and tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-request_002c-removing-_0028rm_0029">request, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-request_002c-renaming-_0028rn_0029">request, renaming (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-request_002c-undefined">request, undefined</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-requests-for-drawing">requests for drawing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-requests-for-input-and-output">requests for input and output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-requests_002c-intercepting">requests, intercepting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-requests_002c-invoking">requests, invoking</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-requests_002c-modifying">requests, modifying</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Control-Characters">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-resolution_002c-device">resolution, device</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-resolution_002c-device-1">resolution, device</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-resolution_002c-device_002c-obtaining-in-the-formatter">resolution, device, obtaining in the formatter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-resolution_002c-horizontal">resolution, horizontal</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-resolution_002c-horizontal_002c-register-_0028_002eH_0029">resolution, horizontal, register (<code class="code">.H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Motion-Quanta">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-resolution_002c-vertical">resolution, vertical</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-returning-to-marked-vertical-page-location-_0028rt_0029">returning to marked vertical page location (<code class="code">rt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-revision-number-register-_0028_002eY_0029">revision number register (<code class="code">.Y</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-right-margin">right margin</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Line-Layout">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-right_002daligning-lines-_0028introduction_0029">right-aligning lines (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-right_002djustifying-_0028rj_0029">right-justifying (<code class="code">rj</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-right_002djustifying-lines-_0028introduction_0029">right-justifying lines (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rivers">rivers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rj-request_002c-causing-implicit-break"><code class="code">rj</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rn-glyph_002c-and-cflags"><code class="code">rn</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-roman-glyph_002c-correction-after-italic-glyph-_0028_005c_002f_0029">roman glyph, correction after italic glyph (<code class="code">\/</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-roman-glyph_002c-correction-before-italic-glyph-_0028_005c_002c_0029">roman glyph, correction before italic glyph (<code class="code">\,</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Roman-numerals">Roman numerals</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Roman-numerals_002c-extrema-_0028maximum-and-minimum_0029">Roman numerals, extrema (maximum and minimum)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Assigning-Register-Formats">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rq-glyph_002c-at-end-of-sentence"><code class="code">rq</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rq-glyph_002c-at-end-of-sentence-1"><code class="code">rq</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rt-request_002c-using-_002b-and-_002d-with"><code class="code">rt</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ru-glyph_002c-and-cflags"><code class="code">ru</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-running-system-commands">running system commands</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-s-scaling-unit"><code class="code">s</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-1">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-2">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-3">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-4">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-5">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-6">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-safer-mode-7">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Safer-Mode">Safer Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-saving-horizontal-input-line-position-_0028_005ck_0029">saving horizontal input line position (<code class="code">\k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-indicator">scaling indicator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-operator">scaling operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-c">scaling unit <code class="code">c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-f">scaling unit <code class="code">f</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-i">scaling unit <code class="code">i</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-m">scaling unit <code class="code">m</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-M">scaling unit <code class="code">M</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-n">scaling unit <code class="code">n</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-p">scaling unit <code class="code">p</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-P">scaling unit <code class="code">P</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-s">scaling unit <code class="code">s</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-u">scaling unit <code class="code">u</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-v">scaling unit <code class="code">v</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-scaling-unit-z">scaling unit <code class="code">z</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-searching-fonts">searching fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-searching-macros">searching macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-seconds_002c-current-time-_0028seconds_0029">seconds, current time (<code class="code">seconds</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-selecting-the-previous-font-_0028ft_0029">selecting the previous font (<code class="code">ft</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sentence-space">sentence space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sentence-space-size-register-_0028_002esss_0029">sentence space size register (<code class="code">.sss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sentences">sentences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sequence_002c-escape">sequence, escape</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Formatter-Instructions">Formatter Instructions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-diversion-trap-_0028dt_0029">setting diversion trap (<code class="code">dt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-end_002dof_002dinput-trap-_0028em_0029">setting end-of-input trap (<code class="code">em</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-input-line-number-_0028lf_0029">setting input line number (<code class="code">lf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-input-line-trap-_0028it_002c-itc_0029">setting input line trap (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-registers-_0028nr_002c-_005cR_0029">setting registers (<code class="code">nr</code>, <code class="code">\R</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Setting-Registers">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-the-page-length-_0028pl_0029">setting the page length (<code class="code">pl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-setting-up-an-abstract-font-style-_0028sty_0029">setting up an abstract font style (<code class="code">sty</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-shc-request_002c-and-translations"><code class="code">shc</code> request, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-site_002dlocal-directory">site-local directory</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-site_002dlocal-directory-1">site-local directory</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Directories">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-size-of-sentence-space-register-_0028_002esss_0029">size of sentence space register (<code class="code">.sss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-size-of-word-space-register-_0028_002ess_0029">size of word space register (<code class="code">.ss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-size_002c-optical_002c-of-a-font">size, optical, of a font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-size_002c-paper">size, paper</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paper-Format">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-size_002c-size">size, size</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sizes_002c-fractional">sizes, fractional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sizes_002c-fractional-type">sizes, fractional type</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-skew_002c-of-last-glyph-_0028_002ecsk_0029">skew, of last glyph (<code class="code">.csk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-slant_002c-font_002c-changing-_0028_005cS_0029">slant, font, changing (<code class="code">\S</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-soft-hyphen-character_002c-setting-_0028shc_0029">soft hyphen character, setting (<code class="code">shc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-soft-hyphen-glyph-_0028hy_0029">soft hyphen glyph (<code class="code">hy</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-solid-circle_002c-drawing-_0028_005cD_0027C-_2026_0027_0029">solid circle, drawing (&lsquo;<samp class="samp">\D'C &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-solid-ellipse_002c-drawing-_0028_005cD_0027E-_2026_0027_0029">solid ellipse, drawing (&lsquo;<samp class="samp">\D'E &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-solid-polygon_002c-drawing-_0028_005cD_0027P-_2026_0027_0029">solid polygon, drawing (&lsquo;<samp class="samp">\D'P &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-SOURCE_005fDATE_005fEPOCH_002c-environment-variable"><code>SOURCE_DATE_EPOCH<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sp-request_002c-and-no_002dspace-mode"><code class="code">sp</code> request, and no-space mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sp-request_002c-causing-implicit-break"><code class="code">sp</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space-between-sentences">space between sentences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space-between-sentences-register-_0028_002esss_0029">space between sentences register (<code class="code">.sss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space-between-words-register-_0028_002ess_0029">space between words register (<code class="code">.ss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space-character_002c-as-delimiter">space character, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space-characters_002c-in-expressions">space characters, in expressions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-between-sentences">space, between sentences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-between-words">space, between words</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-discardable_002c-horizontal">space, discardable, horizontal</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-hair-_0028_005c_005e_0029">space, hair (<code class="code">\^</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-horizontal-_0028_005ch_0029">space, horizontal (<code class="code">\h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-horizontal_002c-unformatting">space, horizontal, unformatting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-thin-_0028_005c_007c_0029">space, thin (<code class="code">\|</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-unbreakable-_0028_005c_007e_0029">space, unbreakable (<code class="code">\~</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-unbreakable-and-unadjustable-_0028_005cSP_0029">space, unbreakable and unadjustable (<code class="code">\<kbd class="key">SP</kbd></code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-vertical_002c-unit-_0028v_0029">space, vertical, unit (<code class="code">v</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-space_002c-width-of-a-digit-_0028numeral_0029-_0028_005c0_0029">space, width of a digit (numeral) (<code class="code">\0</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spaces-with-ds">spaces with <code class="code">ds</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spaces_002c-in-a-macro-argument">spaces, in a macro argument</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Calling-Macros">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spaces_002c-leading-and-trailing">spaces, leading and trailing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spacing-_0028introduction_0029">spacing (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spacing_002c-manipulating">spacing, manipulating</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Spacing">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spacing_002c-vertical">spacing, vertical</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spacing_002c-vertical-1">spacing, vertical</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spacing_002c-vertical-_0028introduction_0029">spacing, vertical (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-characters">special characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Sentences">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-characters-1">special characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-characters-_005bms_005d">special characters [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-characters_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029">special characters, list of (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-font">special font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-fonts">special fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-fonts-1">special fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Special-Fonts">Special Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-fonts-2">special fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-fonts_002c-emboldening">special fonts, emboldening</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-request_002c-and-font-translations"><code class="code">special</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-special-request_002c-and-glyph-search-order"><code class="code">special</code> request, and glyph search order</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-spline_002c-drawing-_0028_005cD_0027_007e-_2026_0027_0029">spline, drawing (&lsquo;<samp class="samp">\D'~ &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-springing-a-trap">springing a trap</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Traps">Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sqrtex-glyph_002c-and-cflags"><code class="code">sqrtex</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ss-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">ss</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stack">stack</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stacking-glyphs-_0028_005cb_0029">stacking glyphs (<code class="code">\b</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-standard-input_002c-reading-from-_0028rd_0029">standard input, reading from (<code class="code">rd</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stderr_002c-printing-to-_0028tm_002c-tm1_002c-tmc_0029">stderr, printing to (<code class="code">tm</code>, <code class="code">tm1</code>, <code class="code">tmc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stops_002c-tab">stops, tab</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-string-arguments">string arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-string-comparison">string comparison</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-string-expansion-_0028_005c_002a_0029">string expansion (<code class="code">\*</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-string-interpolation-_0028_005c_002a_0029">string interpolation (<code class="code">\*</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-string_002c-appending-_0028as_0029">string, appending (<code class="code">as</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-string_002c-creating-alias-for-_0028als_0029">string, creating alias for (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-string_002c-length-of-_0028length_0029">string, length of (<code class="code">length</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-string_002c-removing-_0028rm_0029">string, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-string_002c-removing-alias-for-_0028rm_0029">string, removing alias for (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-string_002c-renaming-_0028rn_0029">string, renaming (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-strings">strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-strings-_005bms_005d">strings [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Legacy-Features">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-strings_002c-multi_002dline">strings, multi-line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-strings_002c-shared-name-space-with-macros-and-diversions">strings, shared name space with macros and diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stripping-final-newline-in-diversions">stripping final newline in diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stroke-color">stroke color</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stroke-color-name-register-_0028_002em_0029">stroke color name register (<code class="code">.m</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stroked-circle_002c-drawing-_0028_005cD_0027c-_2026_0027_0029">stroked circle, drawing (&lsquo;<samp class="samp">\D'c &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stroked-ellipse_002c-drawing-_0028_005cD_0027e-_2026_0027_0029">stroked ellipse, drawing (&lsquo;<samp class="samp">\D'e &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stroked-polygon_002c-drawing-_0028_005cD_0027p-_2026_0027_0029">stroked polygon, drawing (&lsquo;<samp class="samp">\D'p &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-structuring-source-code-of-documents-or-macro-packages">structuring source code of documents or macro packages</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sty-request_002c-and-changing-fonts"><code class="code">sty</code> request, and changing fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sty-request_002c-and-font-translations"><code class="code">sty</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-style_002c-font">style, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-style_002c-font_002c-abstract">style, font, abstract</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-style_002c-font_002c-abstract_002c-setting-up-_0028sty_0029">style, font, abstract, setting up (<code class="code">sty</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-styles_002c-font">styles, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-substring-_0028substring_0029">substring (<code class="code">substring</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-subtraction">subtraction</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-suppressing-output-_0028_005cO_0029">suppressing output (<code class="code">\O</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-suppression-nesting-level-register">suppression nesting level register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Suppressing-Output">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sv-request_002c-and-no_002dspace-mode"><code class="code">sv</code> request, and no-space mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-switching-environments-_0028ev_0029">switching environments (<code class="code">ev</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sy-request_002c-and-safer-mode"><code class="code">sy</code> request, and safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-sy-request_002c-disabled-by-default"><code class="code">sy</code> request, disabled by default</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Safer-Mode">Safer Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-symbol">symbol</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-symbol-table_002c-dumping-_0028pm_0029">symbol table, dumping (<code class="code">pm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-symbol_002c-defining-_0028char_0029">symbol, defining (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-symbols_002c-using">symbols, using</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-system-commands_002c-running">system commands, running</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-system_0028_0029-return-value-register-_0028systat_0029"><code class="code">system()</code> return value register (<code class="code">systat</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-character">tab character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-character-encoding">tab character encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-character_002c-and-translations">tab character, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-character_002c-as-delimiter">tab character, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Delimiters">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-character_002c-non_002dinterpreted-_0028_005ct_0029">tab character, non-interpreted (<code class="code">\t</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-repetition-character-_0028tc_0029">tab repetition character (<code class="code">tc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-stop-settings-register-_0028_002etabs_0029">tab stop settings register (<code class="code">.tabs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-stops">tab stops</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Leaders">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tab-stops_002c-default">tab stops, default</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tab_002c-line_002dtabs-mode">tab, line-tabs mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-table-of-contents">table of contents</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Table-of-Contents">Table of Contents</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-table-of-contents-1">table of contents</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leaders">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-table-of-contents_002c-creating-_005bms_005d">table of contents, creating [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-TOC">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-table_002c-multi_002dpage_002c-example-_005bms_005d">table, multi-page, example [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tables-_005bms_005d">tables [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#ms-Insertions">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tabs_002c-and-fields">tabs, and fields</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tabs-and-Fields">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tabs_002c-and-macro-arguments">tabs, and macro arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tabs_002c-and-request-arguments">tabs, and request arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Invoking-Requests">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tabs_002c-before-comments">tabs, before comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tagged-paragraphs">tagged paragraphs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paragraphs">Paragraphs</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tags_002c-paragraph">tags, paragraph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Paragraphs">Paragraphs</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-terminal_002c-conditional-output-for">terminal, conditional output for</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-text-baseline">text baseline</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-text-baseline-1">text baseline</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-text-font">text font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-text-line">text line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Requests-and-Macros">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-text-line_002c-position-of-lowest-_0028_002eh_0029">text line, position of lowest (<code class="code">.h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-text_002c-GNU-troff-processing">text, GNU <code class="code">troff</code> processing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Text">Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-text_002c-justifying">text, justifying</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-text_002c-justifying-_0028rj_0029">text, justifying (<code class="code">rj</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-thickness-of-lines-_0028_005cD_0027t-_2026_0027_0029">thickness of lines (&lsquo;<samp class="samp">\D't &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-thin-space-_0028_005c_007c_0029">thin space (<code class="code">\|</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-three_002dpart-title-_0028tl_0029">three-part title (<code class="code">tl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ti-request_002c-causing-implicit-break"><code class="code">ti</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ti-request_002c-using-_002b-and-_002d-with"><code class="code">ti</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-time_002c-current_002c-hours-_0028hours_0029">time, current, hours (<code class="code">hours</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-time_002c-current_002c-minutes-_0028minutes_0029">time, current, minutes (<code class="code">minutes</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-time_002c-current_002c-seconds-_0028seconds_0029">time, current, seconds (<code class="code">seconds</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-time_002c-formatting">time, formatting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-title-length_002c-configuring-_0028lt_0029">title length, configuring (<code class="code">lt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-title-line-length-register-_0028_002elt_0029">title line length register (<code class="code">.lt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-title-line_002c-formatting-_0028tl_0029">title line, formatting (<code class="code">tl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-titles">titles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Layout">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tkf-request_002c-and-font-styles"><code class="code">tkf</code> request, and font styles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tkf-request_002c-and-font-translations"><code class="code">tkf</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tkf-request_002c-with-fractional-type-sizes"><code class="code">tkf</code> request, with fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tl-request_002c-and-mc"><code class="code">tl</code> request, and <code class="code">mc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Miscellaneous">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tmac_002c-directory">tmac, directory</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tmac_002c-path">tmac, path</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-TMPDIR_002c-environment-variable"><code>TMPDIR<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-token_002c-input">token, input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Gtroff-Internals">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-top-margin">top margin</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-top_002dlevel-diversion">top-level diversion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-top_002dlevel-diversion_002c-and-bp">top-level diversion, and <code class="code">bp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-top_002dlevel-diversion_002c-and-_005c_0021">top-level diversion, and <code class="code">\!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-top_002dlevel-diversion_002c-and-_005c_003f">top-level diversion, and <code class="code">\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tr-request_002c-and-glyph-definitions"><code class="code">tr</code> request, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tr-request_002c-and-soft-hyphen-character"><code class="code">tr</code> request, and soft hyphen character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tr-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">tr</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-track-kerning">track kerning</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-track-kerning_002c-activating-_0028tkf_0029">track kerning, activating (<code class="code">tkf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Ligatures-and-Kerning">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trailing-double-quotes-in-strings">trailing double quotes in strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trailing-spaces-in-string-definitions-and-appendments">trailing spaces in string definitions and appendments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trailing-spaces-on-text-lines">trailing spaces on text lines</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Breaking">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-translations-of-characters">translations of characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Character-Translations">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-transparent-characters">transparent characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-transparent-dummy-character-_0028_005c_0029_0029">transparent dummy character (<code class="code">\)</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Dummy-Characters">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-transparent-output-_0028cf_002c-trf_0029">transparent output (<code class="code">cf</code>, <code class="code">trf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-transparent-output-_0028_005c_0021_002c-_005c_003f_0029">transparent output (<code class="code">\!</code>, <code class="code">\?</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-transparent-output_002c-incompatibilities-with-AT_0026T-troff">transparent output, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trap">trap</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Deferring-Output">Deferring Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-changing-location-_0028ch_0029">trap, changing location (<code class="code">ch</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-distance-to-next-vertical-position_002c-register-_0028_002et_0029">trap, distance to next vertical position, register (<code class="code">.t</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-diversion_002c-setting-_0028dt_0029">trap, diversion, setting (<code class="code">dt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-end_002dof_002dinput_002c-setting-_0028em_0029">trap, end-of-input, setting (<code class="code">em</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-implicit">trap, implicit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#The-Implicit-Page-Trap">The Implicit Page Trap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-input-line_002c-clearing-_0028it_002c-itc_0029">trap, input line, clearing (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-input-line_002c-setting-_0028it_002c-itc_0029">trap, input line, setting (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-planting">trap, planting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Traps">Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trap_002c-springing">trap, springing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Traps">Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps">traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Traps">Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-and-diversions">traps, and diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-blank-line">traps, blank line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Blank-Line-Traps">Blank Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-diversion">traps, diversion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversion-Traps">Diversion Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-end_002dof_002dinput">traps, end-of-input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#End_002dof_002dinput-Traps">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-input-line">traps, input line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-input-line_002c-and-interrupted-lines-_0028itc_0029">traps, input line, and interrupted lines (<code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Input-Line-Traps">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-leading-space">traps, leading space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Leading-Space-Traps">Leading Space Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-page-location">traps, page location</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-page-location_002c-dumping-_0028ptr_0029">traps, page location, dumping (<code class="code">ptr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-page-location_002c-listing-_0028ptr_0029">traps, page location, listing (<code class="code">ptr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-sprung-by-bp-request-_0028_002epe_0029">traps, sprung by <code class="code">bp</code> request (<code class="code">.pe</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-traps_002c-vertical-position">traps, vertical position</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trf-request_002c-and-copy-mode"><code class="code">trf</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trf-request_002c-and-invalid-characters"><code class="code">trf</code> request, and invalid characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trf-request_002c-causing-implicit-break"><code class="code">trf</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-trin-request_002c-and-asciify"><code class="code">trin</code> request, and <code class="code">asciify</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-troff-mode"><code class="code">troff</code> mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#troff-and-nroff-Modes"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-troff-output"><code class="code">troff</code> output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#gtroff-Output">gtroff Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-truncated-vertical-space-register-_0028_002etrunc_0029">truncated vertical space register (<code class="code">.trunc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Location-Traps">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-truncating-division">truncating division</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-TTY_002c-conditional-output-for">TTY, conditional output for</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tutorial-for-macro-users">tutorial for macro users</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tutorial-for-Macro-Users">Tutorial for Macro Users</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-type-size">type size</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-type-size-registers-_0028_002es_002c-_002eps_0029">type size registers (<code class="code">.s</code>, <code class="code">.ps</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-type-size-registers_002c-last_002drequested-_0028_002epsr_002c-_002esr_0029">type size registers, last-requested (<code class="code">.psr</code>, <code class="code">.sr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-type-sizes_002c-changing-_0028ps_002c-_005cs_0029">type sizes, changing (<code class="code">ps</code>, <code class="code">\s</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Type-Size">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-type-sizes_002c-fractional">type sizes, fractional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-type-sizes_002c-fractional-1">type sizes, fractional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Other-Differences">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-typeface">typeface</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-TZ_002c-environment-variable"><code>TZ<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-u-scaling-unit"><code class="code">u</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-uf-request_002c-and-font-styles"><code class="code">uf</code> request, and font styles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Families">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ul-glyph_002c-and-cflags"><code class="code">ul</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-ul-request_002c-and-font-translations"><code class="code">ul</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Ultrix_002dspecific-man-macros">Ultrix-specific <code class="code">man</code> macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Optional-man-extensions">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unadjustable-and-unbreakable-space-_0028_005cSP_0029">unadjustable and unbreakable space (<code class="code">\<kbd class="key">SP</kbd></code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unary-arithmetic-operators">unary arithmetic operators</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unbreakable-and-unadjustable-space-_0028_005cSP_0029">unbreakable and unadjustable space (<code class="code">\<kbd class="key">SP</kbd></code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unbreakable-space-_0028_005c_007e_0029">unbreakable space (<code class="code">\~</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-undefined-identifiers">undefined identifiers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-undefined-request">undefined request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Comments">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-underline-font-_0028uf_0029">underline font (<code class="code">uf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-underlining-_0028ul_0029">underlining (<code class="code">ul</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-underlining_002c-continuous-_0028cu_0029">underlining, continuous (<code class="code">cu</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Artificial-Fonts">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unformatting-diversions-_0028asciify_0029">unformatting diversions (<code class="code">asciify</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unformatting-horizontal-space">unformatting horizontal space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Punning-Names">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Unicode">Unicode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Identifiers">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-Unicode-1">Unicode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-c">unit, scaling, <code class="code">c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-f">unit, scaling, <code class="code">f</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Colors">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-i">unit, scaling, <code class="code">i</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-m">unit, scaling, <code class="code">m</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-M">unit, scaling, <code class="code">M</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-n">unit, scaling, <code class="code">n</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-p">unit, scaling, <code class="code">p</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-P">unit, scaling, <code class="code">P</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-s">unit, scaling, <code class="code">s</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-u">unit, scaling, <code class="code">u</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-v">unit, scaling, <code class="code">v</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unit_002c-scaling_002c-z">unit, scaling, <code class="code">z</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-units-of-measurement">units of measurement</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-units_002c-basic">units, basic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-units_002c-basic_002c-conversion-to">units, basic, conversion to</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-units_002c-default">units, default</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Default-Units">Default Units</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-units_002c-machine">units, machine</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unnamed-glyphs">unnamed glyphs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unnamed-glyphs_002c-accessing-with-_005cN">unnamed glyphs, accessing with <code class="code">\N</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Font-Description-File-Format">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode-1">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Macro-Directories">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode-2">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode-3">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode-4">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode-5">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unsafe-mode-6">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unstyled-font">unstyled font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fonts">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-up_002dcasing-a-string-_0028stringup_0029">up-casing a string (<code class="code">stringup</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-uppercasing-a-string-_0028stringup_0029">uppercasing a string (<code class="code">stringup</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Strings">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-upright-glyph_002c-correction-after-oblique-glyph-_0028_005c_002f_0029">upright glyph, correction after oblique glyph (<code class="code">\/</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-upright-glyph_002c-correction-before-oblique-glyph-_0028_005c_002c_0029">upright glyph, correction before oblique glyph (<code class="code">\,</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Italic-Corrections">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-URLs_002c-breaking-_0028_005c_003a_0029">URLs, breaking (<code class="code">\:</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Hyphenation">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-user_0027s-macro-tutorial">user&rsquo;s macro tutorial</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tutorial-for-Macro-Users">Tutorial for Macro Users</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-user_0027s-tutorial-for-macros">user&rsquo;s tutorial for macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Tutorial-for-Macro-Users">Tutorial for Macro Users</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-using-escape-sequences">using escape sequences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Escape-Sequences">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-using-symbols">using symbols</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Symbols">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-UTF_002d8-output-encoding"><span class="w-nolinebreak-text">UTF-8</span><!-- /@w --> output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Groff-Options">Groff Options</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-v-scaling-unit"><code class="code">v</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-valid-numeric-expression">valid numeric expression</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-value_002c-incrementing-without-changing-the-register">value, incrementing without changing the register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Auto_002dincrement">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-variables-in-environment">variables in environment</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environment">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vee">vee</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vee-scaling-unit-_0028v_0029">vee scaling unit (<code class="code">v</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-version-number_002c-major_002c-register-_0028_002ex_0029">version number, major, register (<code class="code">.x</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-version-number_002c-minor_002c-register-_0028_002ey_0029">version number, minor, register (<code class="code">.y</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-drawing-position-_0028nl_0029">vertical drawing position (<code class="code">nl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-line-drawing-_0028_005cL_0029">vertical line drawing (<code class="code">\L</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-line-spacing-register-_0028_002ev_0029">vertical line spacing register (<code class="code">.v</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-line-spacing_002c-changing-_0028vs_0029">vertical line spacing, changing (<code class="code">vs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-line-spacing_002c-effective-value">vertical line spacing, effective value</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Changing-the-Vertical-Spacing">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-motion-_0028_005cv_0029">vertical motion (<code class="code">\v</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-motion-quantum">vertical motion quantum</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-page-location_002c-marking-_0028mk_0029">vertical page location, marking (<code class="code">mk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-page-location_002c-returning-to-marked-_0028rt_0029">vertical page location, returning to marked (<code class="code">rt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-position-in-diversion-register-_0028_002ed_0029">vertical position in diversion register (<code class="code">.d</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Diversions">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-position-trap-enable-register-_0028_002evpt_0029">vertical position trap enable register (<code class="code">.vpt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-position-traps">vertical position traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-position-traps_002c-enabling-_0028vpt_0029">vertical position traps, enabling (<code class="code">vpt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Vertical-Position-Traps">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-position_002c-drawing-_0028nl_0029">vertical position, drawing (<code class="code">nl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-resolution">vertical resolution</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#DESC-File-Format">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-space-unit-_0028v_0029">vertical space unit (<code class="code">v</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Measurements">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-spacing">vertical spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Geometry">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-spacing-1">vertical spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Type-Size-and-Vertical-Spacing">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vertical-spacing-_0028introduction_0029">vertical spacing (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Basics">Basics</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-W">W</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-warning-categories">warning categories</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-warning-level-_0028warn_0029">warning level (<code class="code">warn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-warnings">warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Debugging">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-warnings-1">warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Warnings">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-what-is-groff_003f">what is <code class="code">groff</code>?</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#What-Is-groff_003f">What Is <code class="code">groff</code>?</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-while">while</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#while">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-while-request_002c-and-font-translations"><code class="code">while</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-while-request_002c-and-the-_0021-operator"><code class="code">while</code> request, and the &lsquo;<samp class="samp">!</samp>&rsquo; operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Numeric-Expressions">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-while-request_002c-confusing-with-br"><code class="code">while</code> request, confusing with <code class="code">br</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#while">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-while-request_002c-operators-to-use-with"><code class="code">while</code> request, operators to use with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Operators-in-Conditionals">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-widow">widow</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-widow-1">widow</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Control">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-width-escape-_0028_005cw_0029">width escape (<code class="code">\w</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-width_002c-of-last-glyph-_0028_002ew_0029">width, of last glyph (<code class="code">.w</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Environments">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-word-space-size-register-_0028_002ess_0029">word space size register (<code class="code">.ss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Manipulating-Filling-and-Adjustment">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-word_002c-definition-of">word, definition of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Filling">Filling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-write-request_002c-and-copy-mode"><code class="code">write</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-writec-request_002c-and-copy-mode"><code class="code">writec</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-writem-request_002c-and-copy-mode"><code class="code">writem</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-writing-macros">writing macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Writing-Macros">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-writing-to-file-_0028write_002c-writec_0029">writing to file (<code class="code">write</code>, <code class="code">writec</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#I_002fO">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-Y">Y</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-year_002c-current_002c-register-_0028year_002c-yr_0029">year, current, register (<code class="code">year</code>, <code class="code">yr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Built_002din-Registers">Built-in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-Z">Z</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-z-scaling-unit"><code class="code">z</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Using-Fractional-Type-Sizes">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-zero_002dwidth-printing-_0028_005cz_002c-_005cZ_0029">zero-width printing (<code class="code">\z</code>, <code class="code">\Z</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-zero_002dwidth-printing-_0028_005cz_002c-_005cZ_0029-1">zero-width printing (<code class="code">\z</code>, <code class="code">\Z</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Page-Motions">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-zoom-factor-of-a-font-_0028fzoom_0029">zoom factor of a font (<code class="code">fzoom</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="#Selecting-Fonts">Selecting Fonts</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="cp-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-1"><b>&quot;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-2"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-3"><b>&amp;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-4"><b>'</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-5"><b>(</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-6"><b>)</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-7"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-8"><b>+</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-9"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-10"><b>.</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-11"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-12"><b>8</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-13"><b>:</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-14"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-15"><b>=</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-16"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-17"><b>[</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-18"><b>\</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-19"><b>]</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-20"><b>|</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-J"><b>J</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-W"><b>W</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Y"><b>Y</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Z"><b>Z</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+<hr>
+</div>
+</div>
+<div class="element-footnotes" id="SEC_Footnotes">
+<div class="nav-panel">
+<p>
+ &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h5 class="footnote-body-heading"><a id="FOOT1" href="#DOCF1">(1)</a></h5>
+<p>The &lsquo;<samp class="samp">g</samp>&rsquo; prefix is
+not used on all systems; see <a class="ref" href="#Invoking-groff">Invoking <code class="code">groff</code></a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT2" href="#DOCF2">(2)</a></h5>
+<p>Unix and related operating systems distinguish
+standard output and standard error streams <em class="emph">because</em> of
+<code class="code">troff</code>:
+<a class="uref" href="https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html">https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT3" href="#DOCF3">(3)</a></h5>
+<p>See <a class="xref" href="#Line-Layout">Line Layout</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT4" href="#DOCF4">(4)</a></h5>
+<p>Besides <code class="code">groff</code>, <code class="code">neatroff</code> is an
+exception.</p>
+<h5 class="footnote-body-heading"><a id="FOOT5" href="#DOCF5">(5)</a></h5>
+<p>The
+<code class="code">mso</code> request does not have these limitations. See <a class="xref" href="#I_002fO">I/O</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT6" href="#DOCF6">(6)</a></h5>
+<p>The remainder of this chapter is based on
+<cite class="cite">Writing Papers with nroff using -me</cite> by Eric&nbsp;P. Allman,
+which is distributed with <code class="code">groff</code> as <samp class="file">meintro.me</samp>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT7" href="#DOCF7">(7)</a></h5>
+<p>While manual <em class="emph">pages</em> are older, early ones used
+macros supplanted by the <samp class="file">man</samp> package of Seventh Edition Unix
+(1979). <samp class="file">ms</samp> shipped with Sixth Edition (1975) and was documented
+by Mike Lesk in a Bell Labs internal memorandum.</p>
+<h5 class="footnote-body-heading"><a id="FOOT8" href="#DOCF8">(8)</a></h5>
+<p>defined in <a class="ref" href="#ms-Footnotes">Footnotes</a></p>
+<h5 class="footnote-body-heading"><a id="FOOT9" href="#DOCF9">(9)</a></h5>
+<p>Distinguish a
+document title from &ldquo;titles&rdquo;, which are what <code class="code">roff</code> systems call
+headers and footers collectively.</p>
+<h5 class="footnote-body-heading"><a id="FOOT10" href="#DOCF10">(10)</a></h5>
+<p>This idiosyncrasy arose through
+feature accretion; for example, the <code class="code">B</code> macro in Version&nbsp;6
+Unix <samp class="file">ms</samp> (1975) accepted only one argument, the text to be set in
+boldface. By Version&nbsp;7 (1979) it recognized a second argument; in
+1990, <code class="code">groff</code> <samp class="file">ms</samp> added a &ldquo;pre&rdquo; argument, placing it third
+to avoid breaking support for older documents.</p>
+<h5 class="footnote-body-heading"><a id="FOOT11" href="#DOCF11">(11)</a></h5>
+<p>&ldquo;Portable Document Format Publishing with GNU
+Troff&rdquo;, <samp class="file">pdfmark.ms</samp> in the <code class="code">groff</code> distribution, uses this
+technique.</p>
+<h5 class="footnote-body-heading"><a id="FOOT12" href="#DOCF12">(12)</a></h5>
+<p>Unix Version&nbsp;7 <samp class="file">ms</samp>, its descendants, and GNU
+<samp class="file">ms</samp> prior to <code class="code">groff</code> version 1.23.0</p>
+<h5 class="footnote-body-heading"><a id="FOOT13" href="#DOCF13">(13)</a></h5>
+<p>You could reset it
+after each call to <code class="code">.1C</code>, <code class="code">.2C</code>, or <code class="code">.MC</code>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT14" href="#DOCF14">(14)</a></h5>
+<p><cite class="cite">Typing Documents on the UNIX System: Using the
+-ms Macros with Troff and Nroff</cite>, M.&nbsp;E. Lesk, Bell Laboratories,
+1978</p>
+<h5 class="footnote-body-heading"><a id="FOOT15" href="#DOCF15">(15)</a></h5>
+<p>Register values are converted to and stored as
+basic units. See <a class="xref" href="#Measurements">Measurements</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT16" href="#DOCF16">(16)</a></h5>
+<p>If you redefine the <samp class="file">ms</samp> <code class="code">PT</code> macro
+and desire special treatment of certain page numbers (like &lsquo;<samp class="samp">1</samp>&rsquo;),
+you may need to handle a non-Arabic page number format, as <code class="code">groff</code>
+<samp class="file">ms</samp>&rsquo;s <code class="code">PT</code> does; see the macro package source. <code class="code">groff</code>
+<samp class="file">ms</samp> aliases the <code class="code">PN</code> register to <code class="code">%</code>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT17" href="#DOCF17">(17)</a></h5>
+<p>The removal beforehand is necessary
+because <code class="code">groff</code> <samp class="file">ms</samp> aliases these macros to a diagnostic
+macro, and you want to redefine the aliased name, not its target.</p>
+<h5 class="footnote-body-heading"><a id="FOOT18" href="#DOCF18">(18)</a></h5>
+<p>See <a class="xref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT19" href="#DOCF19">(19)</a></h5>
+<p><i class="slanted">Tabs</i> and <i class="slanted">leaders</i> also separate
+words. <i class="slanted">Escape sequences</i> can function as word characters, word
+separators, or neither&mdash;the last simply have no effect on GNU
+<code class="code">troff</code>&rsquo;s idea of whether an input character is within a word.
+We&rsquo;ll discuss all of these in due course.</p>
+<h5 class="footnote-body-heading"><a id="FOOT20" href="#DOCF20">(20)</a></h5>
+<p>A
+well-researched jeremiad appreciated by <code class="code">groff</code> contributors on
+both sides of the sentence-spacing debate can be found at
+<a class="uref" href="https://web.archive.org/web/20171217060354/http://www.heracliteanriver.com/?p=324">https://web.archive.org/web/20171217060354/http://www.heracliteanriver.com/?p=324</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT21" href="#DOCF21">(21)</a></h5>
+<p>This statement oversimplifies; there are
+escape sequences whose purpose is precisely to produce glyphs on the
+output device, and input characters that <em class="emph">aren&rsquo;t</em> part of escape
+sequences can undergo a great deal of processing before getting to the
+output.</p>
+<h5 class="footnote-body-heading"><a id="FOOT22" href="#DOCF22">(22)</a></h5>
+<p>The mnemonics for the special
+characters shown here are &ldquo;dagger&rdquo;, &ldquo;double dagger&rdquo;, &ldquo;right
+(double) quote&rdquo;, and &ldquo;closing (single) quote&rdquo;. See the
+<cite class="cite">groff_char<span class="r">(7)</span></cite> man page.</p>
+<h5 class="footnote-body-heading"><a id="FOOT23" href="#DOCF23">(23)</a></h5>
+<p>&ldquo;Text lines&rdquo; are defined in <a class="ref" href="#Requests-and-Macros">Requests and Macros</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT24" href="#DOCF24">(24)</a></h5>
+<p>&ldquo;Tab&rdquo;
+is short for &ldquo;tabulation&rdquo;, revealing the term&rsquo;s origin as a spacing
+mechanism for table arrangement.</p>
+<h5 class="footnote-body-heading"><a id="FOOT25" href="#DOCF25">(25)</a></h5>
+<p>The <code class="code">\<kbd class="key">RET</kbd></code> escape sequence can alter how an
+input line is classified; see <a class="ref" href="#Line-Continuation">Line Continuation</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT26" href="#DOCF26">(26)</a></h5>
+<p>Argument handling in
+macros is more flexible but also more complex. See <a class="xref" href="#Calling-Macros">Calling Macros</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT27" href="#DOCF27">(27)</a></h5>
+<p>Some escape sequences undergo
+interpolation as well.</p>
+<h5 class="footnote-body-heading"><a id="FOOT28" href="#DOCF28">(28)</a></h5>
+<p>GNU <code class="code">troff</code> offers additional ones. See <a class="xref" href="#Writing-Macros">Writing Macros</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT29" href="#DOCF29">(29)</a></h5>
+<p>Macro files and packages
+frequently define registers and strings as well.</p>
+<h5 class="footnote-body-heading"><a id="FOOT30" href="#DOCF30">(30)</a></h5>
+<p>The
+<em class="emph">semantics</em> of certain punctuation code points have gotten stricter
+with the successive standards, a cause of some frustration among man
+page writers; see the <cite class="cite">groff_char<span class="r">(7)</span></cite> man page.</p>
+<h5 class="footnote-body-heading"><a id="FOOT31" href="#DOCF31">(31)</a></h5>
+<p>The
+DVI output device defaults to using the Computer Modern (CM) fonts;
+<samp class="file">ec.tmac</samp> loads the EC fonts instead, which provide Euro
+&lsquo;<samp class="samp">\[Eu]</samp>&rsquo; and per mille &lsquo;<samp class="samp">\[%0]</samp>&rsquo; glyphs.</p>
+<h5 class="footnote-body-heading"><a id="FOOT32" href="#DOCF32">(32)</a></h5>
+<p>Emacs: <code class="code">fill-column: 72</code>; Vim: <code class="code">textwidth=72</code></p>
+<h5 class="footnote-body-heading"><a id="FOOT33" href="#DOCF33">(33)</a></h5>
+<p><code class="code">groff</code> does not yet support right-to-left
+scripts.</p>
+<h5 class="footnote-body-heading"><a id="FOOT34" href="#DOCF34">(34)</a></h5>
+<p><code class="code">groff</code>&rsquo;s terminal output devices have page
+offsets of zero.</p>
+<h5 class="footnote-body-heading"><a id="FOOT35" href="#DOCF35">(35)</a></h5>
+<p>Provision is made for interpreting and
+reporting decimal fractions in certain cases.</p>
+<h5 class="footnote-body-heading"><a id="FOOT36" href="#DOCF36">(36)</a></h5>
+<p>If that&rsquo;s not enough, see the <cite class="cite">groff_tmac<span class="r">(5)</span></cite>
+man page for the <samp class="file">62bit.tmac</samp> macro package.</p>
+<h5 class="footnote-body-heading"><a id="FOOT37" href="#DOCF37">(37)</a></h5>
+<p>See <a class="xref" href="#Conditionals-and-Loops">Conditionals and Loops</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT38" href="#DOCF38">(38)</a></h5>
+<p>Control structure syntax
+creates an exception to this rule, but is designed to remain useful:
+recalling our example, &lsquo;<samp class="samp">.if 1 .Underline this</samp>&rsquo; would underline only
+&ldquo;this&rdquo;, precisely. See <a class="xref" href="#Conditionals-and-Loops">Conditionals and Loops</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT39" href="#DOCF39">(39)</a></h5>
+<p>See <a class="xref" href="#Diversions">Diversions</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT40" href="#DOCF40">(40)</a></h5>
+<p>Historically, control characters like
+ASCII STX, ETX, and BEL (<kbd class="key">Control+B</kbd>, <kbd class="key">Control+C</kbd>, and
+<kbd class="key">Control+G</kbd>) have been observed in <code class="code">roff</code> documents,
+particularly in macro packages employing them as delimiters with the
+output comparison operator to try to avoid collisions with the content
+of arbitrary user-supplied parameters (see <a class="pxref" href="#Operators-in-Conditionals">Operators in Conditionals</a>). We discourage this expedient; in GNU <code class="code">troff</code> it is
+unnecessary (outside of compatibility mode) because delimited arguments
+are parsed at a different input level than the surrounding context.
+See <a class="xref" href="#Implementation-Differences">Implementation Differences</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT41" href="#DOCF41">(41)</a></h5>
+<p>Consider what happens when a C1 control
+<code class="code">0x80</code>&ndash;<code class="code">0x9F</code> is necessary as a continuation byte in a UTF-8
+sequence.</p>
+<h5 class="footnote-body-heading"><a id="FOOT42" href="#DOCF42">(42)</a></h5>
+<p>Recall <a class="ref" href="#Identifiers">Identifiers</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT43" href="#DOCF43">(43)</a></h5>
+<p>In compatibility
+mode, a space is not necessary after a request or macro name of two
+characters&rsquo; length. Also, Plan&nbsp;9 <code class="code">troff</code> allows tabs to
+separate arguments.</p>
+<h5 class="footnote-body-heading"><a id="FOOT44" href="#DOCF44">(44)</a></h5>
+<p><code class="code">\~</code> is fairly
+portable; see <a class="ref" href="#Other-Differences">Other Differences</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT45" href="#DOCF45">(45)</a></h5>
+<p>Strictly, you can neglect to
+close the last quoted macro argument, relying on the end of the control
+line to do so. We consider this lethargic practice poor style.</p>
+<h5 class="footnote-body-heading"><a id="FOOT46" href="#DOCF46">(46)</a></h5>
+<p>The omission of spaces before the comment
+escape sequences is necessary; see <a class="ref" href="#Strings">Strings</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT47" href="#DOCF47">(47)</a></h5>
+<p>TeX does have such a mechanism.</p>
+<h5 class="footnote-body-heading"><a id="FOOT48" href="#DOCF48">(48)</a></h5>
+<p>This claim may be more aspirational than descriptive.</p>
+<h5 class="footnote-body-heading"><a id="FOOT49" href="#DOCF49">(49)</a></h5>
+<p>See <a class="xref" href="#Conditional-Blocks">Conditional Blocks</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT50" href="#DOCF50">(50)</a></h5>
+<p>Exception: auto-incrementing registers defined outside
+the ignored region <em class="emph">will</em> be modified if interpolated with
+<code class="code">\n±</code> inside it. See <a class="xref" href="#Auto_002dincrement">Auto-increment</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT51" href="#DOCF51">(51)</a></h5>
+<p>A negative auto-increment can be
+considered an &ldquo;auto-decrement&rdquo;.</p>
+<h5 class="footnote-body-heading"><a id="FOOT52" href="#DOCF52">(52)</a></h5>
+<p>GNU <code class="code">troff</code> dynamically allocates memory for
+as many registers as required.</p>
+<h5 class="footnote-body-heading"><a id="FOOT53" href="#DOCF53">(53)</a></h5>
+<p>unless diverted; see <a class="ref" href="#Diversions">Diversions</a></p>
+<h5 class="footnote-body-heading"><a id="FOOT54" href="#DOCF54">(54)</a></h5>
+<p>See <a class="xref" href="#Line-Continuation">Line Continuation</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT55" href="#DOCF55">(55)</a></h5>
+<p>Recall <a class="ref" href="#Filling">Filling</a> and <a class="ref" href="#Sentences">Sentences</a> for the
+definitions of word and sentence boundaries, respectively.</p>
+<h5 class="footnote-body-heading"><a id="FOOT56" href="#DOCF56">(56)</a></h5>
+<p>Whether a perfect algorithm for this application is
+even possible is an unsolved problem in computer science:
+<a class="url" href="https://tug.org/docs/liang/liang-thesis.pdf">https://tug.org/docs/liang/liang-thesis.pdf</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT57" href="#DOCF57">(57)</a></h5>
+<p><code class="code">\%</code> itself stops marking
+hyphenation points but still produces no output glyph.</p>
+<h5 class="footnote-body-heading"><a id="FOOT58" href="#DOCF58">(58)</a></h5>
+<p>&ldquo;Soft&rdquo; because it appears in output
+only where a hyphenation break is performed; a &ldquo;hard&rdquo; hyphen, as in
+&ldquo;long-term&rdquo;, always appears.</p>
+<h5 class="footnote-body-heading"><a id="FOOT59" href="#DOCF59">(59)</a></h5>
+<p>The mode is a vector of Booleans encoded as an integer.
+To a programmer, this fact is easily deduced from the exclusive use of
+powers of two for the configuration parameters; they are computationally
+easy to &ldquo;mask off&rdquo; and compare to zero. To almost everyone else, the
+arrangement seems recondite and unfriendly.</p>
+<h5 class="footnote-body-heading"><a id="FOOT60" href="#DOCF60">(60)</a></h5>
+<p>Hyphenation is
+prevented if the next page location trap is closer to the vertical
+drawing position than the next text baseline would be. See <a class="xref" href="#Page-Location-Traps">Page Location Traps</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT61" href="#DOCF61">(61)</a></h5>
+<p>For more on localization, see the
+<cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page.</p>
+<h5 class="footnote-body-heading"><a id="FOOT62" href="#DOCF62">(62)</a></h5>
+<p>See <a class="xref" href="#Page-Location-Traps">Page Location Traps</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT63" href="#DOCF63">(63)</a></h5>
+<p>See <a class="xref" href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT64" href="#DOCF64">(64)</a></h5>
+<p>or geometric objects; see <a class="ref" href="#Drawing-Geometric-Objects">Drawing Geometric Objects</a></p>
+<h5 class="footnote-body-heading"><a id="FOOT65" href="#DOCF65">(65)</a></h5>
+<p>to the top-level diversion;
+see <a class="ref" href="#Diversions">Diversions</a></p>
+<h5 class="footnote-body-heading"><a id="FOOT66" href="#DOCF66">(66)</a></h5>
+<p>Plan&nbsp;9 <code class="code">troff</code>
+uses the register <code class="code">.S</code> for this purpose.</p>
+<h5 class="footnote-body-heading"><a id="FOOT67" href="#DOCF67">(67)</a></h5>
+<p>This is pronounced to rhyme with &ldquo;feeder&rdquo;, and
+refers to how the glyphs &ldquo;lead&rdquo; the eye across the page to the
+corresponding page number or other datum.</p>
+<h5 class="footnote-body-heading"><a id="FOOT68" href="#DOCF68">(68)</a></h5>
+<p>A
+GNU <code class="command">nroff</code> program is available for convenience; it calls GNU
+<code class="code">troff</code> to perform the formatting.</p>
+<h5 class="footnote-body-heading"><a id="FOOT69" href="#DOCF69">(69)</a></h5>
+<p>Historically, the <code class="code">\c</code>
+escape sequence has proven challenging to characterize. Some sources
+say it &ldquo;connects the next input text&rdquo; (to the input line on which it
+appears); others describe it as &ldquo;interrupting&rdquo; text, on the grounds
+that a text line is interrupted without breaking, perhaps to inject a
+request invocation or macro call.</p>
+<h5 class="footnote-body-heading"><a id="FOOT70" href="#DOCF70">(70)</a></h5>
+<p>See <a class="xref" href="#Traps">Traps</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT71" href="#DOCF71">(71)</a></h5>
+<p>See <a class="xref" href="#Diversions">Diversions</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT72" href="#DOCF72">(72)</a></h5>
+<p>Terminals and some output devices have fonts that render
+at only one or two sizes. As examples of the latter, take the
+<code class="code">groff</code> <code class="code">lj4</code> device&rsquo;s Lineprinter, and <code class="code">lbp</code>&rsquo;s Courier
+and Elite faces.</p>
+<h5 class="footnote-body-heading"><a id="FOOT73" href="#DOCF73">(73)</a></h5>
+<p>Font designers prepare families such that the styles
+share esthetic properties.</p>
+<h5 class="footnote-body-heading"><a id="FOOT74" href="#DOCF74">(74)</a></h5>
+<p>Historically, the fonts
+<code class="code">troff</code>s dealt with were not Free Software or, as with the Graphic
+Systems C/A/T, did not even exist in the digital domain.</p>
+<h5 class="footnote-body-heading"><a id="FOOT75" href="#DOCF75">(75)</a></h5>
+<p>See <a class="xref" href="#Font-Description-File-Format">Font Description File Format</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT76" href="#DOCF76">(76)</a></h5>
+<p>See <a class="xref" href="#DESC-File-Format"><samp class="file">DESC</samp> File Format</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT77" href="#DOCF77">(77)</a></h5>
+<p>Not all versions of the <code class="code">man</code> program
+support the <samp class="option">-T</samp> option; use the subsequent example for an
+alternative.</p>
+<h5 class="footnote-body-heading"><a id="FOOT78" href="#DOCF78">(78)</a></h5>
+<p>This is &ldquo;Normalization Form D&rdquo;
+as documented in Unicode Standard Annex #15
+(<a class="uref" href="https://unicode.org/reports/tr15/">https://unicode.org/reports/tr15/</a>).</p>
+<h5 class="footnote-body-heading"><a id="FOOT79" href="#DOCF79">(79)</a></h5>
+<p>See <a class="xref" href="#Compatibility-Mode">Compatibility Mode</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT80" href="#DOCF80">(80)</a></h5>
+<p>Output glyphs
+don&rsquo;t&mdash;to GNU <code class="code">troff</code>, a glyph is simply a box with an index into
+a font, a given height above and depth below the baseline, and a width.</p>
+<h5 class="footnote-body-heading"><a id="FOOT81" href="#DOCF81">(81)</a></h5>
+<p>Opinions of this escape sequence&rsquo;s name abound.
+&ldquo;Zero-width space&rdquo; is a popular misnomer: <code class="code">roff</code> formatters do
+not treat it like a space. Ossanna called it a &ldquo;non-printing,
+zero-width character&rdquo;, but the character causes <em class="emph">output</em> even
+though it does not &ldquo;print&rdquo;. If no output line is pending, the dummy
+character starts one. Contrast an empty input document with one
+containing only <code class="code">\&amp;</code>. The former produces no output; the latter, a
+blank page.</p>
+<h5 class="footnote-body-heading"><a id="FOOT82" href="#DOCF82">(82)</a></h5>
+<p>In text fonts, the tallest glyphs are typically
+parentheses. Unfortunately, in many cases the actual dimensions of the
+glyphs in a font do not closely match its declared type size! For
+example, in the standard PostScript font families, 10-point Times sets
+better with 9-point Helvetica and 11-point Courier than if all three
+were used at 10&nbsp;points.</p>
+<h5 class="footnote-body-heading"><a id="FOOT83" href="#DOCF83">(83)</a></h5>
+<p>Rhyme with &ldquo;sledding&rdquo;; mechanical typography
+used lead metal (Latin <em class="emph">plumbum</em>).</p>
+<h5 class="footnote-body-heading"><a id="FOOT84" href="#DOCF84">(84)</a></h5>
+<p>The claim appears to have been true of Ossanna
+<code class="code">troff</code> for the C/A/T device; Kernighan made device-independent
+<code class="code">troff</code> more flexible.</p>
+<h5 class="footnote-body-heading"><a id="FOOT85" href="#DOCF85">(85)</a></h5>
+<p>See <a class="xref" href="#Device-and-Font-Description-Files">Device and Font Description Files</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT86" href="#DOCF86">(86)</a></h5>
+<p>also
+known vulgarly as &ldquo;ANSI colors&rdquo;</p>
+<h5 class="footnote-body-heading"><a id="FOOT87" href="#DOCF87">(87)</a></h5>
+<p>See <a class="xref" href="#Copy-Mode">Copy Mode</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT88" href="#DOCF88">(88)</a></h5>
+<p>This refers to
+<code class="code">vtroff</code>, a translator that would convert the C/A/T output from
+early-vintage <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> to a form suitable for
+Versatec and Benson-Varian plotters.</p>
+<h5 class="footnote-body-heading"><a id="FOOT89" href="#DOCF89">(89)</a></h5>
+<p>Strictly, letters not otherwise recognized <em class="emph">are</em> treated
+as output comparison delimiters. For portability, it is wise to avoid
+using letters not in the list above; for example, Plan&nbsp;9
+<code class="code">troff</code> uses &lsquo;<samp class="samp">h</samp>&rsquo; to test a mode it calls <code class="code">htmlroff</code>, and
+GNU <code class="code">troff</code> may provide additional operators in the future.</p>
+<h5 class="footnote-body-heading"><a id="FOOT90" href="#DOCF90">(90)</a></h5>
+<p>Because formatting of the comparands takes place
+in a dummy environment, vertical motions within them cannot spring
+traps.</p>
+<h5 class="footnote-body-heading"><a id="FOOT91" href="#DOCF91">(91)</a></h5>
+<p>All
+of this is to say that the lists of output nodes created by formatting
+<var class="var">xxx</var> and <var class="var">yyy</var> must be identical. See <a class="xref" href="#Gtroff-Internals"><code class="code">gtroff</code> Internals</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT92" href="#DOCF92">(92)</a></h5>
+<p>This bizarre behavior maintains compatibility with
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT93" href="#DOCF93">(93)</a></h5>
+<p>See <a class="xref" href="#while">while</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT94" href="#DOCF94">(94)</a></h5>
+<p>See <a class="xref" href="#Copy-Mode">Copy Mode</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT95" href="#DOCF95">(95)</a></h5>
+<p>unless you redefine it</p>
+<h5 class="footnote-body-heading"><a id="FOOT96" href="#DOCF96">(96)</a></h5>
+<p>&ldquo;somewhat less&rdquo; because
+things other than macro calls can be on the input stack</p>
+<h5 class="footnote-body-heading"><a id="FOOT97" href="#DOCF97">(97)</a></h5>
+<p>See <a class="xref" href="#Copy-Mode">Copy Mode</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT98" href="#DOCF98">(98)</a></h5>
+<p>While it is possible to define and
+call a macro &lsquo;<samp class="samp">.</samp>&rsquo;, you can&rsquo;t use it as an end macro: during a macro
+definition, &lsquo;<samp class="samp">..</samp>&rsquo; is never handled as calling &lsquo;<samp class="samp">.</samp>&rsquo;, even if
+&lsquo;<samp class="samp">.de <var class="var">name</var> .</samp>&rsquo; explicitly precedes it.</p>
+<h5 class="footnote-body-heading"><a id="FOOT99" href="#DOCF99">(99)</a></h5>
+<p>Its structure is
+adapted from, and isomorphic to, part of a solution by Tadziu Hoffman to
+the problem of reflowing text multiple times to find an optimal
+configuration for it.
+<a class="uref" href="https://lists.gnu.org/archive/html/groff/2008-12/msg00006.html">https://lists.gnu.org/archive/html/groff/2008-12/msg00006.html</a></p>
+<h5 class="footnote-body-heading"><a id="FOOT100" href="#DOCF100">(100)</a></h5>
+<p>If they were not,
+parameter interpolations would be similar to command-line
+parameters&mdash;fixed for the entire duration of a <code class="code">roff</code> program&rsquo;s
+run. The advantage of interpolating <code class="code">\$</code> escape sequences even in
+copy mode is that they can interpolate different contents from one call
+to the next, like function parameters in a procedural language. The
+additional escape character is the price of this power.</p>
+<h5 class="footnote-body-heading"><a id="FOOT101" href="#DOCF101">(101)</a></h5>
+<p>Compare this to the <code class="code">\def</code> and <code class="code">\edef</code>
+commands in TeX.</p>
+<h5 class="footnote-body-heading"><a id="FOOT102" href="#DOCF102">(102)</a></h5>
+<p>These are lightly adapted from the <code class="code">groff</code>
+implementation of the <samp class="file">ms</samp> macros.</p>
+<h5 class="footnote-body-heading"><a id="FOOT103" href="#DOCF103">(103)</a></h5>
+<p>At the
+<code class="code">grops</code> defaults of 10-point type on 12-point vertical spacing, the
+difference between half a vee and half an em can be subtle: large
+spacings like &lsquo;<samp class="samp">.vs .5i</samp>&rsquo; make it obvious.</p>
+<h5 class="footnote-body-heading"><a id="FOOT104" href="#DOCF104">(104)</a></h5>
+<p>See <a class="xref" href="#Strings">Strings</a>, for an explanation of the trailing
+&lsquo;<samp class="samp">\&quot;</samp>&rsquo;.</p>
+<h5 class="footnote-body-heading"><a id="FOOT105" href="#DOCF105">(105)</a></h5>
+<p>(<var class="var">hc</var>, <var class="var">vc</var>) is adjusted to the point nearest
+the perpendicular bisector of the arc&rsquo;s chord.</p>
+<h5 class="footnote-body-heading"><a id="FOOT106" href="#DOCF106">(106)</a></h5>
+<p>See <a class="xref" href="#The-Implicit-Page-Trap">The Implicit Page Trap</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT107" href="#DOCF107">(107)</a></h5>
+<p>A trap planted at &lsquo;<samp class="samp">20i</samp>&rsquo; or
+&lsquo;<samp class="samp">-30i</samp>&rsquo; will not be sprung on a page of length &lsquo;<samp class="samp">11i</samp>&rsquo;.</p>
+<h5 class="footnote-body-heading"><a id="FOOT108" href="#DOCF108">(108)</a></h5>
+<p>It may help to think of each trap location as
+maintaining a queue; <code class="code">wh</code> operates on the head of the queue, and
+<code class="code">ch</code> operates on its tail. Only the trap at the head of the queue
+is visible.</p>
+<h5 class="footnote-body-heading"><a id="FOOT109" href="#DOCF109">(109)</a></h5>
+<p>See <a class="xref" href="#Debugging">Debugging</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT110" href="#DOCF110">(110)</a></h5>
+<p>See <a class="xref" href="#Diversions">Diversions</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT111" href="#DOCF111">(111)</a></h5>
+<p>While processing an
+end-of-input macro, the formatter assumes that the next page break must
+be the last; it goes into &ldquo;sudden death overtime&rdquo;.</p>
+<h5 class="footnote-body-heading"><a id="FOOT112" href="#DOCF112">(112)</a></h5>
+<p>Another, taken by the <code class="code">groff</code> <code class="code">man</code> macros, is
+to intercept <code class="code">ne</code> requests and wrap <code class="code">bp</code> ones.</p>
+<h5 class="footnote-body-heading"><a id="FOOT113" href="#DOCF113">(113)</a></h5>
+<p>Thus, the &ldquo;water&rdquo;
+gets &ldquo;higher&rdquo; proceeding <em class="emph">down</em> the page.</p>
+<h5 class="footnote-body-heading"><a id="FOOT114" href="#DOCF114">(114)</a></h5>
+<p>The backslash is doubled. See <a class="xref" href="#Copy-Mode">Copy Mode</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT115" href="#DOCF115">(115)</a></h5>
+<p>that is, ISO&nbsp;646:1991-IRV or,
+popularly, &ldquo;US-ASCII&rdquo;</p>
+<h5 class="footnote-body-heading"><a id="FOOT116" href="#DOCF116">(116)</a></h5>
+<p>They are bypassed because these parameters are not
+rendered as glyphs in the output; instead, they remain abstract
+characters&mdash;in a PDF bookmark or a URL, for example.</p>
+<h5 class="footnote-body-heading"><a id="FOOT117" href="#DOCF117">(117)</a></h5>
+<p>Recall <a class="ref" href="#Line-Layout">Line Layout</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT118" href="#DOCF118">(118)</a></h5>
+<p>Historically,
+tools named <code class="command">nrchbar</code> and <code class="command">changebar</code> were developed for
+marking changes with margin characters and could be found in archives of
+the <code class="code">comp.sources.unix</code> <abbr class="acronym">USENET</abbr> group. Some proprietary
+Unices also offer(ed) a <code class="command">diffmk</code> program.</p>
+<h5 class="footnote-body-heading"><a id="FOOT119" href="#DOCF119">(119)</a></h5>
+<p>Except the
+escape sequences <code class="code">\f</code>, <code class="code">\F</code>, <code class="code">\H</code>, <code class="code">\m</code>, <code class="code">\M</code>,
+<code class="code">\R</code>, <code class="code">\s</code>, and <code class="code">\S</code>, which are processed immediately if
+not in copy mode.</p>
+<h5 class="footnote-body-heading"><a id="FOOT120" href="#DOCF120">(120)</a></h5>
+<p>The
+Graphic Systems C/A/T phototypesetter (the original device target for
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>) supported only a few discrete type sizes
+in the range 6&ndash;36 points, so Ossanna contrived a special case in the
+parser to do what the user must have meant. Kernighan warned of this in
+the 1992 revision of CSTR&nbsp;#54 (§2.3), and more recently, McIlroy
+referred to it as a &ldquo;living fossil&rdquo;.</p>
+<h5 class="footnote-body-heading"><a id="FOOT121" href="#DOCF121">(121)</a></h5>
+<p>DWB&nbsp;3.3, Solaris, Heirloom Doctools, and
+Plan&nbsp;9 <code class="code">troff</code> all support it.</p>
+<h5 class="footnote-body-heading"><a id="FOOT122" href="#DOCF122">(122)</a></h5>
+<p>Naturally, if you&rsquo;ve changed
+the escape character, you need to prefix the <code class="code">e</code> with whatever it
+is&mdash;and you&rsquo;ll likely get something other than a backslash in the
+output.</p>
+<h5 class="footnote-body-heading"><a id="FOOT123" href="#DOCF123">(123)</a></h5>
+<p>The <code class="code">rs</code> special character identifier was not
+defined in <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>&rsquo;s font description files, but is
+in those of its lineal descendant, Heirloom Doctools <code class="code">troff</code>, as of
+the latter&rsquo;s 060716 release (July 2006).</p>
+<h5 class="footnote-body-heading"><a id="FOOT124" href="#DOCF124">(124)</a></h5>
+<p>The parser
+and postprocessor for intermediate output can be found in the file<br>
+<samp class="file"><var class="var">groff-source-dir</var>/src/libs/libdriver/input.cpp</samp>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT125" href="#DOCF125">(125)</a></h5>
+<p>Plan&nbsp;9 <code class="code">troff</code> has also abandoned the binary
+format.</p>
+<h5 class="footnote-body-heading"><a id="FOOT126" href="#DOCF126">(126)</a></h5>
+<p>800-point type
+is not practical for most purposes, but using it enables the quantities
+in the font description files to be expressed as integers.</p>
+<h5 class="footnote-body-heading"><a id="FOOT127" href="#DOCF127">(127)</a></h5>
+<p><code class="code">groff</code> requests and escape sequences
+interpret non-negative font names as mounting positions instead.
+Further, a font named &lsquo;<samp class="samp">0</samp>&rsquo; cannot be automatically mounted by the
+<code class="code">fonts</code> directive of a <samp class="file">DESC</samp> file.</p>
+<h5 class="footnote-body-heading"><a id="FOOT128" href="#DOCF128">(128)</a></h5>
+<p>For typesetter devices, this directive is misnamed
+since it starts a list of glyphs, not characters.</p>
+<h5 class="footnote-body-heading"><a id="FOOT129" href="#DOCF129">(129)</a></h5>
+<p>that is, any integer parsable by the C
+standard library&rsquo;s <cite class="cite">strtol<span class="r">(3)</span></cite> function</p>
+</div>
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Adjustment.html b/doc/groff.html.node/Adjustment.html
new file mode 100644
index 0000000..60b01c4
--- /dev/null
+++ b/doc/groff.html.node/Adjustment.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Adjustment (The GNU Troff Manual)</title>
+
+<meta name="description" content="Adjustment (The GNU Troff Manual)">
+<meta name="keywords" content="Adjustment (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Text.html" rel="up" title="Text">
+<link href="Tabs-and-Leaders.html" rel="next" title="Tabs and Leaders">
+<link href="Breaking.html" rel="prev" title="Breaking">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Adjustment">
+<div class="nav-panel">
+<p>
+Next: <a href="Tabs-and-Leaders.html" accesskey="n" rel="next">Tabs and Leaders</a>, Previous: <a href="Breaking.html" accesskey="p" rel="prev">Breaking</a>, Up: <a href="Text.html" accesskey="u" rel="up">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Adjustment-1">5.1.5 Adjustment</h4>
+
+<a class="index-entry-id" id="index-extra-spaces-between-words"></a>
+<p>After GNU <code class="code">troff</code> performs an automatic break, it may then
+<em class="dfn">adjust</em> the line, widening inter-word spaces until the text reaches
+the right margin. Extra spaces between words are preserved. Leading
+and trailing spaces are handled as noted above. Text can be aligned to
+the left or right margin only, or centered; see <a class="ref" href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a>.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Argument-Units.html b/doc/groff.html.node/Argument-Units.html
new file mode 100644
index 0000000..c7cbb16
--- /dev/null
+++ b/doc/groff.html.node/Argument-Units.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Argument Units (The GNU Troff Manual)</title>
+
+<meta name="description" content="Argument Units (The GNU Troff Manual)">
+<meta name="keywords" content="Argument Units (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Language-Concepts.html" rel="up" title="Language Concepts">
+<link href="Document-Parts.html" rel="next" title="Document Parts">
+<link href="Separation.html" rel="prev" title="Separation">
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Argument-Units">
+<div class="nav-panel">
+<p>
+Next: <a href="Document-Parts.html" accesskey="n" rel="next">Document Parts</a>, Previous: <a href="Separation.html" accesskey="p" rel="prev">Separation</a>, Up: <a href="Language-Concepts.html" accesskey="u" rel="up">Language Concepts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Argument-Units-1">6.1.1.2 Argument Units</h4>
+
+<p>Some commands take integer arguments that are assumed to represent
+values in a measurement unit, but the letter for the corresponding
+scaling unit is not written with the output command arguments. Most
+commands assume the scaling unit &lsquo;<samp class="samp">u</samp>&rsquo;, the basic unit of the device,
+some use &lsquo;<samp class="samp">z</samp>&rsquo;, the scaled point unit of the device, while others,
+such as the color commands, expect plain integers.
+</p>
+<p>Single characters can have the eighth bit set, as can the names of
+fonts and special characters. The names of characters and fonts can be
+of arbitrary length. A character that is to be printed is always in
+the current font.
+</p>
+<p>A string argument is always terminated by the next whitespace character
+(space, tab, or newline); an embedded &lsquo;<samp class="samp">#</samp>&rsquo; character is regarded as
+part of the argument, not as the beginning of a comment command. An
+integer argument is already terminated by the next non-digit character,
+which then is regarded as the first character of the next argument or
+command.
+</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Artificial-Fonts.html b/doc/groff.html.node/Artificial-Fonts.html
new file mode 100644
index 0000000..6f9d43d
--- /dev/null
+++ b/doc/groff.html.node/Artificial-Fonts.html
@@ -0,0 +1,252 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Artificial Fonts (The GNU Troff Manual)</title>
+
+<meta name="description" content="Artificial Fonts (The GNU Troff Manual)">
+<meta name="keywords" content="Artificial Fonts (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Using-Fonts.html" rel="up" title="Using Fonts">
+<link href="Ligatures-and-Kerning.html" rel="next" title="Ligatures and Kerning">
+<link href="Special-Fonts.html" rel="prev" title="Special Fonts">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Artificial-Fonts">
+<div class="nav-panel">
+<p>
+Next: <a href="Ligatures-and-Kerning.html" accesskey="n" rel="next">Ligatures and Kerning</a>, Previous: <a href="Special-Fonts.html" accesskey="p" rel="prev">Special Fonts</a>, Up: <a href="Using-Fonts.html" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Artificial-Fonts-1">5.19.7 Artificial Fonts</h4>
+<a class="index-entry-id" id="index-artificial-fonts"></a>
+<a class="index-entry-id" id="index-fonts_002c-artificial"></a>
+
+<p>There are a number of requests and escape sequences for artificially
+creating fonts. These are largely vestiges of the days when output
+devices did not have a wide variety of fonts, and when <code class="code">nroff</code> and
+<code class="code">troff</code> were separate programs. Most of them are no longer
+necessary in GNU <code class="code">troff</code>. Nevertheless, they are supported.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cH_0027height_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\H<code class="code">'</code></code><span class="r"><i class="slanted">height</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cH_0027height_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cH"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cH_0027_002bheight_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\H<code class="code">'</code></code><span class="r"><i class="slanted"><code class="t">+</code>height</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cH_0027_002bheight_0027'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cH_0027_002dheight_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\H<code class="code">'</code></code><span class="r"><i class="slanted"><code class="t">-</code>height</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cH_0027_002dheight_0027'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eheight_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.height]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eheight_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eheight"></a>
+<a class="index-entry-id" id="index-changing-the-font-height-_0028_005cH_0029"></a>
+<a class="index-entry-id" id="index-font-height_002c-changing-_0028_005cH_0029"></a>
+<a class="index-entry-id" id="index-height_002c-font_002c-changing-_0028_005cH_0029"></a>
+<p>Change (increment, decrement) the height of the current font, but not
+the width. If <var class="var">height</var> is zero, restore the original height.
+Default scaling unit is &lsquo;<samp class="samp">z</samp>&rsquo;.
+</p>
+<p>The read-only register <code class="code">.height</code> contains the font height as set by
+<code class="code">\H</code>.
+</p>
+<p>Currently, only the <samp class="option">-Tps</samp> and <samp class="option">-Tpdf</samp> devices support
+this feature.
+</p>
+<p><code class="code">\H</code> doesn&rsquo;t produce an input token in GNU <code class="code">troff</code>. As a
+consequence, it can be used in requests like <code class="code">mc</code> (which expects
+a single character as an argument) to change the font on the fly:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.mc \H'+5z'x\H'0'
+</pre></div></div>
+
+<p>In compatibility mode, <code class="code">gtroff</code> behaves differently: If an
+increment or decrement is used, it is always taken relative to the
+current type size and not relative to the previously selected font
+height. Thus,
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.cp 1
+\H'+5'test \H'+5'test
+</pre></div></div>
+
+<p>prints the word &lsquo;<samp class="samp">test</samp>&rsquo; twice with the same font height (five points
+larger than the current font size).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cS_0027slant_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\S<code class="code">'</code></code><span class="r"><i class="slanted">slant</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cS_0027slant_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cS"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eslant_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.slant]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eslant_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eslant"></a>
+<a class="index-entry-id" id="index-changing-the-font-slant-_0028_005cS_0029"></a>
+<a class="index-entry-id" id="index-font-slant_002c-changing-_0028_005cS_0029"></a>
+<a class="index-entry-id" id="index-slant_002c-font_002c-changing-_0028_005cS_0029"></a>
+<p>Slant the current font by <var class="var">slant</var> degrees. Positive values slant to
+the right. Only integer values are possible.
+</p>
+<p>The read-only register <code class="code">.slant</code> contains the font slant as set by
+<code class="code">\S</code>.
+</p>
+<p>Currently, only the <samp class="option">-Tps</samp> and <samp class="option">-Tpdf</samp> devices support
+this feature.
+</p>
+<p><code class="code">\S</code> doesn&rsquo;t produce an input token in GNU <code class="code">troff</code>. As a
+consequence, it can be used in requests like <code class="code">mc</code> (which expects
+a single character as an argument) to change the font on the fly:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.mc \S'20'x\S'0'
+</pre></div></div>
+
+<a class="index-entry-id" id="index-CSTR-_002354-errata-3"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-_005cS-escape"></a>
+<p>This escape is incorrectly documented in the <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> manual; the slant is always set to an absolute value.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eul"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ul</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">lines</i></span>]</var><a class="copiable-link" href='#index-_002eul'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ul"></a>
+<a class="index-entry-id" id="index-underlining-_0028ul_0029"></a>
+<p>The <code class="code">ul</code> request normally underlines subsequent lines if a TTY
+output device is used. Otherwise, the lines are printed in italics
+(only the term &lsquo;underlined&rsquo; is used in the following). The single
+argument is the quantity of input lines to be underlined; with no
+argument, the next line is underlined. If <var class="var">lines</var> is zero or
+negative, stop the effects of <code class="code">ul</code> (if it was active). Requests
+and empty lines do not count for computing the number of underlined
+input lines, even if they produce some output like <code class="code">tl</code>. Lines
+inserted by macros (e.g., invoked by a trap) do count.
+</p>
+<p>At the beginning of <code class="code">ul</code>, the current font is stored and the
+underline font is activated. Within the span of a <code class="code">ul</code> request, it
+is possible to change fonts, but after the last line affected by
+<code class="code">ul</code> the saved font is restored.
+</p>
+<p>This number of lines still to be underlined is associated with the
+environment (see <a class="pxref" href="Environments.html">Environments</a>). The underline font can be changed
+with the <code class="code">uf</code> request.
+</p>
+
+
+<p>The <code class="code">ul</code> request does not underline spaces.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecu"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cu</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">lines</i></span>]</var><a class="copiable-link" href='#index-_002ecu'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-cu"></a>
+<a class="index-entry-id" id="index-continuous-underlining-_0028cu_0029"></a>
+<a class="index-entry-id" id="index-underlining_002c-continuous-_0028cu_0029"></a>
+<p>The <code class="code">cu</code> request is similar to <code class="code">ul</code> but underlines spaces as
+well (if a TTY output device is used).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002euf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.uf</code></strong> <var class="def-var-arguments">font</var><a class="copiable-link" href='#index-_002euf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-uf"></a>
+<a class="index-entry-id" id="index-underline-font-_0028uf_0029"></a>
+<a class="index-entry-id" id="index-font-for-underlining-_0028uf_0029"></a>
+<p>Set the underline font (globally) used by <code class="code">ul</code> and <code class="code">cu</code>. By
+default, this is the font at position&nbsp;2. <var class="var">font</var> can be either
+a non-negative font position or the name of a font.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebd"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bd</code></strong> <var class="def-var-arguments">font [<span class="r"><i class="slanted">offset</i></span>]</var><a class="copiable-link" href='#index-_002ebd'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-bd"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ebd-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bd</code></strong> <var class="def-var-arguments">font1 font2 [<span class="r"><i class="slanted">offset</i></span>]</var><a class="copiable-link" href='#index-_002ebd-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eb_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.b]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eb_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eb"></a>
+<a class="index-entry-id" id="index-imitating-boldface-_0028bd_0029"></a>
+<a class="index-entry-id" id="index-boldface_002c-imitating-_0028bd_0029"></a>
+<p>Embolden <var class="var">font</var> by overstriking its glyphs offset by <var class="var">offset</var>
+units minus one.
+</p>
+<p>Two syntax forms are available.
+</p>
+<ul class="itemize mark-bullet">
+<li>Imitate a bold font unconditionally. The first argument specifies the
+font to embolden, and the second is the number of basic units, minus
+one, by which the two glyphs are offset. If the second argument is
+missing, emboldening is turned off.
+
+<p><var class="var">font</var> can be either a non-negative font position or the name of a
+font.
+</p>
+<p><var class="var">offset</var> is available in the <code class="code">.b</code> read-only register if a
+special font is active; in the <code class="code">bd</code> request, its default unit is
+&lsquo;<samp class="samp">u</samp>&rsquo;.
+</p>
+</li><li><a class="index-entry-id" id="index-fspecial-request_002c-and-imitating-bold"></a>
+<a class="index-entry-id" id="index-special"></a>
+<a class="index-entry-id" id="index-embolding-of-special-fonts"></a>
+<a class="index-entry-id" id="index-special-fonts_002c-emboldening"></a>
+Imitate a bold form conditionally. Embolden <var class="var">font1</var> by <var class="var">offset</var>
+only if font <var class="var">font2</var> is the current font. This request can be
+issued repeatedly to set up different emboldening values for different
+current fonts. If the second argument is missing, emboldening is turned
+off for this particular current font.
+
+<p>This affects special fonts only (either set up with the <code class="code">special</code>
+command in font files or with the <code class="code">fspecial</code> request).
+</p></li></ul>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cs</code></strong> <var class="def-var-arguments">font [<span class="r"><i class="slanted">width</i></span> [<span class="r"><i class="slanted">em-size</i></span>]]</var><a class="copiable-link" href='#index-_002ecs'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-cs"></a>
+<a class="index-entry-id" id="index-constant-glyph-space-mode-_0028cs_0029"></a>
+<a class="index-entry-id" id="index-mode-for-constant-glyph-space-_0028cs_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-constant-space"></a>
+<a class="index-entry-id" id="index-ps-request_002c-and-constant-glyph-space-mode"></a>
+<p>Switch to and from <em class="dfn">constant glyph space mode</em>. If activated, the
+width of every glyph is <em class="math"><var class="var">width</var>/36</em> ems. The em size is given
+absolutely by <var class="var">em-size</var>; if this argument is missing, the em value
+is taken from the current font size (as set with the <code class="code">ps</code> request)
+when the font is effectively in use. Without second and third argument,
+constant glyph space mode is deactivated.
+</p>
+<p>Default scaling unit for <var class="var">em-size</var> is &lsquo;<samp class="samp">z</samp>&rsquo;; <var class="var">width</var> is an
+integer.
+</p></dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a>, Previous: <a href="Special-Fonts.html">Special Fonts</a>, Up: <a href="Using-Fonts.html">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Assigning-Register-Formats.html b/doc/groff.html.node/Assigning-Register-Formats.html
new file mode 100644
index 0000000..ff0ddfa
--- /dev/null
+++ b/doc/groff.html.node/Assigning-Register-Formats.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Assigning Register Formats (The GNU Troff Manual)</title>
+
+<meta name="description" content="Assigning Register Formats (The GNU Troff Manual)">
+<meta name="keywords" content="Assigning Register Formats (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Registers.html" rel="up" title="Registers">
+<link href="Built_002din-Registers.html" rel="next" title="Built-in Registers">
+<link href="Auto_002dincrement.html" rel="prev" title="Auto-increment">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Assigning-Register-Formats">
+<div class="nav-panel">
+<p>
+Next: <a href="Built_002din-Registers.html" accesskey="n" rel="next">Built-in Registers</a>, Previous: <a href="Auto_002dincrement.html" accesskey="p" rel="prev">Auto-increment</a>, Up: <a href="Registers.html" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Assigning-Register-Formats-1">5.8.4 Assigning Register Formats</h4>
+<a class="index-entry-id" id="index-assign-number-format-to-register-_0028af_0029"></a>
+<a class="index-entry-id" id="index-number-formats_002c-assigning-to-register-_0028af_0029"></a>
+<a class="index-entry-id" id="index-register_002c-assigning-number-format-to-_0028af_0029"></a>
+
+<p>A writable register&rsquo;s value can be interpolated in several number
+formats. By default, conventional Arabic numerals are used.
+Other formats see use in sectioning and outlining schemes and
+alternative page numbering arrangements.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eaf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.af</code></strong> <var class="def-var-arguments">reg fmt</var><a class="copiable-link" href='#index-_002eaf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-af"></a>
+<p>Use number format <var class="var">fmt</var> when interpolating register <var class="var">reg</var>.
+Valid number formats are as follows.
+</p>
+<dl class="table">
+<dt><code class="code">0<span class="r">&hellip;</span></code></dt>
+<dd><p>Arabic numerals 0, 1, 2, and so on.
+Any decimal digit is equivalent to &lsquo;<samp class="samp">0</samp>&rsquo;; the formatter merely counts
+the digits specified. Multiple Arabic numerals in <var class="var">fmt</var> cause
+interpolations to be zero-padded on the left if necessary to at least as
+many digits as specified (interpolations never truncate a register
+value). A register with format &lsquo;<samp class="samp">00</samp>&rsquo; interpolates values 1, 2, 3 as
+&lsquo;<samp class="samp">01</samp>&rsquo;, &lsquo;<samp class="samp">02</samp>&rsquo;, &lsquo;<samp class="samp">03</samp>&rsquo;. The default format for all writable
+registers is &lsquo;<samp class="samp">0</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-Roman-numerals'><span><code class="code">I</code><a class="copiable-link" href='#index-Roman-numerals'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-numerals_002c-Roman"></a>
+<p>Uppercase Roman numerals: 0, I, II, III, IV,&nbsp;<small class="enddots">...</small>
+</p>
+</dd>
+<dt><code class="code">i</code></dt>
+<dd><p>Lowercase Roman numerals: 0, i, ii, iii, iv,&nbsp;<small class="enddots">...</small>
+</p>
+</dd>
+<dt><code class="code">A</code></dt>
+<dd><p>Uppercase letters: 0, A, B, C, &hellip;,&nbsp;Z, AA, AB,&nbsp;<small class="enddots">...</small>
+</p>
+</dd>
+<dt><code class="code">a</code></dt>
+<dd><p>Lowercase letters: 0, a, b, c, &hellip;,&nbsp;z, aa, ab,&nbsp;<small class="enddots">...</small>
+</p></dd>
+</dl>
+
+<p>Omitting <var class="var">fmt</var> causes a warning in category &lsquo;<samp class="samp">missing</samp>&rsquo;.
+See <a class="xref" href="Warnings.html">Warnings</a>, for information about the enablement and suppression of
+warnings. Specifying an unrecognized format is an error.
+</p>
+<p>Zero values are interpolated as &lsquo;<samp class="samp">0</samp>&rsquo; in non-Arabic formats.
+Negative quantities are prefixed with &lsquo;<samp class="samp">-</samp>&rsquo; irrespective of format.
+In Arabic formats, the sign supplements the field width. If <var class="var">reg</var>
+doesn&rsquo;t exist, it is created with a zero value.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 10
+.af a 0 \&quot; the default format
+\na,
+.af a I
+\na,
+.af a 321
+.nr a (-\na)
+\na,
+.af a a
+\na
+ &rArr; 10, X, -010, -j
+</pre></div></div>
+
+<a class="index-entry-id" id="index-Roman-numerals_002c-extrema-_0028maximum-and-minimum_0029"></a>
+<a class="index-entry-id" id="index-extreme-values-representable-with-Roman-numerals"></a>
+<a class="index-entry-id" id="index-maximum-value-representable-with-Roman-numerals"></a>
+<a class="index-entry-id" id="index-minimum-value-representable-with-Roman-numerals"></a>
+<p>The representable extrema in the &lsquo;<samp class="samp">i</samp>&rsquo; and &lsquo;<samp class="samp">I</samp>&rsquo; formats
+correspond to Arabic ±39,999. GNU <code class="code">troff</code> uses &lsquo;<samp class="samp">w</samp>&rsquo; and
+&lsquo;<samp class="samp">z</samp>&rsquo; to represent 5,000 and 10,000 in Roman numerals, respectively,
+following the convention of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>&mdash;currently, the
+correct glyphs for Roman numerals five thousand (<code class="code">U+2181</code>) and ten
+thousand (<code class="code">U+2182</code>) are not used.
+</p>
+<a class="index-entry-id" id="index-read_002donly-register_002c-changing-format"></a>
+<a class="index-entry-id" id="index-changing-format_002c-and-read_002donly-registers"></a>
+<p>Assigning the format of a read-only register is an error. Instead, copy
+the read-only register&rsquo;s value to, and assign the format of, a writable
+register.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cgr"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\g</code><span class="r"><i class="slanted">r</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cgr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cg"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cg_0028rg"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\g(</code><span class="r"><i class="slanted">rg</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cg_0028rg'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cg_005breg_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\g[</code><span class="r"><i class="slanted">reg</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cg_005breg_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-format-of-register-_0028_005cg_0029"></a>
+<a class="index-entry-id" id="index-register_002c-format-_0028_005cg_0029"></a>
+<p>Interpolate the format of the register <var class="var">reg</var> (one-character
+name&nbsp;<var class="var">r</var>, two-character name <var class="var">rg</var>). Zeroes represent
+Arabic formats. If <var class="var">reg</var> is not defined, <var class="var">reg</var> is not created
+and nothing is interpolated. <code class="code">\g</code> is interpreted even in copy mode
+(see <a class="pxref" href="Copy-Mode.html">Copy Mode</a>).
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-register-format_002c-in-expressions"></a>
+<a class="index-entry-id" id="index-expressions_002c-and-register-format"></a>
+<p>GNU <code class="code">troff</code> interprets only Arabic numerals. The Roman numeral or
+alphabetic formats cannot be used as operands to arithmetic operators in
+expressions (see <a class="pxref" href="Numeric-Expressions.html">Numeric Expressions</a>). For instance, it may be
+desirable to test the page number independently of its format.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.af % i \&quot; front matter
+.de header-trap
+. \&quot; To test the page number, we need it in Arabic.
+. ds saved-page-number-format \\g%\&quot;
+. af % 0
+. nr page-number-in-decimal \\n%
+. af % \\*[saved-page-number-format]
+. ie \\n[page-number-in-decimal]=1 .do-first-page-stuff
+. el \{\
+. ie o .do-odd-numbered-page-stuff
+. el .do-even-numbered-page-stuff
+. \}
+. rm saved-page-number-format
+..
+.wh 0 header-trap
+</pre></div></div>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Built_002din-Registers.html">Built-in Registers</a>, Previous: <a href="Auto_002dincrement.html">Auto-increment</a>, Up: <a href="Registers.html">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Auto_002dincrement.html b/doc/groff.html.node/Auto_002dincrement.html
new file mode 100644
index 0000000..2680f67
--- /dev/null
+++ b/doc/groff.html.node/Auto_002dincrement.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Auto-increment (The GNU Troff Manual)</title>
+
+<meta name="description" content="Auto-increment (The GNU Troff Manual)">
+<meta name="keywords" content="Auto-increment (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Registers.html" rel="up" title="Registers">
+<link href="Assigning-Register-Formats.html" rel="next" title="Assigning Register Formats">
+<link href="Interpolating-Registers.html" rel="prev" title="Interpolating Registers">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Auto_002dincrement">
+<div class="nav-panel">
+<p>
+Next: <a href="Assigning-Register-Formats.html" accesskey="n" rel="next">Assigning Register Formats</a>, Previous: <a href="Interpolating-Registers.html" accesskey="p" rel="prev">Interpolating Registers</a>, Up: <a href="Registers.html" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Auto_002dincrement-1">5.8.3 Auto-increment</h4>
+<a class="index-entry-id" id="index-auto_002dincrementation-of-a-register"></a>
+<a class="index-entry-id" id="index-incrementation_002c-automatic_002c-of-a-register"></a>
+<a class="index-entry-id" id="index-decrementation_002c-automatic_002c-of-a-register"></a>
+
+<p>Registers can also be incremented or decremented by a configured amount
+at the time they are interpolated. The value of the increment is
+specified with a third argument to the <code class="code">nr</code> request, and a special
+interpolation syntax is used to alter and then retrieve the register&rsquo;s
+value. Together, these features are called
+<em class="dfn">auto-increment</em>.<a class="footnote" id="DOCF51" href="groff.html_fot.html#FOOT51"><sup>51</sup></a>
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enr-4"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">ident value incr</var><a class="copiable-link" href='#index-_002enr-4'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nr-3"></a>
+<a class="index-entry-id" id="index-_005cR_002c-difference-from-nr"></a>
+<p>Set register <var class="var">ident</var> to <var class="var">value</var> and its auto-incrementation
+amount to to <var class="var">incr</var>. The <code class="code">\R</code> escape sequence doesn&rsquo;t support
+an <var class="var">incr</var> argument.
+</p></dd></dl>
+
+<p>Auto-incrementation is not <em class="emph">completely</em> automatic; the <code class="code">\n</code>
+escape sequence in its basic form never alters the value of a register.
+To apply auto-incrementation to a register, interpolate it with
+&lsquo;<samp class="samp">\n±</samp>&rsquo;.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_002bi"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n+</code><span class="r"><i class="slanted">i</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_002bi'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cn-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_002di"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n-</code><span class="r"><i class="slanted">i</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_002di'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_002b_0028id"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n+(</code><span class="r"><i class="slanted">id</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_002b_0028id'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_002d_0028id"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n-(</code><span class="r"><i class="slanted">id</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_002d_0028id'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_002b_005bident_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n+[</code><span class="r"><i class="slanted">ident</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cn_002b_005bident_005d'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_002d_005bident_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n-[</code><span class="r"><i class="slanted">ident</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cn_002d_005bident_005d'> &para;</a></span></dt>
+<dd><p>Increment or decrement <var class="var">ident</var> (one-character
+name&nbsp;<var class="var">i</var>, two-character name <var class="var">id</var>) by the register&rsquo;s
+auto-incrementation value and then interpolate the new register value.
+If <var class="var">ident</var> has no auto-incrementation value, interpolate as with
+<code class="code">\n</code>.
+</p></dd></dl>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 0 1
+.nr xx 0 5
+.nr foo 0 -2
+\n+a, \n+a, \n+a, \n+a, \n+a
+.br
+\n-(xx, \n-(xx, \n-(xx, \n-(xx, \n-(xx
+.br
+\n+[foo], \n+[foo], \n+[foo], \n+[foo], \n+[foo]
+ &rArr; 1, 2, 3, 4, 5
+ &rArr; -5, -10, -15, -20, -25
+ &rArr; -2, -4, -6, -8, -10
+</pre></div></div>
+
+<a class="index-entry-id" id="index-increment-value-without-changing-the-register"></a>
+<a class="index-entry-id" id="index-value_002c-incrementing-without-changing-the-register"></a>
+<p>To change the increment value without changing the value of a register,
+assign the register&rsquo;s value to itself by interpolating it, and specify
+the desired increment normally. Apply an increment of &lsquo;<samp class="samp">0</samp>&rsquo; to
+disable auto-incrementation of the register.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Assigning-Register-Formats.html">Assigning Register Formats</a>, Previous: <a href="Interpolating-Registers.html">Interpolating Registers</a>, Up: <a href="Registers.html">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Background.html b/doc/groff.html.node/Background.html
new file mode 100644
index 0000000..1ce4224
--- /dev/null
+++ b/doc/groff.html.node/Background.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Background (The GNU Troff Manual)</title>
+
+<meta name="description" content="Background (The GNU Troff Manual)">
+<meta name="keywords" content="Background (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Introduction.html" rel="up" title="Introduction">
+<link href="What-Is-groff_003f.html" rel="next" title="What Is groff?">
+<link href="Introduction.html" rel="prev" title="Introduction">
+<style type="text/css">
+<!--
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Background">
+<div class="nav-panel">
+<p>
+Next: <a href="What-Is-groff_003f.html" accesskey="n" rel="next">What Is <code class="code">groff</code>?</a>, Previous: <a href="Introduction.html" accesskey="p" rel="prev">Introduction</a>, Up: <a href="Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Background-1">1.1 Background</h3>
+<a class="index-entry-id" id="index-background"></a>
+
+<p>M. Douglas McIlroy, formerly of AT&amp;T Bell Laboratories and present at
+the creation of the Unix operating system, offers an authoritative
+historical summary.
+</p>
+<blockquote class="quotation">
+<p>The prime reason for Unix was the desire of Ken [Thompson], Dennis
+[Ritchie], and Joe Ossanna to have a pleasant environment for software
+development. The fig leaf that got the nod from &hellip;
+management was that an early use would be to develop a &ldquo;stand-alone&rdquo;
+word-processing system for use in typing pools and secretarial offices.
+Perhaps they had in mind &ldquo;dedicated&rdquo;, as distinct from
+&ldquo;stand-alone&rdquo;; that&rsquo;s what eventuated in various cases, most notably
+in the legal/patent department and in the AT&amp;T CEO&rsquo;s office.
+</p>
+<p>Both those systems were targets of opportunity, not foreseen from the
+start. When Unix was up and running on the PDP-11, Joe got wind of
+the legal department having installed a commercial word processor.
+He went to pitch Unix as an alternative and clinched a trial by
+promising to make <code class="code">roff</code> able to number lines by tomorrow in order
+to fulfill a patent-office requirement that the commercial system did
+not support.
+</p>
+<p>Modems were installed so legal-department secretaries could try the
+Research machine. They liked it and Joe&rsquo;s superb customer service.
+Soon the legal department got a system of their own. Joe went on to
+create <code class="code">nroff</code> and <code class="code">troff</code>. Document preparation became a
+widespread use of Unix, but no stand-alone word-processing system was
+ever undertaken.
+</p></blockquote>
+
+<p>A history relating <code class="code">groff</code> to its predecessors <code class="code">roff</code>,
+<code class="code">nroff</code>, and <code class="code">troff</code> is available in the <cite class="cite">roff<span class="r">(7)</span></cite>
+man page.
+</p>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="What-Is-groff_003f.html">What Is <code class="code">groff</code>?</a>, Previous: <a href="Introduction.html">Introduction</a>, Up: <a href="Introduction.html">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Basics.html b/doc/groff.html.node/Basics.html
new file mode 100644
index 0000000..95db07b
--- /dev/null
+++ b/doc/groff.html.node/Basics.html
@@ -0,0 +1,232 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Basics (The GNU Troff Manual)</title>
+
+<meta name="description" content="Basics (The GNU Troff Manual)">
+<meta name="keywords" content="Basics (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tutorial-for-Macro-Users.html" rel="up" title="Tutorial for Macro Users">
+<link href="Common-Features.html" rel="next" title="Common Features">
+<link href="Tutorial-for-Macro-Users.html" rel="prev" title="Tutorial for Macro Users">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+span.w-nolinebreak-text {white-space: nowrap}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Basics">
+<div class="nav-panel">
+<p>
+Next: <a href="Common-Features.html" accesskey="n" rel="next">Common Features</a>, Previous: <a href="Tutorial-for-Macro-Users.html" accesskey="p" rel="prev">Tutorial for Macro Users</a>, Up: <a href="Tutorial-for-Macro-Users.html" accesskey="u" rel="up">Tutorial for Macro Users</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Basics-1">3.1 Basics</h3>
+<a class="index-entry-id" id="index-basics-of-macro-package-usage"></a>
+<a class="index-entry-id" id="index-macro-package-usage_002c-basics-of"></a>
+
+<p>Let us first survey some basic concepts necessary to use a macro package
+fruitfully.<a class="footnote" id="DOCF6" href="groff.html_fot.html#FOOT6"><sup>6</sup></a>
+References are made throughout to more detailed information.
+</p>
+<p>GNU <code class="code">troff</code> reads an input file prepared by the user and outputs a
+formatted document suitable for publication or framing. The input
+consists of text, or words to be printed, and embedded commands
+(<i class="slanted">requests</i> and <i class="slanted">escape sequences</i>), which tell GNU
+<code class="code">troff</code> how to format the output. See <a class="xref" href="Formatter-Instructions.html">Formatter Instructions</a>.
+</p>
+<p>The word <i class="slanted">argument</i> is used in this chapter to mean a word or
+number that appears on the same line as a request, and which modifies
+the meaning of that request. For example, the request
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.sp
+</pre></div></div>
+
+<p>spaces one line, but
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.sp 4
+</pre></div></div>
+
+<p>spaces four lines. The number&nbsp;4 is an argument to the <code class="code">sp</code>
+request, which says to space four lines instead of one. Arguments are
+separated from the request and from each other by spaces (<em class="emph">not</em>
+tabs). See <a class="xref" href="Invoking-Requests.html">Invoking Requests</a>.
+</p>
+<p>The primary function of GNU <code class="code">troff</code> is to collect words from input
+lines, fill output lines with those words, adjust the line to the
+right-hand margin by widening spaces, and output the result. For
+example, the input:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Now is the time
+for all good men
+to come to the aid
+of their party.
+Four score and seven
+years ago, etc.
+</pre></div></div>
+
+<p>is read, packed onto output lines, and justified to produce:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; Now is the time for all good men to come to the aid of
+ &rArr; their party. Four score and seven years ago, etc.
+</pre></div></div>
+
+<p>Sometimes a new output line should be started even though the current
+line is not yet full&mdash;for example, at the end of a paragraph. To do
+this it is possible to force a <i class="slanted">break</i>, starting a new output
+line. Some requests cause a break automatically, as do (normally) blank
+input lines and input lines beginning with a space or tab.
+</p>
+<p>Not all input lines are <i class="slanted">text lines</i>&mdash;words to be formatted.
+Some are <i class="slanted">control lines</i> that tell a macro package (or GNU
+<code class="code">troff</code> directly) how to format the text. Control lines start with
+a dot (&lsquo;<samp class="samp">.</samp>&rsquo;) or an apostrophe (&lsquo;<samp class="samp">'</samp>&rsquo;) as the first character, and
+can be followed by a <i class="slanted">macro call</i>.
+</p>
+<p>The formatter also does more complex things, such as automatically
+numbering pages, skipping over page boundaries, putting footnotes in the
+correct place, and so forth.
+</p>
+<p>Here are a few hints for preparing text for input to GNU <code class="code">troff</code>.
+</p>
+<ul class="itemize mark-bullet">
+<li>First, keep the input lines short. Short input lines are easier to
+edit, and GNU <code class="code">troff</code> packs words onto longer lines anyhow.
+
+</li><li>In keeping with this, it is helpful to begin a new line after every
+comma or phrase, since common corrections are to add or delete sentences
+or phrases.
+
+</li><li>End each sentence with two spaces&mdash;or better, start each sentence on a
+new line. GNU <code class="code">troff</code> recognizes characters that usually end a
+sentence, and inserts inter-sentence space accordingly.
+
+</li><li>Do not hyphenate words at the end of lines&mdash;GNU <code class="code">troff</code> is smart
+enough to hyphenate words as needed, but is not smart enough to take
+hyphens out and join a word back together. Also, words such as
+&ldquo;mother-in-law&rdquo; should not be broken over a line, since then a space
+can occur where not wanted, such as &ldquo;<span class="w-nolinebreak-text">mother-</span>&nbsp;in<!-- /@w -->-law&rdquo;.
+</li></ul>
+
+<p>We offer further advice in <a class="ref" href="Input-Conventions.html">Input Conventions</a>.
+</p>
+<a class="index-entry-id" id="index-vertical-spacing-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-spacing_002c-vertical-_0028introduction_0029"></a>
+<p>GNU <code class="code">troff</code> permits alteration of the distance between lines of
+text. This is termed <i class="slanted">vertical spacing</i> and is expressed in the
+same units as the type size&mdash;the point. The default is 10-point type
+on 12-point spacing. To get <i class="slanted">double-spaced</i> text you would set
+the vertical spacing to 24 points. Some, but not all, macro packages
+expose a macro or register to configure the vertical spacing.
+</p>
+<p>A number of requests allow you to change the way the output is arranged
+on the page, sometimes called the <i class="slanted">layout</i> of the output page.
+Most macro packages don&rsquo;t supply macros for performing these (at least
+not without performing other actions besides), as they are such basic
+operations. The macro packages for writing man pages, <samp class="file">man</samp> and
+<samp class="file">mdoc</samp>, don&rsquo;t encourage explicit use of these requests at all.
+</p>
+<a class="index-entry-id" id="index-spacing-_0028introduction_0029"></a>
+<p>The request &lsquo;<samp class="samp">.sp&nbsp;<var class="var">N</var></samp>&rsquo;<!-- /@w --> leaves <var class="var">N</var>&nbsp;lines of blank
+space. <var class="var">N</var>&nbsp;can be omitted (skipping a single line) or can
+be of the form <var class="var">N</var>i (for <var class="var">N</var>&nbsp;inches) or <var class="var">N</var>c (for
+<var class="var">N</var>&nbsp;centimeters). For example, the input:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.sp 1.5i
+My thoughts on the subject
+.sp
+</pre></div></div>
+
+<p>leaves one and a half inches of space, followed by the line &ldquo;My
+thoughts on the subject&rdquo;, followed by a single blank line (more
+measurement units are available; see <a class="ref" href="Measurements.html">Measurements</a>).
+</p>
+<p>If you seek precision in spacing, be advised when using a macro package
+that it might not honor <code class="code">sp</code> requests as you expect; it can use a
+formatter feature called <i class="slanted">no-space mode</i> to prevent excess space
+from accumulating. Macro packages typically offer registers to control
+spacing between paragraphs, before section headings, and around displays
+(discussed below); use these facilities preferentially.
+See <a class="xref" href="Manipulating-Spacing.html">Manipulating Spacing</a>.
+</p>
+<a class="index-entry-id" id="index-centering-lines-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-lines_002c-centering-_0028introduction_0029"></a>
+<p>Text lines can be centered by using the <code class="code">ce</code> request. The line
+after <code class="code">ce</code> is centered (horizontally) on the page. To center more
+than one line, use &lsquo;<samp class="samp">.ce&nbsp;<var class="var">N</var></samp>&rsquo;<!-- /@w --> (where <var class="var">N</var> is the number
+of lines to center), followed by the <var class="var">N</var>&nbsp;lines. To center many
+lines without counting them, type:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ce 1000
+lines to center
+.ce 0
+</pre></div></div>
+
+<p>The &lsquo;<samp class="samp">.ce&nbsp;0</samp>&rsquo;<!-- /@w --> request tells GNU <code class="code">troff</code> to center zero more
+lines, in other words, stop centering.
+</p>
+<a class="index-entry-id" id="index-right_002daligning-lines-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-lines_002c-right_002daligning-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-right_002djustifying-lines-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-lines_002c-right_002djustifying-_0028introduction_0029"></a>
+<p>GNU <code class="code">troff</code> also offers the <code class="code">rj</code> request for right-aligning
+text. It works analogously to <code class="code">ce</code> and is convenient for setting
+epigraphs.
+</p>
+<a class="index-entry-id" id="index-page-break-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-break_002c-page-_0028introduction_0029"></a>
+<p>The <code class="code">bp</code> request starts a new page; this necessarily implies an
+ordinary (line) break.
+</p>
+<a class="index-entry-id" id="index-break-_0028introduction_0029"></a>
+<a class="index-entry-id" id="index-line-break-_0028introduction_0029"></a>
+<p>All of these requests cause a break; that is, they always start a new
+line. To start a new line without performing any other action, use
+<code class="code">br</code>. If you invoke them with the apostrophe &lsquo;<samp class="samp">'</samp>&rsquo;, the
+<i class="slanted">no-break control character</i>, the (initial) break they normally
+perform is suppressed. &lsquo;<samp class="samp">'br</samp>&rsquo; does nothing.
+</p>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Common-Features.html">Common Features</a>, Previous: <a href="Tutorial-for-Macro-Users.html">Tutorial for Macro Users</a>, Up: <a href="Tutorial-for-Macro-Users.html">Tutorial for Macro Users</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Blank-Line-Traps.html b/doc/groff.html.node/Blank-Line-Traps.html
new file mode 100644
index 0000000..b7b0ae4
--- /dev/null
+++ b/doc/groff.html.node/Blank-Line-Traps.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Blank Line Traps (The GNU Troff Manual)</title>
+
+<meta name="description" content="Blank Line Traps (The GNU Troff Manual)">
+<meta name="keywords" content="Blank Line Traps (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Traps.html" rel="up" title="Traps">
+<link href="Leading-Space-Traps.html" rel="next" title="Leading Space Traps">
+<link href="Input-Line-Traps.html" rel="prev" title="Input Line Traps">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Blank-Line-Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="Leading-Space-Traps.html" accesskey="n" rel="next">Leading Space Traps</a>, Previous: <a href="Input-Line-Traps.html" accesskey="p" rel="prev">Input Line Traps</a>, Up: <a href="Traps.html" accesskey="u" rel="up">Traps</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Blank-Line-Traps-1">5.28.3 Blank Line Traps</h4>
+<a class="index-entry-id" id="index-blank-line-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-blank-line"></a>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eblm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.blm</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eblm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-blm"></a>
+<a class="index-entry-id" id="index-blank-line-macro-_0028blm_0029-2"></a>
+<p>Set a blank line trap, calling the macro <var class="var">name</var> when GNU
+<code class="code">troff</code> encounters a blank line in an input file, instead of the
+usual behavior (see <a class="pxref" href="Breaking.html">Breaking</a>). A line consisting only of spaces is
+also treated as blank and subject to this trap. If no argument is
+supplied, the default blank line behavior is (re-)established.
+</p></dd></dl>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Breaking.html b/doc/groff.html.node/Breaking.html
new file mode 100644
index 0000000..a883e07
--- /dev/null
+++ b/doc/groff.html.node/Breaking.html
@@ -0,0 +1,119 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Breaking (The GNU Troff Manual)</title>
+
+<meta name="description" content="Breaking (The GNU Troff Manual)">
+<meta name="keywords" content="Breaking (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Text.html" rel="up" title="Text">
+<link href="Adjustment.html" rel="next" title="Adjustment">
+<link href="Hyphenation.html" rel="prev" title="Hyphenation">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Breaking">
+<div class="nav-panel">
+<p>
+Next: <a href="Adjustment.html" accesskey="n" rel="next">Adjustment</a>, Previous: <a href="Hyphenation.html" accesskey="p" rel="prev">Hyphenation</a>, Up: <a href="Text.html" accesskey="u" rel="up">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Breaking-1">5.1.4 Breaking</h4>
+<a class="index-entry-id" id="index-break"></a>
+<a class="index-entry-id" id="index-implicit-line-break"></a>
+<a class="index-entry-id" id="index-line-break_002c-output"></a>
+<a class="index-entry-id" id="index-output-line-break"></a>
+
+<p>Once an output line is full, the next word (or remainder of a hyphenated
+one) is placed on a different output line; this is called a <em class="dfn">break</em>.
+In this manual and in <code class="code">roff</code> discussions generally, a &ldquo;break&rdquo; if
+not further qualified always refers to the termination of an output
+line. When the formatter is filling text, it introduces breaks
+automatically to keep output lines from exceeding the configured line
+length. After an automatic break, GNU <code class="code">troff</code> adjusts the line if
+applicable (see below), and then resumes collecting and filling text on
+the next output line.
+</p>
+<p>Sometimes, a line cannot be broken automatically. This usually does
+not happen with natural language text unless the output line length has
+been manipulated to be extremely short, but it can with specialized
+text like program source code. We can use <code class="code">perl</code> at the shell
+prompt to contrive an example of failure to break the line. We also
+employ the <samp class="option">-z</samp> option to suppress normal output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ perl -e 'print &quot;#&quot; x 80, &quot;\n&quot;;' | nroff -z
+ error&rarr; warning: cannot break line
+</pre></div></div>
+
+<p>The remedy for these cases is to tell GNU <code class="code">troff</code> where the line
+may be broken without hyphens. This is done with the non-printing break
+point escape sequence &lsquo;<samp class="samp">\:</samp>&rsquo;; see <a class="ref" href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a>.
+</p>
+<a class="index-entry-id" id="index-blank-line"></a>
+<a class="index-entry-id" id="index-empty-line"></a>
+<a class="index-entry-id" id="index-line_002c-blank"></a>
+<a class="index-entry-id" id="index-blank-line-macro-_0028blm_0029"></a>
+<p>What if the document author wants to stop filling lines temporarily, for
+instance to start a new paragraph? There are several solutions. A
+blank input line not only causes a break, but by default it also outputs
+a one-line vertical space (effectively a blank output line). This
+behavior can be modified; see <a class="ref" href="Blank-Line-Traps.html">Blank Line Traps</a>. Macro packages
+may discourage or disable the blank line method of paragraphing in favor
+of their own macros.
+</p>
+<a class="index-entry-id" id="index-leading-spaces"></a>
+<a class="index-entry-id" id="index-spaces_002c-leading-and-trailing"></a>
+<a class="index-entry-id" id="index-trailing-spaces-on-text-lines"></a>
+<a class="index-entry-id" id="index-leading-space-macro-_0028lsm_0029"></a>
+<p>A line that begins with one or more spaces causes a break. The spaces
+are output at the beginning of the next line without being
+<em class="emph">adjusted</em> (see below); however, this behavior can be modified
+(see <a class="pxref" href="Leading-Space-Traps.html">Leading Space Traps</a>). Again, macro packages may provide other
+methods of producing indented paragraphs. Trailing spaces on text lines
+are discarded.<a class="footnote" id="DOCF23" href="groff.html_fot.html#FOOT23"><sup>23</sup></a>
+</p>
+<p>What if the file ends before enough words have been collected to fill an
+output line? Or the output line is exactly full but not yet broken, and
+there is no more input? GNU <code class="code">troff</code> interprets the end of input as
+a break. Certain requests also cause breaks, implicitly or explicitly.
+This is discussed in <a class="ref" href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a>.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Adjustment.html">Adjustment</a>, Previous: <a href="Hyphenation.html">Hyphenation</a>, Up: <a href="Text.html">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Built_002din-Registers.html b/doc/groff.html.node/Built_002din-Registers.html
new file mode 100644
index 0000000..a1b0530
--- /dev/null
+++ b/doc/groff.html.node/Built_002din-Registers.html
@@ -0,0 +1,253 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Built-in Registers (The GNU Troff Manual)</title>
+
+<meta name="description" content="Built-in Registers (The GNU Troff Manual)">
+<meta name="keywords" content="Built-in Registers (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Registers.html" rel="up" title="Registers">
+<link href="Assigning-Register-Formats.html" rel="prev" title="Assigning Register Formats">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Built_002din-Registers">
+<div class="nav-panel">
+<p>
+Previous: <a href="Assigning-Register-Formats.html" accesskey="p" rel="prev">Assigning Register Formats</a>, Up: <a href="Registers.html" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Built_002din-Registers-1">5.8.5 Built-in Registers</h4>
+<a class="index-entry-id" id="index-built_002din-registers"></a>
+<a class="index-entry-id" id="index-registers_002c-built_002din"></a>
+
+<p>Predefined registers whose identifiers start with a dot are read-only.
+Many are Boolean-valued, interpolating a true or false value testable
+with the <code class="code">if</code>, <code class="code">ie</code>, or <code class="code">while</code> requests. Some read-only
+registers are string-valued, meaning that they interpolate text.
+</p>
+<a class="index-entry-id" id="index-removing-a-built_002din-register"></a>
+<a class="index-entry-id" id="index-register_002c-built_002din_002c-removing"></a>
+<a class="index-entry-id" id="index-built_002din-register_002c-removing"></a>
+<p><strong class="strong">Caution:</strong> Built-in registers are subject to removal like
+others; once removed, they can be recreated only as normal writable
+registers and will not reflect formatter state.
+</p>
+<p>A register name (without the dot) is often associated with a request of
+the same name. A complete listing of all built-in registers can be
+found in <a class="ref" href="Register-Index.html">Register Index</a>.
+</p>
+<p>We present here a few built-in registers that are not described
+elsewhere in this manual; they have to do with invariant properties of
+GNU <code class="code">troff</code>, or obtain information about the formatter&rsquo;s
+command-line options, processing progress, or the operating environment.
+</p>
+<dl class="table">
+<dt id='index-_002eA'><span><code class="code">\n[.A]</code><a class="copiable-link" href='#index-_002eA'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-approximation-output-register-_0028_002eA_0029"></a>
+<a class="index-entry-id" id="index-plain-text-approximation-output-register-_0028_002eA_0029-1"></a>
+<p>Approximate output is being formatted (Boolean-valued); see
+<code class="command">groff</code> <samp class="option">-a</samp> option (<a class="ref" href="Groff-Options.html">Options</a>).
+</p>
+</dd>
+<dt id='index-c_002e'><span><code class="code">\n[.c]</code><a class="copiable-link" href='#index-c_002e'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ec"></a>
+</dd>
+<dt><code class="code">\n[c.]</code></dt>
+<dd><a class="index-entry-id" id="index-input-line-number-register-_0028_002ec_002c-c_002e_0029"></a>
+<a class="index-entry-id" id="index-line-number_002c-input_002c-register-_0028_002ec_002c-c_002e_0029"></a>
+<p>Input line number. &lsquo;<samp class="samp">c.</samp>&rsquo; is a writable synonym,
+affecting subsequent interpolations of both &lsquo;<samp class="samp">.c</samp>&rsquo; and &lsquo;<samp class="samp">c.</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-current-input-file-name-register-_0028_002eF_0029'><span><code class="code">\n[.F]</code><a class="copiable-link" href='#index-current-input-file-name-register-_0028_002eF_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-input-file-name_002c-current_002c-register-_0028_002eF_0029"></a>
+<a class="index-entry-id" id="index-_002eF"></a>
+<p>Name of input file (string-valued).
+</p>
+</dd>
+<dt id='index-_002eg'><span><code class="code">\n[.g]</code><a class="copiable-link" href='#index-_002eg'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-GNU-troff_002c-identification-register-_0028_002eg_0029"></a>
+<a class="index-entry-id" id="index-GNU_002dspecific-register-_0028_002eg_0029"></a>
+<p>Always true in GNU <code class="code">troff</code> (Boolean-valued). Documents can use
+this to ask the formatter if it claims <code class="code">groff</code> compatibility.
+</p>
+</dd>
+<dt id='index-_002eP'><span><code class="code">\n[.P]</code><a class="copiable-link" href='#index-_002eP'> &para;</a></span></dt>
+<dd><p>Output page selection status (Boolean-valued); see <code class="command">groff</code>
+<samp class="option">-o</samp> option (<a class="ref" href="Groff-Options.html">Options</a>).
+</p>
+</dd>
+<dt id='index-number-of-registers-register-_0028_002eR_0029'><span><code class="code">\n[.R]</code><a class="copiable-link" href='#index-number-of-registers-register-_0028_002eR_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-registers_002c-number-of_002c-register-_0028_002eR_0029"></a>
+<a class="index-entry-id" id="index-_002eR-2"></a>
+<p>Count of available unused registers; always 10,000 in GNU
+<code class="code">troff</code>.<a class="footnote" id="DOCF52" href="groff.html_fot.html#FOOT52"><sup>52</sup></a>
+</p>
+</dd>
+<dt id='index-_002eT-2'><span><code class="code">\n[.T]</code><a class="copiable-link" href='#index-_002eT-2'> &para;</a></span></dt>
+<dd><p>Indicator of output device selection (Boolean-valued); see
+<code class="command">groff</code> <samp class="option">-T</samp> option (<a class="ref" href="Groff-Options.html">Options</a>).
+</p>
+</dd>
+<dt id='index-safer-mode-2'><span><code class="code">\n[.U]</code><a class="copiable-link" href='#index-safer-mode-2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-mode_002c-safer-2"></a>
+<a class="index-entry-id" id="index-unsafe-mode-2"></a>
+<a class="index-entry-id" id="index-mode_002c-unsafe-2"></a>
+<a class="index-entry-id" id="index-_002eU"></a>
+<p>Unsafe mode enablement status (Boolean-valued); see <code class="command">groff</code>
+<samp class="option">-U</samp> option (<a class="ref" href="Groff-Options.html">Options</a>).
+</p>
+</dd>
+<dt id='index-_002ex'><span><code class="code">\n[.x]</code><a class="copiable-link" href='#index-_002ex'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-major-version-number-register-_0028_002ex_0029"></a>
+<a class="index-entry-id" id="index-version-number_002c-major_002c-register-_0028_002ex_0029"></a>
+<p>Major version number of the running GNU <code class="code">troff</code> formatter. For
+example, if the version number is 1.23.0, then <code class="code">.x</code>
+contains&nbsp;&lsquo;<samp class="samp">1</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-_002ey'><span><code class="code">\n[.y]</code><a class="copiable-link" href='#index-_002ey'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-minor-version-number-register-_0028_002ey_0029"></a>
+<a class="index-entry-id" id="index-version-number_002c-minor_002c-register-_0028_002ey_0029"></a>
+<p>Minor version number of the running GNU <code class="code">troff</code> formatter. For
+example, if the version number is 1.23.0, then <code class="code">.y</code>
+contains&nbsp;&lsquo;<samp class="samp">23</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-_002eY'><span><code class="code">\n[.Y]</code><a class="copiable-link" href='#index-_002eY'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-revision-number-register-_0028_002eY_0029"></a>
+<p>Revision number of the running GNU <code class="code">troff</code> formatter. For example,
+if the version number is 1.23.0, then <code class="code">.Y</code> contains&nbsp;&lsquo;<samp class="samp">0</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-_0024_0024'><span><code class="code">\n[$$]</code><a class="copiable-link" href='#index-_0024_0024'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-process-ID-of-GNU-troff-register-_0028_0024_0024_0029"></a>
+<a class="index-entry-id" id="index-PID-of-GNU-troff-register-_0028_0024_0024_0029"></a>
+<a class="index-entry-id" id="index-GNU-troff_002c-process-ID-register-_0028_0024_0024_0029"></a>
+<a class="index-entry-id" id="index-GNU-troff_002c-PID-register-_0028_0024_0024_0029"></a>
+<p>Process identifier (PID) of the GNU <code class="code">troff</code> program in its
+operating environment.
+</p></dd>
+</dl>
+
+<p>Date- and time-related registers are set per the local time as
+determined by <cite class="cite">localtime<span class="r">(3)</span></cite> when the formatter launches. This
+initialization can be overridden by <code class="env">SOURCE_DATE_EPOCH</code> and
+<code class="env">TZ</code>; see <a class="ref" href="Environment.html">Environment</a>.
+</p>
+<dl class="table">
+<dt id='index-seconds_002c-current-time-_0028seconds_0029'><span><code class="code">\n[seconds]</code><a class="copiable-link" href='#index-seconds_002c-current-time-_0028seconds_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-time_002c-current_002c-seconds-_0028seconds_0029"></a>
+<a class="index-entry-id" id="index-current-time_002c-seconds-_0028seconds_0029"></a>
+<a class="index-entry-id" id="index-seconds"></a>
+<p>Count of seconds elapsed in the minute (0&ndash;60). </p>
+</dd>
+<dt id='index-minutes_002c-current-time-_0028minutes_0029'><span><code class="code">\n[minutes]</code><a class="copiable-link" href='#index-minutes_002c-current-time-_0028minutes_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-time_002c-current_002c-minutes-_0028minutes_0029"></a>
+<a class="index-entry-id" id="index-current-time_002c-minutes-_0028minutes_0029"></a>
+<a class="index-entry-id" id="index-minutes"></a>
+<p>Count of minutes elapsed in the hour (0&ndash;59).
+</p>
+</dd>
+<dt id='index-hours_002c-current-time-_0028hours_0029'><span><code class="code">\n[hours]</code><a class="copiable-link" href='#index-hours_002c-current-time-_0028hours_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-time_002c-current_002c-hours-_0028hours_0029"></a>
+<a class="index-entry-id" id="index-current-time_002c-hours-_0028hours_0029"></a>
+<a class="index-entry-id" id="index-hours"></a>
+<p>Count of hours elapsed since midnight (0&ndash;23).
+</p>
+</dd>
+<dt id='index-day-of-the-week-register-_0028dw_0029'><span><code class="code">\n[dw]</code><a class="copiable-link" href='#index-day-of-the-week-register-_0028dw_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-date_002c-day-of-the-week-register-_0028dw_0029"></a>
+<a class="index-entry-id" id="index-dw"></a>
+<p>Day of the week (1&ndash;7; 1 is Sunday).
+</p>
+</dd>
+<dt id='index-day-of-the-month-register-_0028dy_0029'><span><code class="code">\n[dy]</code><a class="copiable-link" href='#index-day-of-the-month-register-_0028dy_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-date_002c-day-of-the-month-register-_0028dy_0029"></a>
+<a class="index-entry-id" id="index-dy"></a>
+<p>Day of the month (1&ndash;31).
+</p>
+</dd>
+<dt id='index-month-of-the-year-register-_0028mo_0029'><span><code class="code">\n[mo]</code><a class="copiable-link" href='#index-month-of-the-year-register-_0028mo_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-date_002c-month-of-the-year-register-_0028mo_0029"></a>
+<a class="index-entry-id" id="index-mo"></a>
+<p>Month of the year (1&ndash;12).
+</p>
+</dd>
+<dt id='index-date_002c-year-register-_0028year_002c-yr_0029'><span><code class="code">\n[year]</code><a class="copiable-link" href='#index-date_002c-year-register-_0028year_002c-yr_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-year_002c-current_002c-register-_0028year_002c-yr_0029"></a>
+<a class="index-entry-id" id="index-year"></a>
+<p>Gregorian year.
+</p>
+<a class="index-entry-id" id="index-CSTR-_002354-errata"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-yr-register"></a>
+</dd>
+<dt id='index-yr'><span><code class="code">\n[yr]</code><a class="copiable-link" href='#index-yr'> &para;</a></span></dt>
+<dd><p>Gregorian year minus&nbsp;1900. This register is incorrectly documented
+in the <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> manual as storing the last two digits
+of the current year. That claim stopped being true in 2000. Old
+<code class="code">troff</code> input that looks like:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">'\&quot; The year number is a surprise after 1999.
+This document was formatted in 19\n(yr.
+</pre></div></div>
+
+<p>can be corrected to:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">This document was formatted in \n[year].
+</pre></div></div>
+
+<p>or, for portability across many <code class="code">roff</code> programs, to the following.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr y4 1900+\n(yr
+This document was formatted in \n(y4.
+</pre></div></div>
+</dd>
+</dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="Assigning-Register-Formats.html">Assigning Register Formats</a>, Up: <a href="Registers.html">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Calling-Macros.html b/doc/groff.html.node/Calling-Macros.html
new file mode 100644
index 0000000..1e8d81a
--- /dev/null
+++ b/doc/groff.html.node/Calling-Macros.html
@@ -0,0 +1,164 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Calling Macros (The GNU Troff Manual)</title>
+
+<meta name="description" content="Calling Macros (The GNU Troff Manual)">
+<meta name="keywords" content="Calling Macros (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Formatter-Instructions.html" rel="up" title="Formatter Instructions">
+<link href="Using-Escape-Sequences.html" rel="next" title="Using Escape Sequences">
+<link href="Invoking-Requests.html" rel="prev" title="Invoking Requests">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Calling-Macros">
+<div class="nav-panel">
+<p>
+Next: <a href="Using-Escape-Sequences.html" accesskey="n" rel="next">Using Escape Sequences</a>, Previous: <a href="Invoking-Requests.html" accesskey="p" rel="prev">Invoking Requests</a>, Up: <a href="Formatter-Instructions.html" accesskey="u" rel="up">Formatter Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Calling-Macros-1">5.6.3 Calling Macros</h4>
+<a class="index-entry-id" id="index-calling-macros"></a>
+<a class="index-entry-id" id="index-macro-arguments"></a>
+<a class="index-entry-id" id="index-arguments-to-macros"></a>
+
+<p>If a macro of the desired name does not exist when called, it is
+created, assigned an empty definition, and a warning in category
+&lsquo;<samp class="samp">mac</samp>&rsquo; is emitted. Calling an undefined macro <em class="emph">does</em> end a
+macro definition naming it as its end macro (see <a class="pxref" href="Writing-Macros.html">Writing Macros</a>).
+</p>
+<a class="index-entry-id" id="index-spaces_002c-in-a-macro-argument"></a>
+<p>To embed spaces <em class="emph">within</em> a macro argument, enclose the argument in
+neutral double quotes <code class="code">&quot;</code>. Horizontal motion escape sequences are
+sometimes a better choice for arguments to be formatted as text.
+</p>
+<p>Consider calls to a hypothetical section heading macro &lsquo;<samp class="samp">uh</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.uh The Mouse Problem
+.uh &quot;The Mouse Problem&quot;
+.uh The\~Mouse\~Problem
+.uh The\ Mouse\ Problem
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_005c_007e_002c-difference-from-_005cSP"></a>
+<a class="index-entry-id" id="index-_005cSP_002c-difference-from-_005c_007e"></a>
+<p>The first line calls <code class="code">uh</code> with three arguments: &lsquo;<samp class="samp">The</samp>&rsquo;,
+&lsquo;<samp class="samp">Mouse</samp>&rsquo;, and &lsquo;<samp class="samp">Problem</samp>&rsquo;. The remainder call the <code class="code">uh</code>
+macro with one argument, &lsquo;<samp class="samp">The Mouse Problem</samp>&rsquo;. The last solution,
+using escaped spaces, can be found in documents prepared for
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>. It can cause surprise when text is
+adjusted, because <code class="code">\<kbd class="key">SP</kbd></code> inserts a <em class="emph">fixed-width</em>,
+non-breaking space. GNU <code class="code">troff</code>&rsquo;s <code class="code">\~</code> escape sequence
+inserts an adjustable, non-breaking space.<a class="footnote" id="DOCF44" href="groff.html_fot.html#FOOT44"><sup>44</sup></a>
+</p>
+<a class="index-entry-id" id="index-_0022_002c-embedding-in-a-macro-argument"></a>
+<a class="index-entry-id" id="index-double-quote_002c-embedding-in-a-macro-argument"></a>
+<a class="index-entry-id" id="index-_005c_002c-embedding-in-a-macro-argument"></a>
+<a class="index-entry-id" id="index-backslash_002c-embedding-in-a-macro-argument"></a>
+<p>The foregoing raises the question of how to embed neutral double quotes
+or backslashes in macro arguments when <em class="emph">those</em> characters are
+desired as literals. In GNU <code class="code">troff</code>, the special character escape
+sequence <code class="code">\[rs]</code> produces a backslash and <code class="code">\[dq]</code> a neutral
+double quote.
+</p>
+<p>In GNU <code class="code">troff</code>&rsquo;s <abbr class="acronym">AT&amp;T</abbr> compatibility mode, these
+characters remain available as <code class="code">\(rs</code> and <code class="code">\(dq</code>,
+respectively. <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> did not consistently define
+these special characters,
+but its descendants can be made to support them. See <a class="xref" href="Device-and-Font-Description-Files.html">Device and Font Description Files</a>.
+</p>
+<p>If even that is not feasible, options remain. To obtain a literal
+escape character in a macro argument, you can simply type it if you
+change or disable the escape character first. See <a class="xref" href="Using-Escape-Sequences.html">Using Escape Sequences</a>. Otherwise, you must escape the escape character repeatedly
+to a context-dependent extent. See <a class="xref" href="Copy-Mode.html">Copy Mode</a>.
+</p>
+<p>For the (neutral) double quote, you have recourse to an obscure
+syntactical feature of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>. Because a double
+quote can begin a macro argument, the formatter keeps track of whether
+the current argument was started thus, and doesn&rsquo;t require a space after
+the double quote that ends it.<a class="footnote" id="DOCF45" href="groff.html_fot.html#FOOT45"><sup>45</sup></a> In
+the argument list to a macro, a double quote that <em class="emph">isn&rsquo;t</em> preceded
+by a space <em class="emph">doesn&rsquo;t</em> start a macro argument. If not preceded by a
+double quote that began an argument, this double quote becomes part of
+the argument. Furthermore, within a quoted argument, a pair of adjacent
+double quotes becomes a literal double quote.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de eq
+. tm arg1:\\$1 arg2:\\$2 arg3:\\$3
+. tm arg4:\\$4 arg5:\\$5 arg6:\\$6
+.. \&quot; 4 backslashes on the next line
+.eq a&quot; &quot;b c&quot; &quot;de&quot;f\\\\g&quot; h&quot;&quot;i &quot;j&quot;&quot;k&quot;
+ error&rarr; arg1:a&quot; arg2:b c arg3:de
+ error&rarr; arg4:f\g&quot; arg5:h&quot;&quot;i arg6:j&quot;k
+</pre></div></div>
+
+<p>Apart from the complexity of the rules, this traditional solution has
+the disadvantage that double quotes don&rsquo;t survive repeated argument
+expansion in <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> or GNU <code class="code">troff</code>&rsquo;s
+compatibility mode. This can frustrate efforts to pass such arguments
+intact through multiple macro calls.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.cp 1
+.de eq
+. tm arg1:\\$1 arg2:\\$2 arg3:\\$3
+. tm arg4:\\$4 arg5:\\$5 arg6:\\$6
+..
+.de xe
+. eq \\$1 \\$2 \\$3 \\$4 \\$5 \\$6
+.. \&quot; 8 backslashes on the next line
+.xe a&quot; &quot;b c&quot; &quot;de&quot;f\\\\\\\\g&quot; h&quot;&quot;i &quot;j&quot;&quot;k&quot;
+ error&rarr; arg1:a&quot; arg2:b arg3:c
+ error&rarr; arg4:de arg5:f\g&quot; arg6:h&quot;&quot;i
+</pre></div></div>
+
+<a class="index-entry-id" id="index-input-level"></a>
+<a class="index-entry-id" id="index-level_002c-input"></a>
+<a class="index-entry-id" id="index-interpolation-depth"></a>
+<a class="index-entry-id" id="index-depth_002c-interpolation"></a>
+<p>Outside of compatibility mode, GNU <code class="code">troff</code> doesn&rsquo;t exhibit this
+problem because it tracks the nesting depth of interpolations.
+See <a class="xref" href="Implementation-Differences.html">Implementation Differences</a>.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Using-Escape-Sequences.html">Using Escape Sequences</a>, Previous: <a href="Invoking-Requests.html">Invoking Requests</a>, Up: <a href="Formatter-Instructions.html">Formatter Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Changing-the-Type-Size.html b/doc/groff.html.node/Changing-the-Type-Size.html
new file mode 100644
index 0000000..da02d8b
--- /dev/null
+++ b/doc/groff.html.node/Changing-the-Type-Size.html
@@ -0,0 +1,159 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Changing the Type Size (The GNU Troff Manual)</title>
+
+<meta name="description" content="Changing the Type Size (The GNU Troff Manual)">
+<meta name="keywords" content="Changing the Type Size (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Manipulating-Type-Size-and-Vertical-Spacing.html" rel="up" title="Manipulating Type Size and Vertical Spacing">
+<link href="Changing-the-Vertical-Spacing.html" rel="next" title="Changing the Vertical Spacing">
+<link href="Manipulating-Type-Size-and-Vertical-Spacing.html" rel="prev" title="Manipulating Type Size and Vertical Spacing">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Changing-the-Type-Size">
+<div class="nav-panel">
+<p>
+Next: <a href="Changing-the-Vertical-Spacing.html" accesskey="n" rel="next">Changing the Vertical Spacing</a>, Previous: <a href="Manipulating-Type-Size-and-Vertical-Spacing.html" accesskey="p" rel="prev">Manipulating Type Size and Vertical Spacing</a>, Up: <a href="Manipulating-Type-Size-and-Vertical-Spacing.html" accesskey="u" rel="up">Manipulating Type Size and Vertical Spacing</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Changing-the-Type-Size-1">5.20.1 Changing the Type Size</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eps"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ps</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">size</i></span>]</var><a class="copiable-link" href='#index-_002eps'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ps"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eps-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ps</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">size</i></span></var><a class="copiable-link" href='#index-_002eps-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002eps-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ps</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">size</i></span></var><a class="copiable-link" href='#index-_002eps-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cssize"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\s</code><span class="r"><i class="slanted">size</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cssize'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cs"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002es_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.s]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002es_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002es"></a>
+<a class="index-entry-id" id="index-changing-type-sizes-_0028ps_002c-_005cs_0029"></a>
+<a class="index-entry-id" id="index-type-sizes_002c-changing-_0028ps_002c-_005cs_0029"></a>
+<a class="index-entry-id" id="index-point-sizes_002c-changing-_0028ps_002c-_005cs_0029"></a>
+<p>Use the <code class="code">ps</code> request or the <code class="code">\s</code> escape sequence to change
+(increase, decrease) the type size (in scaled points). Specify
+<var class="var">size</var> as either an absolute type size, or as a relative change from
+the current size. <code class="code">ps</code> with no argument restores the previous
+size. The <code class="code">ps</code> request&rsquo;s default scaling unit is &lsquo;<samp class="samp">z</samp>&rsquo;. The
+requested size is rounded to the nearest valid size (with ties rounding
+down) within the limits supported by the device. If the requested size
+is non-positive, it is treated as 1<span class="dmn">u</span>.
+</p>
+<a class="index-entry-id" id="index-CSTR-_002354-errata-4"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-ps-request"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-_005cs-escape-sequence"></a>
+<p>Type size alteration is incorrectly documented in the <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> manual, which claims &ldquo;if [the requested size] is invalid,
+the next larger valid size will result, with a maximum of
+36&rdquo;.<a class="footnote" id="DOCF84" href="groff.html_fot.html#FOOT84"><sup>84</sup></a>
+</p>
+<a class="index-entry-id" id="index-type-size-registers-_0028_002es_002c-_002eps_0029"></a>
+<a class="index-entry-id" id="index-point-size-registers-_0028_002es_002c-_002eps_0029"></a>
+<p>The read-only string-valued register <code class="code">.s</code> interpolates the type
+size in points as a decimal fraction; it is associated with the
+environment (see <a class="pxref" href="Environments.html">Environments</a>). To obtain the type size in scaled
+points, interpolate the <code class="code">.ps</code> register instead (see <a class="pxref" href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a>).
+</p>
+<p>The <code class="code">\s</code> escape sequence supports a variety of syntax forms.
+</p>
+<dl class="table">
+<dt><code class="code">\s<var class="var">n</var></code></dt>
+<dd><p>Set the type size to <var class="var">n</var>&nbsp;points. <var class="var">n</var>&nbsp;must be a single
+digit. If <var class="var">n</var>&nbsp;is 0, restore the previous size.
+</p>
+</dd>
+<dt><code class="code">\s+<var class="var">n</var></code></dt>
+<dt><code class="code">\s-<var class="var">n</var></code></dt>
+<dd><p>Increase or decrease the type size by <var class="var">n</var>&nbsp;points.
+<var class="var">n</var>&nbsp;must be exactly one digit.
+</p>
+</dd>
+<dt><code class="code">\s(<var class="var">nn</var></code></dt>
+<dd><p>Set the type size to <var class="var">nn</var>&nbsp;points. <var class="var">nn</var> must be exactly two
+digits.
+</p>
+</dd>
+<dt><code class="code">\s+(<var class="var">nn</var></code></dt>
+<dt><code class="code">\s-(<var class="var">nn</var></code></dt>
+<dt><code class="code">\s(+<var class="var">nn</var></code></dt>
+<dt><code class="code">\s(-<var class="var">nn</var></code></dt>
+<dd><p>Alter the type size in points by the two-digit value <var class="var">nn</var>.
+</p></dd>
+</dl>
+
+<p>See <a class="xref" href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a>, for further syntactical forms of the
+<code class="code">\s</code> escape sequence that additionally accept decimal fractions.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">snap, snap,
+.ps +2
+grin, grin,
+.ps +2
+wink, wink, \s+2nudge, nudge,\s+8 say no more!
+.ps 10
+</pre></div></div>
+</dd></dl>
+
+<p>The <code class="code">\s</code> escape sequence affects the environment immediately and
+doesn&rsquo;t produce an input token. Consequently, it can be used in
+requests like <code class="code">mc</code>, which expects a single character as an
+argument, to change the type size on the fly.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.mc \s[20]x\s[0]
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002esizes"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sizes</code></strong> <var class="def-var-arguments">s1 s2 &hellip; sn [<code class="t">0</code>]</var><a class="copiable-link" href='#index-_002esizes'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-sizes-1"></a>
+<p>The <samp class="file">DESC</samp> file specifies which type sizes are allowed by the
+output device; see <a class="ref" href="DESC-File-Format.html"><samp class="file">DESC</samp> File Format</a>. Use the <code class="code">sizes</code> request
+to change this set of permissible sizes. Arguments are in scaled
+points; see <a class="ref" href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a>. Each can be a single
+type size (such as &lsquo;<samp class="samp">12000</samp>&rsquo;), or a range of sizes (such as
+&lsquo;<samp class="samp">4000-72000</samp>&rsquo;). You can optionally end the list with a &lsquo;<samp class="samp">0</samp>&rsquo;.
+</p></dd></dl>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a>, Previous: <a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a>, Up: <a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Changing-the-Vertical-Spacing.html b/doc/groff.html.node/Changing-the-Vertical-Spacing.html
new file mode 100644
index 0000000..cca1634
--- /dev/null
+++ b/doc/groff.html.node/Changing-the-Vertical-Spacing.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Changing the Vertical Spacing (The GNU Troff Manual)</title>
+
+<meta name="description" content="Changing the Vertical Spacing (The GNU Troff Manual)">
+<meta name="keywords" content="Changing the Vertical Spacing (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Manipulating-Type-Size-and-Vertical-Spacing.html" rel="up" title="Manipulating Type Size and Vertical Spacing">
+<link href="Using-Fractional-Type-Sizes.html" rel="next" title="Using Fractional Type Sizes">
+<link href="Changing-the-Type-Size.html" rel="prev" title="Changing the Type Size">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Changing-the-Vertical-Spacing">
+<div class="nav-panel">
+<p>
+Next: <a href="Using-Fractional-Type-Sizes.html" accesskey="n" rel="next">Using Fractional Type Sizes</a>, Previous: <a href="Changing-the-Type-Size.html" accesskey="p" rel="prev">Changing the Type Size</a>, Up: <a href="Manipulating-Type-Size-and-Vertical-Spacing.html" accesskey="u" rel="up">Manipulating Type Size and Vertical Spacing</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Changing-the-Vertical-Spacing-1">5.20.2 Changing the Vertical Spacing</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002evs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.vs</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">space</i></span>]</var><a class="copiable-link" href='#index-_002evs'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-vs"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002evs-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.vs</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">space</i></span></var><a class="copiable-link" href='#index-_002evs-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002evs-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.vs</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">space</i></span></var><a class="copiable-link" href='#index-_002evs-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ev_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.v]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ev_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ev"></a>
+<a class="index-entry-id" id="index-changing-vertical-line-spacing-_0028vs_0029"></a>
+<a class="index-entry-id" id="index-vertical-line-spacing_002c-changing-_0028vs_0029"></a>
+<a class="index-entry-id" id="index-vertical-line-spacing-register-_0028_002ev_0029"></a>
+<p>Set the vertical spacing to, or alter it by, <var class="var">space</var>. The default
+scaling unit is &lsquo;<samp class="samp">p</samp>&rsquo;. If <code class="code">vs</code> is called without an argument,
+the vertical spacing is reset to the previous value before the last call
+to <code class="code">vs</code>.
+<a class="index-entry-id" id="index-_002eV-register_002c-and-vs"></a>
+GNU <code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">range</samp>&rsquo; if <var class="var">space</var>
+is negative; the vertical spacing is then set to the smallest possible
+positive value, the vertical motion quantum (as found in the <code class="code">.V</code>
+register).
+</p>
+<p>&lsquo;<samp class="samp">.vs&nbsp;0</samp>&rsquo;<!-- /@w --> isn&rsquo;t saved in a diversion since it doesn&rsquo;t result in
+a vertical motion. You must explicitly issue this request before
+interpolating the diversion.
+</p>
+<p>The read-only register <code class="code">.v</code> contains the vertical spacing; it is
+associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-vertical-line-spacing_002c-effective-value"></a>
+<p>When a break occurs, GNU <code class="code">troff</code> performs the following procedure.
+</p>
+<ul class="itemize mark-bullet">
+<li><a class="index-entry-id" id="index-extra-pre_002dvertical-line-space-_0028_005cx_0029"></a>
+<a class="index-entry-id" id="index-line-space_002c-extra-pre_002dvertical-_0028_005cx_0029"></a>
+Move the drawing position vertically by the <em class="dfn">extra pre-vertical line
+space</em>, the minimum of all negative <code class="code">\x</code> escape sequence arguments
+in the pending output line.
+
+</li><li>Move the drawing position vertically by the vertical line spacing.
+
+</li><li>Write out the pending output line.
+
+</li><li><a class="index-entry-id" id="index-extra-post_002dvertical-line-space-_0028_005cx_0029"></a>
+<a class="index-entry-id" id="index-line-space_002c-extra-post_002dvertical-_0028_005cx_0029"></a>
+Move the drawing position vertically by the <em class="dfn">extra post-vertical line
+space</em>, the maximum of all positive <code class="code">\x</code> escape sequence arguments
+in the line that has just been output.
+
+</li><li><a class="index-entry-id" id="index-post_002dvertical-line-spacing"></a>
+<a class="index-entry-id" id="index-line-spacing_002c-post_002dvertical-_0028pvs_0029"></a>
+Move the drawing position vertically by the <em class="dfn">post-vertical line
+spacing</em> (see below).
+</li></ul>
+
+<a class="index-entry-id" id="index-double_002dspacing-_0028vs_002c-pvs_0029"></a>
+<p>Prefer <code class="code">vs</code> or <code class="code">pvs</code> over <code class="code">ls</code> to produce double-spaced
+documents. <code class="code">vs</code> and <code class="code">pvs</code> have finer granularity than
+<code class="code">ls</code>; moreover, some preprocessors assume single spacing.
+See <a class="xref" href="Manipulating-Spacing.html">Manipulating Spacing</a>, regarding the <code class="code">\x</code> escape sequence and
+the <code class="code">ls</code> request.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epvs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pvs</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">space</i></span>]</var><a class="copiable-link" href='#index-_002epvs'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pvs"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002epvs-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pvs</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">space</i></span></var><a class="copiable-link" href='#index-_002epvs-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002epvs-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pvs</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">space</i></span></var><a class="copiable-link" href='#index-_002epvs-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002epvs_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.pvs]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002epvs_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002epvs-3"></a>
+<a class="index-entry-id" id="index-ls-request_002c-alternative-to-_0028pvs_0029"></a>
+<a class="index-entry-id" id="index-post_002dvertical-line-spacing_002c-changing-_0028pvs_0029"></a>
+<a class="index-entry-id" id="index-post_002dvertical-line-spacing-register-_0028_002epvs_0029"></a>
+<p>Set the post-vertical spacing to, or alter it by, <var class="var">space</var>. The
+default scaling unit is &lsquo;<samp class="samp">p</samp>&rsquo;. If <code class="code">pvs</code> is called without an
+argument, the post-vertical spacing is reset to the previous value
+before the last call to <code class="code">pvs</code>. GNU <code class="code">troff</code> emits a warning in
+category &lsquo;<samp class="samp">range</samp>&rsquo; if <var class="var">space</var> is negative; the post-vertical
+spacing is then set to zero.
+</p>
+<p>The read-only register <code class="code">.pvs</code> contains the post-vertical spacing;
+it is associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p></dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a>, Previous: <a href="Changing-the-Type-Size.html">Changing the Type Size</a>, Up: <a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Character-Classes.html b/doc/groff.html.node/Character-Classes.html
new file mode 100644
index 0000000..6e315dd
--- /dev/null
+++ b/doc/groff.html.node/Character-Classes.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Character Classes (The GNU Troff Manual)</title>
+
+<meta name="description" content="Character Classes (The GNU Troff Manual)">
+<meta name="keywords" content="Character Classes (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Using-Fonts.html" rel="up" title="Using Fonts">
+<link href="Special-Fonts.html" rel="next" title="Special Fonts">
+<link href="Using-Symbols.html" rel="prev" title="Using Symbols">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Character-Classes">
+<div class="nav-panel">
+<p>
+Next: <a href="Special-Fonts.html" accesskey="n" rel="next">Special Fonts</a>, Previous: <a href="Using-Symbols.html" accesskey="p" rel="prev">Using Symbols</a>, Up: <a href="Using-Fonts.html" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Character-Classes-1">5.19.5 Character Classes</h4>
+<a class="index-entry-id" id="index-character-classes"></a>
+<a class="index-entry-id" id="index-classes_002c-character"></a>
+
+<p>Classes are particularly useful for East Asian languages such as
+Chinese, Japanese, and Korean, where the number of needed characters is
+much larger than in European languages, and where large sets of
+characters share the same properties.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eclass"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.class</code></strong> <var class="def-var-arguments">name c1 c2 &hellip;</var><a class="copiable-link" href='#index-_002eclass'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-class"></a>
+<a class="index-entry-id" id="index-character-class-_0028class_0029"></a>
+<a class="index-entry-id" id="index-defining-character-class-_0028class_0029"></a>
+<a class="index-entry-id" id="index-class-of-characters-_0028class_0029"></a>
+<p>Define a character class (or simply &ldquo;class&rdquo;) <var class="var">name</var> comprising
+the characters <var class="var">c1</var>, <var class="var">c2</var>, and so on.
+</p>
+<p>A class thus defined can then be referred to in lieu of listing all the
+characters within it. Currently, only the <code class="code">cflags</code> request can
+handle references to character classes.
+</p>
+<p>In the request&rsquo;s simplest form, each <var class="var">cn</var> is a character (or special
+character).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.class [quotes] ' \[aq] \[dq] \[oq] \[cq] \[lq] \[rq]
+</pre></div></div>
+
+<p>Since class and glyph names share the same name space, it is recommended
+to start and end the class name with <code class="code">[</code> and <code class="code">]</code>,
+respectively, to avoid collisions with existing character names defined
+by GNU <code class="code">troff</code> or the user (with <code class="code">char</code> and related requests).
+This practice applies the presence of <code class="code">]</code> in the class name to
+prevent the use of the special character escape form
+<code class="code">\[<span class="r">&hellip;</span>]</code>, thus you must use the <code class="code">\C</code> escape to access
+a class with such a name.
+</p>
+<a class="index-entry-id" id="index-GGL-_0028groff-glyph-list_0029-1"></a>
+<a class="index-entry-id" id="index-groff-glyph-list-_0028GGL_0029-1"></a>
+<p>You can also use a character range notation consisting of a
+start character followed by &lsquo;<samp class="samp">-</samp>&rsquo; and then an end character.
+Internally, GNU <code class="code">troff</code> converts these two symbol names to
+Unicode code points (according to the <code class="code">groff</code> glyph list [GGL]),
+which then give the start and end value of the range. If that fails,
+the class definition is skipped.
+</p>
+<p>Furthermore, classes can be nested.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.class [prepunct] , : ; &gt; }
+.class [prepunctx] \C'[prepunct]' \[u2013]-\[u2016]
+</pre></div></div>
+
+<p>The class &lsquo;<samp class="samp">[prepunctx]</samp>&rsquo; thus contains the contents of the class
+<code class="code">[prepunct]</code> as defined above (the set &lsquo;<samp class="samp">, : ; &gt; }</samp>&rsquo;), and
+characters in the range between <code class="code">U+2013</code> and <code class="code">U+2016</code>.
+</p>
+<p>If you want to include &lsquo;<samp class="samp">-</samp>&rsquo; in a class, it must be the first
+character value in the argument list, otherwise it gets misinterpreted
+as part of the range syntax.
+</p>
+<p>It is not possible to use class names as end points of range
+definitions.
+</p>
+<p>A typical use of the <code class="code">class</code> request is to control line-breaking
+and hyphenation rules as defined by the <code class="code">cflags</code> request. For
+example, to inhibit line breaks before the characters belonging to the
+<code class="code">prepunctx</code> class defined in the previous example, you can write
+the following.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.cflags 2 \C'[prepunctx]'
+</pre></div></div>
+
+<p>See the <code class="code">cflags</code> request in <a class="ref" href="Using-Symbols.html">Using Symbols</a>, for more details.
+</p></dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Special-Fonts.html">Special Fonts</a>, Previous: <a href="Using-Symbols.html">Using Symbols</a>, Up: <a href="Using-Fonts.html">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Character-Translations.html b/doc/groff.html.node/Character-Translations.html
new file mode 100644
index 0000000..a867be8
--- /dev/null
+++ b/doc/groff.html.node/Character-Translations.html
@@ -0,0 +1,200 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Character Translations (The GNU Troff Manual)</title>
+
+<meta name="description" content="Character Translations (The GNU Troff Manual)">
+<meta name="keywords" content="Character Translations (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="troff-and-nroff-Modes.html" rel="next" title="troff and nroff Modes">
+<link href="Tabs-and-Fields.html" rel="prev" title="Tabs and Fields">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Character-Translations">
+<div class="nav-panel">
+<p>
+Next: <a href="troff-and-nroff-Modes.html" accesskey="n" rel="next"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>, Previous: <a href="Tabs-and-Fields.html" accesskey="p" rel="prev">Tabs and Fields</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Character-Translations-1">5.13 Character Translations</h3>
+<a class="index-entry-id" id="index-character-translations"></a>
+<a class="index-entry-id" id="index-translations-of-characters"></a>
+
+<p>A <em class="dfn">translation</em> is a mapping of an input character to an output
+glyph. The mapping occurs at output time, i.e., the input character
+gets assigned the metric information of the mapped output character
+right before input tokens are converted to nodes (see <a class="pxref" href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a>, for more on this process).
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tr</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">a</i></span><span class="r"><i class="slanted">b</i></span><span class="r"><i class="slanted">c</i></span><span class="r"><i class="slanted">d</i></span>&hellip;</var><a class="copiable-link" href='#index-_002etr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tr"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002etrin"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.trin</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">a</i></span><span class="r"><i class="slanted">b</i></span><span class="r"><i class="slanted">c</i></span><span class="r"><i class="slanted">d</i></span>&hellip;</var><a class="copiable-link" href='#index-_002etrin'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-trin"></a>
+<p>Translate character <var class="var">a</var> to glyph&nbsp;<var class="var">b</var>, character <var class="var">c</var> to
+glyph&nbsp;<var class="var">d</var>, and so on. If there is an odd number of characters
+in the argument, the last one is translated to a fixed-width space (the
+same one obtained by the <code class="code">\<kbd class="key">SP</kbd></code> escape sequence).
+</p>
+<p>The <code class="code">trin</code> request is identical to <code class="code">tr</code>, but when you unformat
+a diversion with <code class="code">asciify</code> it ignores the translation.
+See <a class="xref" href="Diversions.html">Diversions</a>, for details about the <code class="code">asciify</code> request.
+</p>
+<p>Some notes:
+</p>
+<ul class="itemize mark-bullet">
+<li><a class="index-entry-id" id="index-_005c_0028_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005c_005b_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005c_0027_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005c_0060_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005c_002d_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005c_005f_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005cC_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005cN_002c-and-translations"></a>
+<a class="index-entry-id" id="index-char-request_002c-and-translations"></a>
+<a class="index-entry-id" id="index-special-characters-1"></a>
+<a class="index-entry-id" id="index-character_002c-special"></a>
+<a class="index-entry-id" id="index-numbered-glyph-_0028_005cN_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-numbered-_0028_005cN_0029"></a>
+Special characters (<code class="code">\(<var class="var">xx</var></code>, <code class="code">\[<var class="var">xxx</var>]</code>,
+<code class="code">\C'<var class="var">xxx</var>'</code>, <code class="code">\'</code>, <code class="code">\`</code>, <code class="code">\-</code>, <code class="code">\_</code>),
+glyphs defined with the <code class="code">char</code> request, and numbered glyphs
+(<code class="code">\N'<var class="var">xxx</var>'</code>) can be translated also.
+
+</li><li><a class="index-entry-id" id="index-_005ce_002c-and-translations"></a>
+The <code class="code">\e</code> escape can be translated also.
+
+</li><li><a class="index-entry-id" id="index-_005c_0025_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005c_007e_002c-and-translations"></a>
+Characters can be mapped onto the <code class="code">\%</code> and <code class="code">\~</code> escape
+sequences (but <code class="code">\%</code> and <code class="code">\~</code> can&rsquo;t be mapped onto another
+glyph).
+
+</li><li><a class="index-entry-id" id="index-backspace-character_002c-and-translations"></a>
+<a class="index-entry-id" id="index-character_002c-backspace_002c-and-translations"></a>
+<a class="index-entry-id" id="index-leader-character_002c-and-translations"></a>
+<a class="index-entry-id" id="index-character_002c-leader_002c-and-translations"></a>
+<a class="index-entry-id" id="index-newline-character_002c-and-translations"></a>
+<a class="index-entry-id" id="index-character_002c-newline_002c-and-translations"></a>
+<a class="index-entry-id" id="index-tab-character_002c-and-translations"></a>
+<a class="index-entry-id" id="index-character_002c-tab_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005ca_002c-and-translations"></a>
+<a class="index-entry-id" id="index-_005ct_002c-and-translations"></a>
+The following characters can&rsquo;t be translated: space (with one exception,
+see below), backspace, newline, leader (and <code class="code">\a</code>), tab (and
+<code class="code">\t</code>).
+
+</li><li><a class="index-entry-id" id="index-shc-request_002c-and-translations"></a>
+Translations are not considered for finding the soft hyphen character
+set with the <code class="code">shc</code> request.
+
+</li><li><a class="index-entry-id" id="index-_005c_0026_002c-and-translations"></a>
+The pair &lsquo;<samp class="samp"><var class="var">c</var>\&amp;</samp>&rsquo; (an arbitrary character&nbsp;<var class="var">c</var> followed
+by the dummy character) maps this character to &ldquo;nothing&rdquo;.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tr a\&amp;
+foo bar
+ &rArr; foo br
+</pre></div></div>
+
+<p>Even the space character can be mapped to the dummy character.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tr aa \&amp;
+foo bar
+ &rArr; foobar
+</pre></div></div>
+
+<p>As shown in the example, the space character can&rsquo;t be the first
+character/glyph pair as an argument of <code class="code">tr</code>. Additionally, it is
+not possible to map the space character to any other glyph; requests
+like &lsquo;<samp class="samp">.tr&nbsp;aa&nbsp;x</samp>&rsquo;<!-- /@w --> undo &lsquo;<samp class="samp">.tr&nbsp;aa&nbsp;\&amp;</samp>&rsquo;<!-- /@w --> instead.
+</p>
+<p>If justification is active, lines are justified in spite of the &lsquo;empty&rsquo;
+space character (but there is no minimal distance, i.e., the space
+character, between words).
+</p>
+</li><li>After an output glyph has been constructed (this happens at the moment
+immediately before the glyph is appended to an output glyph list, either
+by direct output, in a macro, diversion, or string), it is no longer
+affected by <code class="code">tr</code>.
+
+</li><li>Translating character to glyphs where one of them or both are undefined
+is possible also; <code class="code">tr</code> does not check whether the elements of its
+argument exist.
+
+<p>See <a class="xref" href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a>.
+</p>
+</li><li>Without an argument, the <code class="code">tr</code> request is ignored.
+</li></ul>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etrnt"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.trnt</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">a</i></span><span class="r"><i class="slanted">b</i></span><span class="r"><i class="slanted">c</i></span><span class="r"><i class="slanted">d</i></span>&hellip;</var><a class="copiable-link" href='#index-_002etrnt'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-trnt"></a>
+<a class="index-entry-id" id="index-_005c_0021_002c-and-trnt"></a>
+<p><code class="code">trnt</code> is the same as the <code class="code">tr</code> request except that the
+translations do not apply to text that is transparently throughput into
+a diversion with <code class="code">\!</code>. See <a class="xref" href="Diversions.html">Diversions</a>.
+</p>
+<p>For example,
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tr ab
+.di x
+\!.tm a
+.di
+.x
+</pre></div></div>
+
+<p>prints &lsquo;<samp class="samp">b</samp>&rsquo; to the standard error stream; if <code class="code">trnt</code> is used
+instead of <code class="code">tr</code> it prints &lsquo;<samp class="samp">a</samp>&rsquo;.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>, Previous: <a href="Tabs-and-Fields.html">Tabs and Fields</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Colors.html b/doc/groff.html.node/Colors.html
new file mode 100644
index 0000000..8c23dcb
--- /dev/null
+++ b/doc/groff.html.node/Colors.html
@@ -0,0 +1,208 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Colors (The GNU Troff Manual)</title>
+
+<meta name="description" content="Colors (The GNU Troff Manual)">
+<meta name="keywords" content="Colors (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Strings.html" rel="next" title="Strings">
+<link href="Manipulating-Type-Size-and-Vertical-Spacing.html" rel="prev" title="Manipulating Type Size and Vertical Spacing">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Colors">
+<div class="nav-panel">
+<p>
+Next: <a href="Strings.html" accesskey="n" rel="next">Strings</a>, Previous: <a href="Manipulating-Type-Size-and-Vertical-Spacing.html" accesskey="p" rel="prev">Manipulating Type Size and Vertical Spacing</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Colors-1">5.21 Colors</h3>
+<a class="index-entry-id" id="index-colors"></a>
+
+<a class="index-entry-id" id="index-stroke-color"></a>
+<a class="index-entry-id" id="index-color_002c-stroke"></a>
+<a class="index-entry-id" id="index-fill-color"></a>
+<a class="index-entry-id" id="index-color_002c-fill"></a>
+<p>GNU <code class="code">troff</code> supports color output with a variety of color spaces
+and up to 16 bits per channel. Some devices, particularly terminals,
+may be more limited. When color support is enabled, two colors are
+current at any given time: the <em class="dfn">stroke color</em>, with which glyphs,
+rules (lines), and geometric objects like circles and polygons are
+drawn, and the <em class="dfn">fill color</em>, which can be used to paint the interior
+of a closed geometric figure.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecolor"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.color</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ecolor'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-color"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ecolor_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.color]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ecolor_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ecolor-1"></a>
+<p>If <var class="var">n</var> is missing or non-zero, enable the output of color-related
+device-independent output commands (this is the default); otherwise,
+disable them. This request sets a global flag; it does not produce an
+input token (see <a class="pxref" href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a>).
+</p>
+<p>The read-only register <code class="code">.color</code> is&nbsp;1 if colors are enabled,
+0&nbsp;otherwise.
+</p>
+<p>Color can also be disabled with the <samp class="option">-c</samp> command-line option.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edefcolor"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.defcolor</code></strong> <var class="def-var-arguments">ident scheme color-component &hellip;</var><a class="copiable-link" href='#index-_002edefcolor'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-defcolor"></a>
+<p>Define a color named <var class="var">ident</var>. <var class="var">scheme</var> selects a color space
+and determines the quantity of required <var class="var">color-component</var>s; it must
+be one of &lsquo;<samp class="samp">rgb</samp>&rsquo; (three components), &lsquo;<samp class="samp">cmy</samp>&rsquo; (three), &lsquo;<samp class="samp">cmyk</samp>&rsquo;
+(four), or &lsquo;<samp class="samp">gray</samp>&rsquo; (one). &lsquo;<samp class="samp">grey</samp>&rsquo; is accepted as a synonym of
+&lsquo;<samp class="samp">gray</samp>&rsquo;. The color components can be encoded as a single
+hexadecimal value starting with &lsquo;<samp class="samp">#</samp>&rsquo; or &lsquo;<samp class="samp">##</samp>&rsquo;. The former
+indicates that each component is in the range 0&ndash;255 (0&ndash;FF), the latter
+the range 0&ndash;65,535 (0&ndash;FFFF).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.defcolor half gray #7f
+.defcolor pink rgb #FFC0CB
+.defcolor magenta rgb ##ffff0000ffff
+</pre></div></div>
+
+<a class="index-entry-id" id="index-f-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-f"></a>
+<a class="index-entry-id" id="index-scaling-unit-f"></a>
+<p>Alternatively, each color component can be specified as a decimal
+fraction in the range 0&ndash;1, interpreted using a default scaling
+unit of&nbsp;<code class="code">f</code>, which multiplies its value by 65,536 (but
+clamps it at 65,535).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.defcolor gray50 rgb 0.5 0.5 0.5
+.defcolor darkgreen rgb 0.1f 0.5f 0.2f
+</pre></div></div>
+</dd></dl>
+
+<a class="index-entry-id" id="index-default-color"></a>
+<a class="index-entry-id" id="index-color_002c-default"></a>
+<p>Each output device has a color named &lsquo;<samp class="samp">default</samp>&rsquo;, which cannot be
+redefined. A device&rsquo;s default stroke and fill colors are not
+necessarily the same. For the <code class="code">dvi</code>, <code class="code">html</code>, <code class="code">pdf</code>,
+<code class="code">ps</code>, and <code class="code">xhtml</code> output devices, GNU <code class="code">troff</code>
+automatically loads a macro file defining many color names at startup.
+By the same mechanism, the devices supported by <code class="code">grotty</code> recognize
+the eight standard ISO&nbsp;6429/EMCA-48 color names.<a class="footnote" id="DOCF86" href="groff.html_fot.html#FOOT86"><sup>86</sup></a>
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002egcolor"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.gcolor</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">color</i></span>]</var><a class="copiable-link" href='#index-_002egcolor'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-gcolor"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cmc"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\m</code><span class="r"><i class="slanted">c</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cmc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cm"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cm_0028co"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\m(</code><span class="r"><i class="slanted">co</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cm_0028co'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cm_005bcolor_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\m[</code><span class="r"><i class="slanted">color</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cm_005bcolor_005d'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002em_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.m]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002em_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002em"></a>
+<p>Set the stroke color to <var class="var">color</var>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.gcolor red
+The next words
+.gcolor
+\m[red]are in red\m[]
+and these words are in the previous color.
+</pre></div></div>
+
+<p>The escape sequence <code class="code">\m[]</code> restores the previous stroke color, as
+does a <code class="code">gcolor</code> request without an argument.
+</p>
+<a class="index-entry-id" id="index-stroke-color-name-register-_0028_002em_0029"></a>
+<a class="index-entry-id" id="index-name_002c-stroke-color_002c-register-_0028_002em_0029"></a>
+<a class="index-entry-id" id="index-color-name_002c-stroke_002c-register-_0028_002em_0029"></a>
+<p>The name of the current stroke color is available in the read-only
+string-valued register &lsquo;<samp class="samp">.m</samp>&rsquo;; it is associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>). It interpolates nothing when the stroke color
+is the default.
+</p>
+<p><code class="code">\m</code> doesn&rsquo;t produce an input token in GNU <code class="code">troff</code>
+(see <a class="pxref" href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a>). It therefore can be used in requests like
+<code class="code">mc</code> (which expects a single character as an argument) to change
+the color on the fly:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.mc \m[red]x\m[]
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efcolor"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fcolor</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">color</i></span>]</var><a class="copiable-link" href='#index-_002efcolor'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fcolor"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cMc"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\M</code><span class="r"><i class="slanted">c</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cMc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cM"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cM_0028co"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\M(</code><span class="r"><i class="slanted">co</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cM_0028co'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cM_005bcolor_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\M[</code><span class="r"><i class="slanted">color</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cM_005bcolor_005d'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eM_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.M]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eM_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eM"></a>
+<p>Set the fill color for objects drawn with <code class="code">\D'&hellip;'</code> escape
+sequences. The escape sequence <code class="code">\M[]</code> restores the previous fill
+color, as does an <code class="code">fcolor</code> request without an argument.
+</p>
+<a class="index-entry-id" id="index-background-color-name-register-_0028_002eM_0029"></a>
+<a class="index-entry-id" id="index-name_002c-background-color_002c-register-_0028_002eM_0029"></a>
+<a class="index-entry-id" id="index-color-name_002c-background_002c-register-_0028_002eM_0029"></a>
+<a class="index-entry-id" id="index-fill-color-name-register-_0028_002eM_0029"></a>
+<a class="index-entry-id" id="index-name_002c-fill-color_002c-register-_0028_002eM_0029"></a>
+<a class="index-entry-id" id="index-color-name_002c-fill_002c-register-_0028_002eM_0029"></a>
+<p>The name of the current fill color is available in the read-only
+string-valued register &lsquo;<samp class="samp">.M</samp>&rsquo;; it is associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>). It interpolates nothing when the fill color
+is the default. <code class="code">\M</code> doesn&rsquo;t produce an input token in GNU
+<code class="code">troff</code>.
+</p>
+<p>Create an ellipse with a red interior as follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">\M[red]\h'0.5i'\D'E 2i 1i'\M[]
+</pre></div></div>
+</dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Strings.html">Strings</a>, Previous: <a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Columnation.html b/doc/groff.html.node/Columnation.html
new file mode 100644
index 0000000..7ac057f
--- /dev/null
+++ b/doc/groff.html.node/Columnation.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Columnation (The GNU Troff Manual)</title>
+
+<meta name="description" content="Columnation (The GNU Troff Manual)">
+<meta name="keywords" content="Columnation (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Font-and-Size-Changes.html" rel="next" title="Font and Size Changes">
+<link href="Document-Formats.html" rel="prev" title="Document Formats">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Columnation">
+<div class="nav-panel">
+<p>
+Next: <a href="Font-and-Size-Changes.html" accesskey="n" rel="next">Font and Size Changes</a>, Previous: <a href="Document-Formats.html" accesskey="p" rel="prev">Document Formats</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Columnation-1">3.2.10 Columnation</h4>
+
+<p>Macro packages apart from <samp class="file">man</samp> and <samp class="file">mdoc</samp> for man page
+formatting offer a facility for setting multiple columns on the page.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Command-Reference.html b/doc/groff.html.node/Command-Reference.html
new file mode 100644
index 0000000..bd5cd9e
--- /dev/null
+++ b/doc/groff.html.node/Command-Reference.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Command Reference (The GNU Troff Manual)</title>
+
+<meta name="description" content="Command Reference (The GNU Troff Manual)">
+<meta name="keywords" content="Command Reference (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gtroff-Output.html" rel="up" title="gtroff Output">
+<link href="Intermediate-Output-Examples.html" rel="next" title="Intermediate Output Examples">
+<link href="Language-Concepts.html" rel="prev" title="Language Concepts">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Command-Reference">
+<div class="nav-panel">
+<p>
+Next: <a href="Intermediate-Output-Examples.html" accesskey="n" rel="next">Intermediate Output Examples</a>, Previous: <a href="Language-Concepts.html" accesskey="p" rel="prev">Language Concepts</a>, Up: <a href="gtroff-Output.html" accesskey="u" rel="up"><code class="code">gtroff</code> Output</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Command-Reference-1">6.1.2 Command Reference</h4>
+
+<p>This section describes all intermediate output commands, both from
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> as well as the <code class="code">gtroff</code> extensions.
+</p>
+
+<ul class="mini-toc">
+<li><a href="Comment-Command.html" accesskey="1">Comment Command</a></li>
+<li><a href="Simple-Commands.html" accesskey="2">Simple Commands</a></li>
+<li><a href="Graphics-Commands.html" accesskey="3">Graphics Commands</a></li>
+<li><a href="Device-Control-Commands.html" accesskey="4">Device Control Commands</a></li>
+<li><a href="Obsolete-Command.html" accesskey="5">Obsolete Command</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Comment-Command.html b/doc/groff.html.node/Comment-Command.html
new file mode 100644
index 0000000..1ef8d94
--- /dev/null
+++ b/doc/groff.html.node/Comment-Command.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Comment Command (The GNU Troff Manual)</title>
+
+<meta name="description" content="Comment Command (The GNU Troff Manual)">
+<meta name="keywords" content="Comment Command (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Command-Reference.html" rel="up" title="Command Reference">
+<link href="Simple-Commands.html" rel="next" title="Simple Commands">
+<link href="Command-Reference.html" rel="prev" title="Command Reference">
+<style type="text/css">
+<!--
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Comment-Command">
+<div class="nav-panel">
+<p>
+Next: <a href="Simple-Commands.html" accesskey="n" rel="next">Simple Commands</a>, Previous: <a href="Command-Reference.html" accesskey="p" rel="prev">Command Reference</a>, Up: <a href="Command-Reference.html" accesskey="u" rel="up">Command Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Comment-Command-1">6.1.2.1 Comment Command</h4>
+
+<dl class="table">
+<dt><code class="code">#<var class="var">anything</var>&lsaquo;<span class="r">end of line</span>&rsaquo;</code></dt>
+<dd><p>A comment. Ignore any characters from the &lsquo;<samp class="samp">#</samp>&rsquo; character up to the
+next newline character.
+</p>
+<p>This command is the only possibility for commenting in the intermediate
+output. Each comment can be preceded by arbitrary syntactical space;
+every command can be terminated by a comment.
+</p></dd>
+</dl>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Comments.html b/doc/groff.html.node/Comments.html
new file mode 100644
index 0000000..46b3523
--- /dev/null
+++ b/doc/groff.html.node/Comments.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Comments (The GNU Troff Manual)</title>
+
+<meta name="description" content="Comments (The GNU Troff Manual)">
+<meta name="keywords" content="Comments (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Registers.html" rel="next" title="Registers">
+<link href="Formatter-Instructions.html" rel="prev" title="Formatter Instructions">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Comments">
+<div class="nav-panel">
+<p>
+Next: <a href="Registers.html" accesskey="n" rel="next">Registers</a>, Previous: <a href="Formatter-Instructions.html" accesskey="p" rel="prev">Formatter Instructions</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Comments-1">5.7 Comments</h3>
+<a class="index-entry-id" id="index-comments"></a>
+
+<p>One of the most common forms of escape sequence is the
+comment.<a class="footnote" id="DOCF48" href="groff.html_fot.html#FOOT48"><sup>48</sup></a>
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0022-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\&quot;</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0022-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0022"></a>
+<p>Start a comment. Everything up to the next newline is ignored.
+</p>
+<p>This may sound simple, but it can be tricky to keep the comments from
+interfering with the appearance of the output.
+<a class="index-entry-id" id="index-ds_002c-ds1-requests_002c-and-comments"></a>
+<a class="index-entry-id" id="index-as_002c-as1-requests_002c-and-comments"></a>
+If the escape sequence is to the right of some text or a request, that
+portion of the line is ignored, but spaces preceding it are processed
+normally by GNU <code class="code">troff</code>. This affects only the <code class="code">ds</code> and
+<code class="code">as</code> requests and their variants.
+</p>
+<a class="index-entry-id" id="index-tabs_002c-before-comments"></a>
+<a class="index-entry-id" id="index-comments_002c-lining-up-with-tabs"></a>
+<p>One possibly irritating idiosyncrasy is that tabs should not be used to
+vertically align comments in the source document. Tab characters are
+not treated as separators between a request name and its first argument,
+nor between arguments.
+</p>
+<a class="index-entry-id" id="index-undefined-request"></a>
+<a class="index-entry-id" id="index-request_002c-undefined"></a>
+<p>A comment on a line by itself is treated as a blank line, because after
+eliminating the comment, that is all that remains.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Test
+\&quot; comment
+Test
+ &rArr; Test
+ &rArr;
+ &rArr; Test
+</pre></div></div>
+
+<p>To avoid this, it is common to combine the empty request with the
+comment escape sequence as &lsquo;<samp class="samp">.\&quot;</samp>&rsquo;, causing the input line to be
+ignored.
+</p>
+<a class="index-entry-id" id="index-_0027_002c-as-a-comment"></a>
+<p>Another commenting scheme sometimes seen is three consecutive single
+quotes (<code class="code">'''</code>) at the beginning of a line. This works, but GNU
+<code class="code">troff</code> emits a warning diagnostic (if enabled) about an undefined
+macro (namely &lsquo;<samp class="samp">''</samp>&rsquo;).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0023-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\#</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0023-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0023"></a>
+<p>Start a comment; everything up to and including the next newline is
+ignored. This <code class="code">groff</code> extension was introduced to avoid the
+problems described above.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Test
+\# comment
+Test
+ &rArr; Test Test
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eig"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ig</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eig'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ig"></a>
+<p>Ignore input until, in the current conditional block (if
+any),<a class="footnote" id="DOCF49" href="groff.html_fot.html#FOOT49"><sup>49</sup></a> the macro <var class="var">end</var> is called
+at the start of a control line, or the control line &lsquo;<samp class="samp">..</samp>&rsquo; is
+encountered if <var class="var">end</var> is not specified. <code class="code">ig</code> is parsed as if it
+were a macro definition, but its contents are discarded, not
+stored.<a class="footnote" id="DOCF50" href="groff.html_fot.html#FOOT50"><sup>50</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">hand\c
+.de TX
+fasting
+..
+.ig TX
+This is part of a large block of input that has been
+temporarily(?) commented out.
+We can restore it simply by removing the .ig request and
+the call of its end macro.
+.TX
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; handfasting
+</pre></div></div>
+</dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Registers.html">Registers</a>, Previous: <a href="Formatter-Instructions.html">Formatter Instructions</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Common-Features.html b/doc/groff.html.node/Common-Features.html
new file mode 100644
index 0000000..074015e
--- /dev/null
+++ b/doc/groff.html.node/Common-Features.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Common Features (The GNU Troff Manual)</title>
+
+<meta name="description" content="Common Features (The GNU Troff Manual)">
+<meta name="keywords" content="Common Features (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tutorial-for-Macro-Users.html" rel="up" title="Tutorial for Macro Users">
+<link href="Basics.html" rel="prev" title="Basics">
+<style type="text/css">
+<!--
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Common-Features">
+<div class="nav-panel">
+<p>
+Previous: <a href="Basics.html" accesskey="p" rel="prev">Basics</a>, Up: <a href="Tutorial-for-Macro-Users.html" accesskey="u" rel="up">Tutorial for Macro Users</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Common-Features-1">3.2 Common Features</h3>
+<a class="index-entry-id" id="index-common-features"></a>
+<a class="index-entry-id" id="index-features_002c-common"></a>
+
+<p>GNU <code class="code">troff</code> provides low-level operations for formatting a
+document. Many routine operations are undertaken in nearly all
+documents that require a series of such primitive operations to be
+performed. These common tasks are grouped into <i class="slanted">macros</i>, which
+are then collected into a <i class="slanted">macro package</i>.
+</p>
+<p>Macro packages come in two varieties: &ldquo;major&rdquo; or &ldquo;full-service&rdquo;
+ones that manage page layout, and &ldquo;minor&rdquo; or &ldquo;auxiliary&rdquo; ones that
+do not, instead fulfilling narrow, specific tasks. Find a list in the
+<cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page. Type &lsquo;<samp class="samp">man groff_tmac</samp>&rsquo; at the
+command line to view it.
+</p>
+<p>We survey several capabilities of full-service macro package below.
+Each package employs its own macros to exercise them. For details,
+consult its man page or, for <samp class="file">ms</samp>, see <a class="ref" href="ms.html"><samp class="file">ms</samp></a>.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="Paragraphs.html" accesskey="1">Paragraphs</a></li>
+<li><a href="Sections-and-Chapters.html" accesskey="2">Sections and Chapters</a></li>
+<li><a href="Headers-and-Footers.html" accesskey="3">Headers and Footers</a></li>
+<li><a href="Page-Layout-Adjustment.html" accesskey="4">Page Layout</a></li>
+<li><a href="Displays-and-Keeps.html" accesskey="5">Displays and Keeps</a></li>
+<li><a href="Footnotes-and-Endnotes.html" accesskey="6">Footnotes and Endnotes</a></li>
+<li><a href="Table-of-Contents.html" accesskey="7">Table of Contents</a></li>
+<li><a href="Indexing.html" accesskey="8">Indexing</a></li>
+<li><a href="Document-Formats.html" accesskey="9">Document Formats</a></li>
+<li><a href="Columnation.html">Columnation</a></li>
+<li><a href="Font-and-Size-Changes.html">Font and Size Changes</a></li>
+<li><a href="Predefined-Text.html">Predefined Text</a></li>
+<li><a href="Preprocessor-Support.html">Preprocessor Support</a></li>
+<li><a href="Configuration-and-Customization.html">Configuration and Customization</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Compatibility-Mode.html b/doc/groff.html.node/Compatibility-Mode.html
new file mode 100644
index 0000000..60c376b
--- /dev/null
+++ b/doc/groff.html.node/Compatibility-Mode.html
@@ -0,0 +1,221 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Compatibility Mode (The GNU Troff Manual)</title>
+
+<meta name="description" content="Compatibility Mode (The GNU Troff Manual)">
+<meta name="keywords" content="Compatibility Mode (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Implementation-Differences.html" rel="up" title="Implementation Differences">
+<link href="Safer-Mode.html" rel="next" title="Safer Mode">
+<link href="Other-Differences.html" rel="prev" title="Other Differences">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Compatibility-Mode">
+<div class="nav-panel">
+<p>
+Next: <a href="Safer-Mode.html" accesskey="n" rel="next">Safer Mode</a>, Previous: <a href="Other-Differences.html" accesskey="p" rel="prev">Other Differences</a>, Up: <a href="Implementation-Differences.html" accesskey="u" rel="up">Implementation Differences</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Compatibility-Mode-1">5.38.2 Compatibility Mode</h4>
+<a class="index-entry-id" id="index-compatibility-mode-1"></a>
+<a class="index-entry-id" id="index-mode_002c-compatibility"></a>
+
+<a class="index-entry-id" id="index-long-names"></a>
+<a class="index-entry-id" id="index-names_002c-long"></a>
+<a class="index-entry-id" id="index-_005c_002a_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005cn_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>Long identifier names may be GNU <code class="code">troff</code>&rsquo;s most obvious innovation.
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> interprets &lsquo;<samp class="samp">.dsabcd</samp>&rsquo; as defining a
+string &lsquo;<samp class="samp">ab</samp>&rsquo; with contents &lsquo;<samp class="samp">cd</samp>&rsquo;. Normally, GNU <code class="code">troff</code>
+interprets this as a call of a macro named <code class="code">dsabcd</code>.
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> also interprets &lsquo;<samp class="samp">\*[</samp>&rsquo; and &lsquo;<samp class="samp">\n[</samp>&rsquo; as
+an interpolation of a string or register, respectively, named &lsquo;<samp class="samp">[</samp>&rsquo;.
+In GNU <code class="code">troff</code>, however, the &lsquo;<samp class="samp">[</samp>&rsquo; is normally interpreted as
+delimiting a long name. In compatibility mode, GNU <code class="code">troff</code>
+interprets names in the traditional way; they thus can be two characters
+long at most.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cp</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ecp'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-cp"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eC_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.C]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eC_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eC"></a>
+<p>If <var class="var">n</var> is missing or non-zero, turn on compatibility mode;
+otherwise, turn it off.
+</p>
+<p>The read-only register <code class="code">.C</code> is&nbsp;1 if compatibility mode is on,
+0&nbsp;otherwise.
+</p>
+<p>Compatibility mode can be also turned on with the <samp class="option">-C</samp>
+command-line option.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edo"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.do</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002edo'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-do"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ecp_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.cp]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ecp_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ecp-1"></a>
+<p>The <code class="code">do</code> request interprets the string, request, diversion, or
+macro <var class="var">name</var> (along with any further arguments) with compatibility
+mode disabled. Compatibility mode is restored (only if it was active)
+when the <em class="emph">expansion</em> of <var class="var">name</var> is interpreted; that is, the
+restored compatibility state applies to the contents of the macro,
+string, or diversion <var class="var">name</var> as well as data read from files or pipes
+if <var class="var">name</var> is any of the <code class="code">so</code>, <code class="code">soquiet</code>, <code class="code">mso</code>,
+<code class="code">msoquiet</code>, or <code class="code">pso</code> requests.
+</p>
+<p>The following example illustrates several aspects of <code class="code">do</code> behavior.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de mac1
+FOO
+..
+.de1 mac2
+groff
+.mac1
+..
+.de mac3
+compatibility
+.mac1
+..
+.de ma
+\\$1
+..
+.cp 1
+.do mac1
+.do mac2 \&quot; mac2, defined with .de1, calls &quot;mac1&quot;
+.do mac3 \&quot; mac3 calls &quot;ma&quot; with argument &quot;c1&quot;
+.do mac3 \[ti] \&quot; groff syntax accepted in .do arguments
+ &rArr; FOO groff FOO compatibility c1 ~
+</pre></div></div>
+
+<p>The read-only register <code class="code">.cp</code>, meaningful only when dereferenced
+from a <code class="code">do</code> request, is&nbsp;1 if compatibility mode was on when
+the <code class="code">do</code> request was encountered, and 0&nbsp;if it was not. This
+register is specialized and may require a statement of rationale.
+</p>
+<p>When writing macro packages or documents that use GNU <code class="code">troff</code>
+features and which may be mixed with other packages or documents that do
+not&mdash;common scenarios include serial processing of man pages or use of
+the <code class="code">so</code> or <code class="code">mso</code> requests&mdash;you may desire correct operation
+regardless of compatibility mode enablement in the surrounding context.
+It may occur to you to save the existing value of &lsquo;<samp class="samp">\n(.C</samp>&rsquo; into a
+register, say, &lsquo;<samp class="samp">_C</samp>&rsquo;, at the beginning of your file, turn
+compatibility mode off with &lsquo;<samp class="samp">.cp 0</samp>&rsquo;, then restore it from that
+register at the end with &lsquo;<samp class="samp">.cp \n(_C</samp>&rsquo;. At the same time, a modular
+design of a document or macro package may lead you to multiple layers of
+inclusion. You cannot use the same register name everywhere lest you
+&ldquo;clobber&rdquo; the value from a preceding or enclosing context. The
+two-character register name space of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> is
+confining and mnemonically challenging; you may wish to use the more
+capacious name space of GNU <code class="code">troff</code>. However, attempting &lsquo;<samp class="samp">.nr
+_my_saved_C \n(.C</samp>&rsquo; will not work in compatibility mode; the register
+name is too long. &ldquo;This is exactly what <code class="code">do</code> is for,&rdquo; you think,
+&lsquo;<samp class="samp">.do nr _my_saved_C \n(.C</samp>&rsquo;. The foregoing will always save zero to
+your register, because <code class="code">do</code> turns compatibility mode <em class="emph">off</em>
+while it interprets its argument list.
+</p>
+<p>To robustly save compatibility mode before switching it off, use
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.do nr _my_saved_C \n[.cp]
+.cp 0
+</pre></div></div>
+
+<p>at the beginning of your file, followed by
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.cp \n[_my_saved_C]
+.do rr _my_saved_C
+</pre></div></div>
+
+<p>at the end. As in the C language, we all have to share one big
+name space, so choose a register name that is unlikely to collide with
+other uses.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-input-level-in-delimited-arguments"></a>
+<a class="index-entry-id" id="index-interpolation-depth-in-delimited-arguments"></a>
+<a class="index-entry-id" id="index-delimited-arguments_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>Normally, GNU <code class="code">troff</code> preserves the interpolation depth in
+delimited arguments, but not in compatibility mode.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds xx '
+\w'abc\*(xxdef'
+ &rArr; 168 <span class="r">(normal mode on a terminal device)</span>
+ &rArr; 72def' <span class="r">(compatibility mode on a terminal device)</span>
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_005cf_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005cH_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005cs_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005cS_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>Furthermore, the escape sequences <code class="code">\f</code>, <code class="code">\H</code>, <code class="code">\m</code>,
+<code class="code">\M</code>, <code class="code">\R</code>, <code class="code">\s</code>, and <code class="code">\S</code> are transparent for the
+purpose of recognizing a control character at the beginning of a line
+only in compatibility mode. For example, this code produces bold output
+in both cases, but the text differs.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de xx
+Hello!
+..
+\fB.xx\fP
+ &rArr; .xx <span class="r">(normal mode)</span>
+ &rArr; Hello! <span class="r">(compatibility mode)</span>
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_005cs_002c-incompatibilities-with-AT_0026T-troff-1"></a>
+<p>Normally, the syntax form <code class="code">\s</code><var class="var">n</var> accepts only a single
+character (a digit) for <var class="var">n</var>, consistently with other forms that
+originated in <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, like <code class="code">\*</code>, <code class="code">\$</code>,
+<code class="code">\f</code>, <code class="code">\g</code>, <code class="code">\k</code>, <code class="code">\n</code>, and <code class="code">\z</code>. In
+compatibility mode only, a non-zero&nbsp;<var class="var">n</var> must be in the range
+4&ndash;39. Legacy documents relying upon this quirk of parsing<a class="footnote" id="DOCF120" href="groff.html_fot.html#FOOT120"><sup>120</sup></a> should be migrated to another
+<code class="code">\s</code> form.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Safer-Mode.html">Safer Mode</a>, Previous: <a href="Other-Differences.html">Other Differences</a>, Up: <a href="Implementation-Differences.html">Implementation Differences</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Concept-Index.html b/doc/groff.html.node/Concept-Index.html
new file mode 100644
index 0000000..3adcfcb
--- /dev/null
+++ b/doc/groff.html.node/Concept-Index.html
@@ -0,0 +1,2359 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Concept Index (The GNU Troff Manual)</title>
+
+<meta name="description" content="Concept Index (The GNU Troff Manual)">
+<meta name="keywords" content="Concept Index (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Program-and-File-Index.html" rel="prev" title="Program and File Index">
+<style type="text/css">
+<!--
+a.summary-letter-printindex {text-decoration: none}
+kbd.key {font-style: normal}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span.w-nolinebreak-text {white-space: nowrap}
+td.printindex-index-entry {vertical-align: top}
+td.printindex-index-section {vertical-align: top}
+th.entries-header-printindex {text-align:left}
+th.sections-header-printindex {text-align:left}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="appendix-level-extent" id="Concept-Index">
+<div class="nav-panel">
+<p>
+Previous: <a href="Program-and-File-Index.html" accesskey="p" rel="prev">Program and File Index</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="appendix" id="Concept-Index-1">Appendix J Concept Index</h2>
+
+<div class="printindex cp-printindex">
+<table class="cp-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-1"><b>&quot;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-2"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-3"><b>&amp;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-4"><b>'</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-5"><b>(</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-6"><b>)</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-7"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-8"><b>+</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-9"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-10"><b>.</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-11"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-12"><b>8</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-13"><b>:</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-14"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-15"><b>=</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-16"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-17"><b>[</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-18"><b>\</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-19"><b>]</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-20"><b>|</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-J"><b>J</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-W"><b>W</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Y"><b>Y</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Z"><b>Z</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="cp-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-1">&quot;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_0022_002c-as-delimiter"><code class="code">&quot;</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-_0022_002c-at-end-of-sentence"><code class="code">&quot;</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_0022_002c-at-end-of-sentence-1"><code class="code">&quot;</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-_0022_002c-embedding-in-a-macro-argument"><code class="code">&quot;</code>, embedding in a macro argument</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-2">%</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_0025_002c-as-delimiter"><code class="code">%</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-3">&amp;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_0026_002c-as-delimiter"><code class="code">&amp;</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-4">'</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Comments.html#index-_0027_002c-as-a-comment"><code class="code">'</code>, as a comment</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Comments.html">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_0027_002c-as-delimiter"><code class="code">'</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-_0027_002c-at-end-of-sentence"><code class="code">'</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_0027_002c-at-end-of-sentence-1"><code class="code">'</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-5">(</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_0028_002c-as-delimiter"><code class="code">(</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-6">)</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_0029_002c-as-delimiter"><code class="code">)</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-_0029_002c-at-end-of-sentence"><code class="code">)</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_0029_002c-at-end-of-sentence-1"><code class="code">)</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-7">*</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_002a_002c-as-delimiter"><code class="code">*</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-_002a_002c-at-end-of-sentence"><code class="code">*</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_002a_002c-at-end-of-sentence-1"><code class="code">*</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-8">+</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_002b_002c-and-page-motion"><code class="code">+</code>, and page motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_002b_002c-as-delimiter"><code class="code">+</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-9">-</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_002d_002c-and-page-motion"><code class="code">-</code>, and page motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_002d_002c-as-delimiter"><code class="code">-</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-10">.</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_002e_002c-as-delimiter"><code class="code">.</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-_002eh-register_002c-difference-from-nl"><code class="code">.h</code> register, difference from <code class="code">nl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-_002eps-register_002c-in-comparison-with-_002epsr"><code class="code">.ps</code> register, in comparison with <code class="code">.psr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-_002es-register_002c-in-comparison-with-_002esr"><code class="code">.s</code> register, in comparison with <code class="code">.sr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-_002eS-register_002c-Plan-9-alias-for-_002etabs"><code class="code">.S</code> register, Plan&nbsp;9 alias for <code class="code">.tabs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversion-Traps.html#index-_002et-register_002c-and-diversions"><code class="code">.t</code> register, and diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversion-Traps.html">Diversion Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-_002etabs-register_002c-Plan-9-alias-_0028_002eS_0029"><code class="code">.tabs</code> register, Plan&nbsp;9 alias (<code class="code">.S</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-_002eV-register_002c-and-vs"><code class="code">.V</code> register, and <code class="code">vs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-11">/</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_002f_002c-as-delimiter"><code class="code">/</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-12">8</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-8_002dbit-input">8-bit input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-13">:</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_003a_002c-as-delimiter"><code class="code">:</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-14">&lt;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_003c_002c-as-delimiter"><code class="code">&lt;</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-15">=</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_003d_002c-as-delimiter"><code class="code">=</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-16">&gt;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_003e_002c-as-delimiter"><code class="code">&gt;</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-17">[</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-_005b_002c-macro-names-starting-with_002c-and-refer"><code class="code">[</code>, macro names starting with, and <code class="code">refer</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-18">\</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-_005c_0021_002c-and-copy-mode"><code class="code">\!</code>, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-_005c_0021_002c-and-output-request"><code class="code">\!</code>, and <code class="code">output</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005c_0021_002c-and-trnt"><code class="code">\!</code>, and <code class="code">trnt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_0021_002c-as-delimiter"><code class="code">\!</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_0021_002c-as-delimiter-1"><code class="code">\!</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-_005c_0021_002c-in-top_002dlevel-diversion"><code class="code">\!</code>, in top-level diversion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_0021_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\!</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_0021_002c-incompatibilities-with-AT_0026T-troff-1"><code class="code">\!</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-_005c_0024_002c-when-reading-text-for-a-macro"><code class="code">\$</code>, when reading text for a macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005c_0025_002c-and-translations"><code class="code">\%</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_0025_002c-as-delimiter"><code class="code">\%</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_0025_002c-as-delimiter-1"><code class="code">\%</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-_005c_0025_002c-following-_005cX-or-_005cY"><code class="code">\%</code>, following <code class="code">\X</code> or <code class="code">\Y</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-_005c_0025_002c-in-_005cX"><code class="code">\%</code>, in <code class="code">\X</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_0025_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\%</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005c_0026_002c-and-glyph-definitions"><code class="code">\&amp;</code>, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005c_0026_002c-and-translations"><code class="code">\&amp;</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_0026_002c-as-delimiter"><code class="code">\&amp;</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-_005c_0026_002c-at-end-of-sentence"><code class="code">\&amp;</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-_005c_0026_002c-in-_005cX"><code class="code">\&amp;</code>, in <code class="code">\X</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_0026_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\&amp;</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005c_0027_002c-and-translations"><code class="code">\'</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_0027_002c-as-delimiter"><code class="code">\'</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_0027_002c-as-delimiter-1"><code class="code">\'</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_0027_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\'</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005c_0028_002c-and-translations"><code class="code">\(</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_0029_002c-as-delimiter"><code class="code">\)</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-_005c_0029_002c-in-_005cX"><code class="code">\)</code>, in <code class="code">\X</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-_005c_002a_002c-and-warnings"><code class="code">\*</code>, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-_005c_002a_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\*</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-_005c_002a_002c-when-reading-text-for-a-macro"><code class="code">\*</code>, when reading text for a macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-_005c_002c-disabling-_0028eo_0029"><code class="code">\</code>, disabling (<code class="code">eo</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-_005c_002c-embedding-in-a-macro-argument"><code class="code">\</code>, embedding in a macro argument</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_002c_002c-as-delimiter"><code class="code">\,</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005c_002d-glyph_002c-and-cflags"><code class="code">\-</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005c_002d_002c-and-translations"><code class="code">\-</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_002d_002c-as-delimiter"><code class="code">\-</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_002d_002c-as-delimiter-1"><code class="code">\-</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_002d_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\-</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_002f_002c-as-delimiter"><code class="code">\/</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_002f_002c-as-delimiter-1"><code class="code">\/</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c0_002c-as-delimiter"><code class="code">\0</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_003a_002c-as-delimiter"><code class="code">\:</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_003a_002c-as-delimiter-1"><code class="code">\:</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-_005c_003a_002c-in-_005cX"><code class="code">\:</code>, in <code class="code">\X</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-_005c_003f_002c-and-copy-mode"><code class="code">\?</code>, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-_005c_003f_002c-and-copy-mode-1"><code class="code">\?</code>, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_003f_002c-as-delimiter"><code class="code">\?</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-_005c_003f_002c-in-top_002dlevel-diversion"><code class="code">\?</code>, in top-level diversion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_003f_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\?</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-_005ca_002c-and-copy-mode"><code class="code">\a</code>, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005ca_002c-and-translations"><code class="code">\a</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005ca_002c-as-delimiter"><code class="code">\a</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cA_002c-delimiters-allowed-by"><code class="code">\A</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005cA_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\A</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cb_002c-delimiters-allowed-by"><code class="code">\b</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-_005cb_002c-limitations-of"><code class="code">\b</code>, limitations of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005cC_002c-and-translations"><code class="code">\C</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cc_002c-as-delimiter"><code class="code">\c</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cc_002c-as-delimiter-1"><code class="code">\c</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005cc_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\c</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-_005cc_002c-when-filling-disabled"><code class="code">\c</code>, when filling disabled</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-_005cc_002c-when-filling-enabled"><code class="code">\c</code>, when filling enabled</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cd_002c-as-delimiter"><code class="code">\d</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cD_002c-delimiters-allowed-by"><code class="code">\D</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005ce_002c-and-glyph-definitions"><code class="code">\e</code>, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005ce_002c-and-translations"><code class="code">\e</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005ce_002c-as-delimiter"><code class="code">\e</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cE_002c-as-delimiter"><code class="code">\E</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005ce_002c-as-delimiter-1"><code class="code">\e</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005ce_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\e</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-_005cF_002c-and-changing-fonts"><code class="code">\F</code>, and changing fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-_005cf_002c-and-font-translations"><code class="code">\f</code>, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-_005cf_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\f</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005ch_002c-delimiters-allowed-by"><code class="code">\h</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cH_002c-delimiters-allowed-by"><code class="code">\H</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-_005cH_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\H</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_005cH_002c-using-_002b-and-_002d-with"><code class="code">\H</code>, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-_005cH_002c-with-fractional-type-sizes"><code class="code">\H</code>, with fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005cl_002c-and-glyph-definitions"><code class="code">\l</code>, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005cL_002c-and-glyph-definitions"><code class="code">\L</code>, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cl_002c-delimiters-allowed-by"><code class="code">\l</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cL_002c-delimiters-allowed-by"><code class="code">\L</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005cN_002c-and-translations"><code class="code">\N</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-_005cn_002c-and-warnings"><code class="code">\n</code>, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cN_002c-delimiters-allowed-by"><code class="code">\N</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-_005cn_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\n</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-_005cn_002c-when-reading-text-for-a-macro"><code class="code">\n</code>, when reading text for a macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005co_002c-delimiters-allowed-by"><code class="code">\o</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cp_002c-as-delimiter"><code class="code">\p</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cp_002c-as-delimiter-1"><code class="code">\p</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-_005cR_002c-after-_005cc"><code class="code">\R</code>, after <code class="code">\c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-_005cR_002c-and-warnings"><code class="code">\R</code>, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cr_002c-as-delimiter"><code class="code">\r</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cR_002c-delimiters-allowed-by"><code class="code">\R</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Auto_002dincrement.html#index-_005cR_002c-difference-from-nr"><code class="code">\R</code>, difference from <code class="code">nr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Auto_002dincrement.html">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_005cR_002c-using-_002b-and-_002d-with"><code class="code">\R</code>, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-_005cRET_002c-when-reading-text-for-a-macro">\<kbd class="key">RET</kbd>, when reading text for a macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cs_002c-delimiters-allowed-by"><code class="code">\s</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cS_002c-delimiters-allowed-by"><code class="code">\S</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-_005cs_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\s</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-_005cS_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\S</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-_005cs_002c-incompatibilities-with-AT_0026T-troff-1"><code class="code">\s</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_005cs_002c-using-_002b-and-_002d-with"><code class="code">\s</code>, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-_005cs_002c-with-fractional-type-sizes"><code class="code">\s</code>, with fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cSP_002c-as-delimiter"><code class="code">\<kbd class="key">SP</kbd></code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-_005cSP_002c-difference-from-_005c_007e"><code class="code">\<kbd class="key">SP</kbd></code>, difference from <code class="code">\~</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005cSP_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\<kbd class="key">SP</kbd></code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-_005ct_002c-and-copy-mode"><code class="code">\t</code>, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005ct_002c-and-translations"><code class="code">\t</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-_005ct_002c-and-warnings"><code class="code">\t</code>, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005ct_002c-as-delimiter"><code class="code">\t</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cu_002c-as-delimiter"><code class="code">\u</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-_005cV_002c-and-copy-mode"><code class="code">\V</code>, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cv_002c-delimiters-allowed-by"><code class="code">\v</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Gtroff-Internals.html#index-_005cv_002c-internal-representation"><code class="code">\v</code>, internal representation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Gtroff-Internals.html">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cw_002c-delimiters-allowed-by"><code class="code">\w</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-_005cX_002c-and-special-characters"><code class="code">\X</code>, and special characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cX_002c-delimiters-allowed-by"><code class="code">\X</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cx_002c-delimiters-allowed-by"><code class="code">\x</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-_005cX_002c-followed-by-_005c_0025"><code class="code">\X</code>, followed by <code class="code">\%</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-_005cY_002c-followed-by-_005c_0025"><code class="code">\Y</code>, followed by <code class="code">\%</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005cZ_002c-delimiters-allowed-by"><code class="code">\Z</code>, delimiters allowed by</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005c_005b_002c-and-translations"><code class="code">\[</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-_005c_005c_002c-when-reading-text-for-a-macro"><code class="code">\\</code>, when reading text for a macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_005e_002c-as-delimiter"><code class="code">\^</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_005e_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\^</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005c_005f_002c-and-translations"><code class="code">\_</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_005f_002c-as-delimiter"><code class="code">\_</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_005f_002c-as-delimiter-1"><code class="code">\_</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_005f_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\_</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005c_0060_002c-and-translations"><code class="code">\`</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_0060_002c-as-delimiter"><code class="code">\`</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_0060_002c-as-delimiter-1"><code class="code">\`</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_0060_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\`</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_007b_002c-as-delimiter"><code class="code">\{</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_007b_002c-as-delimiter-1"><code class="code">\{</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_007b_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\{</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_007c_002c-as-delimiter"><code class="code">\|</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_007c_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\|</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-_005c_007d_002c-and-warnings"><code class="code">\}</code>, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_007d_002c-as-delimiter"><code class="code">\}</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_007d_002c-as-delimiter-1"><code class="code">\}</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_007d_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\}</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-_005c_007e_002c-and-translations"><code class="code">\~</code>, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-_005c_007e_002c-as-delimiter"><code class="code">\~</code>, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-_005c_007e_002c-difference-from-_005cSP"><code class="code">\~</code>, difference from <code class="code">\<kbd class="key">SP</kbd></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-_005c_007e_002c-incompatibilities-with-AT_0026T-troff"><code class="code">\~</code>, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-19">]</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-_005d_002c-as-part-of-an-identifier"><code class="code">]</code>, as part of an identifier</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-_005d_002c-at-end-of-sentence"><code class="code">]</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005d_002c-at-end-of-sentence-1"><code class="code">]</code>, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-_005d_002c-macro-names-starting-with_002c-and-refer"><code class="code">]</code>, macro names starting with, and <code class="code">refer</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_symbol-20">|</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_007c_002c-and-page-motion"><code class="code">|</code>, and page motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-ab-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">ab</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-aborting-_0028ab_0029">aborting (<code class="code">ab</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-absolute-_0028sic_0029-position-operator-_0028_007c_0029">absolute <i class="slanted">(sic)</i> position operator (<code class="code">|</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-abstract-font-style">abstract font style</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-abstract-font-style_002c-setting-up-_0028sty_0029">abstract font style, setting up (<code class="code">sty</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-accent-marks-_005bms_005d">accent marks [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-access-to-postprocessor">access to postprocessor</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-accessing-unnamed-glyphs-with-_005cN">accessing unnamed glyphs with <code class="code">\N</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-activating-kerning-_0028kern_0029">activating kerning (<code class="code">kern</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-activating-ligatures-_0028lg_0029">activating ligatures (<code class="code">lg</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-activating-track-kerning-_0028tkf_0029">activating track kerning (<code class="code">tkf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-ad-request_002c-and-hyphenation-margin"><code class="code">ad</code> request, and hyphenation margin</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-ad-request_002c-and-hyphenation-space"><code class="code">ad</code> request, and hyphenation space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-addition">addition</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-additional-inter_002dsentence-space">additional inter-sentence space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-adjustment-and-filling_002c-manipulating">adjustment and filling, manipulating</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-adjustment-mode-register-_0028_002ej_0029">adjustment mode register (<code class="code">.j</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-adjustment-to-both-margins_002c-difference-from-AT_0026T-troff">adjustment to both margins, difference from <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-Adobe-Glyph-List-_0028AGL_0029">Adobe Glyph List (AGL)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-alias_002c-diversion_002c-creating-_0028als_0029">alias, diversion, creating (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-alias_002c-diversion_002c-removing-_0028rm_0029">alias, diversion, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-alias_002c-macro_002c-creating-_0028als_0029">alias, macro, creating (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-alias_002c-macro_002c-removing-_0028rm_0029">alias, macro, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-alias_002c-register_002c-creating-_0028aln_0029">alias, register, creating (<code class="code">aln</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-alias_002c-register_002c-removing-_0028rr_0029">alias, register, removing (<code class="code">rr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-alias_002c-string_002c-creating-_0028als_0029">alias, string, creating (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-alias_002c-string_002c-removing-_0028rm_0029">alias, string, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Positions.html#index-aliasing-fonts-with-third-argument-to-fp-request">aliasing fonts with third argument to <code class="code">fp</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Positions.html">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-als-request_002c-and-_005c_00240"><code class="code">als</code> request, and <code class="code">\$0</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-am_002c-am1_002c-ami-requests_002c-and-warnings"><code class="code">am</code>, <code class="code">am1</code>, <code class="code">ami</code> requests, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-appending-to-a-diversion-_0028da_002c-boxa_0029">appending to a diversion (<code class="code">da</code>, <code class="code">boxa</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-appending-to-a-file-_0028opena_0029">appending to a file (<code class="code">opena</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-appending-to-a-macro-_0028am_0029">appending to a macro (<code class="code">am</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-appending-to-a-string-_0028as_0029">appending to a string (<code class="code">as</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-approximation-output-register-_0028_002eA_0029">approximation output register (<code class="code">.A</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-arc_002c-drawing-_0028_005cD_0027a-_2026_0027_0029">arc, drawing (&lsquo;<samp class="samp">\D'a &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-argument">argument</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-arguments-to-macros">arguments to macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-arguments-to-macros_002c-and-tabs">arguments to macros, and tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-arguments-to-requests">arguments to requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-arguments-to-requests_002c-and-tabs">arguments to requests, and tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Gtroff-Internals.html#index-arguments_002c-and-compatibility-mode">arguments, and compatibility mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Gtroff-Internals.html">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-arguments_002c-to-escape-sequences_002c-delimiting">arguments, to escape sequences, delimiting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-arguments_002c-to-strings">arguments, to strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-arithmetic-operators">arithmetic operators</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-artificial-fonts">artificial fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Comments.html#index-as_002c-as1-requests_002c-and-comments"><code class="code">as</code>, <code class="code">as1</code> requests, and comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Comments.html">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-as_002c-as1-requests_002c-and-warnings"><code class="code">as</code>, <code class="code">as1</code> requests, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-ASCII-output-encoding"><abbr class="acronym">ASCII</abbr> output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-asciify-request_002c-and-writem"><code class="code">asciify</code> request, and <code class="code">writem</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-assertion-_0028arithmetic-operator_0029">assertion (arithmetic operator)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-assign-number-format-to-register-_0028af_0029">assign number format to register (<code class="code">af</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Interpolating-Registers.html#index-assignments_002c-indirect">assignments, indirect</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Interpolating-Registers.html">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Interpolating-Registers.html#index-assignments_002c-nested">assignments, nested</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Interpolating-Registers.html">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Differences-from-AT_0026T-ms.html#index-AT_0026T-ms_002c-macro-package-differences"><abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp>, macro package differences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Differences-from-AT_0026T-ms.html">Differences from AT&amp;T ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-attributes_002c-character-cell">attributes, character cell</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Auto_002dincrement.html#index-auto_002dincrementation-of-a-register">auto-incrementation of a register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Auto_002dincrement.html">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-automatic-font-mounting">automatic font mounting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-automatic-hyphenation">automatic hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-automatic-hyphenation-parameters">automatic hyphenation parameters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Major-Macro-Packages.html#index-auxiliary-macro-package">auxiliary macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Major-Macro-Packages.html">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-available-glyphs_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029">available glyphs, list of (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-B">B</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Background.html#index-background">background</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Background.html">Background</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-background-color-name-register-_0028_002eM_0029">background color name register (<code class="code">.M</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-backslash-glyph_002c-formatting-_0028_005c_005brs_005d_0029">backslash glyph, formatting (<code class="code">\[rs]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-backslash_002c-embedding-in-a-macro-argument">backslash, embedding in a macro argument</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-backslash_002c-printing-_0028_005c_005c_002c-_005ce_002c-_005cE_002c-_005c_005brs_005d_0029">backslash, printing (<code class="code">\\</code>, <code class="code">\e</code>, <code class="code">\E</code>, <code class="code">\[rs]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-backspace-character_002c-and-translations">backspace character, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-backtrace-of-input-stack-_0028backtrace_0029">backtrace of input stack (<code class="code">backtrace</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-baseline-rule-special-character_0028_005c_005bru_005d_0029">baseline rule special character(<code class="code">\[ru]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-baseline_002c-text">baseline, text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html#index-baseline_002c-text-1">baseline, text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-basic-scaling-unit-_0028u_0029">basic scaling unit (<code class="code">u</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-basic-units">basic units</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-basic-units_002c-conversion-to">basic units, conversion to</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-basics-of-macro-package-usage">basics of macro package usage</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-bd-request_002c-and-font-styles"><code class="code">bd</code> request, and font styles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-bd-request_002c-and-font-translations"><code class="code">bd</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-bd-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">bd</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-beginning-diversion-_0028di_002c-box_0029">beginning diversion (<code class="code">di</code>, <code class="code">box</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-beginning-of-conditional-block-_0028_005c_007b_0029">beginning of conditional block (<code class="code">\{</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Breaking.html#index-blank-line">blank line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Breaking.html">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Breaking.html#index-blank-line-macro-_0028blm_0029">blank line macro (<code class="code">blm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Breaking.html">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-blank-line-macro-_0028blm_0029-1">blank line macro (<code class="code">blm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Blank-Line-Traps.html#index-blank-line-macro-_0028blm_0029-2">blank line macro (<code class="code">blm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Blank-Line-Traps.html">Blank Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-blank-line-trap-_0028blm_0029">blank line trap (<code class="code">blm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Blank-Line-Traps.html#index-blank-line-traps">blank line traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Blank-Line-Traps.html">Blank Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-blank-lines_002c-disabling">blank lines, disabling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-block_002c-conditional_002c-beginning-_0028_005c_007b_0029">block, conditional, beginning (<code class="code">\{</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-block_002c-conditional_002c-end-_0028_005c_007d_0029">block, conditional, end (<code class="code">\}</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-blocks_002c-conditional">blocks, conditional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="while.html#index-body_002c-of-a-while-request">body, of a while request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="while.html">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-boldface_002c-imitating-_0028bd_0029">boldface, imitating (<code class="code">bd</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-bottom-margin">bottom margin</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-boundary_002drelative-motion-operator-_0028_007c_0029">boundary-relative motion operator (<code class="code">|</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-bounding-box">bounding box</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-box-_0028diversion-operation_0029">box (diversion operation)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-box-request_002c-and-warnings"><code class="code">box</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-box-rule-glyph-_0028_005c_005bbr_005d_0029">box rule glyph (<code class="code">\[br]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-box_002c-boxa-requests_002c-and-warnings"><code class="code">box</code>, <code class="code">boxa</code> requests, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-boxa-request_002c-and-dn-_0028dl_0029"><code class="code">boxa</code> request, and <code class="code">dn</code> (<code class="code">dl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-boxa-request_002c-and-warnings"><code class="code">boxa</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-boxes-_005bms_005d">boxes [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-bp-request_002c-and-top_002dlevel-diversion"><code class="code">bp</code> request, and top-level diversion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-bp-request_002c-and-traps-_0028_002epe_0029"><code class="code">bp</code> request, and traps (<code class="code">.pe</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-bp-request_002c-causing-implicit-break"><code class="code">bp</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-bp-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">bp</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-bp-request_002c-using-_002b-and-_002d-with"><code class="code">bp</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-br-glyph_002c-and-cflags"><code class="code">br</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-brace-escape-sequence_002c-closing-_0028_005c_007d_0029">brace escape sequence, closing (<code class="code">\})</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-brace-escape-sequence_002c-opening-_0028_005c_007d_0029">brace escape sequence, opening (<code class="code">\})</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-brace-escape-sequences-_0028_005c_007b_002c-_005c_007d_0029">brace escape sequences (<code class="code">\{</code>, <code class="code">\}</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Breaking.html#index-break">break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Breaking.html">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-break-1">break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-break-_0028introduction_0029">break (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="while.html#index-break-request_002c-in-a-while-loop"><code class="code">break</code> request, in a <code class="code">while</code> loop</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="while.html">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-break_002c-page">break, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-break_002c-page-1">break, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="The-Implicit-Page-Trap.html#index-break_002c-page-2">break, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="The-Implicit-Page-Trap.html">The Implicit Page Trap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-break_002c-page-_0028introduction_0029">break, page (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="End_002dof_002dinput-Traps.html#index-break_002c-page_002c-final">break, page, final</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="End_002dof_002dinput-Traps.html">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Vertical-Position-Traps.html#index-break_002c-page_002c-prevented-by-vpt">break, page, prevented by <code class="code">vpt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Vertical-Position-Traps.html">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-breaking-file-names-_0028_005c_003a_0029">breaking file names (<code class="code">\:</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-breaking-URLs-_0028_005c_003a_0029">breaking URLs (<code class="code">\:</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-breaking-without-hyphens-_0028_005c_003a_0029">breaking without hyphens (<code class="code">\:</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-built_002din-register_002c-removing">built-in register, removing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-built_002din-registers">built-in registers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Lists-in-ms.html#index-bulleted-list_002c-example-markup-_005bms_005d">bulleted list, example markup [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Lists-in-ms.html">Lists in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-c-scaling-unit"><code class="code">c</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-calling-a-macro">calling a macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-calling-macros">calling macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="groff-Capabilities.html#index-capabilities-of-groff">capabilities of <code class="code">groff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="groff-Capabilities.html"><code class="code">groff</code> Capabilities</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-case_002dtransforming-a-string-_0028stringdown_002c-stringup_0029">case-transforming a string (<code class="code">stringdown</code>, <code class="code">stringup</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-categories_002c-warning">categories, warning</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-CCSID-1047-output-encoding-_0028EBCDIC_0029">CCSID 1047 output encoding (EBCDIC)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-ce-request_002c-causing-implicit-break"><code class="code">ce</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-ce-request_002c-difference-from-_002ead-c"><code class="code">ce</code> request, difference from &lsquo;<samp class="samp">.ad&nbsp;c</samp>&rsquo;<!-- /@w --></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-cell_002c-character_002c-attributes">cell, character, attributes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-centered-text-_0028filled_0029">centered text (filled)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-centered-text-_0028unfilled_0029">centered text (unfilled)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-centering-lines-_0028ce_0029">centering lines (<code class="code">ce</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-centering-lines-_0028introduction_0029">centering lines (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-centimeter-scaling-unit-_0028c_0029">centimeter scaling unit (<code class="code">c</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-cf-request_002c-and-copy-mode"><code class="code">cf</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-cf-request_002c-causing-implicit-break"><code class="code">cf</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-changing-control-characters">changing control characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-changing-font-family-_0028fam_002c-_005cF_0029">changing font family (<code class="code">fam</code>, <code class="code">\F</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-changing-fonts-_0028ft_002c-_005cf_0029">changing fonts (<code class="code">ft</code>, <code class="code">\f</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-changing-format_002c-and-read_002donly-registers">changing format, and read-only registers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-changing-the-font-height-_0028_005cH_0029">changing the font height (<code class="code">\H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-changing-the-font-slant-_0028_005cS_0029">changing the font slant (<code class="code">\S</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-changing-the-page-number-character-_0028pc_0029">changing the page number character (<code class="code">pc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-changing-trap-location-_0028ch_0029">changing trap location (<code class="code">ch</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Type-Size.html#index-changing-type-sizes-_0028ps_002c-_005cs_0029">changing type sizes (<code class="code">ps</code>, <code class="code">\s</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Type-Size.html">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-changing-vertical-line-spacing-_0028vs_0029">changing vertical line spacing (<code class="code">vs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-char-request_002c-and-soft-hyphen-character"><code class="code">char</code> request, and soft hyphen character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-char-request_002c-and-translations"><code class="code">char</code> request, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-char-request_002c-used-with-_005cN"><code class="code">char</code> request, used with <code class="code">\N</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-character">character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-character-cell-attributes">character cell attributes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Classes.html#index-character-class-_0028class_0029">character class (<code class="code">class</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Classes.html">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Classes.html#index-character-classes">character classes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Classes.html">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-character-properties-_0028cflags_0029">character properties (<code class="code">cflags</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-character-translations">character translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-character_002c-backspace_002c-and-translations">character, backspace, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-character_002c-control-_0028_002e_0029">character, control (<code class="code">.</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-character_002c-control_002c-changing-_0028cc_0029">character, control, changing (<code class="code">cc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-character_002c-defining-_0028char_0029">character, defining (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-character_002c-defining-fallback-_0028fchar_002c-fschar_002c-schar_0029">character, defining fallback (<code class="code">fchar</code>, <code class="code">fschar</code>, <code class="code">schar</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-character_002c-distinguished-from-glyph">character, distinguished from glyph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Dummy-Characters.html#index-character_002c-dummy-_0028_005c_0026_0029">character, dummy (<code class="code">\&amp;</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Dummy-Characters.html">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-character_002c-dummy-_0028_005c_0026_0029_002c-as-control-character-suppressor">character, dummy (<code class="code">\&amp;</code>), as control character suppressor</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-character_002c-dummy-_0028_005c_0026_0029_002c-effect-on-kerning">character, dummy (<code class="code">\&amp;</code>), effect on kerning</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-character_002c-dummy-_0028_005c_0026_0029_002c-effect-on-_005cl-escape-sequence">character, dummy (<code class="code">\&amp;</code>), effect on <code class="code">\l</code> escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-character_002c-escape_002c-changing-_0028ec_0029">character, escape, changing (<code class="code">ec</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-character_002c-escape_002c-while-defining-glyph">character, escape, while defining glyph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Fields.html#index-character_002c-field-delimiting-_0028fc_0029">character, field delimiting (<code class="code">fc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Fields.html">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Fields.html#index-character_002c-field-padding-_0028fc_0029">character, field padding (<code class="code">fc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Fields.html">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Leaders.html#index-character_002c-horizontal-tab">character, horizontal tab</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Leaders.html">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-character_002c-hyphenation-_0028_005c_0025_0029">character, hyphenation (<code class="code">\%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Leaders.html#index-character_002c-leader">character, leader</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Leaders.html">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-character_002c-leader-repetition-_0028lc_0029">character, leader repetition (<code class="code">lc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-character_002c-leader_002c-and-translations">character, leader, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-character_002c-leader_002c-non_002dinterpreted-_0028_005ca_0029">character, leader, non-interpreted (<code class="code">\a</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-character_002c-named-_0028_005cC_0029">character, named (<code class="code">\C</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-character_002c-newline_002c-and-translations">character, newline, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-character_002c-no_002dbreak-control-_0028_0027_0029">character, no-break control (<code class="code">'</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-character_002c-no_002dbreak-control_002c-changing-_0028c2_0029">character, no-break control, changing (<code class="code">c2</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-character_002c-ordinary">character, ordinary</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-character_002c-soft-hyphen_002c-setting-_0028shc_0029">character, soft hyphen, setting (<code class="code">shc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-character_002c-special">character, special</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-character_002c-tab-repetition-_0028tc_0029">character, tab repetition (<code class="code">tc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-character_002c-tab_002c-and-translations">character, tab, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-character_002c-tab_002c-non_002dinterpreted-_0028_005ct_0029">character, tab, non-interpreted (<code class="code">\t</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-character_002c-transparent">character, transparent</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Dummy-Characters.html#index-character_002c-transparent-dummy-_0028_005c_0029_0029">character, transparent dummy (<code class="code">\)</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Dummy-Characters.html">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-characters_002c-end_002dof_002dsentence">characters, end-of-sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-characters_002c-end_002dof_002dsentence-transparent">characters, end-of-sentence transparent</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-characters_002c-hyphenation">characters, hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-characters_002c-input_002c-and-output-glyphs_002c-compatibility-with-AT_0026T-troff">characters, input, and output glyphs, compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-characters_002c-invalid-for-trf-request">characters, invalid for <code class="code">trf</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-characters_002c-invalid-input">characters, invalid input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-characters_002c-overlapping">characters, overlapping</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-characters_002c-special">characters, special</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-characters_002c-special_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029">characters, special, list of (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-characters_002c-unnamed_002c-accessing-with-_005cN">characters, unnamed, accessing with <code class="code">\N</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-circle_002c-filled_002c-drawing-_0028_005cD_0027C-_2026_0027_0029">circle, filled, drawing (&lsquo;<samp class="samp">\D'C &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-circle_002c-outlined_002c-drawing-_0028_005cD_0027c-_2026_0027_0029">circle, outlined, drawing (&lsquo;<samp class="samp">\D'c &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-circle_002c-solid_002c-drawing-_0028_005cD_0027C-_2026_0027_0029">circle, solid, drawing (&lsquo;<samp class="samp">\D'C &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-circle_002c-stroked_002c-drawing-_0028_005cD_0027c-_2026_0027_0029">circle, stroked, drawing (&lsquo;<samp class="samp">\D'c &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Classes.html#index-class-of-characters-_0028class_0029">class of characters (<code class="code">class</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Classes.html">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Classes.html#index-classes_002c-character">classes, character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Classes.html">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-clearing-input-line-trap-_0028it_002c-itc_0029">clearing input line trap (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-closing-brace-escape-sequence-_0028_005c_007d_0029">closing brace escape sequence (<code class="code">\})</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-closing-file-_0028close_0029">closing file (<code class="code">close</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-code-page-1047-output-encoding">code page 1047 output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-code-page-1047_002c-input-encoding">code page 1047, input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-code_002c-hyphenation-_0028hcode_0029">code, hyphenation (<code class="code">hcode</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-color-name_002c-background_002c-register-_0028_002eM_0029">color name, background, register (<code class="code">.M</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-color-name_002c-fill_002c-register-_0028_002eM_0029">color name, fill, register (<code class="code">.M</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-color-name_002c-stroke_002c-register-_0028_002em_0029">color name, stroke, register (<code class="code">.m</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-color_002c-default">color, default</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-color_002c-fill">color, fill</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-color_002c-stroke">color, stroke</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-colors">colors</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-command-prefix">command prefix</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-command_002dline-options">command-line options</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Comments.html#index-comments">comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Comments.html">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-comments-in-device-description-files">comments in device description files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-comments-in-font-description-files">comments in font description files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Comments.html#index-comments_002c-lining-up-with-tabs">comments, lining up with tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Comments.html">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-comments_002c-with-ds">comments, with <code class="code">ds</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Common-Features.html#index-common-features">common features</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Common-Features.html">Common Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-common-name-space-of-macros_002c-diversions_002c-and-strings">common name space of macros, diversions, and strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-comparison-of-strings">comparison of strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-comparison-operators">comparison operators</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-compatibility-mode">compatibility mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-compatibility-mode-1">compatibility mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Gtroff-Internals.html#index-compatibility-mode_002c-and-parameters">compatibility mode, and parameters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Gtroff-Internals.html">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-complementation_002c-logical">complementation, logical</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-composite-glyph-names">composite glyph names</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-conditional-block_002c-beginning-_0028_005c_007b_0029">conditional block, beginning (<code class="code">\{</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-conditional-block_002c-end-_0028_005c_007d_0029">conditional block, end (<code class="code">\}</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-conditional-blocks">conditional blocks</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-conditional-expressions">conditional expressions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-conditional-output-for-terminal-_0028TTY_0029">conditional output for terminal (TTY)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-conditional-page-break-_0028ne_0029">conditional page break (<code class="code">ne</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditionals-and-Loops.html#index-conditionals-and-loops">conditionals and loops</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditionals-and-Loops.html">Conditionals and Loops</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-configuring-control-characters">configuring control characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-configuring-the-page-length-_0028pl_0029">configuring the page length (<code class="code">pl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-consecutive-hyphenated-lines-_0028hlm_0029">consecutive hyphenated lines (<code class="code">hlm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-constant-glyph-space-mode-_0028cs_0029">constant glyph space mode (<code class="code">cs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Table-of-Contents.html#index-contents_002c-table-of">contents, table of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Table-of-Contents.html">Table of Contents</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-contents_002c-table-of-1">contents, table of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-continuation_002c-input-line-_0028_005cRET_0029">continuation, input line (<code class="code">\<kbd class="key">RET</kbd></code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-continuation_002c-output-line-_0028_005cc_0029">continuation, output line (<code class="code">\c</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="while.html#index-continue-request_002c-in-a-while-loop"><code class="code">continue</code> request, in a <code class="code">while</code> loop</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="while.html">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-continued-output-line-register-_0028_002eint_0029">continued output line register (<code class="code">.int</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-continuous-underlining-_0028cu_0029">continuous underlining (<code class="code">cu</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-control-character-_0028_002e_0029">control character (<code class="code">.</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-control-character_002c-changing-_0028cc_0029">control character, changing (<code class="code">cc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-control-character_002c-no_002dbreak-_0028_0027_0029">control character, no-break (<code class="code">'</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-control-character_002c-no_002dbreak_002c-changing-_0028c2_0029">control character, no-break, changing (<code class="code">c2</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-control-characters">control characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-control-line">control line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-control_002c-line">control, line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-control_002c-page">control, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Conventions.html#index-conventions-for-input">conventions for input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Conventions.html">Input Conventions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-conversion-to-basic-units">conversion to basic units</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-copy-mode">copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-copy-mode-1">copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-copy-mode_002c-and-cf-request">copy mode, and <code class="code">cf</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-copy-mode_002c-and-device-request">copy mode, and <code class="code">device</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-copy-mode_002c-and-length-request">copy mode, and <code class="code">length</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-copy-mode_002c-and-macro-parameters">copy mode, and macro parameters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-copy-mode_002c-and-output-request">copy mode, and <code class="code">output</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-copy-mode_002c-and-trf-request">copy mode, and <code class="code">trf</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-copy-mode_002c-and-write-request">copy mode, and <code class="code">write</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-copy-mode_002c-and-writec-request">copy mode, and <code class="code">writec</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-copy-mode_002c-and-writem-request">copy mode, and <code class="code">writem</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-copy-mode_002c-and-_005c_0021">copy mode, and <code class="code">\!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-copy-mode_002c-and-_005c_003f">copy mode, and <code class="code">\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-copy-mode_002c-and-_005c_003f-1">copy mode, and <code class="code">\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-copy-mode_002c-and-_005ca">copy mode, and <code class="code">\a</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-copy-mode_002c-and-_005ct">copy mode, and <code class="code">\t</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-copy-mode_002c-and-_005cV">copy mode, and <code class="code">\V</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-copying-environment-_0028evc_0029">copying environment (<code class="code">evc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Italic-Corrections.html#index-correction-between-oblique-and-upright-glyph-_0028_005c_002f_002c-_005c_002c_0029">correction between oblique and upright glyph (<code class="code">\/</code>, <code class="code">\,</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Italic-Corrections.html">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Italic-Corrections.html#index-correction-between-upright-and-oblique-glyph-_0028_005c_002f_002c-_005c_002c_0029">correction between upright and oblique glyph (<code class="code">\/</code>, <code class="code">\,</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Italic-Corrections.html">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Italic-Corrections.html#index-correction_002c-italic-_0028_005c_002f_0029">correction, italic (<code class="code">\/</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Italic-Corrections.html">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Italic-Corrections.html#index-correction_002c-left-italic-_0028_005c_002c_0029">correction, left italic (<code class="code">\,</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Italic-Corrections.html">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Description-Macros.html#index-cover-page-in-_005bms_005d_002c-example-markup">cover page in [<samp class="file">ms</samp>], example markup</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Description-Macros.html">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-cp-request_002c-and-glyph-definitions"><code class="code">cp</code> request, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-cq-glyph_002c-at-end-of-sentence"><code class="code">cq</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-cq-glyph_002c-at-end-of-sentence-1"><code class="code">cq</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-creating-alias-for-register-_0028aln_0029">creating alias for register (<code class="code">aln</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-creating-alias_002c-for-diversion-_0028als_0029">creating alias, for diversion (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-creating-alias_002c-for-macro-_0028als_0029">creating alias, for macro (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-creating-alias_002c-for-string-_0028als_0029">creating alias, for string (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-creating-new-characters-_0028char_0029">creating new characters (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Credits.html#index-credits">credits</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Credits.html">Credits</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-cs-request_002c-and-font-styles"><code class="code">cs</code> request, and font styles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-cs-request_002c-and-font-translations"><code class="code">cs</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-cs-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">cs</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-cs-request_002c-with-fractional-type-sizes"><code class="code">cs</code> request, with fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-CSTR-_002354-errata">CSTR&nbsp;#54 errata</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-CSTR-_002354-errata-1">CSTR&nbsp;#54 errata</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-CSTR-_002354-errata-2">CSTR&nbsp;#54 errata</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-CSTR-_002354-errata-3">CSTR&nbsp;#54 errata</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Type-Size.html#index-CSTR-_002354-errata-4">CSTR&nbsp;#54 errata</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Type-Size.html">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-CSTR-_002354-errata-5">CSTR&nbsp;#54 errata</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-CSTR-_002354-erratum_002c-bp-request">CSTR&nbsp;#54 erratum, <code class="code">bp</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-CSTR-_002354-erratum_002c-po-request">CSTR&nbsp;#54 erratum, <code class="code">po</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Type-Size.html#index-CSTR-_002354-erratum_002c-ps-request">CSTR&nbsp;#54 erratum, <code class="code">ps</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Type-Size.html">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-CSTR-_002354-erratum_002c-sb-register">CSTR&nbsp;#54 erratum, <code class="code">sb</code> register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-CSTR-_002354-erratum_002c-st-register">CSTR&nbsp;#54 erratum, <code class="code">st</code> register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-CSTR-_002354-erratum_002c-yr-register">CSTR&nbsp;#54 erratum, <code class="code">yr</code> register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-CSTR-_002354-erratum_002c-_005cS-escape">CSTR&nbsp;#54 erratum, <code class="code">\S</code> escape</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Type-Size.html#index-CSTR-_002354-erratum_002c-_005cs-escape-sequence">CSTR&nbsp;#54 erratum, <code class="code">\s</code> escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Type-Size.html">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-current-directory">current directory</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-current-input-file-name-register-_0028_002eF_0029">current input file name register (<code class="code">.F</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-current-page-number-_0028_0025_0029">current page number (<code class="code">%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-current-time_002c-hours-_0028hours_0029">current time, hours (<code class="code">hours</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-current-time_002c-minutes-_0028minutes_0029">current time, minutes (<code class="code">minutes</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-current-time_002c-seconds-_0028seconds_0029">current time, seconds (<code class="code">seconds</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-da-request_002c-and-dn-_0028dl_0029"><code class="code">da</code> request, and <code class="code">dn</code> (<code class="code">dl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-da-request_002c-and-warnings"><code class="code">da</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-da-request_002c-and-warnings-1"><code class="code">da</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-date_002c-day-of-the-month-register-_0028dy_0029">date, day of the month register (<code class="code">dy</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-date_002c-day-of-the-week-register-_0028dw_0029">date, day of the week register (<code class="code">dw</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-date_002c-month-of-the-year-register-_0028mo_0029">date, month of the year register (<code class="code">mo</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-date_002c-year-register-_0028year_002c-yr_0029">date, year register (<code class="code">year</code>, <code class="code">yr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-day-of-the-month-register-_0028dy_0029">day of the month register (<code class="code">dy</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-day-of-the-week-register-_0028dw_0029">day of the week register (<code class="code">dw</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-dd-glyph_002c-at-end-of-sentence"><code class="code">dd</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-dd-glyph_002c-at-end-of-sentence-1"><code class="code">dd</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="while.html#index-de-request_002c-and-while"><code class="code">de</code> request, and <code class="code">while</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="while.html">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-de_002c-de1_002c-dei-requests_002c-and-warnings"><code class="code">de</code>, <code class="code">de1</code>, <code class="code">dei</code> requests, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-debugging">debugging</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-debugging-page-location-traps">debugging page location traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-decimal-point_002c-as-delimiter">decimal point, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Auto_002dincrement.html#index-decrementation_002c-automatic_002c-of-a-register">decrementation, automatic, of a register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Auto_002dincrement.html">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-default-color">default color</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-default-tab-stops">default tab stops</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Default-Units.html#index-default-units">default units</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Default-Units.html">Default Units</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Deferring-Output.html#index-deferred-output">deferred output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Deferring-Output.html">Deferring Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-defining-character-_0028char_0029">defining character (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Classes.html#index-defining-character-class-_0028class_0029">defining character class (<code class="code">class</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Classes.html">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-defining-fallback-character-_0028fchar_002c-fschar_002c-schar_0029">defining fallback character (<code class="code">fchar</code>, <code class="code">fschar</code>, <code class="code">schar</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-defining-glyph-_0028char_0029">defining glyph (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-defining-symbol-_0028char_0029">defining symbol (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-delimited-arguments_002c-incompatibilities-with-AT_0026T-troff">delimited arguments, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-delimiters_002c-for-escape-sequence-arguments">delimiters, for escape sequence arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Fields.html#index-delimiting-character_002c-for-fields-_0028fc_0029">delimiting character, for fields (<code class="code">fc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Fields.html">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-delimiting-escape-sequence-arguments">delimiting escape sequence arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-depth_002c-interpolation">depth, interpolation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-depth_002c-of-last-glyph-_0028_002ecdp_0029">depth, of last glyph (<code class="code">.cdp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-DESC-file-format"><samp class="file">DESC</samp> file format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Positions.html#index-DESC-file_002c-and-font-mounting"><samp class="file">DESC</samp> file, and font mounting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Positions.html">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-DESC-file_002c-and-use_005fcharnames_005fin_005fspecial-keyword"><samp class="file">DESC</samp> file, and <code class="code">use_charnames_in_special</code> keyword</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-description-file_002c-font">description file, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-device-description-files_002c-comments">device description files, comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-device-request_002c-and-copy-mode"><code class="code">device</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-device-resolution">device resolution</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-device-resolution-1">device resolution</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-device-resolution_002c-obtaining-in-the-formatter">device resolution, obtaining in the formatter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Output-Device-Intro.html#index-devices-for-output">devices for output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Output-Device-Intro.html">Output Device Intro</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-dg-glyph_002c-at-end-of-sentence"><code class="code">dg</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-dg-glyph_002c-at-end-of-sentence-1"><code class="code">dg</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-di-request_002c-and-warnings"><code class="code">di</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-di-request_002c-and-warnings-1"><code class="code">di</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Implementation-Differences.html#index-differences-in-implementation">differences in implementation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Implementation-Differences.html">Implementation Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-digit_002dwidth-space-_0028_005c0_0029">digit-width space (<code class="code">\0</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-digits_002c-as-delimiters">digits, as delimiters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-dimensions_002c-line">dimensions, line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Directories.html#index-directories-for-fonts">directories for fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Directories.html">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-directories-for-macros">directories for macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-directory_002c-current">directory, current</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-directory_002c-for-tmac-files">directory, for tmac files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-directory_002c-home">directory, home</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-directory_002c-platform_002dspecific">directory, platform-specific</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-directory_002c-site_002dlocal">directory, site-local</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Directories.html#index-directory_002c-site_002dlocal-1">directory, site-local</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Directories.html">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-disabling-hyphenation-_0028_005c_0025_0029">disabling hyphenation (<code class="code">\%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-disabling-_005c-_0028eo_0029">disabling <code class="code">\</code> (<code class="code">eo</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-discardable-horizontal-space">discardable horizontal space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Displays-and-Keeps.html#index-displays">displays</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Displays-and-Keeps.html">Displays and Keeps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-displays-_005bms_005d">displays [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Footnotes.html#index-displays_002c-and-footnotes-_005bms_005d">displays, and footnotes [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Footnotes.html">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-distance-to-next-vertical-position-trap-register-_0028_002et_0029">distance to next vertical position trap register (<code class="code">.t</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Deferring-Output.html#index-diversion">diversion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Deferring-Output.html">Deferring Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-diversion-name-register-_0028_002ez_0029">diversion name register (<code class="code">.z</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversion-Traps.html#index-diversion-trap_002c-setting-_0028dt_0029">diversion trap, setting (<code class="code">dt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversion-Traps.html">Diversion Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversion-Traps.html#index-diversion-traps">diversion traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversion-Traps.html">Diversion Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-diversion_002c-appending-to-_0028da_002c-boxa_0029">diversion, appending to (<code class="code">da</code>, <code class="code">boxa</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-diversion_002c-beginning-_0028di_002c-box_0029">diversion, beginning (<code class="code">di</code>, <code class="code">box</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-diversion_002c-creating-alias-for-_0028als_0029">diversion, creating alias for (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-diversion_002c-ending-_0028di_002c-box_0029">diversion, ending (<code class="code">di</code>, <code class="code">box</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-diversion_002c-nested">diversion, nested</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-diversion_002c-removing-_0028rm_0029">diversion, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-diversion_002c-removing-alias-for-_0028rm_0029">diversion, removing alias for (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-diversion_002c-renaming-_0028rn_0029">diversion, renaming (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Punning-Names.html#index-diversion_002c-stripping-final-newline">diversion, stripping final newline</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Punning-Names.html">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-diversion_002c-top_002dlevel">diversion, top-level</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-diversion_002c-top_002dlevel_002c-and-bp">diversion, top-level, and <code class="code">bp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-diversion_002c-top_002dlevel_002c-and-_005c_0021">diversion, top-level, and <code class="code">\!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-diversion_002c-top_002dlevel_002c-and-_005c_003f">diversion, top-level, and <code class="code">\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-diversion_002c-unformatting-_0028asciify_0029">diversion, unformatting (<code class="code">asciify</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-diversion_002c-vertical-position-in_002c-register-_0028_002ed_0029">diversion, vertical position in, register (<code class="code">.d</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-diversions">diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Punning-Names.html#index-diversions-1">diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Punning-Names.html">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-diversions_002c-and-traps">diversions, and traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-diversions_002c-shared-name-space-with-macros-and-strings">diversions, shared name space with macros and strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-division_002c-truncating">division, truncating</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-dl-register_002c-and-da-_0028boxa_0029"><code class="code">dl</code> register, and <code class="code">da</code> (<code class="code">boxa</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-dn-register_002c-and-da-_0028boxa_0029"><code class="code">dn</code> register, and <code class="code">da</code> (<code class="code">boxa</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Description-Macros.html#index-document-description-macros_002c-_005bms_005d">document description macros, [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Description-Macros.html">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Document-Formats.html#index-document-formats">document formats</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Document-Formats.html">Document Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-documents_002c-multi_002dfile">documents, multi-file</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-documents_002c-structuring-the-source-of">documents, structuring the source of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-dot_002c-as-delimiter">dot, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-double-quote_002c-embedding-in-a-macro-argument">double quote, embedding in a macro argument</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-double-quotes_002c-trailing_002c-in-strings">double quotes, trailing, in strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-double_002dspacing-_0028ls_0029">double-spacing (<code class="code">ls</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-double_002dspacing-_0028vs_002c-pvs_0029">double-spacing (<code class="code">vs</code>, <code class="code">pvs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-down_002dcasing-a-string-_0028stringdown_0029">down-casing a string (<code class="code">stringdown</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-a-filled-circle-_0028_005cD_0027C-_2026_0027_0029">drawing a filled circle (&lsquo;<samp class="samp">\D'C &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-a-filled-ellipse-_0028_005cD_0027E-_2026_0027_0029">drawing a filled ellipse (&lsquo;<samp class="samp">\D'E &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-a-filled-polygon-_0028_005cD_0027P-_2026_0027_0029">drawing a filled polygon (&lsquo;<samp class="samp">\D'P &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-a-line-_0028_005cD_0027l-_2026_0027_0029">drawing a line (&lsquo;<samp class="samp">\D'l &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-a-solid-circle-_0028_005cD_0027C-_2026_0027_0029">drawing a solid circle (&lsquo;<samp class="samp">\D'C &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-a-solid-ellipse-_0028_005cD_0027E-_2026_0027_0029">drawing a solid ellipse (&lsquo;<samp class="samp">\D'E &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-a-solid-polygon-_0028_005cD_0027P-_2026_0027_0029">drawing a solid polygon (&lsquo;<samp class="samp">\D'P &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-a-spline-_0028_005cD_0027_007e-_2026_0027_0029">drawing a spline (&lsquo;<samp class="samp">\D'~ &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-a-stroked-circle-_0028_005cD_0027c-_2026_0027_0029">drawing a stroked circle (&lsquo;<samp class="samp">\D'c &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-a-stroked-ellipse-_0028_005cD_0027e-_2026_0027_0029">drawing a stroked ellipse (&lsquo;<samp class="samp">\D'e &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-a-stroked-polygon-_0028_005cD_0027p-_2026_0027_0029">drawing a stroked polygon (&lsquo;<samp class="samp">\D'p &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-an-arc-_0028_005cD_0027a-_2026_0027_0029">drawing an arc (&lsquo;<samp class="samp">\D'a &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-an-outlined-circle-_0028_005cD_0027c-_2026_0027_0029">drawing an outlined circle (&lsquo;<samp class="samp">\D'c &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-an-outlined-ellipse-_0028_005cD_0027e-_2026_0027_0029">drawing an outlined ellipse (&lsquo;<samp class="samp">\D'e &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-an-outlined-polygon-_0028_005cD_0027p-_2026_0027_0029">drawing an outlined polygon (&lsquo;<samp class="samp">\D'p &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-horizontal-lines-_0028_005cl_0029">drawing horizontal lines (<code class="code">\l</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-drawing-position">drawing position</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-drawing-position_002c-vertical-_0028nl_0029">drawing position, vertical (<code class="code">nl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-requests">drawing requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-drawing-vertical-lines-_0028_005cL_0029">drawing vertical lines (<code class="code">\L</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-ds-request_002c-and-comments"><code class="code">ds</code> request, and comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-ds-request_002c-and-double-quotes"><code class="code">ds</code> request, and double quotes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-ds-request_002c-and-leading-spaces"><code class="code">ds</code> request, and leading spaces</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Comments.html#index-ds_002c-ds1-requests_002c-and-comments"><code class="code">ds</code>, <code class="code">ds1</code> requests, and comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Comments.html">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-ds_002c-ds1-requests_002c-and-warnings"><code class="code">ds</code>, <code class="code">ds1</code> requests, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Dummy-Characters.html#index-dummy-character-_0028_005c_0026_0029">dummy character (<code class="code">\&amp;</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Dummy-Characters.html">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-dummy-character-_0028_005c_0026_0029_002c-as-control-character-suppressor">dummy character (<code class="code">\&amp;</code>), as control character suppressor</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-dummy-character-_0028_005c_0026_0029_002c-effect-on-kerning">dummy character (<code class="code">\&amp;</code>), effect on kerning</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-dummy-character-_0028_005c_0026_0029_002c-effect-on-_005cl-escape-sequence">dummy character (<code class="code">\&amp;</code>), effect on <code class="code">\l</code> escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Dummy-Characters.html#index-dummy-character_002c-transparent-_0028_005c_0029_0029">dummy character, transparent (<code class="code">\)</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Dummy-Characters.html">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-dummy-environment_002c-used-by-_005cw-escape-sequence">dummy environment, used by <code class="code">\w</code> escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-dumping-environments-_0028pev_0029">dumping environments (<code class="code">pev</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-dumping-page-location-traps-_0028ptr_0029">dumping page location traps (<code class="code">ptr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-dumping-registers-_0028pnr_0029">dumping registers (<code class="code">pnr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-dumping-symbol-table-_0028pm_0029">dumping symbol table (<code class="code">pm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-E">E</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-EBCDIC-output-encoding"><abbr class="acronym">EBCDIC</abbr> output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-EBCDIC_002c-input-encoding"><abbr class="acronym">EBCDIC</abbr>, input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-ejection_002c-page">ejection, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-ejection_002c-page-1">ejection, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="The-Implicit-Page-Trap.html#index-ejection_002c-page-2">ejection, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="The-Implicit-Page-Trap.html">The Implicit Page Trap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="End_002dof_002dinput-Traps.html#index-ejection_002c-page_002c-of-final-page">ejection, page, of final page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="End_002dof_002dinput-Traps.html">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Vertical-Position-Traps.html#index-ejection_002c-page_002c-prevented-by-vpt">ejection, page, prevented by <code class="code">vpt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Vertical-Position-Traps.html">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-el-request_002c-and-warnings"><code class="code">el</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-ellipse_002c-filled_002c-drawing-_0028_005cD_0027E-_2026_0027_0029">ellipse, filled, drawing (&lsquo;<samp class="samp">\D'E &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-ellipse_002c-outlined_002c-drawing-_0028_005cD_0027e-_2026_0027_0029">ellipse, outlined, drawing (&lsquo;<samp class="samp">\D'e &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-ellipse_002c-solid_002c-drawing-_0028_005cD_0027E-_2026_0027_0029">ellipse, solid, drawing (&lsquo;<samp class="samp">\D'E &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-ellipse_002c-stroked_002c-drawing-_0028_005cD_0027e-_2026_0027_0029">ellipse, stroked, drawing (&lsquo;<samp class="samp">\D'e &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-em-glyph_002c-and-cflags"><code class="code">em</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-em-scaling-unit-_0028m_0029">em scaling unit (<code class="code">m</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-embolding-of-special-fonts">embolding of special fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Breaking.html#index-empty-line">empty line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Breaking.html">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-en-scaling-unit-_0028n_0029">en scaling unit (<code class="code">n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Vertical-Position-Traps.html#index-enabling-vertical-position-traps-_0028vpt_0029">enabling vertical position traps (<code class="code">vpt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Vertical-Position-Traps.html">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-encoding_002c-input_002c-code-page-1047">encoding, input, code page 1047</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-encoding_002c-input_002c-EBCDIC">encoding, input, <abbr class="acronym">EBCDIC</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-encoding_002c-input_002c-Latin_002d1-_0028ISO-8859_002d1_0029">encoding, input, <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-encoding_002c-input_002c-Latin_002d2-_0028ISO-8859_002d2_0029">encoding, input, <span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-2</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-encoding_002c-input_002c-Latin_002d5-_0028ISO-8859_002d9_0029">encoding, input, <span class="w-nolinebreak-text">Latin-5</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-9</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-encoding_002c-input_002c-Latin_002d9-_0028ISO-8859_002d15_0029">encoding, input, <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-15</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-encoding_002c-output_002c-ASCII">encoding, output, <abbr class="acronym">ASCII</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-encoding_002c-output_002c-code-page-1047">encoding, output, code page 1047</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-encoding_002c-output_002c-EBCDIC">encoding, output, <abbr class="acronym">EBCDIC</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-encoding_002c-output_002c-ISO-646">encoding, output, ISO&nbsp;646</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-encoding_002c-output_002c-Latin_002d1-_0028ISO-8859_002d1_0029">encoding, output, <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-encoding_002c-output_002c-UTF_002d8">encoding, output, <span class="w-nolinebreak-text">UTF-8</span><!-- /@w --></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-end-of-conditional-block-_0028_005c_007d_0029">end of conditional block (<code class="code">\}</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="End_002dof_002dinput-Traps.html#index-end_002dof_002dinput-macro-_0028em_0029">end-of-input macro (<code class="code">em</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="End_002dof_002dinput-Traps.html">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="End_002dof_002dinput-Traps.html#index-end_002dof_002dinput-trap_002c-setting-_0028em_0029">end-of-input trap, setting (<code class="code">em</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="End_002dof_002dinput-Traps.html">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="End_002dof_002dinput-Traps.html#index-end_002dof_002dinput-traps">end-of-input traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="End_002dof_002dinput-Traps.html">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-end_002dof_002dsentence-characters">end-of-sentence characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-end_002dof_002dsentence-characters-1">end-of-sentence characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-end_002dof_002dsentence-transparent-characters">end-of-sentence transparent characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-ending-diversion-_0028di_002c-box_0029">ending diversion (<code class="code">di</code>, <code class="code">box</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Footnotes-and-Endnotes.html#index-endnotes">endnotes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Footnotes-and-Endnotes.html">Footnotes and Endnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Deferring-Output.html#index-environment">environment</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Deferring-Output.html">Deferring Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-environment-availability-and-naming_002c-incompatibilities-with">environment availability and naming, incompatibilities with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-environment-number_002fname-register-_0028_002eev_0029">environment number/name register (<code class="code">.ev</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-environment-variables">environment variables</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-environment_002c-copying-_0028evc_0029">environment, copying (<code class="code">evc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-environment_002c-dimensions-of-last-glyph-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029">environment, dimensions of last glyph (<code class="code">.w</code>, <code class="code">.cht</code>, <code class="code">.cdp</code>, <code class="code">.csk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-environment_002c-dummy_002c-used-by-_005cw-escape-sequence">environment, dummy, used by <code class="code">\w</code> escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-environment_002c-previous-line-length-_0028_002en_0029">environment, previous line length (<code class="code">.n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-environment_002c-switching-_0028ev_0029">environment, switching (<code class="code">ev</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-environments">environments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-environments_002c-dumping-_0028pev_0029">environments, dumping (<code class="code">pev</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-equality-operator">equality operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-equation-example-_005bms_005d">equation example [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-equations-_005bms_005d">equations [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-escape-character_002c-changing-_0028ec_0029">escape character, changing (<code class="code">ec</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-escape-character_002c-formatting-_0028_005ce_0029">escape character, formatting (<code class="code">\e</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-escape-character_002c-while-defining-glyph">escape character, while defining glyph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Formatter-Instructions.html#index-escape-sequence">escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Formatter-Instructions.html">Formatter Instructions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-escape-sequence-argument-delimiters">escape sequence argument delimiters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-escape-sequences">escape sequences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-escape-sequences_002c-brace-_0028_005c_007b_002c-_005c_007d_0029">escape sequences, brace (<code class="code">\{</code>, <code class="code">\}</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-escaping-newline-characters_002c-in-strings">escaping newline characters, in strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-ex-request_002c-use-in-debugging"><code class="code">ex</code> request, use in debugging</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-ex-request_002c-used-with-nx-and-rd"><code class="code">ex</code> request, used with <code class="code">nx</code> and <code class="code">rd</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Lists-in-ms.html#index-example-markup_002c-bulleted-list-_005bms_005d">example markup, bulleted list [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Lists-in-ms.html">Lists in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Description-Macros.html#index-example-markup_002c-cover-page-in-_005bms_005d">example markup, cover page in [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Description-Macros.html">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Lists-in-ms.html#index-example-markup_002c-glossary_002dstyle-list-_005bms_005d">example markup, glossary-style list [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Lists-in-ms.html">Lists in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Lists-in-ms.html#index-example-markup_002c-numbered-list-_005bms_005d">example markup, numbered list [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Lists-in-ms.html">Lists in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invocation-Examples.html#index-examples-of-invocation">examples of invocation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invocation-Examples.html">Invocation Examples</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-exiting-_0028ex_0029">exiting (<code class="code">ex</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-expansion-of-strings-_0028_005c_002a_0029">expansion of strings (<code class="code">\*</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-explicit-hyphen-_0028_005c_0025_0029">explicit hyphen (<code class="code">\%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-explicit-hyphenation">explicit hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-expression_002c-limitation-of-logical-not-in">expression, limitation of logical not in</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-expression_002c-order-of-evaluation">expression, order of evaluation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-expressions_002c-and-register-format">expressions, and register format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-expressions_002c-and-space-characters">expressions, and space characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-expressions_002c-conditional">expressions, conditional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-expressions_002c-numeric">expressions, numeric</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-extra-post_002dvertical-line-space-_0028_005cx_0029">extra post-vertical line space (<code class="code">\x</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-extra-post_002dvertical-line-space-register-_0028_002ea_0029">extra post-vertical line space register (<code class="code">.a</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-extra-pre_002dvertical-line-space-_0028_005cx_0029">extra pre-vertical line space (<code class="code">\x</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Adjustment.html#index-extra-spaces-between-words">extra spaces between words</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Adjustment.html">Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-extreme-values-representable-with-Roman-numerals">extreme values representable with Roman numerals</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-extremum-operators-_0028_003e_003f_002c-_003c_003f_0029">extremum operators (<code class="code">&gt;?</code>, <code class="code">&lt;?</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-f-scaling-unit"><code class="code">f</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-factor_002c-zoom_002c-of-a-font-_0028fzoom_0029">factor, zoom, of a font (<code class="code">fzoom</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-fallback-character_002c-defining-_0028fchar_002c-fschar_002c-schar_0029">fallback character, defining (<code class="code">fchar</code>, <code class="code">fschar</code>, <code class="code">schar</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-fallback-glyph_002c-removing-definition-_0028rchar_002c-rfschar_0029">fallback glyph, removing definition (<code class="code">rchar</code>, <code class="code">rfschar</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-fam-request_002c-and-changing-fonts"><code class="code">fam</code> request, and changing fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-families_002c-font">families, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-family_002c-font">family, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Common-Features.html#index-features_002c-common">features, common</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Common-Features.html">Common Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-fi-request_002c-causing-implicit-break"><code class="code">fi</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Fields.html#index-field-delimiting-character-_0028fc_0029">field delimiting character (<code class="code">fc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Fields.html">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Fields.html#index-field-padding-character-_0028fc_0029">field padding character (<code class="code">fc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Fields.html">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Fields.html#index-fields">fields</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Fields.html">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-fields_002c-and-tabs">fields, and tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-figure-space-_0028_005c0_0029">figure space (<code class="code">\0</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-figures-_005bms_005d">figures [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="File-Formats.html#index-file-formats">file formats</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="File-Formats.html">File Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-file-names_002c-breaking-_0028_005c_003a_0029">file names, breaking (<code class="code">\:</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-file_002c-appending-to-_0028opena_0029">file, appending to (<code class="code">opena</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-file_002c-closing-_0028close_0029">file, closing (<code class="code">close</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-file_002c-font-description">file, font description</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-file_002c-inclusion-_0028so_0029">file, inclusion (<code class="code">so</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-file_002c-macro_002c-search-path">file, macro, search path</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-file_002c-opening-_0028open_0029">file, opening (<code class="code">open</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-file_002c-processing-next-_0028nx_0029">file, processing next (<code class="code">nx</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-file_002c-writing-to-_0028write_002c-writec_0029">file, writing to (<code class="code">write</code>, <code class="code">writec</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Device-and-Font-Description-Files.html#index-files_002c-font">files, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Device-and-Font-Description-Files.html">Device and Font Description Files</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-fill-color">fill color</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-fill-color-name-register-_0028_002eM_0029">fill color name register (<code class="code">.M</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-fill-mode-_0028fi_0029_002c-enabling">fill mode (<code class="code">fi</code>), enabling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-fill-mode_002c-and-_005cc">fill mode, and <code class="code">\c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-fill-mode_002c-disabling">fill mode, disabling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-filled-circle_002c-drawing-_0028_005cD_0027C-_2026_0027_0029">filled circle, drawing (&lsquo;<samp class="samp">\D'C &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-filled-ellipse_002c-drawing-_0028_005cD_0027E-_2026_0027_0029">filled ellipse, drawing (&lsquo;<samp class="samp">\D'E &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-filled-polygon_002c-drawing-_0028_005cD_0027P-_2026_0027_0029">filled polygon, drawing (&lsquo;<samp class="samp">\D'P &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Filling.html#index-filling">filling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Filling.html">Filling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-filling-and-adjustment_002c-manipulating">filling and adjustment, manipulating</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-filling-of-output_002c-disabling-_0028nf_0029">filling of output, disabling (<code class="code">nf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-filling-of-output_002c-enabling-_0028fi_0029">filling of output, enabling (<code class="code">fi</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-filling_002c-and-break-warnings">filling, and <code class="code">break</code> warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-filling_002c-and-inter_002dsentence-space">filling, and inter-sentence space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Punning-Names.html#index-final-newline_002c-stripping-in-diversions">final newline, stripping in diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Punning-Names.html">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-fl-request_002c-causing-implicit-break"><code class="code">fl</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Displays-and-Keeps.html#index-floating-keep">floating keep</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Displays-and-Keeps.html">Displays and Keeps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-flush-output-_0028fl_0029">flush output (<code class="code">fl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-font">font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Positions.html#index-font-aliasing-with-third-argument-to-fp-request">font aliasing with third argument to <code class="code">fp</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Positions.html">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-font-description-file">font description file</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-font-description-file-format">font description file format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-font-description-file_002c-format">font description file, format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-font-description-files_002c-comments">font description files, comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Directories.html#index-font-directories">font directories</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Directories.html">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-font-families">font families</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-font-family">font family</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-font-family_002c-changing-_0028fam_002c-_005cF_0029">font family, changing (<code class="code">fam</code>, <code class="code">\F</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-font-file_002c-format">font file, format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Device-and-Font-Description-Files.html#index-font-files">font files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Device-and-Font-Description-Files.html">Device and Font Description Files</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-font-for-underlining-_0028uf_0029">font for underlining (<code class="code">uf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-font-height_002c-changing-_0028_005cH_0029">font height, changing (<code class="code">\H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-font-metrics">font metrics</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-font-mounting_002c-automatic">font mounting, automatic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Directories.html#index-font-path">font path</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Directories.html">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Positions.html#index-font-position-register-_0028_002ef_0029">font position register (<code class="code">.f</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Positions.html">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Positions.html#index-font-positions">font positions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Positions.html">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-font-slant_002c-changing-_0028_005cS_0029">font slant, changing (<code class="code">\S</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-font-style">font style</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-font-style_002c-abstract">font style, abstract</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-font-style_002c-abstract_002c-setting-up-_0028sty_0029">font style, abstract, setting up (<code class="code">sty</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-font-styles">font styles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-font-translation-_0028ftr_0029">font translation (<code class="code">ftr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-font_002c-magnification-_0028fzoom_0029">font, magnification (<code class="code">fzoom</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Positions.html#index-font_002c-mounting-_0028fp_0029">font, mounting (<code class="code">fp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Positions.html">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-font_002c-optical-size">font, optical size</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-font_002c-previous_002c-selecting-_0028_005cf_005b_005d_002c-_005cfP_0029">font, previous, selecting (<code class="code">\f[]</code>, <code class="code">\fP</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-font_002c-previous_002c-slecting-_0028ft_0029">font, previous, slecting (<code class="code">ft</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-font_002c-selection">font, selection</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-font_002c-special">font, special</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-font_002c-text">font, text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-font_002c-unstyled">font, unstyled</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-font_002c-zoom-factor-_0028fzoom_0029">font, zoom factor (<code class="code">fzoom</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-fonts_002c-artificial">fonts, artificial</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-fonts_002c-changing-_0028ft_002c-_005cf_0029">fonts, changing (<code class="code">ft</code>, <code class="code">\f</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Directories.html#index-fonts_002c-searching">fonts, searching</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Directories.html">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Special-Fonts.html#index-fonts_002c-special">fonts, special</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Special-Fonts.html">Special Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-footers">footers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-footers-1">footers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Headers-and-Footers.html#index-footers-_005bms_005d">footers [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Headers-and-Footers.html">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Footnotes.html#index-footnote-marker-_005bms_005d">footnote marker [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Footnotes.html">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Footnotes-and-Endnotes.html#index-footnotes">footnotes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Footnotes-and-Endnotes.html">Footnotes and Endnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Footnotes.html#index-footnotes-_005bms_005d">footnotes [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Footnotes.html">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Footnotes.html#index-footnotes_002c-and-displays-_005bms_005d">footnotes, and displays [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Footnotes.html">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Footnotes.html#index-footnotes_002c-and-keeps-_005bms_005d">footnotes, and keeps [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Footnotes.html">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-form-letters">form letters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-format-of-font-description-file">format of font description file</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-format-of-font-description-files">format of font description files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-format-of-font-files">format of font files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-format-of-register-_0028_005cg_0029">format of register (<code class="code">\g</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paper-Format.html#index-format_002c-paper">format, paper</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paper-Format.html">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="File-Formats.html#index-formats_002c-file">formats, file</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="File-Formats.html">File Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Formatter-Instructions.html#index-formatter-instructions">formatter instructions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Formatter-Instructions.html">Formatter Instructions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-formatting-a-backslash-glyph-_0028_005c_005brs_005d_0029">formatting a backslash glyph (<code class="code">\[rs]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-formatting-a-title-line-_0028tl_0029">formatting a title line (<code class="code">tl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-formatting-the-escape-character-_0028_005ce_0029">formatting the escape character (<code class="code">\e</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-formatting-the-time">formatting the time</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-fp-request_002c-and-font-translations"><code class="code">fp</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-fp-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">fp</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-fractional-point-sizes">fractional point sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-fractional-point-sizes-1">fractional point sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-fractional-type-sizes">fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-fractional-type-sizes-1">fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Differences-from-AT_0026T-ms.html#index-fractional-type-sizes-in-ms-macros">fractional type sizes in <samp class="file">ms</samp> macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Differences-from-AT_0026T-ms.html">Differences from AT&amp;T ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-French-spacing">French spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-fspecial-request_002c-and-font-styles"><code class="code">fspecial</code> request, and font styles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-fspecial-request_002c-and-font-translations"><code class="code">fspecial</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-fspecial-request_002c-and-glyph-search-order"><code class="code">fspecial</code> request, and glyph search order</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-fspecial-request_002c-and-imitating-bold"><code class="code">fspecial</code> request, and imitating bold</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-ft-request_002c-and-font-translations"><code class="code">ft</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Major-Macro-Packages.html#index-full_002dservice-macro-package">full-service macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Major-Macro-Packages.html">Major Macro Packages</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-G">G</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-geometry_002c-page">geometry, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-GGL-_0028groff-glyph-list_0029">GGL (<code class="code">groff</code> glyph list)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Classes.html#index-GGL-_0028groff-glyph-list_0029-1">GGL (<code class="code">groff</code> glyph list)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Classes.html">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Lists-in-ms.html#index-glossary_002dstyle-list_002c-example-markup-_005bms_005d">glossary-style list, example markup [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Lists-in-ms.html">Lists in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-glyph">glyph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-glyph-for-line-drawing">glyph for line drawing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-glyph-names_002c-composite">glyph names, composite</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-glyph-pile-_0028_005cb_0029">glyph pile (<code class="code">\b</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-glyph-properties-_0028cflags_0029">glyph properties (<code class="code">cflags</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-glyph_002c-box-rule-_0028_005c_005bbr_005d_0029">glyph, box rule (<code class="code">\[br]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-glyph_002c-constant-space">glyph, constant space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-glyph_002c-defining-_0028char_0029">glyph, defining (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-glyph_002c-distinguished-from-character">glyph, distinguished from character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-glyph_002c-for-line-drawing">glyph, for line drawing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-glyph_002c-for-margins-_0028mc_0029">glyph, for margins (<code class="code">mc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-glyph_002c-last_002c-dimensions-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029">glyph, last, dimensions (<code class="code">.w</code>, <code class="code">.cht</code>, <code class="code">.cdp</code>, <code class="code">.csk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-glyph_002c-leader-repetition-_0028lc_0029">glyph, leader repetition (<code class="code">lc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-glyph_002c-numbered-_0028_005cN_0029">glyph, numbered (<code class="code">\N</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-glyph_002c-numbered-_0028_005cN_0029-1">glyph, numbered (<code class="code">\N</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-glyph_002c-removing-definition-_0028rchar_002c-rfschar_0029">glyph, removing definition (<code class="code">rchar</code>, <code class="code">rfschar</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-glyph_002c-soft-hyphen-_0028hy_0029">glyph, soft hyphen (<code class="code">hy</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-glyph_002c-tab-repetition-_0028tc_0029">glyph, tab repetition (<code class="code">tc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-glyph_002c-underscore-_0028_005c_005bru_005d_0029">glyph, underscore (<code class="code">\[ru]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-glyphs_002c-available_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029">glyphs, available, list of (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-glyphs_002c-output_002c-and-input-characters_002c-compatibility-with-AT_0026T-troff">glyphs, output, and input characters, compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-glyphs_002c-overstriking-_0028_005co_0029">glyphs, overstriking (<code class="code">\o</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-glyphs_002c-unnamed">glyphs, unnamed</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-glyphs_002c-unnamed_002c-accessing-with-_005cN">glyphs, unnamed, accessing with <code class="code">\N</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-GNU-troff_002c-identification-register-_0028_002eg_0029">GNU <code class="code">troff</code>, identification register (<code class="code">.g</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-GNU-troff_002c-PID-register-_0028_0024_0024_0029">GNU <code class="code">troff</code>, PID register (<code class="code">$$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-GNU-troff_002c-process-ID-register-_0028_0024_0024_0029">GNU <code class="code">troff</code>, process ID register (<code class="code">$$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-GNU_002dspecific-register-_0028_002eg_0029">GNU-specific register (<code class="code">.g</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-graphic-renditions">graphic renditions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-greater-than-_0028or-equal-to_0029-operator">greater than (or equal to) operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="groff-Capabilities.html#index-groff-capabilities"><code class="code">groff</code> capabilities</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="groff-Capabilities.html"><code class="code">groff</code> Capabilities</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-groff-glyph-list-_0028GGL_0029"><code class="code">groff</code> glyph list (GGL)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Classes.html#index-groff-glyph-list-_0028GGL_0029-1"><code class="code">groff</code> glyph list (GGL)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Classes.html">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-groff.html#index-groff-invocation"><code class="code">groff</code> invocation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-groff.html">Invoking groff</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-groff_002c-and-pi-request"><code class="code">groff</code>, and <code class="code">pi</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="What-Is-groff_003f.html#index-groff_002d_002d_002dwhat-is-it_003f"><code class="code">groff</code>&mdash;what is it?</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="What-Is-groff_003f.html">What Is <code class="code">groff</code>?</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-GROFF_005fBIN_005fPATH_002c-environment-variable"><code>GROFF_BIN_PATH<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-GROFF_005fCOMMAND_005fPREFIX_002c-environment-variable"><code>GROFF_COMMAND_PREFIX<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-GROFF_005fENCODING_002c-environment-variable"><code>GROFF_ENCODING<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-GROFF_005fFONT_005fPATH_002c-environment-variable"><code>GROFF_FONT_PATH<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Directories.html#index-GROFF_005fFONT_005fPATH_002c-environment-variable-1"><code>GROFF_FONT_PATH<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Directories.html">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-GROFF_005fTMAC_005fPATH_002c-environment-variable"><code>GROFF_TMAC_PATH<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-GROFF_005fTMAC_005fPATH_002c-environment-variable-1"><code>GROFF_TMAC_PATH<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-GROFF_005fTMPDIR_002c-environment-variable"><code>GROFF_TMPDIR<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-GROFF_005fTYPESETTER_002c-environment-variable"><code>GROFF_TYPESETTER<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-grohtml_002c-the-program"><code class="code">grohtml</code>, the program</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-gtroff_002c-interactive-use"><code class="code">gtroff</code>, interactive use</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="gtroff-Output.html#index-gtroff_002c-output"><code class="code">gtroff</code>, output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="gtroff-Output.html">gtroff Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="GNU-troff-Reference.html#index-gtroff_002c-reference"><code class="code">gtroff</code>, reference</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="GNU-troff-Reference.html">GNU troff Reference</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-H">H</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-hair-space-_0028_005c_005e_0029">hair space (<code class="code">\^</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-hcode-request_002c-and-glyph-definitions"><code class="code">hcode</code> request, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-headers">headers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-headers-1">headers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Headers-and-Footers.html#index-headers-_005bms_005d">headers [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Headers-and-Footers.html">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-height_002c-font_002c-changing-_0028_005cH_0029">height, font, changing (<code class="code">\H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-height_002c-of-last-glyph-_0028_002echt_0029">height, of last glyph (<code class="code">.cht</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-high_002dwater-mark-register-_0028_002eh_0029">high-water mark register (<code class="code">.h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-home-directory">home directory</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-horizontal-discardable-space">horizontal discardable space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-horizontal-input-line-position-register-_0028hp_0029">horizontal input line position register (<code class="code">hp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-horizontal-input-line-position_002c-saving-_0028_005ck_0029">horizontal input line position, saving (<code class="code">\k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-horizontal-line_002c-drawing-_0028_005cl_0029">horizontal line, drawing (<code class="code">\l</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-horizontal-motion-_0028_005ch_0029">horizontal motion (<code class="code">\h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-horizontal-motion-quantum">horizontal motion quantum</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Motion-Quanta.html#index-horizontal-motion-quantum-register-_0028_002eH_0029">horizontal motion quantum register (<code class="code">.H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Motion-Quanta.html">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-horizontal-output-line-position-register-_0028_002ek_0029">horizontal output line position register (<code class="code">.k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-horizontal-resolution">horizontal resolution</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Motion-Quanta.html#index-horizontal-resolution-register-_0028_002eH_0029">horizontal resolution register (<code class="code">.H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Motion-Quanta.html">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-horizontal-space-_0028_005ch_0029">horizontal space (<code class="code">\h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Punning-Names.html#index-horizontal-space_002c-unformatting">horizontal space, unformatting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Punning-Names.html">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Leaders.html#index-horizontal-tab-character">horizontal tab character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Leaders.html">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-hours_002c-current-time-_0028hours_0029">hours, current time (<code class="code">hours</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hpf-request_002c-and-hyphenation-language"><code class="code">hpf</code> request, and hyphenation language</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hw-request_002c-and-hy-restrictions"><code class="code">hw</code> request, and <code class="code">hy</code> restrictions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hw-request_002c-and-hyphenation-language"><code class="code">hw</code> request, and hyphenation language</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-hy-glyph_002c-and-cflags"><code class="code">hy</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphen_002c-explicit-_0028_005c_0025_0029">hyphen, explicit (<code class="code">\%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenated-lines_002c-consecutive-_0028hlm_0029">hyphenated lines, consecutive (<code class="code">hlm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-hyphenating-characters">hyphenating characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Hyphenation.html#index-hyphenation">hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Hyphenation.html">Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-character-_0028_005c_0025_0029">hyphenation character (<code class="code">\%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-code-_0028hcode_0029">hyphenation code (<code class="code">hcode</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-consecutive-line-count-register-_0028_002ehlc_0029">hyphenation consecutive line count register (<code class="code">.hlc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-consecutive-line-limit-register-_0028_002ehlm_0029">hyphenation consecutive line limit register (<code class="code">.hlm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-exceptions">hyphenation exceptions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-language-register-_0028_002ehla_0029">hyphenation language register (<code class="code">.hla</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-margin-_0028hym_0029">hyphenation margin (<code class="code">hym</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-margin-register-_0028_002ehym_0029">hyphenation margin register (<code class="code">.hym</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-mode-register-_0028_002ehy_0029">hyphenation mode register (<code class="code">.hy</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-parameters_002c-automatic">hyphenation parameters, automatic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-pattern-files">hyphenation pattern files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-patterns-_0028hpf_0029">hyphenation patterns (<code class="code">hpf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-space-_0028hys_0029">hyphenation space (<code class="code">hys</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-space-adjustment-threshold">hyphenation space adjustment threshold</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation-space-adjustment-threshold-register-_0028_002ehys_0029">hyphenation space adjustment threshold register (<code class="code">.hys</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation_002c-automatic">hyphenation, automatic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation_002c-disabling-_0028_005c_0025_0029">hyphenation, disabling (<code class="code">\%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation_002c-explicit">hyphenation, explicit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-hyphenation_002c-incompatibilities-with-AT_0026T-troff">hyphenation, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation_002c-manipulating">hyphenation, manipulating</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hyphenation_002c-manual">hyphenation, manual</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-I">I</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-i-scaling-unit"><code class="code">i</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-i_002fo">i/o</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-IBM-code-page-1047-input-encoding">IBM code page 1047 input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-IBM-code-page-1047-output-encoding">IBM code page 1047 output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-identifiers">identifiers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-identifiers_002c-undefined">identifiers, undefined</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-ie-request_002c-and-font-translations"><code class="code">ie</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-ie-request_002c-and-warnings"><code class="code">ie</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-ie-request_002c-operators-to-use-with"><code class="code">ie</code> request, operators to use with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-if-request_002c-and-font-translations"><code class="code">if</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-if-request_002c-and-the-_0021-operator"><code class="code">if</code> request, and the &lsquo;<samp class="samp">!</samp>&rsquo; operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-if-request_002c-operators-to-use-with"><code class="code">if</code> request, operators to use with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="if_002delse.html#index-if_002delse">if-else</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="if_002delse.html">if-else</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="if_002dthen.html#index-if_002dthen">if-then</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="if_002dthen.html">if-then</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-imitating-boldface-_0028bd_0029">imitating boldface (<code class="code">bd</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Implementation-Differences.html#index-implementation-differences">implementation differences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Implementation-Differences.html">Implementation Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Breaking.html#index-implicit-line-break">implicit line break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Breaking.html">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="The-Implicit-Page-Trap.html#index-implicit-trap">implicit trap</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="The-Implicit-Page-Trap.html">The Implicit Page Trap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-in-request_002c-causing-implicit-break"><code class="code">in</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-in-request_002c-using-_002b-and-_002d-with"><code class="code">in</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-inch-scaling-unit-_0028i_0029">inch scaling unit (<code class="code">i</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-including-a-file-_0028so_0029">including a file (<code class="code">so</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Implementation-Differences.html#index-incompatibilities-with-AT_0026T-troff">incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Implementation-Differences.html">Implementation Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Auto_002dincrement.html#index-increment-value-without-changing-the-register">increment value without changing the register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Auto_002dincrement.html">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Auto_002dincrement.html#index-incrementation_002c-automatic_002c-of-a-register">incrementation, automatic, of a register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Auto_002dincrement.html">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-indentation-_0028in_0029">indentation (<code class="code">in</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-indentation_002c-of-roff-source-code">indentation, of <code class="code">roff</code> source code</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Indexing.html#index-index_002c-in-macro-package">index, in macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Indexing.html">Indexing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-indicator_002c-scaling">indicator, scaling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Interpolating-Registers.html#index-indirect-assignments">indirect assignments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Interpolating-Registers.html">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-input-and-output-requests">input and output requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-input-characters-and-output-glyphs_002c-compatibility-with-AT_0026T-troff">input characters and output glyphs, compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-input-characters_002c-invalid">input characters, invalid</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Conventions.html#index-input-conventions">input conventions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Conventions.html">Input Conventions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-input-encoding_002c-code-page-1047">input encoding, code page 1047</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-input-encoding_002c-EBCDIC">input encoding, <abbr class="acronym">EBCDIC</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-input-encoding_002c-Latin_002d1-_0028ISO-8859_002d1_0029">input encoding, <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-input-encoding_002c-Latin_002d2-_0028ISO-8859_002d2_0029">input encoding, <span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-2</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-input-encoding_002c-Latin_002d5-_0028ISO-8859_002d9_0029">input encoding, <span class="w-nolinebreak-text">Latin-5</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-9</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-input-encoding_002c-Latin_002d9-_0028ISO-8859_002d15_0029">input encoding, <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-15</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-input-file-name_002c-current_002c-register-_0028_002eF_0029">input file name, current, register (<code class="code">.F</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-input-level">input level</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-input-level-in-delimited-arguments">input level in delimited arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-input-line-continuation-_0028_005cRET_0029">input line continuation (<code class="code">\<kbd class="key">RET</kbd></code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-input-line-number-register-_0028_002ec_002c-c_002e_0029">input line number register (<code class="code">.c</code>, <code class="code">c.</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-input-line-number_002c-setting-_0028lf_0029">input line number, setting (<code class="code">lf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-input-line-position_002c-horizontal_002c-saving-_0028_005ck_0029">input line position, horizontal, saving (<code class="code">\k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-input-line-trap_002c-clearing-_0028it_002c-itc_0029">input line trap, clearing (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-input-line-trap_002c-setting-_0028it_002c-itc_0029">input line trap, setting (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-input-line-traps">input line traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-input-line-traps-and-interrupted-lines-_0028itc_0029">input line traps and interrupted lines (<code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-input-line_002c-horizontal-position_002c-register-_0028hp_0029">input line, horizontal position, register (<code class="code">hp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-input-line_002c-productive">input line, productive</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-input-stack_002c-backtrace-_0028backtrace_0029">input stack, backtrace (<code class="code">backtrace</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-input-stack_002c-setting-limit">input stack, setting limit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Gtroff-Internals.html#index-input-token">input token</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Gtroff-Internals.html">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-input_002c-8_002dbit">input, 8-bit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-input_002c-standard_002c-reading-from-_0028rd_0029">input, standard, reading from (<code class="code">rd</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-inserting-horizontal-space-_0028_005ch_0029">inserting horizontal space (<code class="code">\h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Installation.html#index-installation">installation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Installation.html">Installation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Formatter-Instructions.html#index-instructing-the-formatter">instructing the formatter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Formatter-Instructions.html">Formatter Instructions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-inter_002dsentence-space-size-register-_0028_002esss_0029">inter-sentence space size register (<code class="code">.sss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-inter_002dsentence-space_002c-additional">inter-sentence space, additional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-inter_002dword-spacing_002c-minimal">inter-word spacing, minimal</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-interactive-use-of-gtroff">interactive use of <code class="code">gtroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-intercepting-requests">intercepting requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="gtroff-Output.html#index-intermediate-output">intermediate output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="gtroff-Output.html">gtroff Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Interpolating-Registers.html#index-interpolating-registers-_0028_005cn_0029">interpolating registers (<code class="code">\n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Interpolating-Registers.html">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-interpolation">interpolation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-interpolation-depth">interpolation depth</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-interpolation-depth-in-delimited-arguments">interpolation depth in delimited arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-interpolation-of-strings-_0028_005c_002a_0029">interpolation of strings (<code class="code">\*</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-interpretation-mode">interpretation mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-interrupted-line">interrupted line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-interrupted-line-register-_0028_002eint_0029">interrupted line register (<code class="code">.int</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-interrupted-lines-and-input-line-traps-_0028itc_0029">interrupted lines and input line traps (<code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Introduction.html#index-introduction">introduction</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Introduction.html">Introduction</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-invalid-characters-for-trf-request">invalid characters for <code class="code">trf</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-invalid-input-characters">invalid input characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invocation-Examples.html#index-invocation-examples">invocation examples</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invocation-Examples.html">Invocation Examples</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-groff.html#index-invoking-groff">invoking <code class="code">groff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-groff.html">Invoking groff</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-invoking-requests">invoking requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-ISO-646-output-encoding">ISO&nbsp;646 output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-ISO-8859_002d1-_0028Latin_002d1_0029-output-encoding">ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->) output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-ISO-8859_002d1-_0028Latin_002d1_0029_002c-input-encoding">ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-ISO-8859_002d15-_0028Latin_002d9_0029_002c-input-encoding">ISO <span class="w-nolinebreak-text">8859-15</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-9</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-ISO-8859_002d2-_0028Latin_002d2_0029_002c-input-encoding">ISO <span class="w-nolinebreak-text">8859-2</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-2</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-ISO-8859_002d9-_0028Latin_002d5_0029_002c-input-encoding">ISO <span class="w-nolinebreak-text">8859-9</span><!-- /@w --> (<span class="w-nolinebreak-text">Latin-5</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Italic-Corrections.html#index-italic-correction-_0028_005c_002f_0029">italic correction (<code class="code">\/</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Italic-Corrections.html">Italic Corrections</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-J">J</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-justifying-text">justifying text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-justifying-text-_0028rj_0029">justifying text (<code class="code">rj</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-K">K</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Displays-and-Keeps.html#index-keep_002c-floating">keep, floating</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Displays-and-Keeps.html">Displays and Keeps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Displays-and-Keeps.html#index-keeps-_0028introduction_0029">keeps (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Displays-and-Keeps.html">Displays and Keeps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-keeps-_005bms_005d">keeps [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Footnotes.html#index-keeps_002c-and-footnotes-_005bms_005d">keeps, and footnotes [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Footnotes.html">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-kerning-and-ligatures">kerning and ligatures</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-kerning-enabled-register-_0028_002ekern_0029">kerning enabled register (<code class="code">.kern</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-kerning_002c-activating-_0028kern_0029">kerning, activating (<code class="code">kern</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-kerning_002c-track">kerning, track</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paper-Format.html#index-landscape-page-orientation">landscape page orientation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paper-Format.html">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-language-_005bms_005d">language [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-last-glyph_002c-dimensions-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029">last glyph, dimensions (<code class="code">.w</code>, <code class="code">.cht</code>, <code class="code">.cdp</code>, <code class="code">.csk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-last_002drequested-point-size-registers-_0028_002epsr_002c-_002esr_0029">last-requested point size registers (<code class="code">.psr</code>, <code class="code">.sr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-last_002drequested-type-size-registers-_0028_002epsr_002c-_002esr_0029">last-requested type size registers (<code class="code">.psr</code>, <code class="code">.sr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-Latin_002d1-_0028ISO-8859_002d1_0029-output-encoding"><span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->) output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-Latin_002d1-_0028ISO-8859_002d1_0029_002c-input-encoding"><span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-Latin_002d2-_0028ISO-8859_002d2_0029_002c-input-encoding"><span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-2</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-Latin_002d5-_0028ISO-8859_002d9_0029_002c-input-encoding"><span class="w-nolinebreak-text">Latin-5</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-9</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-Latin_002d9-_0028ISO-8859_002d15_0029_002c-input-encoding"><span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-15</span><!-- /@w -->), input encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-layout_002c-line">layout, line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-layout_002c-page">layout, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-lc-request_002c-and-glyph-definitions"><code class="code">lc</code> request, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Leaders.html#index-leader-character">leader character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Leaders.html">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-leader-character-1">leader character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-leader-character_002c-and-translations">leader character, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-leader-character_002c-non_002dinterpreted-_0028_005ca_0029">leader character, non-interpreted (<code class="code">\a</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-leader-repetition-character-_0028lc_0029">leader repetition character (<code class="code">lc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-leaders">leaders</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html#index-leading">leading</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Breaking.html#index-leading-space-macro-_0028lsm_0029">leading space macro (<code class="code">lsm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Breaking.html">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leading-Space-Traps.html#index-leading-space-traps">leading space traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leading-Space-Traps.html">Leading Space Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Breaking.html#index-leading-spaces">leading spaces</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Breaking.html">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leading-Space-Traps.html#index-leading-spaces-macro-_0028lsm_0029">leading spaces macro (<code class="code">lsm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leading-Space-Traps.html">Leading Space Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-leading-spaces-with-ds">leading spaces with <code class="code">ds</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Italic-Corrections.html#index-left-italic-correction-_0028_005c_002c_0029">left italic correction (<code class="code">\,</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Italic-Corrections.html">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-left-margin-_0028po_0029">left margin (<code class="code">po</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-length-of-a-string-_0028length_0029">length of a string (<code class="code">length</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-length-of-line-_0028ll_0029">length of line (<code class="code">ll</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-length-of-previous-line-_0028_002en_0029">length of previous line (<code class="code">.n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-length-of-the-page_002c-configuring-_0028pl_0029">length of the page, configuring (<code class="code">pl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-length-of-title-line_002c-configuring-_0028lt_0029">length of title line, configuring (<code class="code">lt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-length-request_002c-and-copy-mode"><code class="code">length</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-less-than-_0028or-equal-to_0029-operator">less than (or equal to) operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-letters_002c-form">letters, form</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-level_002c-input">level, input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Suppressing-Output.html#index-level_002c-suppression-nesting_002c-register">level, suppression nesting, register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Suppressing-Output.html">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-lf-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">lf</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-ligature">ligature</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-ligatures-and-kerning">ligatures and kerning</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-ligatures-enabled-register-_0028_002elg_0029">ligatures enabled register (<code class="code">.lg</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-ligatures_002c-activating-_0028lg_0029">ligatures, activating (<code class="code">lg</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-limitations-of-_005cb-escape-sequence">limitations of <code class="code">\b</code> escape sequence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-line-break">line break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-line-break-_0028introduction_0029">line break (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Breaking.html#index-line-break_002c-output">line break, output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Breaking.html">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-line-control">line control</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-line-dimensions">line dimensions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-line-drawing-glyph">line drawing glyph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-line-drawing-glyph-1">line drawing glyph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-line-indentation-_0028in_0029">line indentation (<code class="code">in</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-line-layout">line layout</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-line-length-_0028ll_0029">line length (<code class="code">ll</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-line-length-register-_0028_002el_0029">line length register (<code class="code">.l</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-line-length_002c-previous-_0028_002en_0029">line length, previous (<code class="code">.n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-line-number_002c-input_002c-register-_0028_002ec_002c-c_002e_0029">line number, input, register (<code class="code">.c</code>, <code class="code">c.</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-line-number_002c-output_002c-register-_0028ln_0029">line number, output, register (<code class="code">ln</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-line-numbers_002c-printing-_0028nm_0029">line numbers, printing (<code class="code">nm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-line-space_002c-extra-post_002dvertical-_0028_005cx_0029">line space, extra post-vertical (<code class="code">\x</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-line-space_002c-extra-pre_002dvertical-_0028_005cx_0029">line space, extra pre-vertical (<code class="code">\x</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-line-spacing-register-_0028_002eL_0029">line spacing register (<code class="code">.L</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-line-spacing_002c-post_002dvertical-_0028pvs_0029">line spacing, post-vertical (<code class="code">pvs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-line-thickness-_0028_005cD_0027t-_2026_0027_0029">line thickness (&lsquo;<samp class="samp">\D't &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Breaking.html#index-line_002c-blank">line, blank</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Breaking.html">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-line_002c-drawing-_0028_005cD_0027l-_2026_0027_0029">line, drawing (&lsquo;<samp class="samp">\D'l &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-line_002c-horizontal_002c-drawing-_0028_005cl_0029">line, horizontal, drawing (<code class="code">\l</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-line_002c-input_002c-continuation-_0028_005cRET_0029">line, input, continuation (<code class="code">\<kbd class="key">RET</kbd></code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-line_002c-input_002c-horizontal-position_002c-register-_0028hp_0029">line, input, horizontal position, register (<code class="code">hp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-line_002c-input_002c-horizontal-position_002c-saving-_0028_005ck_0029">line, input, horizontal position, saving (<code class="code">\k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-line_002c-interrupted">line, interrupted</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-line_002c-output_002c-continuation-_0028_005cc_0029">line, output, continuation (<code class="code">\c</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-line_002c-output_002c-horizontal-position_002c-register-_0028_002ek_0029">line, output, horizontal position, register (<code class="code">.k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-line_002c-productive-input">line, productive input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-line_002c-vertical_002c-drawing-_0028_005cL_0029">line, vertical, drawing (<code class="code">\L</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-line_002dtabs-mode">line-tabs mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-lines_002c-blank_002c-disabling">lines, blank, disabling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-lines_002c-centering-_0028ce_0029">lines, centering (<code class="code">ce</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-lines_002c-centering-_0028introduction_0029">lines, centering (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-lines_002c-consecutive-hyphenated-_0028hlm_0029">lines, consecutive hyphenated (<code class="code">hlm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-lines_002c-interrupted_002c-and-input-line-traps-_0028itc_0029">lines, interrupted, and input line traps (<code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-lines_002c-right_002daligning-_0028introduction_0029">lines, right-aligning (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-lines_002c-right_002djustifying-_0028introduction_0029">lines, right-justifying (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-list-of-special-characters-_0028groff_005fchar_00287_0029-man-page_0029">list of special characters (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-listing-page-location-traps-_0028ptr_0029">listing page location traps (<code class="code">ptr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paragraphs.html#index-lists">lists</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paragraphs.html">Paragraphs</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-ll-request_002c-using-_002b-and-_002d-with"><code class="code">ll</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-localization">localization</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-localization-_005bms_005d">localization [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-locating-macro-files">locating macro files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-locating-macro-packages">locating macro packages</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-location_002c-vertical_002c-page_002c-marking-_0028mk_0029">location, vertical, page, marking (<code class="code">mk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-location_002c-vertical_002c-page_002c-returning-to-marked-_0028rt_0029">location, vertical, page, returning to marked (<code class="code">rt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-logical-_0060_0060and_0027_0027-operator">logical &ldquo;and&rdquo; operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-logical-_0060_0060or_0027_0027-operator">logical &ldquo;or&rdquo; operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-logical-complementation-operator">logical complementation operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-logical-conjunction-operator">logical conjunction operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-logical-disjunction-operator">logical disjunction operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-logical-not_002c-limitation-in-expression">logical not, limitation in expression</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-logical-operators">logical operators</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-long-names">long names</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditionals-and-Loops.html#index-loops-and-conditionals">loops and conditionals</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditionals-and-Loops.html">Conditionals and Loops</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-lowercasing-a-string-_0028stringdown_0029">lowercasing a string (<code class="code">stringdown</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-ls-request_002c-alternative-to-_0028pvs_0029"><code class="code">ls</code> request, alternative to (<code class="code">pvs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-lt-request_002c-using-_002b-and-_002d-with"><code class="code">lt</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-m-scaling-unit"><code class="code">m</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-M-scaling-unit"><code class="code">M</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-machine-units">machine units</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-macro">macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-macro-arguments">macro arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Gtroff-Internals.html#index-macro-arguments_002c-and-compatibility-mode">macro arguments, and compatibility mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Gtroff-Internals.html">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-macro-arguments_002c-and-tabs">macro arguments, and tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-macro-directories">macro directories</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-macro-file-search-path">macro file search path</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-macro-name-register-_0028_005c_00240_0029">macro name register (<code class="code">\$0</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-macro-names_002c-starting-with-_005b-or-_005d_002c-and-refer">macro names, starting with <code class="code">[</code> or <code class="code">]</code>, and <code class="code">refer</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Packages.html#index-macro-package">macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Packages.html">Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-macro-package-search-path">macro package search path</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-macro-package-usage_002c-basics-of">macro package usage, basics of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Major-Macro-Packages.html#index-macro-package_002c-auxiliary">macro package, auxiliary</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Major-Macro-Packages.html">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Major-Macro-Packages.html#index-macro-package_002c-full_002dservice">macro package, full-service</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Major-Macro-Packages.html">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Package-Intro.html#index-macro-package_002c-introduction">macro package, introduction</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Package-Intro.html">Macro Package Intro</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Major-Macro-Packages.html#index-macro-package_002c-major">macro package, major</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Major-Macro-Packages.html">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Major-Macro-Packages.html#index-macro-package_002c-minor">macro package, minor</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Major-Macro-Packages.html">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-macro-package_002c-structuring-the-source-of">macro package, structuring the source of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-macro_002c-appending-to-_0028am_0029">macro, appending to (<code class="code">am</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-macro_002c-creating-alias-for-_0028als_0029">macro, creating alias for (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="End_002dof_002dinput-Traps.html#index-macro_002c-end_002dof_002dinput-_0028em_0029">macro, end-of-input (<code class="code">em</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="End_002dof_002dinput-Traps.html">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-macro_002c-parameters-_0028_005c_0024_0029">macro, parameters (<code class="code">\$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-macro_002c-removing-_0028rm_0029">macro, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-macro_002c-removing-alias-for-_0028rm_0029">macro, removing alias for (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-macro_002c-renaming-_0028rn_0029">macro, renaming (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="while.html#index-macros_002c-recursive">macros, recursive</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="while.html">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-macros_002c-searching">macros, searching</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-macros_002c-shared-name-space-with-strings-and-diversions">macros, shared name space with strings and diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tutorial-for-Macro-Users.html#index-macros_002c-tutorial-for-users">macros, tutorial for users</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tutorial-for-Macro-Users.html">Tutorial for Macro Users</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-macros_002c-writing">macros, writing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-magnification-of-a-font-_0028fzoom_0029">magnification of a font (<code class="code">fzoom</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Major-Macro-Packages.html#index-major-macro-package">major macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Major-Macro-Packages.html">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-major-version-number-register-_0028_002ex_0029">major version number register (<code class="code">.x</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-man-macros_002c-custom-headers-and-footers"><code class="code">man</code> macros, custom headers and footers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-man-macros_002c-Ultrix_002dspecific"><code class="code">man</code> macros, Ultrix-specific</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="man.html#index-man-pages">man pages</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="man.html">man</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-manipulating-filling-and-adjustment">manipulating filling and adjustment</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-manipulating-hyphenation">manipulating hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-manipulating-spacing">manipulating spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html#index-manipulating-type-size-and-vertical-spacing">manipulating type size and vertical spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-manual-hyphenation">manual hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="man.html#index-manual-pages">manual pages</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="man.html">man</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-margin-for-hyphenation-_0028hym_0029">margin for hyphenation (<code class="code">hym</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-margin-glyph-_0028mc_0029">margin glyph (<code class="code">mc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-margin_002c-bottom">margin, bottom</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-margin_002c-left-_0028po_0029">margin, left (<code class="code">po</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-margin_002c-right">margin, right</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-margin_002c-top">margin, top</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-mark_002c-high_002dwater_002c-register-_0028_002eh_0029">mark, high-water, register (<code class="code">.h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Footnotes.html#index-marker_002c-footnote-_005bms_005d">marker, footnote [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Footnotes.html">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-marking-vertical-page-location-_0028mk_0029">marking vertical page location (<code class="code">mk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-maximum-operator">maximum operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-maximum-value-representable-with-Roman-numerals">maximum value representable with Roman numerals</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="mdoc.html#index-mdoc-macros"><code class="code">mdoc</code> macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="mdoc.html">mdoc</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="me.html#index-me-macro-package"><code class="code">me</code> macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="me.html">me</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-measurement-units">measurement units</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-measurements">measurements</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Default-Units.html#index-measurements_002c-specifying-safely">measurements, specifying safely</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Default-Units.html">Default Units</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-metrics_002c-font">metrics, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-minimal-inter_002dword-spacing">minimal inter-word spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-minimum-operator">minimum operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-minimum-value-representable-with-Roman-numerals">minimum value representable with Roman numerals</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Major-Macro-Packages.html#index-minor-macro-package">minor macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Major-Macro-Packages.html">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-minor-version-number-register-_0028_002ey_0029">minor version number register (<code class="code">.y</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-minutes_002c-current-time-_0028minutes_0029">minutes, current time (<code class="code">minutes</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="mm.html#index-mm-macro-package"><code class="code">mm</code> macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="mm.html">mm</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-mode-for-constant-glyph-space-_0028cs_0029">mode for constant glyph space (<code class="code">cs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-mode_002c-compatibility">mode, compatibility</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Gtroff-Internals.html#index-mode_002c-compatibility_002c-and-parameters">mode, compatibility, and parameters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Gtroff-Internals.html">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-mode_002c-copy">mode, copy</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-mode_002c-copy-1">mode, copy</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-copy_002c-and-cf-request">mode, copy, and <code class="code">cf</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-mode_002c-copy_002c-and-device-request">mode, copy, and <code class="code">device</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-mode_002c-copy_002c-and-length-request">mode, copy, and <code class="code">length</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-mode_002c-copy_002c-and-macro-parameters">mode, copy, and macro parameters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-mode_002c-copy_002c-and-output-request">mode, copy, and <code class="code">output</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-copy_002c-and-trf-request">mode, copy, and <code class="code">trf</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-copy_002c-and-write-request">mode, copy, and <code class="code">write</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-copy_002c-and-writec-request">mode, copy, and <code class="code">writec</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-copy_002c-and-writem-request">mode, copy, and <code class="code">writem</code> request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-mode_002c-copy_002c-and-_005c_0021">mode, copy, and <code class="code">\!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-mode_002c-copy_002c-and-_005c_003f">mode, copy, and <code class="code">\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-mode_002c-copy_002c-and-_005c_003f-1">mode, copy, and <code class="code">\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-mode_002c-copy_002c-and-_005ca">mode, copy, and <code class="code">\a</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-mode_002c-copy_002c-and-_005ct">mode, copy, and <code class="code">\t</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-copy_002c-and-_005cV">mode, copy, and <code class="code">\V</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-mode_002c-fill-_0028fi_0029_002c-enabling">mode, fill (<code class="code">fi</code>), enabling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-mode_002c-fill_002c-and-break-warnings">mode, fill, and <code class="code">break</code> warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-mode_002c-fill_002c-and-inter_002dsentence-space">mode, fill, and inter-sentence space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-mode_002c-fill_002c-and-_005cc">mode, fill, and <code class="code">\c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-mode_002c-fill_002c-disabling">mode, fill, disabling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-mode_002c-interpretation">mode, interpretation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-mode_002c-line_002dtabs">mode, line-tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-mode_002c-no_002dfill">mode, no-fill</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-mode_002c-no_002dfill_002c-and-_005cc">mode, no-fill, and <code class="code">\c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-mode_002c-no_002dspace-_0028ns_0029">mode, no-space (<code class="code">ns</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="troff-and-nroff-Modes.html#index-mode_002c-nroff">mode, <code class="code">nroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-mode_002c-safer">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-mode_002c-safer-1">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-mode_002c-safer-2">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-safer-3">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-safer-4">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-safer-5">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-safer-6">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Safer-Mode.html#index-mode_002c-safer-7">mode, safer</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Safer-Mode.html">Safer Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="troff-and-nroff-Modes.html#index-mode_002c-troff">mode, <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-mode_002c-unsafe">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-mode_002c-unsafe-1">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-mode_002c-unsafe-2">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-unsafe-3">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-unsafe-4">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-unsafe-5">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mode_002c-unsafe-6">mode, unsafe</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-modifying-requests">modifying requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-modulus">modulus</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="mom.html#index-mom-macro-package"><code class="code">mom</code> macro package</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="mom.html">mom</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-month-of-the-year-register-_0028mo_0029">month of the year register (<code class="code">mo</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-motion-operators">motion operators</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Motion-Quanta.html#index-motion-quanta">motion quanta</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Motion-Quanta.html">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-motion-quantum_002c-horizontal">motion quantum, horizontal</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Motion-Quanta.html#index-motion-quantum_002c-horizontal_002c-register-_0028_002eH_0029">motion quantum, horizontal, register (<code class="code">.H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Motion-Quanta.html">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-motion-quantum_002c-vertical">motion quantum, vertical</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-motion_002c-horizontal-_0028_005ch_0029">motion, horizontal (<code class="code">\h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-motion_002c-vertical-_0028_005cv_0029">motion, vertical (<code class="code">\v</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-motions_002c-page">motions, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Positions.html#index-mounting-a-font-_0028fp_0029">mounting a font (<code class="code">fp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Positions.html">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-mounting-position">mounting position</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-mounting-position-1">mounting position</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-mounting_002c-font_002c-automatic">mounting, font, automatic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms.html#index-ms-macros"><samp class="file">ms</samp> macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms.html">ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-ms-macros_002c-accent-marks"><samp class="file">ms</samp> macros, accent marks</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Body-Text.html#index-ms-macros_002c-body-text"><samp class="file">ms</samp> macros, body text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Body-Text.html">ms Body Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-ms-macros_002c-creating-table-of-contents"><samp class="file">ms</samp> macros, creating table of contents</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-ms-macros_002c-displays"><samp class="file">ms</samp> macros, displays</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-ms-macros_002c-document-control-settings"><samp class="file">ms</samp> macros, document control settings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Description-Macros.html#index-ms-macros_002c-document-description"><samp class="file">ms</samp> macros, document description</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Description-Macros.html">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-ms-macros_002c-equations"><samp class="file">ms</samp> macros, equations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-ms-macros_002c-figures"><samp class="file">ms</samp> macros, figures</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Headers-and-Footers.html#index-ms-macros_002c-footers"><samp class="file">ms</samp> macros, footers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Headers-and-Footers.html">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Footnotes.html#index-ms-macros_002c-footnotes"><samp class="file">ms</samp> macros, footnotes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Footnotes.html">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Differences-from-AT_0026T-ms.html#index-ms-macros_002c-fractional-type-sizes-in"><samp class="file">ms</samp> macros, fractional type sizes in</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Differences-from-AT_0026T-ms.html">Differences from AT&amp;T ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Structure.html#index-ms-macros_002c-general-structure"><samp class="file">ms</samp> macros, general structure</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Structure.html">ms Document Structure</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Differences-from-AT_0026T-ms.html#index-ms-macros_002c-groff-differences-from-AT_0026T"><samp class="file">ms</samp> macros, <code class="code">groff</code> differences from <abbr class="acronym">AT&amp;T</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Differences-from-AT_0026T-ms.html">Differences from AT&amp;T ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Headers-and-Footers.html#index-ms-macros_002c-headers"><samp class="file">ms</samp> macros, headers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Headers-and-Footers.html">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Headings-in-ms.html#index-ms-macros_002c-headings"><samp class="file">ms</samp> macros, headings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Headings-in-ms.html">Headings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-ms-macros_002c-keeps"><samp class="file">ms</samp> macros, keeps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-ms-macros_002c-language"><samp class="file">ms</samp> macros, language</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Lists-in-ms.html#index-ms-macros_002c-lists"><samp class="file">ms</samp> macros, lists</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Lists-in-ms.html">Lists in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-ms-macros_002c-localization"><samp class="file">ms</samp> macros, localization</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Margins.html#index-ms-macros_002c-margins"><samp class="file">ms</samp> macros, margins</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Margins.html">ms Margins</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Multiple-Columns.html#index-ms-macros_002c-multiple-columns"><samp class="file">ms</samp> macros, multiple columns</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Multiple-Columns.html">ms Multiple Columns</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Naming-Conventions.html#index-ms-macros_002c-naming-conventions"><samp class="file">ms</samp> macros, naming conventions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Naming-Conventions.html">ms Naming Conventions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Indented-regions-in-ms.html#index-ms-macros_002c-nested-lists"><samp class="file">ms</samp> macros, nested lists</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Indented-regions-in-ms.html">Indented regions in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typographical-symbols-in-ms.html#index-ms-macros_002c-obtaining-typographical-symbols"><samp class="file">ms</samp> macros, obtaining typographical symbols</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typographical-symbols-in-ms.html">Typographical symbols in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Page-Layout.html#index-ms-macros_002c-page-layout"><samp class="file">ms</samp> macros, page layout</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Page-Layout.html">ms Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paragraphs-in-ms.html#index-ms-macros_002c-paragraph-handling"><samp class="file">ms</samp> macros, paragraph handling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paragraphs-in-ms.html">Paragraphs in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-ms-macros_002c-references"><samp class="file">ms</samp> macros, references</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-ms-macros_002c-special-characters"><samp class="file">ms</samp> macros, special characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-ms-macros_002c-strings"><samp class="file">ms</samp> macros, strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-ms-macros_002c-tables"><samp class="file">ms</samp> macros, tables</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Text-settings-in-ms.html#index-ms-macros_002c-text-settings"><samp class="file">ms</samp> macros, text settings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Text-settings-in-ms.html">Text settings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-multi_002dfile-documents">multi-file documents</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-multi_002dline-strings">multi-line strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-multi_002dpage-table-example-_005bms_005d">multi-page table example [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Multiple-Columns.html#index-multiple-columns-_005bms_005d">multiple columns [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Multiple-Columns.html">ms Multiple Columns</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-multiplication">multiplication</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-n-scaling-unit"><code class="code">n</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-name-space_002c-common_002c-of-macros_002c-diversions_002c-and-strings">name space, common, of macros, diversions, and strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-name_002c-background-color_002c-register-_0028_002eM_0029">name, background color, register (<code class="code">.M</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-name_002c-fill-color_002c-register-_0028_002eM_0029">name, fill color, register (<code class="code">.M</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-name_002c-stroke-color_002c-register-_0028_002em_0029">name, stroke color, register (<code class="code">.m</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-named-character-_0028_005cC_0029">named character (<code class="code">\C</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-names_002c-long">names, long</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Naming-Conventions.html#index-naming-conventions_002c-ms-macros">naming conventions, <samp class="file">ms</samp> macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Naming-Conventions.html">ms Naming Conventions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-ne-request_002c-and-the-_002etrunc-register"><code class="code">ne</code> request, and the <code class="code">.trunc</code> register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-ne-request_002c-comparison-with-sv"><code class="code">ne</code> request, comparison with <code class="code">sv</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-negating-register-values">negating register values</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-negation">negation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Interpolating-Registers.html#index-nested-assignments">nested assignments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Interpolating-Registers.html">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-nested-diversions">nested diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Indented-regions-in-ms.html#index-nested-lists-_005bms_005d">nested lists [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Indented-regions-in-ms.html">Indented regions in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Suppressing-Output.html#index-nesting-level_002c-suppression_002c-register">nesting level, suppression, register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Suppressing-Output.html">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-new-page-_0028bp_0029">new page (<code class="code">bp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-newline-character_002c-and-translations">newline character, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-newline-character_002c-in-strings_002c-escaping">newline character, in strings, escaping</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-newline_002c-as-delimiter">newline, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Punning-Names.html#index-newline_002c-final_002c-stripping-in-diversions">newline, final, stripping in diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Punning-Names.html">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-next-file_002c-processing-_0028nx_0029">next file, processing (<code class="code">nx</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Positions.html#index-next-free-font-position-register-_0028_002efp_0029">next free font position register (<code class="code">.fp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Positions.html">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-next-page-number-register-_0028_002epn_0029">next page number register (<code class="code">.pn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-next-page-number_002c-configuring-_0028pn_0029">next page number, configuring (<code class="code">pn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-nf-request_002c-causing-implicit-break"><code class="code">nf</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-nl-register_002c-and-_002ed"><code class="code">nl</code> register, and <code class="code">.d</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-nl-register_002c-difference-from-_002eh"><code class="code">nl</code> register, difference from <code class="code">.h</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-nm-request_002c-using-_002b-and-_002d-with"><code class="code">nm</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-no_002dbreak-control-character-_0028_0027_0029">no-break control character (<code class="code">'</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-no_002dbreak-control-character_002c-changing-_0028c2_0029">no-break control character, changing (<code class="code">c2</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-no_002dfill-mode">no-fill mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-no_002dfill-mode_002c-and-_005cc">no-fill mode, and <code class="code">\c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-no_002dspace-mode-_0028ns_0029">no-space mode (<code class="code">ns</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Gtroff-Internals.html#index-node_002c-output">node, output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Gtroff-Internals.html">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-non_002dprinting-break-point-_0028_005c_003a_0029">non-printing break point (<code class="code">\:</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-nr-request_002c-and-warnings"><code class="code">nr</code> request, and warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-nr-request_002c-using-_002b-and-_002d-with"><code class="code">nr</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="troff-and-nroff-Modes.html#index-nroff-mode"><code class="code">nroff</code> mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-number-formats_002c-assigning-to-register-_0028af_0029">number formats, assigning to register (<code class="code">af</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-number-of-registers-register-_0028_002eR_0029">number of registers register (<code class="code">.R</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-number_002c-input-line_002c-setting-_0028lf_0029">number, input line, setting (<code class="code">lf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-number_002c-page_002c-next_002c-configuring-_0028pn_0029">number, page, next, configuring (<code class="code">pn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-numbered-glyph-_0028_005cN_0029">numbered glyph (<code class="code">\N</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-numbered-glyph-_0028_005cN_0029-1">numbered glyph (<code class="code">\N</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Lists-in-ms.html#index-numbered-list_002c-example-markup-_005bms_005d">numbered list, example markup [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Lists-in-ms.html">Lists in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-numbers_002c-line_002c-printing-_0028nm_0029">numbers, line, printing (<code class="code">nm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-numeral_002dwidth-space-_0028_005c0_0029">numeral-width space (<code class="code">\0</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-numerals_002c-as-delimiters">numerals, as delimiters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-numerals_002c-Roman">numerals, Roman</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-numeric-expression_002c-valid">numeric expression, valid</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-numeric-expressions">numeric expressions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-O">O</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-object-creation">object creation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-offset_002c-page">offset, page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-offset_002c-page-_0028po_0029">offset, page (<code class="code">po</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-open-request_002c-and-safer-mode"><code class="code">open</code> request, and safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-opena-request_002c-and-safer-mode"><code class="code">opena</code> request, and safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-opening-brace-escape-sequence-_0028_005c_007d_0029">opening brace escape sequence (<code class="code">\}</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-opening-file-_0028open_0029">opening file (<code class="code">open</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-operator_002c-scaling">operator, scaling</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-operators_002c-arithmetic">operators, arithmetic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-operators_002c-as-delimiters">operators, as delimiters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-operators_002c-comparison">operators, comparison</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-operators_002c-extremum-_0028_003e_003f_002c-_003c_003f_0029">operators, extremum (<code class="code">&gt;?</code>, <code class="code">&lt;?</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-operators_002c-logical">operators, logical</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-operators_002c-motion">operators, motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-operators_002c-unary-arithmetic">operators, unary arithmetic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-optical-size-of-a-font">optical size of a font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-options">options</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-order-of-evaluation-in-expressions">order of evaluation in expressions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-ordinary-character">ordinary character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paper-Format.html#index-orientation_002c-landscape">orientation, landscape</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paper-Format.html">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-orphan">orphan</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-orphan-lines_002c-preventing-with-ne">orphan lines, preventing with <code class="code">ne</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-os-request_002c-and-no_002dspace-mode"><code class="code">os</code> request, and no-space mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-outlined-circle_002c-drawing-_0028_005cD_0027c-_2026_0027_0029">outlined circle, drawing (&lsquo;<samp class="samp">\D'c &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-outlined-ellipse_002c-drawing-_0028_005cD_0027e-_2026_0027_0029">outlined ellipse, drawing (&lsquo;<samp class="samp">\D'e &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-outlined-polygon_002c-drawing-_0028_005cD_0027p-_2026_0027_0029">outlined polygon, drawing (&lsquo;<samp class="samp">\D'p &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-output-and-input-requests">output and input requests</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-output-comparison-operator">output comparison operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-output-device-name-string-_0028_002eT_0029">output device name string (<code class="code">.T</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-output-device-name-string-_0028_002eT_0029-1">output device name string (<code class="code">.T</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-output-device-name-string-_0028_002eT_0029_002c-in-other-implementations">output device name string (<code class="code">.T</code>), in other implementations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-output-device-usage-register-_0028_002eT_0029">output device usage register (<code class="code">.T</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-output-device-usage-register-_0028_002eT_0029_002c-incompatibility-with-AT_0026T-troff">output device usage register (<code class="code">.T</code>), incompatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Output-Device-Intro.html#index-output-devices">output devices</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Output-Device-Intro.html">Output Device Intro</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-output-encoding_002c-ASCII">output encoding, <abbr class="acronym">ASCII</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-output-encoding_002c-code-page-1047">output encoding, code page 1047</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-output-encoding_002c-EBCDIC">output encoding, <abbr class="acronym">EBCDIC</abbr></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-output-encoding_002c-ISO-646">output encoding, ISO&nbsp;646</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-output-encoding_002c-Latin_002d1-_0028ISO-8859_002d1_0029">output encoding, <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> (ISO <span class="w-nolinebreak-text">8859-1</span><!-- /@w -->)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-output-encoding_002c-UTF_002d8">output encoding, <span class="w-nolinebreak-text">UTF-8</span><!-- /@w --></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-output-glyphs_002c-and-input-characters_002c-compatibility-with-AT_0026T-troff">output glyphs, and input characters, compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Breaking.html#index-output-line-break">output line break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Breaking.html">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-output-line-number-register-_0028ln_0029">output line number register (<code class="code">ln</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-output-line-properties">output line properties</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-output-line_002c-continuation-_0028_005cc_0029">output line, continuation (<code class="code">\c</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-output-line_002c-horizontal-position_002c-register-_0028_002ek_0029">output line, horizontal position, register (<code class="code">.k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Gtroff-Internals.html#index-output-node">output node</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Gtroff-Internals.html">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-output-request_002c-and-copy-mode"><code class="code">output</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-output-request_002c-and-_005c_0021"><code class="code">output</code> request, and <code class="code">\!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-output_002c-filling_002c-disablement-of-_0028nf_0029">output, filling, disablement of (<code class="code">nf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-output_002c-filling_002c-enablement-of-_0028fi_0029">output, filling, enablement of (<code class="code">fi</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-output_002c-flush-_0028fl_0029">output, flush (<code class="code">fl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="gtroff-Output.html#index-output_002c-gtroff">output, <code class="code">gtroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="gtroff-Output.html">gtroff Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="gtroff-Output.html#index-output_002c-intermediate">output, intermediate</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="gtroff-Output.html">gtroff Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Suppressing-Output.html#index-output_002c-suppressing-_0028_005cO_0029">output, suppressing (<code class="code">\O</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Suppressing-Output.html">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-output_002c-transparent-_0028cf_002c-trf_0029">output, transparent (<code class="code">cf</code>, <code class="code">trf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-output_002c-transparent-_0028_005c_0021_002c-_005c_003f_0029">output, transparent (<code class="code">\!</code>, <code class="code">\?</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-output_002c-transparent_002c-incompatibilities-with-AT_0026T-troff">output, transparent, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="gtroff-Output.html#index-output_002c-troff">output, <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="gtroff-Output.html">gtroff Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-overlapping-characters">overlapping characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-overstriking-glyphs-_0028_005co_0029">overstriking glyphs (<code class="code">\o</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-p-scaling-unit"><code class="code">p</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-P-scaling-unit"><code class="code">P</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Packages.html#index-package_002c-macro">package, macro</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Packages.html">Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Major-Macro-Packages.html#index-package_002c-macro_002c-auxiliary">package, macro, auxiliary</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Major-Macro-Packages.html">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Major-Macro-Packages.html#index-package_002c-macro_002c-full_002dservice">package, macro, full-service</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Major-Macro-Packages.html">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Package-Intro.html#index-package_002c-macro_002c-introduction">package, macro, introduction</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Package-Intro.html">Macro Package Intro</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Major-Macro-Packages.html#index-package_002c-macro_002c-major">package, macro, major</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Major-Macro-Packages.html">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Major-Macro-Packages.html#index-package_002c-macro_002c-minor">package, macro, minor</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Major-Macro-Packages.html">Major Macro Packages</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-package_002c-macro_002c-search-path">package, macro, search path</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-package_002c-package_002c-structuring-the-source-of">package, package, structuring the source of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Fields.html#index-padding-character_002c-for-fields-_0028fc_0029">padding character, for fields (<code class="code">fc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Fields.html">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-page">page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-page-break">page break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-page-break-1">page break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="The-Implicit-Page-Trap.html#index-page-break-2">page break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="The-Implicit-Page-Trap.html">The Implicit Page Trap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-page-break-_0028introduction_0029">page break (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-page-break_002c-conditional-_0028ne_0029">page break, conditional (<code class="code">ne</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="End_002dof_002dinput-Traps.html#index-page-break_002c-final">page break, final</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="End_002dof_002dinput-Traps.html">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Vertical-Position-Traps.html#index-page-break_002c-prevented-by-vpt">page break, prevented by <code class="code">vpt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Vertical-Position-Traps.html">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-page-control">page control</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-page-ejection">page ejection</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-page-ejection-1">page ejection</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="The-Implicit-Page-Trap.html#index-page-ejection-2">page ejection</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="The-Implicit-Page-Trap.html">The Implicit Page Trap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-page-ejection-status-register-_0028_002epe_0029">page ejection status register (<code class="code">.pe</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="End_002dof_002dinput-Traps.html#index-page-ejection_002c-of-final-page">page ejection, of final page</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="End_002dof_002dinput-Traps.html">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Vertical-Position-Traps.html#index-page-ejection_002c-prevented-by-vpt">page ejection, prevented by <code class="code">vpt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Vertical-Position-Traps.html">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-page-footers">page footers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-page-headers">page headers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-page-layout">page layout</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Page-Layout.html#index-page-layout-_005bms_005d">page layout [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Page-Layout.html">ms Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-page-length-register-_0028_002ep_0029">page length register (<code class="code">.p</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-page-length_002c-configuring-_0028pl_0029">page length, configuring (<code class="code">pl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-page-location-traps">page location traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-page-location-traps_002c-debugging">page location traps, debugging</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-page-location_002c-vertical_002c-marking-_0028mk_0029">page location, vertical, marking (<code class="code">mk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-page-location_002c-vertical_002c-returning-to-marked-_0028rt_0029">page location, vertical, returning to marked (<code class="code">rt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-page-motions">page motions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-page-number-character-_0028_0025_0029">page number character (<code class="code">%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-page-number-character_002c-changing-_0028pc_0029">page number character, changing (<code class="code">pc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-page-number-register-_0028_0025_0029">page number register (<code class="code">%</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-page-number_002c-configuring-next-_0028pn_0029">page number, configuring next (<code class="code">pn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-page-number_002c-next_002c-register-_0028_002epn_0029">page number, next, register (<code class="code">.pn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-page-offset">page offset</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-page-offset-_0028po_0029">page offset (<code class="code">po</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paper-Format.html#index-page-orientation_002c-landscape">page orientation, landscape</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paper-Format.html">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-page_002c-geometry-of">page, geometry of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-page_002c-new-_0028bp_0029">page, new (<code class="code">bp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paper-Format.html#index-paper-format">paper format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paper-Format.html">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paper-Format.html#index-paper-size">paper size</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paper-Format.html">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paragraphs.html#index-paragraphs">paragraphs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paragraphs.html">Paragraphs</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-parameter-count-register-_0028_002e_0024_0029">parameter count register (<code class="code">.$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-parameters">parameters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Gtroff-Internals.html#index-parameters_002c-and-compatibility-mode">parameters, and compatibility mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Gtroff-Internals.html">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-parameters_002c-macro-_0028_005c_0024_0029">parameters, macro (<code class="code">\$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-parentheses">parentheses</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-partially-collected-line">partially collected line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Directories.html#index-path_002c-for-font-files">path, for font files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Directories.html">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-path_002c-for-tmac-files">path, for tmac files</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-pattern-files_002c-for-hyphenation">pattern files, for hyphenation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-patterns-for-hyphenation-_0028hpf_0029">patterns for hyphenation (<code class="code">hpf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-pending-output-line">pending output line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-pi-request_002c-and-groff"><code class="code">pi</code> request, and <code class="code">groff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-pi-request_002c-and-safer-mode"><code class="code">pi</code> request, and safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Safer-Mode.html#index-pi-request_002c-disabled-by-default"><code class="code">pi</code> request, disabled by default</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Safer-Mode.html">Safer Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-pica-scaling-unit-_0028P_0029">pica scaling unit (<code class="code">P</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-PID-of-GNU-troff-register-_0028_0024_0024_0029">PID of GNU <code class="code">troff</code> register (<code class="code">$$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-pile_002c-glyph-_0028_005cb_0029">pile, glyph (<code class="code">\b</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-pl-request_002c-using-_002b-and-_002d-with"><code class="code">pl</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-plain-text-approximation-output-register-_0028_002eA_0029">plain text approximation output register (<code class="code">.A</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-plain-text-approximation-output-register-_0028_002eA_0029-1">plain text approximation output register (<code class="code">.A</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Traps.html#index-planting-a-trap">planting a trap</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Traps.html">Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-platform_002dspecific-directory">platform-specific directory</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-pm-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">pm</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-pn-request_002c-using-_002b-and-_002d-with"><code class="code">pn</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-PNG-image-generation-from-PostScript">PNG image generation from PostScript</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-po-request_002c-using-_002b-and-_002d-with"><code class="code">po</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-point-scaling-unit-_0028p_0029">point scaling unit (<code class="code">p</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Type-Size.html#index-point-size-registers-_0028_002es_002c-_002eps_0029">point size registers (<code class="code">.s</code>, <code class="code">.ps</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Type-Size.html">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-point-size-registers_002c-last_002drequested-_0028_002epsr_002c-_002esr_0029">point size registers, last-requested (<code class="code">.psr</code>, <code class="code">.sr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Type-Size.html#index-point-sizes_002c-changing-_0028ps_002c-_005cs_0029">point sizes, changing (<code class="code">ps</code>, <code class="code">\s</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Type-Size.html">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-point-sizes_002c-fractional">point sizes, fractional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-point-sizes_002c-fractional-1">point sizes, fractional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-polygon_002c-filled_002c-drawing-_0028_005cD_0027P-_2026_0027_0029">polygon, filled, drawing (&lsquo;<samp class="samp">\D'P &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-polygon_002c-outlined_002c-drawing-_0028_005cD_0027p-_2026_0027_0029">polygon, outlined, drawing (&lsquo;<samp class="samp">\D'p &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-polygon_002c-solid_002c-drawing-_0028_005cD_0027P-_2026_0027_0029">polygon, solid, drawing (&lsquo;<samp class="samp">\D'P &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-polygon_002c-stroked_002c-drawing-_0028_005cD_0027p-_2026_0027_0029">polygon, stroked, drawing (&lsquo;<samp class="samp">\D'p &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-position-of-lowest-text-line-_0028_002eh_0029">position of lowest text line (<code class="code">.h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-position_002c-absolute-_0028sic_0029-operator-_0028_007c_0029">position, absolute <i class="slanted">(sic)</i> operator (<code class="code">|</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-position_002c-drawing">position, drawing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-position_002c-horizontal-input-line_002c-saving-_0028_005ck_0029">position, horizontal input line, saving (<code class="code">\k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-position_002c-horizontal_002c-in-input-line_002c-register-_0028hp_0029">position, horizontal, in input line, register (<code class="code">hp</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-position_002c-horizontal_002c-in-output-line_002c-register-_0028_002ek_0029">position, horizontal, in output line, register (<code class="code">.k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-position_002c-mounting">position, mounting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-position_002c-vertical_002c-in-diversion_002c-register-_0028_002ed_0029">position, vertical, in diversion, register (<code class="code">.d</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Positions.html#index-positions_002c-font">positions, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Positions.html">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-post_002dvertical-line-spacing">post-vertical line spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-post_002dvertical-line-spacing-register-_0028_002epvs_0029">post-vertical line spacing register (<code class="code">.pvs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-post_002dvertical-line-spacing_002c-changing-_0028pvs_0029">post-vertical line spacing, changing (<code class="code">pvs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-postprocessor-access">postprocessor access</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Output-Device-Intro.html#index-postprocessors">postprocessors</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Output-Device-Intro.html">Output Device Intro</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-PostScript_002c-bounding-box">PostScript, bounding box</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-PostScript_002c-PNG-image-generation">PostScript, PNG image generation</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-prefix_002c-for-commands">prefix, for commands</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Preprocessor-Intro.html#index-preprocessors">preprocessors</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Preprocessor-Intro.html">Preprocessor Intro</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-previous-font_002c-selecting-_0028ft_0029">previous font, selecting (<code class="code">ft</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-previous-font_002c-selecting-_0028_005cf_005b_005d_002c-_005cfP_0029">previous font, selecting (<code class="code">\f[]</code>, <code class="code">\fP</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-previous-line-length-_0028_002en_0029">previous line length (<code class="code">.n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-print-current-page-register-_0028_002eP_0029">print current page register (<code class="code">.P</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-printing-backslash-_0028_005c_005c_002c-_005ce_002c-_005cE_002c-_005c_005brs_005d_0029">printing backslash (<code class="code">\\</code>, <code class="code">\e</code>, <code class="code">\E</code>, <code class="code">\[rs]</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-printing-line-numbers-_0028nm_0029">printing line numbers (<code class="code">nm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-printing-to-stderr-_0028tm_002c-tm1_002c-tmc_0029">printing to stderr (<code class="code">tm</code>, <code class="code">tm1</code>, <code class="code">tmc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-printing_002c-zero_002dwidth-_0028_005cz_002c-_005cZ_0029">printing, zero-width (<code class="code">\z</code>, <code class="code">\Z</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-printing_002c-zero_002dwidth-_0028_005cz_002c-_005cZ_0029-1">printing, zero-width (<code class="code">\z</code>, <code class="code">\Z</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-process-ID-of-GNU-troff-register-_0028_0024_0024_0029">process ID of GNU <code class="code">troff</code> register (<code class="code">$$</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-processing-next-file-_0028nx_0029">processing next file (<code class="code">nx</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-productive-input-line">productive input line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-properties-of-characters-_0028cflags_0029">properties of characters (<code class="code">cflags</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-properties-of-glyphs-_0028cflags_0029">properties of glyphs (<code class="code">cflags</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-properties-of-output-lines">properties of output lines</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-ps-request_002c-and-constant-glyph-space-mode"><code class="code">ps</code> request, and constant glyph space mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-ps-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">ps</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-ps-request_002c-using-_002b-and-_002d-with"><code class="code">ps</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-ps-request_002c-with-fractional-type-sizes"><code class="code">ps</code> request, with fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-pso-request_002c-and-safer-mode"><code class="code">pso</code> request, and safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-pvs-request_002c-using-_002b-and-_002d-with"><code class="code">pvs</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-Q">Q</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Motion-Quanta.html#index-quanta_002c-motion">quanta, motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Motion-Quanta.html">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-quantum_002c-horizontal-motion">quantum, horizontal motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-quantum_002c-vertical-motion">quantum, vertical motion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-radicalex-glyph_002c-and-cflags"><code class="code">radicalex</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-ragged_002dleft-text">ragged-left text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-ragged_002dright-text">ragged-right text</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-rc-request_002c-and-glyph-definitions"><code class="code">rc</code> request, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-read_002donly-register-removal_002c-incompatibility-with-AT_0026T-troff">read-only register removal, incompatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-read_002donly-register_002c-changing-format">read-only register, changing format</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-reading-from-standard-input-_0028rd_0029">reading from standard input (<code class="code">rd</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="while.html#index-recursive-macros">recursive macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="while.html">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-refer_002c-and-macro-names-starting-with-_005b-or-_005d"><code class="code">refer</code>, and macro names starting with <code class="code">[</code> or <code class="code">]</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="GNU-troff-Reference.html#index-reference_002c-gtroff">reference, <code class="code">gtroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="GNU-troff-Reference.html">GNU troff Reference</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-references-_005bms_005d">references [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-register-format_002c-in-expressions">register format, in expressions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-register_002c-assigning-number-format-to-_0028af_0029">register, assigning number format to (<code class="code">af</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-register_002c-built_002din_002c-removing">register, built-in, removing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-register_002c-creating-alias-for-_0028aln_0029">register, creating alias for (<code class="code">aln</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-register_002c-format-_0028_005cg_0029">register, format (<code class="code">\g</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-register_002c-read_002donly_002c-removal_002c-incompatibility-with-AT_0026T-troff">register, read-only, removal, incompatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-register_002c-removing-_0028rr_0029">register, removing (<code class="code">rr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-register_002c-removing-alias-for-_0028rr_0029">register, removing alias for (<code class="code">rr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-register_002c-renaming-_0028rnn_0029">register, renaming (<code class="code">rnn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Registers.html#index-registers">registers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Registers.html">Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-registers_002c-built_002din">registers, built-in</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-registers_002c-dumping-_0028pnr_0029">registers, dumping (<code class="code">pnr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Interpolating-Registers.html#index-registers_002c-interpolating-_0028_005cn_0029">registers, interpolating (<code class="code">\n</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Interpolating-Registers.html">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-registers_002c-number-of_002c-register-_0028_002eR_0029">registers, number of, register (<code class="code">.R</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-registers_002c-setting-_0028nr_002c-_005cR_0029">registers, setting (<code class="code">nr</code>, <code class="code">\R</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-removal-of-read_002donly-registers_002c-incompatibility-with-AT_0026T-troff">removal of read-only registers, incompatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-removing-a-built_002din-register">removing a built-in register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-removing-a-register-_0028rr_0029">removing a register (<code class="code">rr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-removing-alias-for-register-_0028rr_0029">removing alias for register (<code class="code">rr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-removing-alias_002c-for-diversion-_0028rm_0029">removing alias, for diversion (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-removing-alias_002c-for-macro-_0028rm_0029">removing alias, for macro (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-removing-alias_002c-for-string-_0028rm_0029">removing alias, for string (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-removing-diversion-_0028rm_0029">removing diversion (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-removing-glyph-definition-_0028rchar_002c-rfschar_0029">removing glyph definition (<code class="code">rchar</code>, <code class="code">rfschar</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-removing-macro-_0028rm_0029">removing macro (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-removing-request-_0028rm_0029">removing request (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-removing-string-_0028rm_0029">removing string (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-renaming-a-register-_0028rnn_0029">renaming a register (<code class="code">rnn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-renaming-diversion-_0028rn_0029">renaming diversion (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-renaming-macro-_0028rn_0029">renaming macro (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-renaming-request-_0028rn_0029">renaming request (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-renaming-string-_0028rn_0029">renaming string (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-renditions_002c-graphic">renditions, graphic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-request">request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Formatter-Instructions.html#index-request-1">request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Formatter-Instructions.html">Formatter Instructions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-request-arguments">request arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Gtroff-Internals.html#index-request-arguments_002c-and-compatibility-mode">request arguments, and compatibility mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Gtroff-Internals.html">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-request-arguments_002c-and-tabs">request arguments, and tabs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-request_002c-removing-_0028rm_0029">request, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-request_002c-renaming-_0028rn_0029">request, renaming (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Comments.html#index-request_002c-undefined">request, undefined</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Comments.html">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-requests-for-drawing">requests for drawing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-requests-for-input-and-output">requests for input and output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-requests_002c-intercepting">requests, intercepting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-requests_002c-invoking">requests, invoking</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-requests_002c-modifying">requests, modifying</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-resolution_002c-device">resolution, device</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-resolution_002c-device-1">resolution, device</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-resolution_002c-device_002c-obtaining-in-the-formatter">resolution, device, obtaining in the formatter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-resolution_002c-horizontal">resolution, horizontal</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Motion-Quanta.html#index-resolution_002c-horizontal_002c-register-_0028_002eH_0029">resolution, horizontal, register (<code class="code">.H</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Motion-Quanta.html">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-resolution_002c-vertical">resolution, vertical</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-returning-to-marked-vertical-page-location-_0028rt_0029">returning to marked vertical page location (<code class="code">rt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-revision-number-register-_0028_002eY_0029">revision number register (<code class="code">.Y</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-right-margin">right margin</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-right_002daligning-lines-_0028introduction_0029">right-aligning lines (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-right_002djustifying-_0028rj_0029">right-justifying (<code class="code">rj</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-right_002djustifying-lines-_0028introduction_0029">right-justifying lines (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-rivers">rivers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-rj-request_002c-causing-implicit-break"><code class="code">rj</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-rn-glyph_002c-and-cflags"><code class="code">rn</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Italic-Corrections.html#index-roman-glyph_002c-correction-after-italic-glyph-_0028_005c_002f_0029">roman glyph, correction after italic glyph (<code class="code">\/</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Italic-Corrections.html">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Italic-Corrections.html#index-roman-glyph_002c-correction-before-italic-glyph-_0028_005c_002c_0029">roman glyph, correction before italic glyph (<code class="code">\,</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Italic-Corrections.html">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-Roman-numerals">Roman numerals</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-Roman-numerals_002c-extrema-_0028maximum-and-minimum_0029">Roman numerals, extrema (maximum and minimum)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-rq-glyph_002c-at-end-of-sentence"><code class="code">rq</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-rq-glyph_002c-at-end-of-sentence-1"><code class="code">rq</code> glyph, at end of sentence</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-rt-request_002c-using-_002b-and-_002d-with"><code class="code">rt</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-ru-glyph_002c-and-cflags"><code class="code">ru</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-running-system-commands">running system commands</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-s-scaling-unit"><code class="code">s</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-safer-mode">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-safer-mode-1">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-safer-mode-2">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-safer-mode-3">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-safer-mode-4">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-safer-mode-5">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-safer-mode-6">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Safer-Mode.html#index-safer-mode-7">safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Safer-Mode.html">Safer Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-saving-horizontal-input-line-position-_0028_005ck_0029">saving horizontal input line position (<code class="code">\k</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-scaling-indicator">scaling indicator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-scaling-operator">scaling operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-scaling-unit-c">scaling unit <code class="code">c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-scaling-unit-f">scaling unit <code class="code">f</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-scaling-unit-i">scaling unit <code class="code">i</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-scaling-unit-m">scaling unit <code class="code">m</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-scaling-unit-M">scaling unit <code class="code">M</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-scaling-unit-n">scaling unit <code class="code">n</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-scaling-unit-p">scaling unit <code class="code">p</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-scaling-unit-P">scaling unit <code class="code">P</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-scaling-unit-s">scaling unit <code class="code">s</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-scaling-unit-u">scaling unit <code class="code">u</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-scaling-unit-v">scaling unit <code class="code">v</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-scaling-unit-z">scaling unit <code class="code">z</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Directories.html#index-searching-fonts">searching fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Directories.html">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-searching-macros">searching macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-seconds_002c-current-time-_0028seconds_0029">seconds, current time (<code class="code">seconds</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-selecting-the-previous-font-_0028ft_0029">selecting the previous font (<code class="code">ft</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-sentence-space">sentence space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-sentence-space-size-register-_0028_002esss_0029">sentence space size register (<code class="code">.sss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-sentences">sentences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Formatter-Instructions.html#index-sequence_002c-escape">sequence, escape</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Formatter-Instructions.html">Formatter Instructions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversion-Traps.html#index-setting-diversion-trap-_0028dt_0029">setting diversion trap (<code class="code">dt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversion-Traps.html">Diversion Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="End_002dof_002dinput-Traps.html#index-setting-end_002dof_002dinput-trap-_0028em_0029">setting end-of-input trap (<code class="code">em</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="End_002dof_002dinput-Traps.html">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-setting-input-line-number-_0028lf_0029">setting input line number (<code class="code">lf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-setting-input-line-trap-_0028it_002c-itc_0029">setting input line trap (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-setting-registers-_0028nr_002c-_005cR_0029">setting registers (<code class="code">nr</code>, <code class="code">\R</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-setting-the-page-length-_0028pl_0029">setting the page length (<code class="code">pl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-setting-up-an-abstract-font-style-_0028sty_0029">setting up an abstract font style (<code class="code">sty</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-shc-request_002c-and-translations"><code class="code">shc</code> request, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-site_002dlocal-directory">site-local directory</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Directories.html#index-site_002dlocal-directory-1">site-local directory</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Directories.html">Font Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-size-of-sentence-space-register-_0028_002esss_0029">size of sentence space register (<code class="code">.sss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-size-of-word-space-register-_0028_002ess_0029">size of word space register (<code class="code">.ss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-size_002c-optical_002c-of-a-font">size, optical, of a font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paper-Format.html#index-size_002c-paper">size, paper</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paper-Format.html">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html#index-size_002c-size">size, size</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-sizes_002c-fractional">sizes, fractional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-sizes_002c-fractional-type">sizes, fractional type</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-skew_002c-of-last-glyph-_0028_002ecsk_0029">skew, of last glyph (<code class="code">.csk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-slant_002c-font_002c-changing-_0028_005cS_0029">slant, font, changing (<code class="code">\S</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-soft-hyphen-character_002c-setting-_0028shc_0029">soft hyphen character, setting (<code class="code">shc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-soft-hyphen-glyph-_0028hy_0029">soft hyphen glyph (<code class="code">hy</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-solid-circle_002c-drawing-_0028_005cD_0027C-_2026_0027_0029">solid circle, drawing (&lsquo;<samp class="samp">\D'C &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-solid-ellipse_002c-drawing-_0028_005cD_0027E-_2026_0027_0029">solid ellipse, drawing (&lsquo;<samp class="samp">\D'E &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-solid-polygon_002c-drawing-_0028_005cD_0027P-_2026_0027_0029">solid polygon, drawing (&lsquo;<samp class="samp">\D'P &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-SOURCE_005fDATE_005fEPOCH_002c-environment-variable"><code>SOURCE_DATE_EPOCH<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-sp-request_002c-and-no_002dspace-mode"><code class="code">sp</code> request, and no-space mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-sp-request_002c-causing-implicit-break"><code class="code">sp</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-space-between-sentences">space between sentences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-space-between-sentences-register-_0028_002esss_0029">space between sentences register (<code class="code">.sss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-space-between-words-register-_0028_002ess_0029">space between words register (<code class="code">.ss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-space-character_002c-as-delimiter">space character, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-space-characters_002c-in-expressions">space characters, in expressions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-space_002c-between-sentences">space, between sentences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-space_002c-between-words">space, between words</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-space_002c-discardable_002c-horizontal">space, discardable, horizontal</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-space_002c-hair-_0028_005c_005e_0029">space, hair (<code class="code">\^</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-space_002c-horizontal-_0028_005ch_0029">space, horizontal (<code class="code">\h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Punning-Names.html#index-space_002c-horizontal_002c-unformatting">space, horizontal, unformatting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Punning-Names.html">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-space_002c-thin-_0028_005c_007c_0029">space, thin (<code class="code">\|</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-space_002c-unbreakable-_0028_005c_007e_0029">space, unbreakable (<code class="code">\~</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-space_002c-unbreakable-and-unadjustable-_0028_005cSP_0029">space, unbreakable and unadjustable (<code class="code">\<kbd class="key">SP</kbd></code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-space_002c-vertical_002c-unit-_0028v_0029">space, vertical, unit (<code class="code">v</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-space_002c-width-of-a-digit-_0028numeral_0029-_0028_005c0_0029">space, width of a digit (numeral) (<code class="code">\0</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-spaces-with-ds">spaces with <code class="code">ds</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Calling-Macros.html#index-spaces_002c-in-a-macro-argument">spaces, in a macro argument</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Calling-Macros.html">Calling Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Breaking.html#index-spaces_002c-leading-and-trailing">spaces, leading and trailing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Breaking.html">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-spacing-_0028introduction_0029">spacing (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-spacing_002c-manipulating">spacing, manipulating</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-spacing_002c-vertical">spacing, vertical</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html#index-spacing_002c-vertical-1">spacing, vertical</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-spacing_002c-vertical-_0028introduction_0029">spacing, vertical (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Sentences.html#index-special-characters">special characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Sentences.html">Sentences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-special-characters-1">special characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-special-characters-_005bms_005d">special characters [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-special-characters_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029">special characters, list of (<cite class="cite">groff_char<span class="r">(7)</span></cite> man page)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-special-font">special font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-special-fonts">special fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Special-Fonts.html#index-special-fonts-1">special fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Special-Fonts.html">Special Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-special-fonts-2">special fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-special-fonts_002c-emboldening">special fonts, emboldening</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-special-request_002c-and-font-translations"><code class="code">special</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-special-request_002c-and-glyph-search-order"><code class="code">special</code> request, and glyph search order</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-spline_002c-drawing-_0028_005cD_0027_007e-_2026_0027_0029">spline, drawing (&lsquo;<samp class="samp">\D'~ &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Traps.html#index-springing-a-trap">springing a trap</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Traps.html">Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-sqrtex-glyph_002c-and-cflags"><code class="code">sqrtex</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-ss-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">ss</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-stack">stack</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-stacking-glyphs-_0028_005cb_0029">stacking glyphs (<code class="code">\b</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-standard-input_002c-reading-from-_0028rd_0029">standard input, reading from (<code class="code">rd</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-stderr_002c-printing-to-_0028tm_002c-tm1_002c-tmc_0029">stderr, printing to (<code class="code">tm</code>, <code class="code">tm1</code>, <code class="code">tmc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Leaders.html#index-stops_002c-tab">stops, tab</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Leaders.html">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-string-arguments">string arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-string-comparison">string comparison</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-string-expansion-_0028_005c_002a_0029">string expansion (<code class="code">\*</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-string-interpolation-_0028_005c_002a_0029">string interpolation (<code class="code">\*</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-string_002c-appending-_0028as_0029">string, appending (<code class="code">as</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-string_002c-creating-alias-for-_0028als_0029">string, creating alias for (<code class="code">als</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-string_002c-length-of-_0028length_0029">string, length of (<code class="code">length</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-string_002c-removing-_0028rm_0029">string, removing (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-string_002c-removing-alias-for-_0028rm_0029">string, removing alias for (<code class="code">rm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-string_002c-renaming-_0028rn_0029">string, renaming (<code class="code">rn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-strings">strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-strings-_005bms_005d">strings [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-strings_002c-multi_002dline">strings, multi-line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-strings_002c-shared-name-space-with-macros-and-diversions">strings, shared name space with macros and diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Punning-Names.html#index-stripping-final-newline-in-diversions">stripping final newline in diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Punning-Names.html">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-stroke-color">stroke color</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-stroke-color-name-register-_0028_002em_0029">stroke color name register (<code class="code">.m</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-stroked-circle_002c-drawing-_0028_005cD_0027c-_2026_0027_0029">stroked circle, drawing (&lsquo;<samp class="samp">\D'c &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-stroked-ellipse_002c-drawing-_0028_005cD_0027e-_2026_0027_0029">stroked ellipse, drawing (&lsquo;<samp class="samp">\D'e &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-stroked-polygon_002c-drawing-_0028_005cD_0027p-_2026_0027_0029">stroked polygon, drawing (&lsquo;<samp class="samp">\D'p &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-structuring-source-code-of-documents-or-macro-packages">structuring source code of documents or macro packages</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-sty-request_002c-and-changing-fonts"><code class="code">sty</code> request, and changing fonts</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-sty-request_002c-and-font-translations"><code class="code">sty</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-style_002c-font">style, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-style_002c-font_002c-abstract">style, font, abstract</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-style_002c-font_002c-abstract_002c-setting-up-_0028sty_0029">style, font, abstract, setting up (<code class="code">sty</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-styles_002c-font">styles, font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-substring-_0028substring_0029">substring (<code class="code">substring</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-subtraction">subtraction</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Suppressing-Output.html#index-suppressing-output-_0028_005cO_0029">suppressing output (<code class="code">\O</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Suppressing-Output.html">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Suppressing-Output.html#index-suppression-nesting-level-register">suppression nesting level register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Suppressing-Output.html">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-sv-request_002c-and-no_002dspace-mode"><code class="code">sv</code> request, and no-space mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-switching-environments-_0028ev_0029">switching environments (<code class="code">ev</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-sy-request_002c-and-safer-mode"><code class="code">sy</code> request, and safer mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Safer-Mode.html#index-sy-request_002c-disabled-by-default"><code class="code">sy</code> request, disabled by default</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Safer-Mode.html">Safer Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-symbol">symbol</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-symbol-table_002c-dumping-_0028pm_0029">symbol table, dumping (<code class="code">pm</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-symbol_002c-defining-_0028char_0029">symbol, defining (<code class="code">char</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-symbols_002c-using">symbols, using</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-system-commands_002c-running">system commands, running</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-system_0028_0029-return-value-register-_0028systat_0029"><code class="code">system()</code> return value register (<code class="code">systat</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Leaders.html#index-tab-character">tab character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Leaders.html">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-tab-character-encoding">tab character encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-tab-character_002c-and-translations">tab character, and translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Delimiters.html#index-tab-character_002c-as-delimiter">tab character, as delimiter</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Delimiters.html">Delimiters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-tab-character_002c-non_002dinterpreted-_0028_005ct_0029">tab character, non-interpreted (<code class="code">\t</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-tab-repetition-character-_0028tc_0029">tab repetition character (<code class="code">tc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-tab-stop-settings-register-_0028_002etabs_0029">tab stop settings register (<code class="code">.tabs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Leaders.html#index-tab-stops">tab stops</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Leaders.html">Tabs and Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-tab-stops_002c-default">tab stops, default</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-tab_002c-line_002dtabs-mode">tab, line-tabs mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Table-of-Contents.html#index-table-of-contents">table of contents</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Table-of-Contents.html">Table of Contents</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-table-of-contents-1">table of contents</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-table-of-contents_002c-creating-_005bms_005d">table of contents, creating [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-table_002c-multi_002dpage_002c-example-_005bms_005d">table, multi-page, example [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-tables-_005bms_005d">tables [<samp class="file">ms</samp>]</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-tabs_002c-and-fields">tabs, and fields</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-tabs_002c-and-macro-arguments">tabs, and macro arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Invoking-Requests.html#index-tabs_002c-and-request-arguments">tabs, and request arguments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Invoking-Requests.html">Invoking Requests</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Comments.html#index-tabs_002c-before-comments">tabs, before comments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Comments.html">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paragraphs.html#index-tagged-paragraphs">tagged paragraphs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paragraphs.html">Paragraphs</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paragraphs.html#index-tags_002c-paragraph">tags, paragraph</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paragraphs.html">Paragraphs</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-terminal_002c-conditional-output-for">terminal, conditional output for</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-text-baseline">text baseline</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html#index-text-baseline-1">text baseline</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-text-font">text font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Requests-and-Macros.html#index-text-line">text line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Requests-and-Macros.html">Requests and Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-text-line_002c-position-of-lowest-_0028_002eh_0029">text line, position of lowest (<code class="code">.h</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Text.html#index-text_002c-GNU-troff-processing">text, GNU <code class="code">troff</code> processing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Text.html">Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-text_002c-justifying">text, justifying</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-text_002c-justifying-_0028rj_0029">text, justifying (<code class="code">rj</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-thickness-of-lines-_0028_005cD_0027t-_2026_0027_0029">thickness of lines (&lsquo;<samp class="samp">\D't &hellip;'</samp>&rsquo;)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-thin-space-_0028_005c_007c_0029">thin space (<code class="code">\|</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-three_002dpart-title-_0028tl_0029">three-part title (<code class="code">tl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-ti-request_002c-causing-implicit-break"><code class="code">ti</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-ti-request_002c-using-_002b-and-_002d-with"><code class="code">ti</code> request, using <code class="code">+</code> and&nbsp;<code class="code">-</code> with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-time_002c-current_002c-hours-_0028hours_0029">time, current, hours (<code class="code">hours</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-time_002c-current_002c-minutes-_0028minutes_0029">time, current, minutes (<code class="code">minutes</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-time_002c-current_002c-seconds-_0028seconds_0029">time, current, seconds (<code class="code">seconds</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-time_002c-formatting">time, formatting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-title-length_002c-configuring-_0028lt_0029">title length, configuring (<code class="code">lt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-title-line-length-register-_0028_002elt_0029">title line length register (<code class="code">.lt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-title-line_002c-formatting-_0028tl_0029">title line, formatting (<code class="code">tl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-titles">titles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-tkf-request_002c-and-font-styles"><code class="code">tkf</code> request, and font styles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-tkf-request_002c-and-font-translations"><code class="code">tkf</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-tkf-request_002c-with-fractional-type-sizes"><code class="code">tkf</code> request, with fractional type sizes</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-tl-request_002c-and-mc"><code class="code">tl</code> request, and <code class="code">mc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-tmac_002c-directory">tmac, directory</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-tmac_002c-path">tmac, path</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-TMPDIR_002c-environment-variable"><code>TMPDIR<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Gtroff-Internals.html#index-token_002c-input">token, input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Gtroff-Internals.html">Gtroff Internals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-top-margin">top margin</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-top_002dlevel-diversion">top-level diversion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-top_002dlevel-diversion_002c-and-bp">top-level diversion, and <code class="code">bp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-top_002dlevel-diversion_002c-and-_005c_0021">top-level diversion, and <code class="code">\!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-top_002dlevel-diversion_002c-and-_005c_003f">top-level diversion, and <code class="code">\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-tr-request_002c-and-glyph-definitions"><code class="code">tr</code> request, and glyph definitions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-tr-request_002c-and-soft-hyphen-character"><code class="code">tr</code> request, and soft hyphen character</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-tr-request_002c-incompatibilities-with-AT_0026T-troff"><code class="code">tr</code> request, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-track-kerning">track kerning</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-track-kerning_002c-activating-_0028tkf_0029">track kerning, activating (<code class="code">tkf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-trailing-double-quotes-in-strings">trailing double quotes in strings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-trailing-spaces-in-string-definitions-and-appendments">trailing spaces in string definitions and appendments</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Breaking.html#index-trailing-spaces-on-text-lines">trailing spaces on text lines</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Breaking.html">Breaking</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-translations-of-characters">translations of characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-transparent-characters">transparent characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Dummy-Characters.html#index-transparent-dummy-character-_0028_005c_0029_0029">transparent dummy character (<code class="code">\)</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Dummy-Characters.html">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-transparent-output-_0028cf_002c-trf_0029">transparent output (<code class="code">cf</code>, <code class="code">trf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-transparent-output-_0028_005c_0021_002c-_005c_003f_0029">transparent output (<code class="code">\!</code>, <code class="code">\?</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-transparent-output_002c-incompatibilities-with-AT_0026T-troff">transparent output, incompatibilities with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Deferring-Output.html#index-trap">trap</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Deferring-Output.html">Deferring Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-trap_002c-changing-location-_0028ch_0029">trap, changing location (<code class="code">ch</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-trap_002c-distance-to-next-vertical-position_002c-register-_0028_002et_0029">trap, distance to next vertical position, register (<code class="code">.t</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversion-Traps.html#index-trap_002c-diversion_002c-setting-_0028dt_0029">trap, diversion, setting (<code class="code">dt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversion-Traps.html">Diversion Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="End_002dof_002dinput-Traps.html#index-trap_002c-end_002dof_002dinput_002c-setting-_0028em_0029">trap, end-of-input, setting (<code class="code">em</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="End_002dof_002dinput-Traps.html">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="The-Implicit-Page-Trap.html#index-trap_002c-implicit">trap, implicit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="The-Implicit-Page-Trap.html">The Implicit Page Trap</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-trap_002c-input-line_002c-clearing-_0028it_002c-itc_0029">trap, input line, clearing (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-trap_002c-input-line_002c-setting-_0028it_002c-itc_0029">trap, input line, setting (<code class="code">it</code>, <code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Traps.html#index-trap_002c-planting">trap, planting</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Traps.html">Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Traps.html#index-trap_002c-springing">trap, springing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Traps.html">Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Traps.html#index-traps">traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Traps.html">Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-traps_002c-and-diversions">traps, and diversions</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Blank-Line-Traps.html#index-traps_002c-blank-line">traps, blank line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Blank-Line-Traps.html">Blank Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversion-Traps.html#index-traps_002c-diversion">traps, diversion</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversion-Traps.html">Diversion Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="End_002dof_002dinput-Traps.html#index-traps_002c-end_002dof_002dinput">traps, end-of-input</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="End_002dof_002dinput-Traps.html">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-traps_002c-input-line">traps, input line</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-traps_002c-input-line_002c-and-interrupted-lines-_0028itc_0029">traps, input line, and interrupted lines (<code class="code">itc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leading-Space-Traps.html#index-traps_002c-leading-space">traps, leading space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leading-Space-Traps.html">Leading Space Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-traps_002c-page-location">traps, page location</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-traps_002c-page-location_002c-dumping-_0028ptr_0029">traps, page location, dumping (<code class="code">ptr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-traps_002c-page-location_002c-listing-_0028ptr_0029">traps, page location, listing (<code class="code">ptr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-traps_002c-sprung-by-bp-request-_0028_002epe_0029">traps, sprung by <code class="code">bp</code> request (<code class="code">.pe</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Vertical-Position-Traps.html#index-traps_002c-vertical-position">traps, vertical position</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Vertical-Position-Traps.html">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-trf-request_002c-and-copy-mode"><code class="code">trf</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-trf-request_002c-and-invalid-characters"><code class="code">trf</code> request, and invalid characters</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-trf-request_002c-causing-implicit-break"><code class="code">trf</code> request, causing implicit break</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-trin-request_002c-and-asciify"><code class="code">trin</code> request, and <code class="code">asciify</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="troff-and-nroff-Modes.html#index-troff-mode"><code class="code">troff</code> mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="gtroff-Output.html#index-troff-output"><code class="code">troff</code> output</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="gtroff-Output.html">gtroff Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-truncated-vertical-space-register-_0028_002etrunc_0029">truncated vertical space register (<code class="code">.trunc</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-truncating-division">truncating division</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-TTY_002c-conditional-output-for">TTY, conditional output for</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tutorial-for-Macro-Users.html#index-tutorial-for-macro-users">tutorial for macro users</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tutorial-for-Macro-Users.html">Tutorial for Macro Users</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html#index-type-size">type size</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Type-Size.html#index-type-size-registers-_0028_002es_002c-_002eps_0029">type size registers (<code class="code">.s</code>, <code class="code">.ps</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Type-Size.html">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-type-size-registers_002c-last_002drequested-_0028_002epsr_002c-_002esr_0029">type size registers, last-requested (<code class="code">.psr</code>, <code class="code">.sr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Type-Size.html#index-type-sizes_002c-changing-_0028ps_002c-_005cs_0029">type sizes, changing (<code class="code">ps</code>, <code class="code">\s</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Type-Size.html">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-type-sizes_002c-fractional">type sizes, fractional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Other-Differences.html#index-type-sizes_002c-fractional-1">type sizes, fractional</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Other-Differences.html">Other Differences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-typeface">typeface</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-TZ_002c-environment-variable"><code>TZ<span class="r">, environment variable</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-u-scaling-unit"><code class="code">u</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-uf-request_002c-and-font-styles"><code class="code">uf</code> request, and font styles</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-ul-glyph_002c-and-cflags"><code class="code">ul</code> glyph, and <code class="code">cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-ul-request_002c-and-font-translations"><code class="code">ul</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-Ultrix_002dspecific-man-macros">Ultrix-specific <code class="code">man</code> macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-unadjustable-and-unbreakable-space-_0028_005cSP_0029">unadjustable and unbreakable space (<code class="code">\<kbd class="key">SP</kbd></code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-unary-arithmetic-operators">unary arithmetic operators</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-unbreakable-and-unadjustable-space-_0028_005cSP_0029">unbreakable and unadjustable space (<code class="code">\<kbd class="key">SP</kbd></code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-unbreakable-space-_0028_005c_007e_0029">unbreakable space (<code class="code">\~</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-undefined-identifiers">undefined identifiers</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Comments.html#index-undefined-request">undefined request</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Comments.html">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-underline-font-_0028uf_0029">underline font (<code class="code">uf</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-underlining-_0028ul_0029">underlining (<code class="code">ul</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-underlining_002c-continuous-_0028cu_0029">underlining, continuous (<code class="code">cu</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-unformatting-diversions-_0028asciify_0029">unformatting diversions (<code class="code">asciify</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Punning-Names.html#index-unformatting-horizontal-space">unformatting horizontal space</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Punning-Names.html">Punning Names</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-Unicode">Unicode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-Unicode-1">Unicode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-unit_002c-scaling_002c-c">unit, scaling, <code class="code">c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-unit_002c-scaling_002c-f">unit, scaling, <code class="code">f</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-unit_002c-scaling_002c-i">unit, scaling, <code class="code">i</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-unit_002c-scaling_002c-m">unit, scaling, <code class="code">m</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-unit_002c-scaling_002c-M">unit, scaling, <code class="code">M</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-unit_002c-scaling_002c-n">unit, scaling, <code class="code">n</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-unit_002c-scaling_002c-p">unit, scaling, <code class="code">p</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-unit_002c-scaling_002c-P">unit, scaling, <code class="code">P</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-unit_002c-scaling_002c-s">unit, scaling, <code class="code">s</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-unit_002c-scaling_002c-u">unit, scaling, <code class="code">u</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-unit_002c-scaling_002c-v">unit, scaling, <code class="code">v</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-unit_002c-scaling_002c-z">unit, scaling, <code class="code">z</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-units-of-measurement">units of measurement</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-units_002c-basic">units, basic</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-units_002c-basic_002c-conversion-to">units, basic, conversion to</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Default-Units.html#index-units_002c-default">units, default</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Default-Units.html">Default Units</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-units_002c-machine">units, machine</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-unnamed-glyphs">unnamed glyphs</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-unnamed-glyphs_002c-accessing-with-_005cN">unnamed glyphs, accessing with <code class="code">\N</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-unsafe-mode">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Macro-Directories.html#index-unsafe-mode-1">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Macro-Directories.html">Macro Directories</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-unsafe-mode-2">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-unsafe-mode-3">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-unsafe-mode-4">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-unsafe-mode-5">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-unsafe-mode-6">unsafe mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fonts.html#index-unstyled-font">unstyled font</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fonts.html">Using Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-up_002dcasing-a-string-_0028stringup_0029">up-casing a string (<code class="code">stringup</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-uppercasing-a-string-_0028stringup_0029">uppercasing a string (<code class="code">stringup</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Italic-Corrections.html#index-upright-glyph_002c-correction-after-oblique-glyph-_0028_005c_002f_0029">upright glyph, correction after oblique glyph (<code class="code">\/</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Italic-Corrections.html">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Italic-Corrections.html#index-upright-glyph_002c-correction-before-oblique-glyph-_0028_005c_002c_0029">upright glyph, correction before oblique glyph (<code class="code">\,</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Italic-Corrections.html">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-URLs_002c-breaking-_0028_005c_003a_0029">URLs, breaking (<code class="code">\:</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tutorial-for-Macro-Users.html#index-user_0027s-macro-tutorial">user&rsquo;s macro tutorial</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tutorial-for-Macro-Users.html">Tutorial for Macro Users</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tutorial-for-Macro-Users.html#index-user_0027s-tutorial-for-macros">user&rsquo;s tutorial for macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tutorial-for-Macro-Users.html">Tutorial for Macro Users</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-using-escape-sequences">using escape sequences</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-using-symbols">using symbols</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-UTF_002d8-output-encoding"><span class="w-nolinebreak-text">UTF-8</span><!-- /@w --> output encoding</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-v-scaling-unit"><code class="code">v</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-valid-numeric-expression">valid numeric expression</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Auto_002dincrement.html#index-value_002c-incrementing-without-changing-the-register">value, incrementing without changing the register</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Auto_002dincrement.html">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environment.html#index-variables-in-environment">variables in environment</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environment.html">Environment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-vee">vee</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-vee-scaling-unit-_0028v_0029">vee scaling unit (<code class="code">v</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-version-number_002c-major_002c-register-_0028_002ex_0029">version number, major, register (<code class="code">.x</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-version-number_002c-minor_002c-register-_0028_002ey_0029">version number, minor, register (<code class="code">.y</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-vertical-drawing-position-_0028nl_0029">vertical drawing position (<code class="code">nl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-vertical-line-drawing-_0028_005cL_0029">vertical line drawing (<code class="code">\L</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-vertical-line-spacing-register-_0028_002ev_0029">vertical line spacing register (<code class="code">.v</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-vertical-line-spacing_002c-changing-_0028vs_0029">vertical line spacing, changing (<code class="code">vs</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-vertical-line-spacing_002c-effective-value">vertical line spacing, effective value</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-vertical-motion-_0028_005cv_0029">vertical motion (<code class="code">\v</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-vertical-motion-quantum">vertical motion quantum</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-vertical-page-location_002c-marking-_0028mk_0029">vertical page location, marking (<code class="code">mk</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-vertical-page-location_002c-returning-to-marked-_0028rt_0029">vertical page location, returning to marked (<code class="code">rt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-vertical-position-in-diversion-register-_0028_002ed_0029">vertical position in diversion register (<code class="code">.d</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Vertical-Position-Traps.html#index-vertical-position-trap-enable-register-_0028_002evpt_0029">vertical position trap enable register (<code class="code">.vpt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Vertical-Position-Traps.html">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Vertical-Position-Traps.html#index-vertical-position-traps">vertical position traps</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Vertical-Position-Traps.html">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Vertical-Position-Traps.html#index-vertical-position-traps_002c-enabling-_0028vpt_0029">vertical position traps, enabling (<code class="code">vpt</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Vertical-Position-Traps.html">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-vertical-position_002c-drawing-_0028nl_0029">vertical position, drawing (<code class="code">nl</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-vertical-resolution">vertical resolution</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Measurements.html#index-vertical-space-unit-_0028v_0029">vertical space unit (<code class="code">v</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Measurements.html">Measurements</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Geometry.html#index-vertical-spacing">vertical spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Geometry.html">Page Geometry</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html#index-vertical-spacing-1">vertical spacing</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Basics.html#index-vertical-spacing-_0028introduction_0029">vertical spacing (introduction)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Basics.html">Basics</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-W">W</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-warning-categories">warning categories</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-warning-level-_0028warn_0029">warning level (<code class="code">warn</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-warnings">warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Warnings.html#index-warnings-1">warnings</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Warnings.html">Warnings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="What-Is-groff_003f.html#index-what-is-groff_003f">what is <code class="code">groff</code>?</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="What-Is-groff_003f.html">What Is <code class="code">groff</code>?</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="while.html#index-while">while</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="while.html">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-while-request_002c-and-font-translations"><code class="code">while</code> request, and font translations</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-while-request_002c-and-the-_0021-operator"><code class="code">while</code> request, and the &lsquo;<samp class="samp">!</samp>&rsquo; operator</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="while.html#index-while-request_002c-confusing-with-br"><code class="code">while</code> request, confusing with <code class="code">br</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="while.html">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-while-request_002c-operators-to-use-with"><code class="code">while</code> request, operators to use with</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-widow">widow</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-widow-1">widow</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-width-escape-_0028_005cw_0029">width escape (<code class="code">\w</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-width_002c-of-last-glyph-_0028_002ew_0029">width, of last glyph (<code class="code">.w</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-word-space-size-register-_0028_002ess_0029">word space size register (<code class="code">.ss</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Filling.html#index-word_002c-definition-of">word, definition of</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Filling.html">Filling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-write-request_002c-and-copy-mode"><code class="code">write</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-writec-request_002c-and-copy-mode"><code class="code">writec</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-writem-request_002c-and-copy-mode"><code class="code">writem</code> request, and copy mode</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-writing-macros">writing macros</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-writing-to-file-_0028write_002c-writec_0029">writing to file (<code class="code">write</code>, <code class="code">writec</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-Y">Y</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-year_002c-current_002c-register-_0028year_002c-yr_0029">year, current, register (<code class="code">year</code>, <code class="code">yr</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-Z">Z</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-z-scaling-unit"><code class="code">z</code> scaling unit</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-zero_002dwidth-printing-_0028_005cz_002c-_005cZ_0029">zero-width printing (<code class="code">\z</code>, <code class="code">\Z</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-zero_002dwidth-printing-_0028_005cz_002c-_005cZ_0029-1">zero-width printing (<code class="code">\z</code>, <code class="code">\Z</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-zoom-factor-of-a-font-_0028fzoom_0029">zoom factor of a font (<code class="code">fzoom</code>)</a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="cp-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-1"><b>&quot;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-2"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-3"><b>&amp;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-4"><b>'</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-5"><b>(</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-6"><b>)</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-7"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-8"><b>+</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-9"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-10"><b>.</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-11"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-12"><b>8</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-13"><b>:</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-14"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-15"><b>=</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-16"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-17"><b>[</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-18"><b>\</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-19"><b>]</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_symbol-20"><b>|</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-J"><b>J</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-W"><b>W</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Y"><b>Y</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Z"><b>Z</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="Program-and-File-Index.html">Program and File Index</a>, Up: <a href="index.html">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Conditional-Blocks.html b/doc/groff.html.node/Conditional-Blocks.html
new file mode 100644
index 0000000..b2b789b
--- /dev/null
+++ b/doc/groff.html.node/Conditional-Blocks.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Conditional Blocks (The GNU Troff Manual)</title>
+
+<meta name="description" content="Conditional Blocks (The GNU Troff Manual)">
+<meta name="keywords" content="Conditional Blocks (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditionals-and-Loops.html" rel="up" title="Conditionals and Loops">
+<link href="while.html" rel="next" title="while">
+<link href="Operators-in-Conditionals.html" rel="prev" title="Operators in Conditionals">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Conditional-Blocks">
+<div class="nav-panel">
+<p>
+Next: <a href="while.html" accesskey="n" rel="next">while</a>, Previous: <a href="Operators-in-Conditionals.html" accesskey="p" rel="prev">Operators in Conditionals</a>, Up: <a href="Conditionals-and-Loops.html" accesskey="u" rel="up">Conditionals and Loops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Conditional-Blocks-1">5.23.4 Conditional Blocks</h4>
+<a class="index-entry-id" id="index-conditional-blocks"></a>
+<a class="index-entry-id" id="index-blocks_002c-conditional"></a>
+
+<p>It is frequently desirable for a control structure to govern more than
+one request, macro call, text line, or a combination of the foregoing.
+The opening and closing brace escape sequences <code class="code">\{</code> and <code class="code">\}</code>
+define such groups. These <em class="dfn">conditional blocks</em> can furthermore be
+nested.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_007b-2"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\{</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_007b-2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_007b"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_007d-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\}</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_007d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_007b-1"></a>
+<a class="index-entry-id" id="index-_005c_007d"></a>
+<a class="index-entry-id" id="index-beginning-of-conditional-block-_0028_005c_007b_0029"></a>
+<a class="index-entry-id" id="index-end-of-conditional-block-_0028_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-conditional-block_002c-beginning-_0028_005c_007b_0029"></a>
+<a class="index-entry-id" id="index-conditional-block_002c-end-_0028_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-block_002c-conditional_002c-beginning-_0028_005c_007b_0029"></a>
+<a class="index-entry-id" id="index-block_002c-conditional_002c-end-_0028_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-brace-escape-sequences-_0028_005c_007b_002c-_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-escape-sequences_002c-brace-_0028_005c_007b_002c-_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-opening-brace-escape-sequence-_0028_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-closing-brace-escape-sequence-_0028_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-brace-escape-sequence_002c-opening-_0028_005c_007d_0029"></a>
+<a class="index-entry-id" id="index-brace-escape-sequence_002c-closing-_0028_005c_007d_0029"></a>
+<p><code class="code">\{</code> begins a conditional block; it must appear (after optional
+spaces and tabs) immediately subsequent to the conditional expression of
+an <code class="code">if</code>, <code class="code">ie</code>, or <code class="code">while</code>
+request,<a class="footnote" id="DOCF93" href="groff.html_fot.html#FOOT93"><sup>93</sup></a> or as the argument to an <code class="code">el</code>
+request.
+</p>
+<p><code class="code">\}</code> ends a condition block and should appear on a line with other
+occurrences of itself as necessary to match <code class="code">\{</code> sequences. It
+can be preceded by a control character, spaces, and tabs. Input after
+any quantity of <code class="code">\}</code> sequences on the same line is processed only
+if all of the preceding conditions to which they correspond are true.
+Furthermore, a <code class="code">\}</code> closing the body of a <code class="code">while</code> request
+must be the last such escape sequence on an input line.
+</p>
+<p>Brace escape sequences outside of control structures have no meaning and
+produce no output.
+</p>
+<p><strong class="strong">Caution:</strong> Input lines using <code class="code">\{</code> often end with
+<code class="code">\RET</code>, especially in macros that consist primarily of control
+lines. Forgetting to use <code class="code">\RET</code> on an input line after <code class="code">\{</code>
+is a common source of error.
+</p></dd></dl>
+
+<p>We might write the following in a page header macro. If we delete
+<code class="code">\RET</code>, the header will carry an unwanted extra empty line (except
+on page&nbsp;1).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.if (\\n[%] != 1) \{\
+. ie ((\\n[%] % 2) = 0) .tl \\*[even-numbered-page-title]
+. el .tl \\*[odd-numbered-page-title]
+.\}
+</pre></div></div>
+
+<p>Let us take a closer look at how conditional blocks nest.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">A
+.if 0 \{ B
+C
+D
+\}E
+F
+ &rArr; A F
+</pre></div></div>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">N
+.if 1 \{ O
+. if 0 \{ P
+Q
+R\} S\} T
+U
+ &rArr; N O U
+</pre></div></div>
+
+<p>The above behavior may challenge the intuition; it was implemented to
+retain compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>. For clarity, it
+is idiomatic to end input lines with <code class="code">\{</code> (followed by
+<code class="code">\<kbd class="key">RET</kbd></code> if appropriate), and to precede <code class="code">\}</code> on an input
+line with nothing more than a control character, spaces, tabs, and other
+instances of itself.
+</p>
+<p>We can use <code class="code">ie</code>, <code class="code">el</code>, and conditional blocks to simulate the
+multi-way &ldquo;switch&rdquo; or &ldquo;case&rdquo; control structures of other languages.
+The following example is adapted from the <code class="code">groff</code> <samp class="file">man</samp>
+package. Indentation is used to clarify the logic.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; Simulate switch/case in roff.
+. ie '\\$2'1' .ds title General Commands\&quot;
+.el \{.ie '\\$2'2' .ds title System Calls\&quot;
+.el \{.ie '\\$2'3' .ds title Library Functions\&quot;
+.el \{.ie '\\$2'4' .ds title Kernel Interfaces\&quot;
+.el \{.ie '\\$2'5' .ds title File Formats\&quot;
+.el \{.ie '\\$2'6' .ds title Games\&quot;
+.el \{.ie '\\$2'7' .ds title Miscellaneous Information\&quot;
+.el \{.ie '\\$2'8' .ds title System Management\&quot;
+.el \{.ie '\\$2'9' .ds title Kernel Development\&quot;
+.el .ds title \&quot; empty
+.\}\}\}\}\}\}\}\}
+</pre></div></div>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="while.html">while</a>, Previous: <a href="Operators-in-Conditionals.html">Operators in Conditionals</a>, Up: <a href="Conditionals-and-Loops.html">Conditionals and Loops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Conditionals-and-Loops.html b/doc/groff.html.node/Conditionals-and-Loops.html
new file mode 100644
index 0000000..b05ce5d
--- /dev/null
+++ b/doc/groff.html.node/Conditionals-and-Loops.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Conditionals and Loops (The GNU Troff Manual)</title>
+
+<meta name="description" content="Conditionals and Loops (The GNU Troff Manual)">
+<meta name="keywords" content="Conditionals and Loops (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Writing-Macros.html" rel="next" title="Writing Macros">
+<link href="Strings.html" rel="prev" title="Strings">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Conditionals-and-Loops">
+<div class="nav-panel">
+<p>
+Next: <a href="Writing-Macros.html" accesskey="n" rel="next">Writing Macros</a>, Previous: <a href="Strings.html" accesskey="p" rel="prev">Strings</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Conditionals-and-Loops-1">5.23 Conditionals and Loops</h3>
+<a class="index-entry-id" id="index-conditionals-and-loops"></a>
+<a class="index-entry-id" id="index-loops-and-conditionals"></a>
+
+<p><code class="code">groff</code> has <code class="code">if</code> and <code class="code">while</code> control structures like
+other languages. However, the syntax for grouping multiple input lines
+in the branches or bodies of these structures is unusual.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="Operators-in-Conditionals.html" accesskey="1">Operators in Conditionals</a></li>
+<li><a href="if_002dthen.html" accesskey="2">if-then</a></li>
+<li><a href="if_002delse.html" accesskey="3">if-else</a></li>
+<li><a href="Conditional-Blocks.html" accesskey="4">Conditional Blocks</a></li>
+<li><a href="while.html" accesskey="5">while</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Configuration-and-Customization.html b/doc/groff.html.node/Configuration-and-Customization.html
new file mode 100644
index 0000000..6f76a47
--- /dev/null
+++ b/doc/groff.html.node/Configuration-and-Customization.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Configuration and Customization (The GNU Troff Manual)</title>
+
+<meta name="description" content="Configuration and Customization (The GNU Troff Manual)">
+<meta name="keywords" content="Configuration and Customization (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Preprocessor-Support.html" rel="prev" title="Preprocessor Support">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Configuration-and-Customization">
+<div class="nav-panel">
+<p>
+Previous: <a href="Preprocessor-Support.html" accesskey="p" rel="prev">Preprocessor Support</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Configuration-and-Customization-1">3.2.14 Configuration and Customization</h4>
+
+<p>Packages provide means of customizing many of the details of how the
+package behaves. These range from setting the default type size to
+changing the appearance of section headers.
+</p>
+
+
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Control-Characters.html b/doc/groff.html.node/Control-Characters.html
new file mode 100644
index 0000000..13ebe41
--- /dev/null
+++ b/doc/groff.html.node/Control-Characters.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Control Characters (The GNU Troff Manual)</title>
+
+<meta name="description" content="Control Characters (The GNU Troff Manual)">
+<meta name="keywords" content="Control Characters (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Formatter-Instructions.html" rel="up" title="Formatter Instructions">
+<link href="Invoking-Requests.html" rel="next" title="Invoking Requests">
+<link href="Formatter-Instructions.html" rel="prev" title="Formatter Instructions">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Control-Characters">
+<div class="nav-panel">
+<p>
+Next: <a href="Invoking-Requests.html" accesskey="n" rel="next">Invoking Requests</a>, Previous: <a href="Formatter-Instructions.html" accesskey="p" rel="prev">Formatter Instructions</a>, Up: <a href="Formatter-Instructions.html" accesskey="u" rel="up">Formatter Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Control-Characters-1">5.6.1 Control Characters</h4>
+<a class="index-entry-id" id="index-control-characters"></a>
+<a class="index-entry-id" id="index-configuring-control-characters"></a>
+<a class="index-entry-id" id="index-changing-control-characters"></a>
+
+<p>The mechanism of using <code class="code">roff</code>&rsquo;s control characters to invoke
+requests and call macros was introduced in <a class="ref" href="Requests-and-Macros.html">Requests and Macros</a>.
+Control characters are recognized only at the beginning of an input
+line, or at the beginning of the branch of a control structure request;
+see <a class="ref" href="Conditionals-and-Loops.html">Conditionals and Loops</a>.
+</p>
+<p>A few requests cause a break implicitly; use the no-break control
+character to prevent the break. Break suppression is its sole
+behavioral distinction. Employing the no-break control character to
+invoke requests that don&rsquo;t cause breaks is harmless but poor style.
+See <a class="xref" href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a>.
+</p>
+<a class="index-entry-id" id="index-control-character_002c-changing-_0028cc_0029"></a>
+<a class="index-entry-id" id="index-character_002c-control_002c-changing-_0028cc_0029"></a>
+<a class="index-entry-id" id="index-no_002dbreak-control-character_002c-changing-_0028c2_0029"></a>
+<a class="index-entry-id" id="index-character_002c-no_002dbreak-control_002c-changing-_0028c2_0029"></a>
+<a class="index-entry-id" id="index-control-character_002c-no_002dbreak_002c-changing-_0028c2_0029"></a>
+<p>The control &lsquo;<samp class="samp">.</samp>&rsquo; and no-break control &lsquo;<samp class="samp">'</samp>&rsquo; characters can each
+be changed to any ordinary character<a class="footnote" id="DOCF42" href="groff.html_fot.html#FOOT42"><sup>42</sup></a>
+with the <code class="code">cc</code> and <code class="code">c2</code> requests, respectively.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">o</i></span>]</var><a class="copiable-link" href='#index-_002ecc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-cc"></a>
+<p>Recognize the ordinary character&nbsp;<var class="var">o</var> as the control character.
+If&nbsp;<var class="var">o</var> is absent or invalid, the default control character
+&lsquo;<samp class="samp">.</samp>&rsquo; is selected. The identity of the control character is
+associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ec2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.c2</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">o</i></span>]</var><a class="copiable-link" href='#index-_002ec2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-c2"></a>
+<p>Recognize the ordinary character&nbsp;<var class="var">o</var> as the no-break control
+character. If&nbsp;<var class="var">o</var> is absent or invalid, the default no-break
+control character &lsquo;<samp class="samp">'</samp>&rsquo; is selected. The identity of the no-break
+control character is associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>).
+</p></dd></dl>
+
+<p>When writing a macro, you might wish to know which control character was
+used to call it.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002ebr_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.br]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ebr_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ebr-1"></a>
+<p>This read-only register interpolates&nbsp;1 if the currently executing
+macro was called using the normal control character and&nbsp;0
+otherwise. If a macro is interpolated as a string, the <code class="code">.br</code>
+register&rsquo;s value is inherited from the context of the string
+interpolation. See <a class="xref" href="Strings.html">Strings</a>.
+</p>
+<a class="index-entry-id" id="index-intercepting-requests"></a>
+<a class="index-entry-id" id="index-requests_002c-intercepting"></a>
+<a class="index-entry-id" id="index-modifying-requests"></a>
+<a class="index-entry-id" id="index-requests_002c-modifying"></a>
+<p>Use this register to reliably intercept requests that imply breaks.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.als bp*orig bp
+.de bp
+. ie \\n[.br] .bp*orig
+. el 'bp*orig
+..
+</pre></div></div>
+
+<p>Testing the <code class="code">.br</code> register outside of a macro definition makes no
+sense.
+</p></dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Invoking-Requests.html">Invoking Requests</a>, Previous: <a href="Formatter-Instructions.html">Formatter Instructions</a>, Up: <a href="Formatter-Instructions.html">Formatter Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Conventions-Used-in-This-Manual.html b/doc/groff.html.node/Conventions-Used-in-This-Manual.html
new file mode 100644
index 0000000..95e85b3
--- /dev/null
+++ b/doc/groff.html.node/Conventions-Used-in-This-Manual.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Conventions Used in This Manual (The GNU Troff Manual)</title>
+
+<meta name="description" content="Conventions Used in This Manual (The GNU Troff Manual)">
+<meta name="keywords" content="Conventions Used in This Manual (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Introduction.html" rel="up" title="Introduction">
+<link href="Credits.html" rel="next" title="Credits">
+<link href="Installation.html" rel="prev" title="Installation">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Conventions-Used-in-This-Manual">
+<div class="nav-panel">
+<p>
+Next: <a href="Credits.html" accesskey="n" rel="next">Credits</a>, Previous: <a href="Installation.html" accesskey="p" rel="prev">Installation</a>, Up: <a href="Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Conventions-Used-in-This-Manual-1">1.8 Conventions Used in This Manual</h3>
+
+<p>We apply the term &ldquo;groff&rdquo; to the language documented here, the GNU
+implementation of the overall system, the project that develops that
+system, and the command of that name. In the first sense, <code class="code">groff</code>
+is an extended dialect of the <code class="code">roff</code> language, for which many
+similar implementations exist.
+</p>
+<p>The <code class="code">roff</code> language features several major categories for which
+many items are predefined. Presentations of these items feature the
+form in which the item is most commonly used on the left, and, aligned
+to the right margin, the name of the category in brackets.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bexample_005d"><span class="category-def">Register: </span><span><strong class="def-name">\n[example]</strong><a class="copiable-link" href='#index-_005cn_005bexample_005d'> &para;</a></span></dt>
+<dd><p>The register &lsquo;<samp class="samp">example</samp>&rsquo; is one that that <code class="code">groff</code> <em class="emph">doesn&rsquo;t</em>
+predefine. You can create it yourself, though; see <a class="ref" href="Setting-Registers.html">Setting Registers</a>.
+</p></dd></dl>
+
+<p>To make this document useful as a reference and not merely amiable
+bedtime reading, we tend to present these syntax items in exhaustive
+detail when they arise. References to topics discussed later in the
+text are frequent; skip material you don&rsquo;t understand yet.
+</p>
+<p>We use Texinfo&rsquo;s &ldquo;result&rdquo; (&rArr;) and error&rarr; notations to
+present output written to the standard output and standard error
+streams, respectively. Diagnostic messages from the GNU <code class="code">troff</code>
+formatter and other programs are examples of the latter, but the
+formatter can also be directed to write user-specified messages to the
+standard error stream. The notation then serves to identify the
+output stream and does not necessarily mean that an error has
+occurred.<a class="footnote" id="DOCF2" href="groff.html_fot.html#FOOT2"><sup>2</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ echo &quot;Twelve o'clock and&quot; | groff -Tascii | sed '/^$/d'
+ &rArr; Twelve o'clock and
+$ echo '.tm all is well.' | groff &gt; /dev/null
+ error&rarr; all is well.
+</pre></div></div>
+
+<p>Sometimes we use &rArr; somewhat abstractly to represent formatted
+text that you will need to use a PostScript or PDF viewer program (or a
+printer) to observe. While arguably an abuse of notation, we think this
+preferable to requiring the reader to understand the syntax of these
+page description languages.
+</p>
+<p>We also present diagnostic messages in an abbreviated form, often
+omitting the name of the program issuing them, the input file name, and
+line number or other positional information when such data do not serve
+to illuminate the topic under discussion.
+</p>
+<p>Most examples are of <code class="code">roff</code> language input that would be placed in
+a text file. Occasionally, we start an example with a &lsquo;<samp class="samp">$</samp>&rsquo;
+character to indicate a shell prompt, as seen above.
+</p>
+<p>You are encouraged to try the examples yourself, and to alter them to
+better learn <code class="code">groff</code>&rsquo;s behavior. Our examples frequently need to
+direct the formatter to set a line length (with &lsquo;<samp class="samp">.ll</samp>&rsquo;) that will
+fit within the page margins of this manual. We mention this so that you
+know why it is there before we discuss the <code class="code">ll</code> request
+formally.<a class="footnote" id="DOCF3" href="groff.html_fot.html#FOOT3"><sup>3</sup></a>
+</p>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Credits.html">Credits</a>, Previous: <a href="Installation.html">Installation</a>, Up: <a href="Introduction.html">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Copy-Mode.html b/doc/groff.html.node/Copy-Mode.html
new file mode 100644
index 0000000..cc7de66
--- /dev/null
+++ b/doc/groff.html.node/Copy-Mode.html
@@ -0,0 +1,256 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Copy Mode (The GNU Troff Manual)</title>
+
+<meta name="description" content="Copy Mode (The GNU Troff Manual)">
+<meta name="keywords" content="Copy Mode (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Writing-Macros.html" rel="up" title="Writing Macros">
+<link href="Parameters.html" rel="prev" title="Parameters">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Copy-Mode">
+<div class="nav-panel">
+<p>
+Previous: <a href="Parameters.html" accesskey="p" rel="prev">Parameters</a>, Up: <a href="Writing-Macros.html" accesskey="u" rel="up">Writing Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Copy-Mode-1">5.24.2 Copy Mode</h4>
+<a class="index-entry-id" id="index-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode-1"></a>
+<a class="index-entry-id" id="index-mode_002c-copy"></a>
+<a class="index-entry-id" id="index-mode_002c-copy-1"></a>
+
+<a class="index-entry-id" id="index-_005cn_002c-when-reading-text-for-a-macro"></a>
+<a class="index-entry-id" id="index-_005c_0024_002c-when-reading-text-for-a-macro"></a>
+<a class="index-entry-id" id="index-_005c_002a_002c-when-reading-text-for-a-macro"></a>
+<a class="index-entry-id" id="index-_005cRET_002c-when-reading-text-for-a-macro"></a>
+<p>When GNU <code class="code">troff</code> processes certain requests, most importantly those
+which define or append to a macro or string, it does so in <em class="dfn">copy
+mode</em>: it copies the characters of the definition into a dedicated
+storage region, interpolating the escape sequences <code class="code">\n</code>, <code class="code">\g</code>,
+<code class="code">\$</code>, <code class="code">\*</code>, <code class="code">\V</code>, and <code class="code">\?</code> normally; interpreting
+<code class="code">\<kbd class="key">RET</kbd></code> immediately; discarding comments <code class="code">\&quot;</code> and
+<code class="code">\#</code>; interpolating the current leader, escape, or tab character
+with <code class="code">\a</code>, <code class="code">\e</code>, and <code class="code">\t</code>, respectively; and storing all
+other escape sequences in an encoded form.
+</p>
+<a class="index-entry-id" id="index-interpretation-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-interpretation"></a>
+<p>The complement of copy mode&mdash;a <code class="code">roff</code> formatter&rsquo;s behavior when
+not defining or appending to a macro, string, or diversion&mdash;where all
+macros are interpolated, requests invoked, and valid escape sequences
+processed immediately upon recognition, can be termed
+<em class="dfn">interpretation mode</em>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_005c-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\\</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_005c-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_005c"></a>
+<p>The escape character, <code class="code">\</code> by default, can escape itself. This
+enables you to control whether a given <code class="code">\n</code>, <code class="code">\g</code>, <code class="code">\$</code>,
+<code class="code">\*</code>, <code class="code">\V</code>, or <code class="code">\?</code> escape sequence is interpreted at the
+time the macro containing it is defined, or later when the macro is
+called.<a class="footnote" id="DOCF101" href="groff.html_fot.html#FOOT101"><sup>101</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr x 20
+.de y
+.nr x 10
+\&amp;\nx
+\&amp;\\nx
+..
+.y
+ &rArr; 20 10
+</pre></div></div>
+
+<p>You can think of <code class="code">\\</code> as a &ldquo;delayed&rdquo; backslash; it is the escape
+character followed by a backslash from which the escape character has
+removed its special meaning. Consequently, &lsquo;<samp class="samp">\\</samp>&rsquo; is not an escape
+sequence in the usual sense. In any escape sequence &lsquo;<samp class="samp">\<var class="var">X</var></samp>&rsquo;
+that GNU <code class="code">troff</code> does not recognize, the escape character is
+ignored and <var class="var">X</var> is output. An unrecognized escape sequence causes
+a warning in category &lsquo;<samp class="samp">escape</samp>&rsquo;, with two exceptions&mdash;&lsquo;<samp class="samp">\\</samp>&rsquo; is
+the first.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-_005c_005c_002c-when-reading-text-for-a-macro"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002e-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\.</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002e-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_002e"></a>
+<p><code class="code">\.</code> escapes the control character. It is similar to <code class="code">\\</code> in
+that it isn&rsquo;t a true escape sequence. It is used to permit nested macro
+definitions to end without a named macro call to conclude them. Without
+a syntax for escaping the control character, this would not be possible.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de m1
+foo
+.
+. de m2
+bar
+\\..
+.
+..
+.m1
+.m2
+ &rArr; foo bar
+</pre></div></div>
+
+<p>The first backslash is consumed while the macro is read, and the second
+is interpreted when macro <code class="code">m1</code> is called.
+</p></dd></dl>
+
+<p><code class="code">roff</code> documents should not use the <code class="code">\\</code> or <code class="code">\.</code>
+character sequences outside of copy mode; they serve only to obfuscate
+the input. Use <code class="code">\e</code> to represent the escape character,
+<code class="code">\[rs]</code> to obtain a backslash glyph, and <code class="code">\&amp;</code> before &lsquo;<samp class="samp">.</samp>&rsquo;
+and &lsquo;<samp class="samp">'</samp>&rsquo; where GNU <code class="code">troff</code> expects them as control characters
+if you mean to use them literally (recall <a class="ref" href="Requests-and-Macros.html">Requests and Macros</a>).
+</p>
+<p>Macro definitions can be nested to arbitrary depth. The mechanics of
+parsing the escape character have significant consequences for this
+practice.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de M1
+\\$1
+. de M2
+\\\\$1
+. de M3
+\\\\\\\\$1
+\\\\..
+. M3 hand.
+\\..
+. M2 of
+..
+This understeer is getting
+.M1 out
+ &rArr; This understeer is getting out of hand.
+</pre></div></div>
+
+<p>Each escape character is interpreted twice&mdash;once in copy mode, when the
+macro is defined, and once in interpretation mode, when the macro is
+called. As seen above, this fact leads to exponential growth in the
+quantity of escape characters required to delay interpolation of
+<code class="code">\n</code>, <code class="code">\g</code>, <code class="code">\$</code>, <code class="code">\*</code>, <code class="code">\V</code>, and <code class="code">\?</code> at
+each nesting level, which can be daunting. GNU <code class="code">troff</code> offers a
+solution.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cE-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\E</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cE-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cE"></a>
+<p><code class="code">\E</code> represents an escape character that is not interpreted in copy
+mode. You can use it to ease the writing of nested macro definitions.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de M1
+. nop \E$1
+. de M2
+. nop \E$1
+. de M3
+. nop \E$1
+\\\\..
+. M3 better.
+\\..
+. M2 bit
+..
+This vehicle handles
+.M1 a
+ &rArr; This vehicle handles a bit better.
+</pre></div></div>
+
+<p>Observe that because <code class="code">\.</code> is not a true escape sequence, we can&rsquo;t
+use <code class="code">\E</code> to keep &lsquo;<samp class="samp">..</samp>&rsquo; from ending a macro definition
+prematurely. If the multiplicity of backslashes complicates
+maintenance, use end macros.
+</p>
+<p><code class="code">\E</code> is also convenient to define strings containing escape
+sequences that need to work when used in copy mode (for example, as
+macro arguments), or which will be interpolated at varying macro nesting
+depths. We might define strings to begin and end superscripting
+as follows.<a class="footnote" id="DOCF102" href="groff.html_fot.html#FOOT102"><sup>102</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds { \v'-.9m\s'\En[.s]*7u/10u'+.7m'
+.ds } \v'-.7m\s0+.9m'
+</pre></div></div>
+
+<p>When the <code class="code">ec</code> request is used to redefine the escape character,
+<code class="code">\E</code> also makes it easier to distinguish the semantics of an escape
+character from the other meaning(s) its character might have. Consider
+the use of an unusual escape character, &lsquo;<samp class="samp">-</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 1
+.ec -
+.de xx
+--na
+..
+.xx
+ &rArr; -na
+</pre></div></div>
+
+<p>This result may surprise you; some people expect &lsquo;<samp class="samp">1</samp>&rsquo; to be output
+since register &lsquo;<samp class="samp">a</samp>&rsquo; has clearly been defined with that value. What
+has happened? The robotic replacement of &lsquo;<samp class="samp">\</samp>&rsquo; with &lsquo;<samp class="samp">-</samp>&rsquo; has led
+us astray. You might recognize the sequence &lsquo;<samp class="samp">--</samp>&rsquo; more readily with
+the default escape character as &lsquo;<samp class="samp">\-</samp>&rsquo;, the special character escape
+sequence for the minus sign glyph.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 1
+.ec -
+.de xx
+-Ena
+..
+.xx
+ &rArr; 1
+</pre></div></div>
+</dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="Parameters.html">Parameters</a>, Up: <a href="Writing-Macros.html">Writing Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Copying-This-Manual.html b/doc/groff.html.node/Copying-This-Manual.html
new file mode 100644
index 0000000..47c4c3e
--- /dev/null
+++ b/doc/groff.html.node/Copying-This-Manual.html
@@ -0,0 +1,534 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Copying This Manual (The GNU Troff Manual)</title>
+
+<meta name="description" content="Copying This Manual (The GNU Troff Manual)">
+<meta name="keywords" content="Copying This Manual (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Request-Index.html" rel="next" title="Request Index">
+<link href="Font-Description-File-Format.html" rel="prev" title="Font Description File Format">
+<style type="text/css">
+<!--
+div.center {text-align:center}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+pre.display-preformatted {font-family: inherit}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="appendix-level-extent" id="Copying-This-Manual">
+<div class="nav-panel">
+<p>
+Next: <a href="Request-Index.html" accesskey="n" rel="next">Request Index</a>, Previous: <a href="Font-Description-File-Format.html" accesskey="p" rel="prev">Font Description File Format</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="appendix" id="Copying-This-Manual-1">Appendix A Copying This Manual</h2>
+
+<div class="center">Version 1.3, 3 November 2008
+</div>
+
+<div class="display">
+<pre class="display-preformatted">Copyright &copy; 2000-2018 Free Software Foundation, Inc.
+<a class="uref" href="http://fsf.org/">http://fsf.org/</a>
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+</pre></div>
+
+<ol class="enumerate" start="0">
+<li> PREAMBLE
+
+<p>The purpose of this License is to make a manual, textbook, or other
+functional and useful document <em class="dfn">free</em> in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+</p>
+<p>This License is a kind of &ldquo;copyleft&rdquo;, which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+</p>
+<p>We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+</p>
+</li><li> APPLICABILITY AND DEFINITIONS
+
+<p>This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The &ldquo;Document&rdquo;, below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as &ldquo;you&rdquo;. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+</p>
+<p>A &ldquo;Modified Version&rdquo; of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+</p>
+<p>A &ldquo;Secondary Section&rdquo; is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document&rsquo;s overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+</p>
+<p>The &ldquo;Invariant Sections&rdquo; are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+</p>
+<p>The &ldquo;Cover Texts&rdquo; are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+</p>
+<p>A &ldquo;Transparent&rdquo; copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
+</p>
+<p>Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input
+format, SGML or XML using a publicly available
+DTD, and standard-conforming simple HTML,
+PostScript or PDF designed for human modification. Examples
+of transparent image formats include PNG, XCF and
+JPG. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, SGML or
+XML for which the DTD and/or processing tools are
+not generally available, and the machine-generated HTML,
+PostScript or PDF produced by some word processors for
+output purposes only.
+</p>
+<p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, &ldquo;Title Page&rdquo; means
+the text near the most prominent appearance of the work&rsquo;s title,
+preceding the beginning of the body of the text.
+</p>
+<p>The &ldquo;publisher&rdquo; means any person or entity that distributes copies
+of the Document to the public.
+</p>
+<p>A section &ldquo;Entitled XYZ&rdquo; means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as &ldquo;Acknowledgements&rdquo;,
+&ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.) To &ldquo;Preserve the Title&rdquo;
+of such a section when you modify the Document means that it remains a
+section &ldquo;Entitled XYZ&rdquo; according to this definition.
+</p>
+<p>The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+</p>
+</li><li> VERBATIM COPYING
+
+<p>You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+</p>
+<p>You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+</p>
+</li><li> COPYING IN QUANTITY
+
+<p>If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document&rsquo;s license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+</p>
+<p>If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+</p>
+<p>If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+</p>
+<p>It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+</p>
+</li><li> MODIFICATIONS
+
+<p>You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+</p>
+<ol class="enumerate" type="A" start="1">
+<li> Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+</li><li> List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+</li><li> State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+</li><li> Preserve all the copyright notices of the Document.
+
+</li><li> Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+</li><li> Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+</li><li> Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document&rsquo;s license notice.
+
+</li><li> Include an unaltered copy of this License.
+
+</li><li> Preserve the section Entitled &ldquo;History&rdquo;, Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled &ldquo;History&rdquo; in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+</li><li> Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the &ldquo;History&rdquo; section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+</li><li> For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+</li><li> Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+
+</li><li> Delete any section Entitled &ldquo;Endorsements&rdquo;. Such a section
+may not be included in the Modified Version.
+
+</li><li> Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
+to conflict in title with any Invariant Section.
+
+</li><li> Preserve any Warranty Disclaimers.
+</li></ol>
+
+<p>If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version&rsquo;s license notice.
+These titles must be distinct from any other section titles.
+</p>
+<p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
+nothing but endorsements of your Modified Version by various
+parties&mdash;for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+</p>
+<p>You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+</p>
+<p>The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+</p>
+</li><li> COMBINING DOCUMENTS
+
+<p>You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+</p>
+<p>The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+</p>
+<p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
+in the various original documents, forming one section Entitled
+&ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
+and any sections Entitled &ldquo;Dedications&rdquo;. You must delete all
+sections Entitled &ldquo;Endorsements.&rdquo;
+</p>
+</li><li> COLLECTIONS OF DOCUMENTS
+
+<p>You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+</p>
+<p>You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+</p>
+</li><li> AGGREGATION WITH INDEPENDENT WORKS
+
+<p>A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an &ldquo;aggregate&rdquo; if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation&rsquo;s users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+</p>
+<p>If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document&rsquo;s Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+</p>
+</li><li> TRANSLATION
+
+<p>Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+</p>
+<p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
+&ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+</p>
+</li><li> TERMINATION
+
+<p>You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+</p>
+<p>However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+</p>
+<p>Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+</p>
+<p>Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+</p>
+</li><li> FUTURE REVISIONS OF THIS LICENSE
+
+<p>The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+<a class="uref" href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
+</p>
+<p>Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License &ldquo;or any later version&rdquo; applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy&rsquo;s public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+</p>
+</li><li> RELICENSING
+
+<p>&ldquo;Massive Multiauthor Collaboration Site&rdquo; (or &ldquo;MMC Site&rdquo;) means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+&ldquo;Massive Multiauthor Collaboration&rdquo; (or &ldquo;MMC&rdquo;) contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+</p>
+<p>&ldquo;CC-BY-SA&rdquo; means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+</p>
+<p>&ldquo;Incorporate&rdquo; means to publish or republish a Document, in whole or
+in part, as part of another Document.
+</p>
+<p>An MMC is &ldquo;eligible for relicensing&rdquo; if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+</p>
+<p>The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+</p>
+</li></ol>
+
+<h3 class="heading" id="ADDENDUM_003a-How-to-use-this-License-for-your-documents">ADDENDUM: How to use this License for your documents</h3>
+
+<p>To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+</p>
+<div class="example smallexample">
+<div class="group"><pre class="example-preformatted"> Copyright (C) <var class="var">year</var> <var class="var">your name</var>.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+</pre></div></div>
+
+<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the &ldquo;with&hellip;Texts.&rdquo; line with this:
+</p>
+<div class="example smallexample">
+<div class="group"><pre class="example-preformatted"> with the Invariant Sections being <var class="var">list their titles</var>, with
+ the Front-Cover Texts being <var class="var">list</var>, and with the Back-Cover Texts
+ being <var class="var">list</var>.
+</pre></div></div>
+
+<p>If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+</p>
+<p>If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</p>
+
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Request-Index.html">Request Index</a>, Previous: <a href="Font-Description-File-Format.html">Font Description File Format</a>, Up: <a href="index.html">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Credits.html b/doc/groff.html.node/Credits.html
new file mode 100644
index 0000000..4f46327
--- /dev/null
+++ b/doc/groff.html.node/Credits.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Credits (The GNU Troff Manual)</title>
+
+<meta name="description" content="Credits (The GNU Troff Manual)">
+<meta name="keywords" content="Credits (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Introduction.html" rel="up" title="Introduction">
+<link href="Conventions-Used-in-This-Manual.html" rel="prev" title="Conventions Used in This Manual">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Credits">
+<div class="nav-panel">
+<p>
+Previous: <a href="Conventions-Used-in-This-Manual.html" accesskey="p" rel="prev">Conventions Used in This Manual</a>, Up: <a href="Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Credits-1">1.9 Credits</h3>
+<a class="index-entry-id" id="index-credits"></a>
+
+<p>We adapted portions of this manual from existing documents. James
+Clark&rsquo;s man pages were an essential resource; we have updated them in
+parallel with the development of this manual. We based the tutorial for
+macro users on Eric Allman&rsquo;s introduction to his <samp class="file">me</samp> macro package
+(which we also provide, little altered from 4.4BSD). Larry Kollar
+contributed much of the material on the <samp class="file">ms</samp> macro package.
+</p>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/DESC-File-Format.html b/doc/groff.html.node/DESC-File-Format.html
new file mode 100644
index 0000000..11e1b73
--- /dev/null
+++ b/doc/groff.html.node/DESC-File-Format.html
@@ -0,0 +1,258 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>DESC File Format (The GNU Troff Manual)</title>
+
+<meta name="description" content="DESC File Format (The GNU Troff Manual)">
+<meta name="keywords" content="DESC File Format (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Device-and-Font-Description-Files.html" rel="up" title="Device and Font Description Files">
+<link href="Font-Description-File-Format.html" rel="next" title="Font Description File Format">
+<link href="Device-and-Font-Description-Files.html" rel="prev" title="Device and Font Description Files">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="DESC-File-Format">
+<div class="nav-panel">
+<p>
+Next: <a href="Font-Description-File-Format.html" accesskey="n" rel="next">Font Description File Format</a>, Previous: <a href="Device-and-Font-Description-Files.html" accesskey="p" rel="prev">Device and Font Description Files</a>, Up: <a href="Device-and-Font-Description-Files.html" accesskey="u" rel="up">Device and Font Description Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="DESC-File-Format-1">6.2.1 <samp class="file">DESC</samp> File Format</h4>
+<a class="index-entry-id" id="index-DESC-file-format"></a>
+<a class="index-entry-id" id="index-font-description-file-format"></a>
+<a class="index-entry-id" id="index-format-of-font-description-file"></a>
+
+<p>The <samp class="file">DESC</samp> file contains a series of directives; each begins a
+line. Their order is not important, with two exceptions: (1) the
+<code class="code">res</code> directive must precede any <code class="code">papersize</code> directive; and
+(2) the <code class="code">charset</code> directive must come last (if at all). If a
+directive name is repeated, later entries in the file override previous
+ones (except that the paper dimensions are computed based on the
+<code class="code">res</code> directive last seen when <code class="code">papersize</code> is encountered).
+Spaces and/or tabs separate words and are ignored at line boundaries.
+<a class="index-entry-id" id="index-comments-in-device-description-files"></a>
+<a class="index-entry-id" id="index-device-description-files_002c-comments"></a>
+<a class="index-entry-id" id="index-_0023"></a>
+Comments start with the &lsquo;<samp class="samp">#</samp>&rsquo; character and extend to the end of a
+line. Empty lines are ignored.
+</p>
+<dl class="table">
+<dt id='index-family-1'><span><code class="code">family <var class="var">fam</var></code><a class="copiable-link" href='#index-family-1'> &para;</a></span></dt>
+<dd><p>The default font family is <var class="var">fam</var>.
+</p>
+</dd>
+<dt id='index-fonts-2'><span><code class="code">fonts <var class="var">n</var> <var class="var">F1</var> <span class="r">&hellip;</span> <var class="var">Fn</var></code><a class="copiable-link" href='#index-fonts-2'> &para;</a></span></dt>
+<dd><p>Fonts <var class="var">F1</var>, &hellip;, <var class="var">Fn</var> are mounted at font positions
+<var class="var">m</var>+1, &hellip;, <var class="var">m</var>+<var class="var">n</var> where <var class="var">m</var> is the number of
+<code class="code">styles</code> (see below). This directive may extend over more than one
+line. A font name of&nbsp;<code class="code">0</code> causes no font to be mounted at the
+corresponding position.
+</p>
+</dd>
+<dt id='index-hor'><span><code class="code">hor <var class="var">n</var></code><a class="copiable-link" href='#index-hor'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-horizontal-motion-quantum"></a>
+<a class="index-entry-id" id="index-motion-quantum_002c-horizontal"></a>
+<a class="index-entry-id" id="index-quantum_002c-horizontal-motion"></a>
+<a class="index-entry-id" id="index-horizontal-resolution"></a>
+<a class="index-entry-id" id="index-resolution_002c-horizontal"></a>
+<p>The horizontal motion quantum is <var class="var">n</var>&nbsp;basic units. All
+horizontal quantities are rounded to multiples of&nbsp;<var class="var">n</var>.
+</p>
+</dd>
+<dt id='index-image_005fgenerator'><span><code class="code">image_generator <var class="var">program</var></code><a class="copiable-link" href='#index-image_005fgenerator'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PostScript_002c-PNG-image-generation"></a>
+<a class="index-entry-id" id="index-PNG-image-generation-from-PostScript"></a>
+<p>Use <var class="var">program</var> to generate PNG images from PostScript input. Under
+GNU/Linux, this is usually <code class="code">gs</code>, but under other systems (notably
+Cygwin) it might be set to another name. The <code class="code">grohtml</code> driver uses
+this directive.
+</p>
+</dd>
+<dt id='index-paperlength'><span><code class="code">paperlength <var class="var">n</var></code><a class="copiable-link" href='#index-paperlength'> &para;</a></span></dt>
+<dd><p>The vertical dimension of the output medium is <var class="var">n</var>&nbsp;basic units
+(deprecated: use <code class="code">papersize</code> instead).
+</p>
+</dd>
+<dt id='index-papersize'><span><code class="code">papersize <var class="var">format-or-dimension-pair-or-file-name</var> <span class="r">&hellip;</span></code><a class="copiable-link" href='#index-papersize'> &para;</a></span></dt>
+<dd><p>The dimensions of the output medium are as according to the
+argument, which is either a standard paper format, a pair of dimensions,
+or the name of a plain text file containing either of the foregoing.
+</p>
+<p>Recognized paper formats are the ISO and DIN formats
+<code class="code">A0</code>&ndash;<code class="code">A7</code>, <code class="code">B0</code>&ndash;<code class="code">B7</code>, <code class="code">C0</code>&ndash;<code class="code">C7</code>,
+<code class="code">D0</code>&ndash;<code class="code">D7</code>; the U.S. paper types <code class="code">letter</code>,
+<code class="code">legal</code>, <code class="code">tabloid</code>, <code class="code">ledger</code>, <code class="code">statement</code>, and
+<code class="code">executive</code>; and the envelope formats <code class="code">com10</code>, <code class="code">monarch</code>,
+and <code class="code">DL</code>. Matching is performed without regard for lettercase.
+</p>
+<p>Alternatively, the argument can be a custom paper format in the format
+<code class="code"><var class="var">length</var>,<var class="var">width</var></code> (with no spaces before or after the
+comma). Both <var class="var">length</var> and <var class="var">width</var> must have a unit appended;
+valid units are &lsquo;<samp class="samp">i</samp>&rsquo; for inches, &lsquo;<samp class="samp">c</samp>&rsquo; for centimeters, &lsquo;<samp class="samp">p</samp>&rsquo;
+for points, and &lsquo;<samp class="samp">P</samp>&rsquo; for picas. Example: &lsquo;<samp class="samp">12c,235p</samp>&rsquo;. An
+argument that starts with a digit is always treated as a custom paper
+format.
+</p>
+<p>Finally, the argument can be a file name (e.g., <samp class="file">/etc/papersize</samp>);
+if the file can be opened, the first line is read and a match attempted
+against each of the other forms. No comment syntax is supported.
+</p>
+<p>More than one argument can be specified;
+each is scanned in turn and the first valid paper specification used.
+</p>
+</dd>
+<dt id='index-paperwidth'><span><code class="code">paperwidth <var class="var">n</var></code><a class="copiable-link" href='#index-paperwidth'> &para;</a></span></dt>
+<dd><p>The horizontal dimension of the output medium is <var class="var">n</var>&nbsp;basic
+units (deprecated: use <code class="code">papersize</code> instead).
+</p>
+</dd>
+<dt id='index-pass_005ffilenames'><span><code class="code">pass_filenames</code><a class="copiable-link" href='#index-pass_005ffilenames'> &para;</a></span></dt>
+<dd><p>Direct GNU <code class="code">troff</code> to emit the name of the source file being
+processed. This is achieved with the intermediate output command
+&lsquo;<samp class="samp">x F</samp>&rsquo;, which <code class="code">grohtml</code> interprets.
+</p>
+</dd>
+<dt id='index-postpro'><span><code class="code">postpro <var class="var">program</var></code><a class="copiable-link" href='#index-postpro'> &para;</a></span></dt>
+<dd><p>Use <var class="var">program</var> as the postprocessor.
+</p>
+</dd>
+<dt id='index-prepro'><span><code class="code">prepro <var class="var">program</var></code><a class="copiable-link" href='#index-prepro'> &para;</a></span></dt>
+<dd><p>Use <var class="var">program</var> as a preprocessor. The <code class="code">html</code> and <code class="code">xhtml</code>
+output devices use this directive.
+</p>
+</dd>
+<dt id='index-print'><span><code class="code">print <var class="var">program</var></code><a class="copiable-link" href='#index-print'> &para;</a></span></dt>
+<dd><p>Use <var class="var">program</var> as a spooler program for printing. If omitted, the
+<samp class="option">-l</samp> and <samp class="option">-L</samp> options of <code class="code">groff</code> are ignored.
+</p>
+</dd>
+<dt id='index-res'><span><code class="code">res <var class="var">n</var></code><a class="copiable-link" href='#index-res'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-device-resolution-1"></a>
+<a class="index-entry-id" id="index-resolution_002c-device-1"></a>
+<p>The device resolution is <var class="var">n</var>&nbsp;basic units per inch.
+</p>
+</dd>
+<dt id='index-sizes'><span><code class="code">sizes <var class="var">s1</var> <span class="r">&hellip;</span> <var class="var">sn</var> 0</code><a class="copiable-link" href='#index-sizes'> &para;</a></span></dt>
+<dd><p>The device has fonts at <var class="var">s1</var>, &hellip;, <var class="var">sn</var> scaled points (see
+below). The list of sizes must be terminated by&nbsp;<code class="code">0</code>. Each
+<var class="var">si</var> can also be a range of sizes <var class="var">m</var>&ndash;<var class="var">n</var>. The list can
+extend over more than one line.
+</p>
+</dd>
+<dt id='index-sizescale'><span><code class="code">sizescale <var class="var">n</var></code><a class="copiable-link" href='#index-sizescale'> &para;</a></span></dt>
+<dd><p>A typographical point is subdivided into <var class="var">n</var>&nbsp;scaled points.
+The default is&nbsp;<code class="code">1</code>. See <a class="xref" href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a>.
+</p>
+</dd>
+<dt id='index-styles-2'><span><code class="code">styles <var class="var">S1</var> <span class="r">&hellip;</span> <var class="var">Sm</var></code><a class="copiable-link" href='#index-styles-2'> &para;</a></span></dt>
+<dd><p>The first&nbsp;<var class="var">m</var> mounting positions are associated with styles
+<var class="var">S1</var>, &hellip;, <var class="var">Sm</var>.
+</p>
+</dd>
+<dt id='index-tcommand'><span><code class="code">tcommand</code><a class="copiable-link" href='#index-tcommand'> &para;</a></span></dt>
+<dd><p>The postprocessor can handle the &lsquo;<samp class="samp">t</samp>&rsquo; and &lsquo;<samp class="samp">u</samp>&rsquo; intermediate
+output commands.
+</p>
+</dd>
+<dt id='index-unicode'><span><code class="code">unicode</code><a class="copiable-link" href='#index-unicode'> &para;</a></span></dt>
+<dd><p>The output device supports the complete Unicode repertoire. This
+directive is useful only for devices that produce character entities
+instead of glyphs.
+</p>
+<p>If <code class="code">unicode</code> is present, no <code class="code">charset</code> section is required in
+the font description files since the Unicode handling built into
+<code class="code">groff</code> is used. However, if there are entries in a font
+description file&rsquo;s <code class="code">charset</code> section, they either override the
+default mappings for those particular characters or add new mappings
+(normally for composite characters).
+</p>
+<p>The <code class="code">utf8</code>, <code class="code">html</code>, and <code class="code">xhtml</code> output devices use this
+directive.
+</p>
+</dd>
+<dt id='index-unitwidth'><span><code class="code">unitwidth <var class="var">n</var></code><a class="copiable-link" href='#index-unitwidth'> &para;</a></span></dt>
+<dd><p>Quantities in the font description files are in basic units for fonts
+whose type size is <var class="var">n</var>&nbsp;scaled points.
+</p>
+</dd>
+<dt id='index-unscaled_005fcharwidths'><span><code class="code">unscaled_charwidths</code><a class="copiable-link" href='#index-unscaled_005fcharwidths'> &para;</a></span></dt>
+<dd><p>Make the font handling module always return unscaled character widths.
+The <code class="code">grohtml</code> driver uses this directive.
+</p>
+</dd>
+<dt id='index-use_005fcharnames_005fin_005fspecial-1'><span><code class="code">use_charnames_in_special</code><a class="copiable-link" href='#index-use_005fcharnames_005fin_005fspecial-1'> &para;</a></span></dt>
+<dd><p>GNU <code class="code">troff</code> should encode special characters inside device control
+commands; see <a class="ref" href="Postprocessor-Access.html">Postprocessor Access</a>. The <code class="code">grohtml</code> driver
+uses this directive.
+</p>
+</dd>
+<dt id='index-vert'><span><code class="code">vert <var class="var">n</var></code><a class="copiable-link" href='#index-vert'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-vertical-motion-quantum"></a>
+<a class="index-entry-id" id="index-motion-quantum_002c-vertical"></a>
+<a class="index-entry-id" id="index-quantum_002c-vertical-motion"></a>
+<a class="index-entry-id" id="index-vertical-resolution"></a>
+<a class="index-entry-id" id="index-resolution_002c-vertical"></a>
+<p>The vertical motion quantum is <var class="var">n</var>&nbsp;basic units. All vertical
+quantities are rounded to multiples of&nbsp;<var class="var">n</var>.
+</p>
+</dd>
+<dt id='index-charset'><span><code class="code">charset</code><a class="copiable-link" href='#index-charset'> &para;</a></span></dt>
+<dd><p>This line and everything following it in the file are ignored. It is
+recognized for compatibility with other <code class="code">troff</code> implementations.
+In GNU <code class="code">troff</code>, character set repertoire is described on a
+per-font basis.
+</p></dd>
+</dl>
+
+<a class="index-entry-id" id="index-spare1"></a>
+<a class="index-entry-id" id="index-spare2"></a>
+<a class="index-entry-id" id="index-biggestfont"></a>
+<p>GNU <code class="code">troff</code> recognizes but ignores the directives <code class="code">spare1</code>,
+<code class="code">spare2</code>, and <code class="code">biggestfont</code>.
+</p>
+<p>The <code class="code">res</code>, <code class="code">unitwidth</code>, <code class="code">fonts</code>, and <code class="code">sizes</code> lines
+are mandatory. Directives not listed above are ignored by GNU
+<code class="code">troff</code> but may be used by postprocessors to obtain further
+information about the device.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Font-Description-File-Format.html">Font Description File Format</a>, Previous: <a href="Device-and-Font-Description-Files.html">Device and Font Description Files</a>, Up: <a href="Device-and-Font-Description-Files.html">Device and Font Description Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Debugging.html b/doc/groff.html.node/Debugging.html
new file mode 100644
index 0000000..594201c
--- /dev/null
+++ b/doc/groff.html.node/Debugging.html
@@ -0,0 +1,317 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Debugging (The GNU Troff Manual)</title>
+
+<meta name="description" content="Debugging (The GNU Troff Manual)">
+<meta name="keywords" content="Debugging (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Implementation-Differences.html" rel="next" title="Implementation Differences">
+<link href="Gtroff-Internals.html" rel="prev" title="Gtroff Internals">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+p.flushright-paragraph {text-align:right}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Debugging">
+<div class="nav-panel">
+<p>
+Next: <a href="Implementation-Differences.html" accesskey="n" rel="next">Implementation Differences</a>, Previous: <a href="Gtroff-Internals.html" accesskey="p" rel="prev"><code class="code">gtroff</code> Internals</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Debugging-1">5.37 Debugging</h3>
+<a class="index-entry-id" id="index-debugging"></a>
+
+<div class="flushright"><p class="flushright-paragraph"><i class="slanted">Standard troff voodoo, just put a power of two backslashes in
+front of it until it works and if you still have problems add a \c.</i>
+&mdash; Ron Natalie
+</p></div>
+<p>GNU <code class="code">troff</code> is not the easiest language to debug, in part thanks to
+its design features of recursive interpolation and the use of
+multi-stage pipeline processing in the surrounding system. Nevertheless
+there exist several features useful for troubleshooting.
+</p>
+<p>Preprocessors use the <code class="code">lf</code> request to preserve the identity of the
+line numbers and names of input files. GNU <code class="code">troff</code> emits a variety
+of error diagnostics and supports several categories of warning; the
+output of these can be selectively suppressed. A trace of the
+formatter&rsquo;s input processing stack can be emitted when errors or
+warnings occur by means of GNU <code class="code">troff</code>&rsquo;s <samp class="option">-b</samp> option, or
+produced on demand with the <code class="code">backtrace</code> request. The <code class="code">tm</code>
+and related requests can be used to emit customized diagnostic messages
+or for instrumentation while troubleshooting. The <code class="code">ex</code> and
+<code class="code">ab</code> requests cause early termination with successful and error
+exit codes respectively, to halt further processing when continuing
+would be fruitless. Examine the state of the formatter with requests
+that write lists of defined names (macros, strings, and diversions),
+environments, registers, and page location traps to the standard error
+stream.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lf</code></strong> <var class="def-var-arguments">line [<span class="r"><i class="slanted">file</i></span>]</var><a class="copiable-link" href='#index-_002elf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lf"></a>
+<a class="index-entry-id" id="index-soelim"></a>
+<a class="index-entry-id" id="index-multi_002dfile-documents"></a>
+<a class="index-entry-id" id="index-documents_002c-multi_002dfile"></a>
+<a class="index-entry-id" id="index-setting-input-line-number-_0028lf_0029"></a>
+<a class="index-entry-id" id="index-input-line-number_002c-setting-_0028lf_0029"></a>
+<a class="index-entry-id" id="index-number_002c-input-line_002c-setting-_0028lf_0029"></a>
+<p>Set the input line number (and, optionally, the file name) GNU
+<code class="code">troff</code> shall use for error and warning messages. <var class="var">line</var> is
+the input line number of the <em class="emph">next</em> line. Without an argument, the
+request is ignored.
+</p>
+<p><code class="code">lf</code>&rsquo;s primary purpose is to aid the debugging of documents that
+undergo preprocessing. Programs like <code class="command">tbl</code> that transform input
+in their own languages into <code class="code">roff</code> requests use it so that any
+diagnostic messages emitted by <code class="code">troff</code> correspond to the source
+document.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tm</code></strong> <var class="def-var-arguments">message</var><a class="copiable-link" href='#index-_002etm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tm"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002etm1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tm1</code></strong> <var class="def-var-arguments">message</var><a class="copiable-link" href='#index-_002etm1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tm1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002etmc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tmc</code></strong> <var class="def-var-arguments">message</var><a class="copiable-link" href='#index-_002etmc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tmc"></a>
+<a class="index-entry-id" id="index-printing-to-stderr-_0028tm_002c-tm1_002c-tmc_0029"></a>
+<a class="index-entry-id" id="index-stderr_002c-printing-to-_0028tm_002c-tm1_002c-tmc_0029"></a>
+<p>Send <var class="var">message</var>, which consumes the remainder of the input line and
+cannot contain special characters, to the standard error stream,
+followed by a newline. Leading spaces in <var class="var">message</var> are ignored.
+</p>
+<p><code class="code">tm1</code> is similar, but recognizes and strips a leading neutral
+double quote from <var class="var">message</var> to allow the embedding of leading
+spaces.
+</p>
+<p><code class="code">tmc</code> works as <code class="code">tm1</code>, but does not append a newline.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eab"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ab</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">message</i></span>]</var><a class="copiable-link" href='#index-_002eab'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ab"></a>
+<a class="index-entry-id" id="index-aborting-_0028ab_0029"></a>
+<p>Write any <var class="var">message</var> to the standard error stream (like <code class="code">tm</code>)
+and then abort GNU <code class="code">troff</code>; that is, stop processing and terminate
+with a failure status.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eex"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ex</code></strong><a class="copiable-link" href='#index-_002eex'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ex"></a>
+<a class="index-entry-id" id="index-ex-request_002c-use-in-debugging"></a>
+<a class="index-entry-id" id="index-exiting-_0028ex_0029"></a>
+<p>Exit GNU <code class="code">troff</code>; that is, stop processing and terminate with a
+successful status. To stop processing only the current file, use the
+<code class="code">nx</code> request; see <a class="ref" href="I_002fO.html">I/O</a>.
+</p></dd></dl>
+
+<p>When doing something involved, it is useful to leave the debugging
+statements in the code and have them turned on by a command-line flag.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.if \n[DB] .tm debugging output
+</pre></div></div>
+
+<p>To activate such statements, use the <samp class="option">-r</samp> option to set the
+register.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -rDB=1 <i class="slanted">file</i>
+</pre></div></div>
+
+<p>If it is known in advance that there are many errors and no useful
+output, GNU <code class="code">troff</code> can be forced to suppress formatted output with
+the <samp class="option">-z</samp> option.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epev"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pev</code></strong><a class="copiable-link" href='#index-_002epev'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pev"></a>
+<a class="index-entry-id" id="index-dumping-environments-_0028pev_0029"></a>
+<a class="index-entry-id" id="index-environments_002c-dumping-_0028pev_0029"></a>
+<p>Report the state of the current environment followed by that of all
+other environments to the standard error stream.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pm</code></strong><a class="copiable-link" href='#index-_002epm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pm"></a>
+<a class="index-entry-id" id="index-dumping-symbol-table-_0028pm_0029"></a>
+<a class="index-entry-id" id="index-symbol-table_002c-dumping-_0028pm_0029"></a>
+<p>Report, to the standard error stream, the names of all defined macros,
+strings, and diversions with their sizes in bytes.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epnr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pnr</code></strong><a class="copiable-link" href='#index-_002epnr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pnr"></a>
+<a class="index-entry-id" id="index-dumping-registers-_0028pnr_0029"></a>
+<a class="index-entry-id" id="index-registers_002c-dumping-_0028pnr_0029"></a>
+<p>Report the names and contents of all currently defined registers to the
+standard error stream.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eptr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ptr</code></strong><a class="copiable-link" href='#index-_002eptr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ptr"></a>
+<a class="index-entry-id" id="index-dumping-page-location-traps-_0028ptr_0029"></a>
+<a class="index-entry-id" id="index-listing-page-location-traps-_0028ptr_0029"></a>
+<a class="index-entry-id" id="index-traps_002c-page-location_002c-dumping-_0028ptr_0029"></a>
+<a class="index-entry-id" id="index-traps_002c-page-location_002c-listing-_0028ptr_0029"></a>
+<p>Report the names and positions of all page location traps to the
+standard error stream. Empty slots in the list, where a trap has been
+planted but subsequently (re)moved, are printed as well.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efl"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fl</code></strong><a class="copiable-link" href='#index-_002efl'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fl"></a>
+<a class="index-entry-id" id="index-flush-output-_0028fl_0029"></a>
+<a class="index-entry-id" id="index-output_002c-flush-_0028fl_0029"></a>
+<a class="index-entry-id" id="index-interactive-use-of-gtroff"></a>
+<a class="index-entry-id" id="index-gtroff_002c-interactive-use"></a>
+<p>Instruct <code class="code">gtroff</code> to flush its output immediately. The intent is
+for interactive use, but this behaviour is currently not implemented in
+<code class="code">gtroff</code>. Contrary to Unix <code class="code">troff</code>, TTY output is sent to a
+device driver also (<code class="code">grotty</code>), making it non-trivial to communicate
+interactively.
+</p>
+<p>This request causes a line break.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebacktrace"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.backtrace</code></strong><a class="copiable-link" href='#index-_002ebacktrace'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-backtrace"></a>
+<a class="index-entry-id" id="index-backtrace-of-input-stack-_0028backtrace_0029"></a>
+<a class="index-entry-id" id="index-input-stack_002c-backtrace-_0028backtrace_0029"></a>
+<p>Write the state of the input stack to the standard error stream.
+</p>
+<p>Consider the following in a file <samp class="file">test</samp>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de xxx
+. backtrace
+..
+.de yyy
+. xxx
+..
+.
+.yyy
+ error&rarr; troff: backtrace: 'test':2: macro 'xxx'
+ error&rarr; troff: backtrace: 'test':5: macro 'yyy'
+ error&rarr; troff: backtrace: file 'test':8
+</pre></div></div>
+
+<p>The <samp class="option">-b</samp> option of GNU <code class="code">troff</code> causes a backtrace to be
+generated on each error or warning. Some warnings have to be enabled;
+See <a class="xref" href="Warnings.html">Warnings</a>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bslimit_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[slimit]</code></strong><a class="copiable-link" href='#index-_005cn_005bslimit_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-slimit"></a>
+<a class="index-entry-id" id="index-input-stack_002c-setting-limit"></a>
+<p>If greater than&nbsp;0, sets the maximum quantity of objects on GNU
+<code class="code">troff</code>&rsquo;s internal input stack. If less than or equal to&nbsp;0,
+there is no limit: recursion can continue until program memory is
+exhausted. The default is 1,000.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewarnscale"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.warnscale</code></strong> <var class="def-var-arguments">su</var><a class="copiable-link" href='#index-_002ewarnscale'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-warnscale"></a>
+<p>Set the scaling unit used in certain warnings to <var class="var">su</var>, which can take the values &lsquo;<samp class="samp">u</samp>&rsquo;, &lsquo;<samp class="samp">i</samp>&rsquo;, &lsquo;<samp class="samp">c</samp>&rsquo;,
+&lsquo;<samp class="samp">p</samp>&rsquo;, and &lsquo;<samp class="samp">P</samp>&rsquo;. The default is &lsquo;<samp class="samp">i</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002espreadwarn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.spreadwarn</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">limit</i></span>]</var><a class="copiable-link" href='#index-_002espreadwarn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-spreadwarn"></a>
+<p>Emit a <code class="code">break</code> warning if the additional space inserted for each
+space between words in an output line adjusted to both margins with
+&lsquo;<samp class="samp">.ad&nbsp;b</samp>&rsquo;<!-- /@w --> is larger than or equal to <var class="var">limit</var>. A negative
+value is treated as zero; an absent argument toggles the warning on and
+off without changing <var class="var">limit</var>. The default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;.
+At startup, <code class="code">spreadwarn</code> is inactive and <var class="var">limit</var> is 3<span class="dmn">m</span>.
+</p>
+<p>For example,
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.spreadwarn 0.2m
+</pre></div></div>
+
+<p>causes a warning if <code class="code">break</code> warnings are not suppressed and
+<code class="code">gtroff</code> must add 0.2<span class="dmn">m</span> or more for each inter-word space in a
+line. See <a class="xref" href="Warnings.html">Warnings</a>.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-warnings"></a>
+<p>GNU <code class="code">troff</code> has command-line options for reporting warnings
+(<samp class="option">-w</samp>) and backtraces (<samp class="option">-b</samp>) when a warning or an error
+occurs.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewarn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.warn</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ewarn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-warn"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ewarn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.warn]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ewarn_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ewarn-1"></a>
+<a class="index-entry-id" id="index-warning-level-_0028warn_0029"></a>
+<p>Select the categories, or &ldquo;types&rdquo;, of reported warnings.
+<var class="var">n</var>&nbsp;is the sum of the numeric codes associated with each
+warning category that is to be enabled; all other categories are
+disabled. The categories and their associated codes are listed in
+<a class="ref" href="Warnings.html">Warnings</a>. For example, &lsquo;<samp class="samp">.warn 0</samp>&rsquo; disables all warnings, and
+&lsquo;<samp class="samp">.warn 1</samp>&rsquo; disables all warnings except those about missing glyphs.
+If no argument is given, all warning categories are enabled.
+</p>
+<p>The read-only register <code class="code">.warn</code> contains the sum of the numeric
+codes of enabled warning categories.
+</p></dd></dl>
+
+
+
+<ul class="mini-toc">
+<li><a href="Warnings.html" accesskey="1">Warnings</a></li>
+</ul>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Implementation-Differences.html">Implementation Differences</a>, Previous: <a href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Default-Units.html b/doc/groff.html.node/Default-Units.html
new file mode 100644
index 0000000..168c5cc
--- /dev/null
+++ b/doc/groff.html.node/Default-Units.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Default Units (The GNU Troff Manual)</title>
+
+<meta name="description" content="Default Units (The GNU Troff Manual)">
+<meta name="keywords" content="Default Units (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Measurements.html" rel="up" title="Measurements">
+<link href="Motion-Quanta.html" rel="prev" title="Motion Quanta">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Default-Units">
+<div class="nav-panel">
+<p>
+Previous: <a href="Motion-Quanta.html" accesskey="p" rel="prev">Motion Quanta</a>, Up: <a href="Measurements.html" accesskey="u" rel="up">Measurements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Default-Units-1">5.3.2 Default Units</h4>
+<a class="index-entry-id" id="index-default-units"></a>
+<a class="index-entry-id" id="index-units_002c-default"></a>
+
+<p>A general-purpose register (one created or updated with the <code class="code">nr</code>
+request; see see <a class="pxref" href="Registers.html">Registers</a>) is implicitly dimensionless, or reckoned
+in basic units if interpreted in a measurement context. But it is
+convenient for many requests and escape sequences to infer a scaling
+unit for an argument if none is specified. An explicit scaling unit
+(not after a closing parenthesis) can override an undesirable default.
+Effectively, the default unit is suffixed to the expression if a scaling
+unit is not already present. GNU <code class="code">troff</code>&rsquo;s use of integer
+arithmetic should also be kept in mind (see <a class="pxref" href="Numeric-Expressions.html">Numeric Expressions</a>).
+</p>
+<p>The <code class="code">ll</code> request interprets its argument in ems by default.
+Consider several attempts to set a line length of 3.5&nbsp;inches when
+the type size is 10&nbsp;points on a terminal device with a resolution
+of 240 basic units and horizontal motion quantum of 24. Some
+expressions become zero; the request clamps them to that quantum.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 3.5i \&quot; 3.5i (= 840u)
+.ll 7/2 \&quot; 7u/2u -&gt; 3u -&gt; 3m -&gt; 0, clamped to 24u
+.ll (7 / 2)u \&quot; 7u/2u -&gt; as above
+.ll 7/2i \&quot; 7u/2i -&gt; 7u/480u -&gt; 0 -&gt; as above
+.ll 7i/2 \&quot; 7i/2u -&gt; 1680u/2m -&gt; 1680u/24u -&gt; 35u
+.ll 7i/2u \&quot; 3.5i (= 840u)
+</pre></div></div>
+
+<a class="index-entry-id" id="index-measurements_002c-specifying-safely"></a>
+<p>The safest way to specify measurements is to attach a scaling unit. To
+multiply or divide by a dimensionless quantity, use &lsquo;<samp class="samp">u</samp>&rsquo; as its
+scaling unit.
+</p>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Deferring-Output.html b/doc/groff.html.node/Deferring-Output.html
new file mode 100644
index 0000000..81ab360
--- /dev/null
+++ b/doc/groff.html.node/Deferring-Output.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Deferring Output (The GNU Troff Manual)</title>
+
+<meta name="description" content="Deferring Output (The GNU Troff Manual)">
+<meta name="keywords" content="Deferring Output (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Traps.html" rel="next" title="Traps">
+<link href="Drawing-Geometric-Objects.html" rel="prev" title="Drawing Geometric Objects">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Deferring-Output">
+<div class="nav-panel">
+<p>
+Next: <a href="Traps.html" accesskey="n" rel="next">Traps</a>, Previous: <a href="Drawing-Geometric-Objects.html" accesskey="p" rel="prev">Drawing Geometric Objects</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Deferring-Output-1">5.27 Deferring Output</h3>
+<a class="index-entry-id" id="index-deferred-output"></a>
+
+<a class="index-entry-id" id="index-environment"></a>
+<a class="index-entry-id" id="index-diversion"></a>
+<a class="index-entry-id" id="index-trap"></a>
+<p>A few <code class="code">roff</code> language elements are generally not used in simple
+documents, but arise as page layouts become more sophisticated and
+demanding. <em class="dfn">Environments</em> collect formatting parameters like line
+length and typeface. A <em class="dfn">diversion</em> stores formatted output for
+later use. A <em class="dfn">trap</em> is a condition on the input or output, tested
+automatically by the formatter, that is associated with a macro, causing
+it to be called when that condition is fulfilled.
+</p>
+<p>Footnote support often exercises all three of the foregoing features. A
+simple implementation might work as follows. A pair of macros is
+defined: one starts a footnote and the other ends it. The author calls
+the first macro where a footnote marker is desired. The macro
+establishes a diversion so that the footnote text is collected at the
+place in the body text where its corresponding marker appears. An
+environment is created for the footnote so that it is set at a smaller
+typeface. The footnote text is formatted in the diversion using that
+environment, but it does not yet appear in the output. The document
+author calls the footnote end macro, which returns to the previous
+environment and ends the diversion. Later, after much more body text in
+the document, a trap, set a small distance above the page bottom, is
+sprung. The macro called by the trap draws a line across the page and
+emits the stored diversion. Thus, the footnote is rendered.
+</p>
+<p>Diversions and traps make the text formatting process non-linear. Let
+us imagine a set of text lines or paragraphs labelled &lsquo;<samp class="samp">A</samp>&rsquo;,
+&lsquo;<samp class="samp">B</samp>&rsquo;, and so on. If we set up a trap that produces text &lsquo;<samp class="samp">T</samp>&rsquo;
+(as a page footer, say), and we also use a diversion to store the
+formatted text &lsquo;<samp class="samp">D</samp>&rsquo;, then a document with input text in the order
+&lsquo;<samp class="samp">A B C D E F</samp>&rsquo; might render as &lsquo;<samp class="samp">A B C E T F</samp>&rsquo;. The diversion
+&lsquo;<samp class="samp">D</samp>&rsquo; will never be output if we do not call for it.
+</p>
+<p>Environments of themselves are not a source of non-linearity in document
+formatting: environment switches have immediate effect. One could
+always write a macro to change as many formatting parameters as desired
+with a single convenient call. But because diversions can be nested and
+macros called by traps that are sprung by other trap-called macros, they
+may be called upon in varying contexts. For example, consider a page
+header that is always to be set in Helvetica. A document that uses
+Times for most of its body text, but Courier for displayed code
+examples, poses a challenge if a page break occurs in the middle of a
+code display; if the header trap assumes that the &ldquo;previous font&rdquo; is
+always Times, the rest of the example will be formatted in the wrong
+typeface. One could carefully save all formatting parameters upon
+entering the trap and restore them upon leaving it, but this is verbose,
+error-prone, and not future-proof as the <code class="code">groff</code> language develops.
+Environments save us considerable effort.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Traps.html">Traps</a>, Previous: <a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Delimiters.html b/doc/groff.html.node/Delimiters.html
new file mode 100644
index 0000000..fa117db
--- /dev/null
+++ b/doc/groff.html.node/Delimiters.html
@@ -0,0 +1,233 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Delimiters (The GNU Troff Manual)</title>
+
+<meta name="description" content="Delimiters (The GNU Troff Manual)">
+<meta name="keywords" content="Delimiters (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Formatter-Instructions.html" rel="up" title="Formatter Instructions">
+<link href="Using-Escape-Sequences.html" rel="prev" title="Using Escape Sequences">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Delimiters">
+<div class="nav-panel">
+<p>
+Previous: <a href="Using-Escape-Sequences.html" accesskey="p" rel="prev">Using Escape Sequences</a>, Up: <a href="Formatter-Instructions.html" accesskey="u" rel="up">Formatter Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Delimiters-1">5.6.5 Delimiters</h4>
+<a class="index-entry-id" id="index-delimiting-escape-sequence-arguments"></a>
+<a class="index-entry-id" id="index-escape-sequence-argument-delimiters"></a>
+<a class="index-entry-id" id="index-delimiters_002c-for-escape-sequence-arguments"></a>
+<a class="index-entry-id" id="index-arguments_002c-to-escape-sequences_002c-delimiting"></a>
+
+<a class="index-entry-id" id="index-_0027_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_0022_002c-as-delimiter"></a>
+<p>Some escape sequences that require parameters use delimiters. The
+neutral apostrophe <code class="code">'</code> is a popular choice and shown in this
+document. The neutral double quote <code class="code">&quot;</code> is also commonly seen.
+Letters, numerals, and leaders can be used. Punctuation characters
+are likely better choices, except for those defined as infix operators
+in numeric expressions; see below.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">\l'1.5i\[bu]' \&quot; draw 1.5 inches of bullet glyphs
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_005c_0025_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cSP_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_007c_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_005e_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_007b_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_007d_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_0027_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_0060_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_002d_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_005f_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_0021_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_003f_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_0029_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_002f_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_002c_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_0026_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_003a_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c_007e_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005c0_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005ca_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cc_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cd_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005ce_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cE_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cp_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cr_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005ct_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_005cu_002c-as-delimiter"></a>
+<p>The following escape sequences don&rsquo;t take arguments and thus are allowed
+as delimiters:
+<code class="code">\<kbd class="key">SP</kbd></code>, <code class="code">\%</code>, <code class="code">\|</code>, <code class="code">\^</code>, <code class="code">\{</code>,
+<code class="code">\}</code>, <code class="code">\'</code>, <code class="code">\`</code>, <code class="code">\-</code>, <code class="code">\_</code>, <code class="code">\!</code>,
+<code class="code">\?</code>, <code class="code">\)</code>, <code class="code">\/</code>, <code class="code">\,</code>, <code class="code">\&amp;</code>, <code class="code">\:</code>,
+<code class="code">\~</code>, <code class="code">\0</code>, <code class="code">\a</code>, <code class="code">\c</code>, <code class="code">\d</code>, <code class="code">\e</code>,
+<code class="code">\E</code>, <code class="code">\p</code>, <code class="code">\r</code>, <code class="code">\t</code>, and <code class="code">\u</code>. However,
+using them this way is discouraged; they can make the input confusing to
+read.
+</p>
+<a class="index-entry-id" id="index-_005cA_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cb_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005co_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cw_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cX_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cZ_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-newline_002c-as-delimiter"></a>
+<p>A few escape sequences,
+<code class="code">\A</code>,
+<code class="code">\b</code>,
+<code class="code">\o</code>,
+<code class="code">\w</code>,
+<code class="code">\X</code>,
+and <code class="code">\Z</code>, accept a newline as a delimiter. Newlines that serve
+as delimiters continue to be recognized as input line terminators.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">A caf\o
+e\(aa
+in Paris
+ &rArr; A café in Paris
+</pre></div></div>
+
+<p>Use of newlines as delimiters in escape sequences is also discouraged.
+</p>
+<a class="index-entry-id" id="index-_005cD_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005ch_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cH_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cl_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cL_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cN_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cR_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cs_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cS_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cv_002c-delimiters-allowed-by"></a>
+<a class="index-entry-id" id="index-_005cx_002c-delimiters-allowed-by"></a>
+<p>Finally, the escape sequences <code class="code">\D</code>, <code class="code">\h</code>, <code class="code">\H</code>,
+<code class="code">\l</code>, <code class="code">\L</code>, <code class="code">\N</code>, <code class="code">\R</code>, <code class="code">\s</code>, <code class="code">\S</code>,
+<code class="code">\v</code>, and <code class="code">\x</code> prohibit many delimiters.
+</p>
+<ul class="itemize mark-bullet">
+<li><a class="index-entry-id" id="index-numerals_002c-as-delimiters"></a>
+<a class="index-entry-id" id="index-digits_002c-as-delimiters"></a>
+<a class="index-entry-id" id="index-_002e_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-decimal-point_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-dot_002c-as-delimiter"></a>
+the numerals <code class="code">0</code>-<code class="code">9</code> and the decimal point <code class="code">.</code>
+
+</li><li><a class="index-entry-id" id="index-operators_002c-as-delimiters"></a>
+<a class="index-entry-id" id="index-_002b_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_002d_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_002f_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_002a_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_0025_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_003c_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_003e_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_003d_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_0026_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_003a_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_0028_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-_0029_002c-as-delimiter"></a>
+the (single-character) operators &lsquo;<samp class="samp">+-/*%&lt;&gt;=&amp;:()</samp>&rsquo;
+
+</li><li><a class="index-entry-id" id="index-space-character_002c-as-delimiter"></a>
+<a class="index-entry-id" id="index-tab-character_002c-as-delimiter"></a>
+the space and tab characters
+
+</li><li><a class="index-entry-id" id="index-_005c_0025_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_003a_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_007b_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_007d_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_0027_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_0060_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_002d_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_005f_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_0021_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005c_002f_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005cc_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005ce_002c-as-delimiter-1"></a>
+<a class="index-entry-id" id="index-_005cp_002c-as-delimiter-1"></a>
+any escape sequences other than <code class="code">\%</code>, <code class="code">\:</code>, <code class="code">\{</code>,
+<code class="code">\}</code>, <code class="code">\'</code>, <code class="code">\`</code>, <code class="code">\-</code>, <code class="code">\_</code>, <code class="code">\!</code>,
+<code class="code">\/</code>, <code class="code">\c</code>, <code class="code">\e</code>, and <code class="code">\p</code>
+</li></ul>
+
+<p>Delimiter syntax is complex and flexible primarily for historical
+reasons; the foregoing restrictions need be kept in mind mainly when
+using <code class="code">groff</code> in <abbr class="acronym">AT&amp;T</abbr> compatibility mode. GNU
+<code class="code">troff</code> keeps track of the nesting depth of escape sequence
+interpolations, so the only characters you need to avoid using as
+delimiters are those that appear in the arguments you input, not any
+that result from interpolation. Typically, <code class="code">'</code> works fine.
+See <a class="xref" href="Implementation-Differences.html">Implementation Differences</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ groff -Tps
+.de Mw
+. nr wd \w'\\$1'
+. tm &quot;\\$1&quot; is \\n(wd units wide.
+..
+.Mw Wet'suwet'en
+.Mw Wet+200i
+.cp 1 \&quot; turn on compatibility mode
+.Mw Wet'suwet'en
+.Mw Wet'
+.Mw Wet+200i
+ error&rarr; &quot;Wet'suwet'en&quot; is 54740 units wide.
+ error&rarr; &quot;Wet'+200i&quot; is 42610 units wide.
+ error&rarr; &quot;Wet'suwet'en&quot; is 15860 units wide.
+ error&rarr; &quot;Wet'&quot; is 15860 units wide.
+ error&rarr; &quot;Wet'+200i&quot; is 14415860 units wide.
+</pre></div></div>
+
+<p>We see here that in compatibility mode, the part of the argument after
+the <code class="code">'</code> delimiter escapes from its context and, if nefariously
+crafted, influences the computation of the <var class="var">wd</var> register&rsquo;s value in
+a surprising way.
+</p>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="Using-Escape-Sequences.html">Using Escape Sequences</a>, Up: <a href="Formatter-Instructions.html">Formatter Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Device-Control-Commands.html b/doc/groff.html.node/Device-Control-Commands.html
new file mode 100644
index 0000000..9d56288
--- /dev/null
+++ b/doc/groff.html.node/Device-Control-Commands.html
@@ -0,0 +1,185 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Device Control Commands (The GNU Troff Manual)</title>
+
+<meta name="description" content="Device Control Commands (The GNU Troff Manual)">
+<meta name="keywords" content="Device Control Commands (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Command-Reference.html" rel="up" title="Command Reference">
+<link href="Obsolete-Command.html" rel="next" title="Obsolete Command">
+<link href="Graphics-Commands.html" rel="prev" title="Graphics Commands">
+<style type="text/css">
+<!--
+div.display {margin-left: 3.2em}
+pre.display-preformatted {font-family: inherit}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Device-Control-Commands">
+<div class="nav-panel">
+<p>
+Next: <a href="Obsolete-Command.html" accesskey="n" rel="next">Obsolete Command</a>, Previous: <a href="Graphics-Commands.html" accesskey="p" rel="prev">Graphics Commands</a>, Up: <a href="Command-Reference.html" accesskey="u" rel="up">Command Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Device-Control-Commands-1">6.1.2.4 Device Control Commands</h4>
+
+<p>Each device control command starts with the letter &lsquo;<samp class="samp">x</samp>&rsquo;, followed by
+a space character (optional or arbitrary space or tab in <code class="code">gtroff</code>)
+and a subcommand letter or word; each argument (if any) must be preceded
+by a syntactical space. All &lsquo;<samp class="samp">x</samp>&rsquo; commands are terminated by a
+syntactical line break; no device control command can be followed by
+another command on the same line (except a comment).
+</p>
+<p>The subcommand is basically a single letter, but to increase
+readability, it can be written as a word, i.e., an arbitrary sequence of
+characters terminated by the next tab, space, or newline character. All
+characters of the subcommand word but the first are simply ignored. For
+example, <code class="code">gtroff</code> outputs the initialization command &lsquo;<samp class="samp">x&nbsp;i</samp>&rsquo;<!-- /@w -->
+as &lsquo;<samp class="samp">x&nbsp;init</samp>&rsquo;<!-- /@w --> and the resolution command &lsquo;<samp class="samp">x&nbsp;r</samp>&rsquo;<!-- /@w --> as
+&lsquo;<samp class="samp">x&nbsp;res</samp>&rsquo;<!-- /@w -->.
+</p>
+<p>In the following, the syntax element &lsaquo;<span class="r">line break</span>&rsaquo; means a
+syntactical line break (see <a class="pxref" href="Separation.html">Separation</a>).
+</p>
+<dl class="table">
+<dt><code class="code">xF <var class="var">name</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">F</samp>&rsquo; stands for <var class="var">Filename</var>.
+</p>
+<p>Use <var class="var">name</var> as the intended name for the current file in error
+reports. This is useful for remembering the original file name when
+<code class="code">gtroff</code> uses an internal piping mechanism. The input file is not
+changed by this command. This command is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">xf <var class="var">n</var> <var class="var">s</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">f</samp>&rsquo; stands for <var class="var">font</var>.
+</p>
+<p>Mount font position&nbsp;<var class="var">n</var> (a non-negative integer) with font
+named&nbsp;<var class="var">s</var> (a text word). See <a class="xref" href="Font-Positions.html">Font Positions</a>.
+</p>
+</dd>
+<dt><code class="code">xH <var class="var">n</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">H</samp>&rsquo; stands for <var class="var">Height</var>.
+</p>
+<p>Set glyph height to&nbsp;<var class="var">n</var> (a positive integer in scaled points
+&lsquo;<samp class="samp">z</samp>&rsquo;). <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> uses the unit points (&lsquo;<samp class="samp">p</samp>&rsquo;)
+instead. See <a class="xref" href="Output-Language-Compatibility.html">Output Language Compatibility</a>.
+</p>
+</dd>
+<dt><code class="code">xi&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">i</samp>&rsquo; stands for <var class="var">init</var>.
+</p>
+<p>Initialize device. This is the third command of the prologue.
+</p>
+</dd>
+<dt><code class="code">xp&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">p</samp>&rsquo; stands for <var class="var">pause</var>.
+</p>
+<p>Parsed but ignored. The <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> manual documents
+this command as
+</p>
+<div class="display">
+<pre class="display-preformatted">pause device, can be restarted
+</pre></div>
+
+<p>but GNU <code class="code">troff</code> output drivers do nothing with this command.
+</p>
+</dd>
+<dt><code class="code">xr <var class="var">n</var> <var class="var">h</var> <var class="var">v</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">r</samp>&rsquo; stands for <var class="var">resolution</var>.
+</p>
+<p>Resolution is&nbsp;<var class="var">n</var>, while <var class="var">h</var> is the minimal horizontal
+motion, and <var class="var">v</var> the minimal vertical motion possible with this
+device; all arguments are positive integers in basic units &lsquo;<samp class="samp">u</samp>&rsquo; per
+inch. This is the second command of the prologue.
+</p>
+</dd>
+<dt><code class="code">xS <var class="var">n</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">S</samp>&rsquo; stands for <var class="var">Slant</var>.
+</p>
+<p>Set slant to&nbsp;<var class="var">n</var> (an integer in basic units &lsquo;<samp class="samp">u</samp>&rsquo;).
+</p>
+</dd>
+<dt><code class="code">xs&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">s</samp>&rsquo; stands for <var class="var">stop</var>.
+</p>
+<p>Terminates the processing of the current file; issued as the last
+command of any intermediate <code class="code">troff</code> output.
+</p>
+</dd>
+<dt><code class="code">xt&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">t</samp>&rsquo; stands for <var class="var">trailer</var>.
+</p>
+<p>Generate trailer information, if any. In GNU <code class="code">troff</code>, this is
+ignored.
+</p>
+</dd>
+<dt><code class="code">xT <var class="var">xxx</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">T</samp>&rsquo; stands for <var class="var">Typesetter</var>.
+</p>
+<p>Set the name of the output driver to <var class="var">xxx</var>, a sequence of
+non-whitespace characters terminated by whitespace. The possible names
+correspond to those of <code class="code">groff</code>&rsquo;s <samp class="option">-T</samp> option. This is the
+first command of the prologue.
+</p>
+</dd>
+<dt><code class="code">xu <var class="var">n</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">u</samp>&rsquo; stands for <var class="var">underline</var>.
+</p>
+<p>Configure underlining of spaces. If <var class="var">n</var> is&nbsp;1, start
+underlining of spaces; if <var class="var">n</var> is&nbsp;0, stop underlining of spaces.
+This is needed for the <code class="code">cu</code> request in <code class="code">nroff</code> mode and is
+ignored otherwise. This command is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">xX <var class="var">anything</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The &lsquo;<samp class="samp">x</samp>&rsquo; stands for <var class="var">X-escape</var>.
+</p>
+<p>Send string <var class="var">anything</var> uninterpreted to the device. If the line
+following this command starts with a &lsquo;<samp class="samp">+</samp>&rsquo; character this line is
+interpreted as a continuation line in the following sense. The &lsquo;<samp class="samp">+</samp>&rsquo;
+is ignored, but a newline character is sent instead to the device, the
+rest of the line is sent uninterpreted. The same applies to all
+following lines until the first character of a line is not a &lsquo;<samp class="samp">+</samp>&rsquo;
+character. This command is generated by the <code class="code">gtroff</code> escape
+sequence <code class="code">\X</code>. The line-continuing feature is a <code class="code">gtroff</code>
+extension.
+</p></dd>
+</dl>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Obsolete-Command.html">Obsolete Command</a>, Previous: <a href="Graphics-Commands.html">Graphics Commands</a>, Up: <a href="Command-Reference.html">Command Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Device-and-Font-Description-Files.html b/doc/groff.html.node/Device-and-Font-Description-Files.html
new file mode 100644
index 0000000..b935830
--- /dev/null
+++ b/doc/groff.html.node/Device-and-Font-Description-Files.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Device and Font Description Files (The GNU Troff Manual)</title>
+
+<meta name="description" content="Device and Font Description Files (The GNU Troff Manual)">
+<meta name="keywords" content="Device and Font Description Files (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="File-Formats.html" rel="up" title="File Formats">
+<link href="gtroff-Output.html" rel="prev" title="gtroff Output">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Device-and-Font-Description-Files">
+<div class="nav-panel">
+<p>
+Previous: <a href="gtroff-Output.html" accesskey="p" rel="prev"><code class="code">gtroff</code> Output</a>, Up: <a href="File-Formats.html" accesskey="u" rel="up">File Formats</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Device-and-Font-Description-Files-1">6.2 Device and Font Description Files</h3>
+<a class="index-entry-id" id="index-font-files"></a>
+<a class="index-entry-id" id="index-files_002c-font"></a>
+
+<p>The <code class="code">groff</code> font and output device description formats are slight
+extensions of those used by <abbr class="acronym">AT&amp;T</abbr> device-independent
+<code class="code">troff</code>. In distinction to the <abbr class="acronym">AT&amp;T</abbr> implementation,
+<code class="code">groff</code> lacks a binary format; all files are text
+files.<a class="footnote" id="DOCF125" href="groff.html_fot.html#FOOT125"><sup>125</sup></a> The device and font description files for a device <var class="var">name</var>
+are stored in a <samp class="file">dev<var class="var">name</var></samp> directory. The device description
+file is called <samp class="file">DESC</samp>, and, for each font supported by the device,
+a font description file is called&nbsp;<samp class="file"><var class="var">f</var></samp>, where
+<var class="var">f</var>&nbsp;is usually an abbreviation of a font&rsquo;s name and/or style.
+For example, the <code class="code">ps</code> (PostScript) device has <code class="code">groff</code> font
+description files for Times roman (<samp class="file">TR</samp>) and Zapf Chancery Medium
+italic (<samp class="file">ZCMI</samp>), among many others, while the <code class="code">utf8</code> device
+(for terminal emulators) has only font descriptions for the roman,
+italic, bold, and bold-italic styles (<samp class="file">R</samp>, <samp class="file">I</samp>, <samp class="file">B</samp>, and
+<samp class="file">BI</samp>, respectively).
+</p>
+<p>Device and font description files are read both by the formatter, GNU
+<code class="code">troff</code>, and by output drivers. The programs delegate these files&rsquo;
+processing to an internal library, <samp class="file">libgroff</samp>, ensuring their
+consistent interpretation.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="DESC-File-Format.html" accesskey="1"><samp class="file">DESC</samp> File Format</a></li>
+<li><a href="Font-Description-File-Format.html" accesskey="2">Font Description File Format</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Differences-from-AT_0026T-ms.html b/doc/groff.html.node/Differences-from-AT_0026T-ms.html
new file mode 100644
index 0000000..6d45741
--- /dev/null
+++ b/doc/groff.html.node/Differences-from-AT_0026T-ms.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Differences from AT&amp;T ms (The GNU Troff Manual)</title>
+
+<meta name="description" content="Differences from AT&amp;T ms (The GNU Troff Manual)">
+<meta name="keywords" content="Differences from AT&amp;T ms (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms.html" rel="up" title="ms">
+<link href="ms-Naming-Conventions.html" rel="next" title="ms Naming Conventions">
+<link href="ms-Page-Layout.html" rel="prev" title="ms Page Layout">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Differences-from-AT_0026T-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Naming-Conventions.html" accesskey="n" rel="next">Naming Conventions</a>, Previous: <a href="ms-Page-Layout.html" accesskey="p" rel="prev">Page layout</a>, Up: <a href="ms.html" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Differences-from-AT_0026T-ms-1">4.6.7 Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></h4>
+<a class="index-entry-id" id="index-ms-macros_002c-groff-differences-from-AT_0026T"></a>
+<a class="index-entry-id" id="index-AT_0026T-ms_002c-macro-package-differences"></a>
+
+<p>The <code class="code">groff</code> <samp class="file">ms</samp> macros are an independent reimplementation,
+using no <abbr class="acronym">AT&amp;T</abbr> code. Since they take advantage of the extended
+features of <code class="code">groff</code>, they cannot be used with <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code>. <code class="code">groff</code> <samp class="file">ms</samp> supports features described above
+as Berkeley and Tenth Edition Research Unix extensions, and adds several
+of its own.
+</p>
+<ul class="itemize mark-bullet">
+<li>The internals of <code class="code">groff</code> <samp class="file">ms</samp> differ from the internals of
+<abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp>. Documents that depend upon implementation
+details of <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp> may not format properly with
+<code class="code">groff</code> <samp class="file">ms</samp>. Such details include macros whose function was
+not documented in the <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp>
+manual.<a class="footnote" id="DOCF14" href="groff.html_fot.html#FOOT14"><sup>14</sup></a>
+
+</li><li>The error-handling policy of <code class="code">groff</code> <samp class="file">ms</samp> is to detect and
+report errors, rather than to ignore them silently.
+
+</li><li>Tenth Edition Research Unix supported <code class="code">P1</code>/<code class="code">P2</code> macros to bracket code
+examples; <code class="code">groff</code> <samp class="file">ms</samp> does not.
+
+</li><li><code class="code">groff</code> <samp class="file">ms</samp> does not work in GNU <code class="code">troff</code>&rsquo;s
+<abbr class="acronym">AT&amp;T</abbr> compatibility mode. If loaded when that mode is enabled,
+it aborts processing with a diagnostic message.
+
+</li><li>Multiple line spacing is not supported. Use a larger vertical spacing
+instead.
+
+</li><li><code class="code">groff</code> <samp class="file">ms</samp> uses the same header and footer defaults in both
+<code class="code">nroff</code> and <code class="code">troff</code> modes as <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp> does in
+<code class="code">troff</code> mode; <abbr class="acronym">AT&amp;T</abbr>&rsquo;s default in <code class="code">nroff</code> mode is to
+put the date, in U.S. traditional format (e.g., &ldquo;January 1, 2021&rdquo;),
+in the center footer (the <code class="code">CF</code> string).
+
+</li><li>Many <code class="code">groff</code> <samp class="file">ms</samp> macros, including those for paragraphs,
+headings, and displays, cause a reset of paragraph rendering parameters,
+and may change the indentation; they do so not by incrementing or
+decrementing it, but by setting it absolutely. This can cause problems
+for documents that define additional macros of their own that try to
+manipulate indentation. Use the <samp class="file">ms</samp> <code class="code">RS</code> and <code class="code">RE</code>
+macros instead of the <code class="code">in</code> request.
+
+</li><li><a class="index-entry-id" id="index-fractional-type-sizes-in-ms-macros"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-fractional-type-sizes-in"></a>
+<abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp> interpreted the values of the registers
+<code class="code">PS</code> and <code class="code">VS</code> in points, and did not support the use of
+scaling units with them. <code class="code">groff</code> <samp class="file">ms</samp> interprets values of
+the registers <code class="code">PS</code>, <code class="code">VS</code>, <code class="code">FPS</code>, and <code class="code">FVS</code> equal to
+or larger than&nbsp;1,000 (one thousand) as decimal fractions multiplied
+by&nbsp;1,000.<a class="footnote" id="DOCF15" href="groff.html_fot.html#FOOT15"><sup>15</sup></a> This threshold makes use of a
+scaling unit with these parameters practical for high-resolution
+devices while preserving backward compatibility. It also permits
+expression of non-integral type sizes. For example, &lsquo;<samp class="samp">groff
+-rPS=10.5p</samp>&rsquo; at the shell prompt is equivalent to placing &lsquo;<samp class="samp">.nr PS
+10.5p</samp>&rsquo; at the beginning of the document.
+
+</li><li><abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp>&rsquo;s <code class="code">AU</code> macro supported arguments used with
+some document types; <code class="code">groff</code> <samp class="file">ms</samp> does not.
+
+</li><li>Right-aligned displays are available. The <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp>
+manual observes that &ldquo;it is tempting to assume that &lsquo;<samp class="samp">.DS R</samp>&rsquo; will
+right adjust lines, but it doesn&rsquo;t work&rdquo;. In <code class="code">groff</code> <samp class="file">ms</samp>,
+it does.
+
+</li><li>To make <code class="code">groff</code> <samp class="file">ms</samp> use the default page offset (which also
+specifies the left margin), the <code class="code">PO</code> register must stay undefined
+until the first <samp class="file">ms</samp> macro is called.
+
+<p>This implies that &lsquo;<samp class="samp">\n[PO]</samp>&rsquo; should not be used early in the
+document, unless it is changed also: accessing an undefined register
+automatically defines it.
+</p>
+</li><li><code class="code">groff</code> <samp class="file">ms</samp> supports the <code class="code">PN</code> register, but it is not
+necessary; you can access the page number via the usual <code class="code">%</code>
+register and invoke the <code class="code">af</code> request to assign a different format
+to it if desired.<a class="footnote" id="DOCF16" href="groff.html_fot.html#FOOT16"><sup>16</sup></a>
+
+</li><li>The <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp> manual documents registers <code class="code">CW</code> and
+<code class="code">GW</code> as setting the default column width and &ldquo;intercolumn gap&rdquo;,
+respectively, and which applied when <code class="code">MC</code> was called with fewer
+than two arguments. <code class="code">groff</code> <samp class="file">ms</samp> instead treats <code class="code">MC</code>
+without arguments as synonymous with <code class="code">2C</code>; there is thus no
+occasion for a default column width register. Further, the <code class="code">MINGW</code>
+register and the second argument to <code class="code">MC</code> specify a <em class="emph">minimum</em>
+space between columns, not the fixed gutter width of <abbr class="acronym">AT&amp;T</abbr>
+<samp class="file">ms</samp>.
+
+</li><li>The <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp> manual did not document the <code class="code">QI</code>
+register; Berkeley and <code class="code">groff</code> <samp class="file">ms</samp> do.
+</li></ul>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bGS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[GS]</code></strong><a class="copiable-link" href='#index-_005cn_005bGS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-GS-_005bms_005d"></a>
+<p>The register <code class="code">GS</code> is set to&nbsp;1 by the <code class="code">groff</code> <samp class="file">ms</samp>
+macros, but is not used by the <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp> package.
+Documents that need to determine whether they are being formatted with
+<code class="code">groff</code> <samp class="file">ms</samp> or another implementation should test this
+register.
+</p></dd></dl>
+
+
+
+<ul class="mini-toc">
+<li><a href="Missing-Unix-Version-7-ms-Macros.html" accesskey="1">Unix Version 7 <samp class="file">ms</samp> macros not implemented by <code class="code">groff</code> <samp class="file">ms</samp></a></li>
+</ul>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Naming-Conventions.html">Naming Conventions</a>, Previous: <a href="ms-Page-Layout.html">Page layout</a>, Up: <a href="ms.html"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Displays-and-Keeps.html b/doc/groff.html.node/Displays-and-Keeps.html
new file mode 100644
index 0000000..9d8f2b0
--- /dev/null
+++ b/doc/groff.html.node/Displays-and-Keeps.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Displays and Keeps (The GNU Troff Manual)</title>
+
+<meta name="description" content="Displays and Keeps (The GNU Troff Manual)">
+<meta name="keywords" content="Displays and Keeps (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Footnotes-and-Endnotes.html" rel="next" title="Footnotes and Endnotes">
+<link href="Page-Layout-Adjustment.html" rel="prev" title="Page Layout Adjustment">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Displays-and-Keeps">
+<div class="nav-panel">
+<p>
+Next: <a href="Footnotes-and-Endnotes.html" accesskey="n" rel="next">Footnotes and Endnotes</a>, Previous: <a href="Page-Layout-Adjustment.html" accesskey="p" rel="prev">Page Layout</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Displays-and-Keeps-1">3.2.5 Displays and Keeps</h4>
+<a class="index-entry-id" id="index-displays"></a>
+
+<p><i class="slanted">Displays</i> are sections of text set off from the surrounding
+material (typically paragraphs), often differing in indentation, and/or
+spacing. Tables, block quotations, and figures are displayed.
+Equations and code examples, when not much shorter than an output line,
+often are. Lists may or may not be. Packages for setting man pages
+support example displays but not keeps.
+</p>
+<a class="index-entry-id" id="index-keeps-_0028introduction_0029"></a>
+<p>A <i class="slanted">keep</i> is a group of output lines, often a display, that is
+formatted on a single page if possible; it causes a page break to happen
+early so as to not interrupt the kept material.
+</p>
+<a class="index-entry-id" id="index-keep_002c-floating"></a>
+<a class="index-entry-id" id="index-floating-keep"></a>
+<p><i class="slanted">Floating keeps</i> can move, or &ldquo;float&rdquo;, relative to the text
+around them in the input. They are useful for displays that are
+captioned and referred to by name, as with &ldquo;See figure&nbsp;3&rdquo;.
+Depending on the package, a floating keep appears at the bottom of the
+current page if it fits, and at the top of the next otherwise.
+Alternatively, floating keeps might be deferred to the end of a section.
+Using a floating keep can avoid the large vertical spaces that may
+precede a tall keep of the ordinary sort when it won&rsquo;t fit on the page.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Diversion-Traps.html b/doc/groff.html.node/Diversion-Traps.html
new file mode 100644
index 0000000..4c924e7
--- /dev/null
+++ b/doc/groff.html.node/Diversion-Traps.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Diversion Traps (The GNU Troff Manual)</title>
+
+<meta name="description" content="Diversion Traps (The GNU Troff Manual)">
+<meta name="keywords" content="Diversion Traps (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Vertical-Position-Traps.html" rel="up" title="Vertical Position Traps">
+<link href="Input-Line-Traps.html" rel="next" title="Input Line Traps">
+<link href="The-Implicit-Page-Trap.html" rel="prev" title="The Implicit Page Trap">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Diversion-Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="Input-Line-Traps.html" accesskey="n" rel="next">Input Line Traps</a>, Previous: <a href="The-Implicit-Page-Trap.html" accesskey="p" rel="prev">The Implicit Page Trap</a>, Up: <a href="Vertical-Position-Traps.html" accesskey="u" rel="up">Vertical Position Traps</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Diversion-Traps-1">5.28.1.3 Diversion Traps</h4>
+<a class="index-entry-id" id="index-diversion-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-diversion"></a>
+
+<p>A diversion is not formatted in the context of a page, so it lacks page
+location traps; instead it can have a <em class="dfn">diversion trap</em>. There can
+exist at most one such vertical position trap per diversion.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edt"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.dt</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">dist</i></span> <span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002edt'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-dt"></a>
+<a class="index-entry-id" id="index-_002et-register_002c-and-diversions"></a>
+<a class="index-entry-id" id="index-setting-diversion-trap-_0028dt_0029"></a>
+<a class="index-entry-id" id="index-diversion-trap_002c-setting-_0028dt_0029"></a>
+<a class="index-entry-id" id="index-trap_002c-diversion_002c-setting-_0028dt_0029"></a>
+<p>Set a trap <em class="emph">within</em> a diversion at location <var class="var">dist</var>, which is
+interpreted relative to diversion rather than page boundaries. If invoked with
+fewer than two arguments, any diversion trap in the current diversion is
+removed. The register <code class="code">.t</code> works within diversions. It is an
+error to invoke <code class="code">dt</code> in the top-level diversion.
+See <a class="xref" href="Diversions.html">Diversions</a>.
+</p></dd></dl>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Diversions.html b/doc/groff.html.node/Diversions.html
new file mode 100644
index 0000000..c0dc8e9
--- /dev/null
+++ b/doc/groff.html.node/Diversions.html
@@ -0,0 +1,394 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Diversions (The GNU Troff Manual)</title>
+
+<meta name="description" content="Diversions (The GNU Troff Manual)">
+<meta name="keywords" content="Diversions (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Punning-Names.html" rel="next" title="Punning Names">
+<link href="Traps.html" rel="prev" title="Traps">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Diversions">
+<div class="nav-panel">
+<p>
+Next: <a href="Punning-Names.html" accesskey="n" rel="next">Punning Names</a>, Previous: <a href="Traps.html" accesskey="p" rel="prev">Traps</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Diversions-1">5.29 Diversions</h3>
+<a class="index-entry-id" id="index-diversions"></a>
+
+<p>In <code class="code">roff</code> systems it is possible to format text as if for output,
+but instead of writing it immediately, one can <em class="dfn">divert</em> the
+formatted text into a named storage area. It is retrieved later by
+specifying its name after a control character. The same name space is
+used for such <i class="slanted">diversions</i> as for strings and macros; see
+<a class="ref" href="Identifiers.html">Identifiers</a>. Such text is sometimes said to be &ldquo;stored in a
+macro&rdquo;, but this coinage obscures the important distinction between
+macros and strings on one hand and diversions on the other; the former
+store <em class="emph">unformatted</em> input text, and the latter capture
+<em class="emph">formatted</em> output. Diversions also do not interpret arguments.
+Applications of diversions include &ldquo;keeps&rdquo; (preventing a page break
+from occurring at an inconvenient place by forcing a set of output lines
+to be set as a group), footnotes, tables of contents, and indices.
+<a class="index-entry-id" id="index-top_002dlevel-diversion"></a>
+<a class="index-entry-id" id="index-diversion_002c-top_002dlevel"></a>
+For orthogonality it is said that GNU <code class="code">troff</code> is in the
+<em class="dfn">top-level diversion</em> if no diversion is active (that is, formatted
+output is being &ldquo;diverted&rdquo; immediately to the output device).
+</p>
+<p>Dereferencing an undefined diversion will create an empty one of that
+name and cause a warning in category &lsquo;<samp class="samp">mac</samp>&rsquo; to be emitted.
+See <a class="xref" href="Warnings.html">Warnings</a>, for information about the enablement and suppression of
+warnings. A diversion does not exist for the purpose of testing with
+the <code class="code">d</code> conditional operator until its initial definition ends
+(see <a class="pxref" href="Operators-in-Conditionals.html">Operators in Conditionals</a>). The following requests are used to
+create and alter diversions.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edi"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.di</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002edi'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-di"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eda"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.da</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eda'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-da"></a>
+<a class="index-entry-id" id="index-beginning-diversion-_0028di_002c-box_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-beginning-_0028di_002c-box_0029"></a>
+<a class="index-entry-id" id="index-ending-diversion-_0028di_002c-box_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-ending-_0028di_002c-box_0029"></a>
+<a class="index-entry-id" id="index-appending-to-a-diversion-_0028da_002c-boxa_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-appending-to-_0028da_002c-boxa_0029"></a>
+<p>Start collecting formatted output in a diversion called <var class="var">name</var>. The
+<code class="code">da</code> request appends to a diversion called <var class="var">name</var>, creating it
+if necessary. If <var class="var">name</var> already exists as an alias, the target of
+the alias is replaced or appended to; recall <a class="ref" href="Strings.html">Strings</a>. The pending
+output line is diverted as well. Switching to another environment (with
+the <code class="code">ev</code> request) before invoking <code class="code">di</code> or <code class="code">da</code> avoids
+including any pending output line in the diversion; see
+<a class="ref" href="Environments.html">Environments</a>.
+</p>
+<p>Invoking <code class="code">di</code> or <code class="code">da</code> without an argument stops diverting
+output to the diversion named by the most recent corresponding request.
+If <code class="code">di</code> or <code class="code">da</code> is called without an argument when there is no
+current diversion, a warning in category &lsquo;<samp class="samp">di</samp>&rsquo; is produced.
+See <a class="xref" href="Warnings.html">Warnings</a>, for information about the enablement and suppression
+of warnings.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Before the diversion.
+.di yyy
+In the diversion.
+.br
+.di
+After the diversion.
+.br
+ &rArr; After the diversion.
+.yyy
+ &rArr; Before the diversion. In the diversion.
+</pre></div></div>
+</dd></dl>
+
+<a class="index-entry-id" id="index-box-_0028diversion-operation_0029"></a>
+<p>GNU <code class="code">troff</code> supports <em class="dfn">box</em> requests to exclude a partially
+collected line from a diversion, as this is often desirable.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebox"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.box</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002ebox'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-box"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eboxa"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.boxa</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eboxa'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-boxa"></a>
+<p>Divert (or append) output to <var class="var">name</var>, similarly to the <code class="code">di</code> and
+<code class="code">da</code> requests, respectively. Any pending output line is <em class="emph">not</em>
+included in the diversion. Without an argument, stop diverting output;
+any pending output line inside the diversion is discarded.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Before the box.
+.box xxx
+In the box.
+.br
+Hidden treasure.
+.box
+After the box.
+.br
+ &rArr; Before the box. After the box.
+.xxx
+ &rArr; In the box.
+</pre></div></div>
+</dd></dl>
+
+<p>Apart from pending output line inclusion and the request names that
+populate them, boxes are handled exactly as diversions are. All of the
+following <code class="code">groff</code> language elements can be used with them
+interchangeably.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002ez_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.z]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ez_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ez"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ed_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.d]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ed_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ed"></a>
+<a class="index-entry-id" id="index-nl-register_002c-and-_002ed"></a>
+<a class="index-entry-id" id="index-nested-diversions"></a>
+<a class="index-entry-id" id="index-diversion_002c-nested"></a>
+<a class="index-entry-id" id="index-diversion-name-register-_0028_002ez_0029"></a>
+<a class="index-entry-id" id="index-vertical-position-in-diversion-register-_0028_002ed_0029"></a>
+<a class="index-entry-id" id="index-position_002c-vertical_002c-in-diversion_002c-register-_0028_002ed_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-vertical-position-in_002c-register-_0028_002ed_0029"></a>
+<p>Diversions may be nested. The read-only string-valued register
+<code class="code">.z</code> contains the name of the current diversion. The read-only
+register <code class="code">.d</code> contains the current vertical place in the diversion.
+If the input text is not being diverted, <code class="code">.d</code> reports the same
+location as the register <code class="code">nl</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002eh_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.h]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eh_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eh"></a>
+<a class="index-entry-id" id="index-high_002dwater-mark-register-_0028_002eh_0029"></a>
+<a class="index-entry-id" id="index-mark_002c-high_002dwater_002c-register-_0028_002eh_0029"></a>
+<a class="index-entry-id" id="index-position-of-lowest-text-line-_0028_002eh_0029"></a>
+<a class="index-entry-id" id="index-text-line_002c-position-of-lowest-_0028_002eh_0029"></a>
+<p>The read-only register <code class="code">.h</code> stores the <em class="dfn">high-water mark</em> on the
+current page or in the current diversion. It corresponds to the text
+baseline of the lowest line on the page.<a class="footnote" id="DOCF113" href="groff.html_fot.html#FOOT113"><sup>113</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tm .h==\n[.h], nl==\n[nl]
+ &rArr; .h==0, nl==-1
+This is a test.
+.br
+.sp 2
+.tm .h==\n[.h], nl==\n[nl]
+ &rArr; .h==40, nl==120
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_002eh-register_002c-difference-from-nl"></a>
+<a class="index-entry-id" id="index-nl-register_002c-difference-from-_002eh"></a>
+<p>As implied by the example, vertical motion does not produce text
+baselines and thus does not increase the value interpolated by
+&lsquo;<samp class="samp">\n[.h]</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bdn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[dn]</code></strong><a class="copiable-link" href='#index-_005cn_005bdn_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-dn"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bdl_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[dl]</code></strong><a class="copiable-link" href='#index-_005cn_005bdl_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-dl"></a>
+<a class="index-entry-id" id="index-dn-register_002c-and-da-_0028boxa_0029"></a>
+<a class="index-entry-id" id="index-dl-register_002c-and-da-_0028boxa_0029"></a>
+<a class="index-entry-id" id="index-da-request_002c-and-dn-_0028dl_0029"></a>
+<a class="index-entry-id" id="index-boxa-request_002c-and-dn-_0028dl_0029"></a>
+<p>After completing a diversion, the writable registers <code class="code">dn</code> and
+<code class="code">dl</code> contain its vertical and horizontal sizes. Only the lines
+just processed are counted: for the computation of <code class="code">dn</code> and
+<code class="code">dl</code>, the requests <code class="code">da</code> and <code class="code">boxa</code> are handled as if
+<code class="code">di</code> and <code class="code">box</code> had been used, respectively&mdash;lines that have
+been already stored in the diversion (box) are not taken into account.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; Center text both horizontally and vertically.
+.\&quot; Macro .(c starts centering mode; .)c terminates it.
+.
+.\&quot; Disable the escape character with .eo so that we
+.\&quot; don't have to double backslashes on the &quot;\n&quot;s.
+.eo
+.de (c
+. br
+. ev (c
+. evc 0
+. in 0
+. nf
+. di @c
+..
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de )c
+. br
+. ev
+. di
+. nr @s (((\n[.t]u - \n[dn]u) / 2u) - 1v)
+. sp \n[@s]u
+. ce 1000
+. @c
+. ce 0
+. sp \n[@s]u
+. br
+. fi
+. rr @s
+. rm @c
+..
+.ec
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0021anything"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\!</code><span class="r"><i class="slanted">anything</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0021anything'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0021"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_003fanything_005c_003f"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\?</code><span class="r"><i class="slanted">anything</i></span><code class="t">\?</code></strong><a class="copiable-link" href='#index-_005c_003fanything_005c_003f'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_003f"></a>
+<a class="index-entry-id" id="index-transparent-output-_0028_005c_0021_002c-_005c_003f_0029"></a>
+<a class="index-entry-id" id="index-output_002c-transparent-_0028_005c_0021_002c-_005c_003f_0029"></a>
+<p><em class="dfn">Transparently</em> embed <var class="var">anything</var> into the current diversion,
+preventing requests, macro calls, and escape sequences from being
+interpreted when read into a diversion. This is useful for preventing
+them from taking effect until the diverted text is actually output. The
+<code class="code">\!</code> escape sequence transparently embeds input up to and including
+the end of the line. The <code class="code">\?</code> escape sequence transparently embeds
+input until its own next occurrence.
+</p>
+<a class="index-entry-id" id="index-_005c_003f_002c-and-copy-mode-1"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-_005c_003f-1"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005c_003f-1"></a>
+<a class="index-entry-id" id="index-_005c_0021_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-_005c_0021"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005c_0021"></a>
+<p><var class="var">anything</var> may not contain newlines; use <code class="code">\!</code> by itself to
+embed newlines in a diversion. The escape sequence <code class="code">\?</code> is also
+recognized in copy mode and turned into a single internal code; it is
+this code that terminates <var class="var">anything</var>. Thus the following example
+prints&nbsp;4.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr x 1
+.nf
+.di d
+\?\\?\\\\?\\\\\\\\nx\\\\?\\?\?
+.di
+.nr x 2
+.di e
+.d
+.di
+.nr x 3
+.di f
+.e
+.di
+.nr x 4
+.f
+</pre></div></div>
+
+<p>Both escape sequences read the data in copy mode.
+</p>
+<a class="index-entry-id" id="index-_005c_0021_002c-in-top_002dlevel-diversion"></a>
+<a class="index-entry-id" id="index-top_002dlevel-diversion_002c-and-_005c_0021"></a>
+<a class="index-entry-id" id="index-diversion_002c-top_002dlevel_002c-and-_005c_0021"></a>
+<p>If <code class="code">\!</code> is used in the top-level diversion, its argument is
+directly embedded into GNU <code class="code">troff</code>&rsquo;s intermediate output. This can
+be used, for example, to control a postprocessor that processes the data
+before it is sent to an output driver.
+</p>
+<a class="index-entry-id" id="index-_005c_003f_002c-in-top_002dlevel-diversion"></a>
+<a class="index-entry-id" id="index-top_002dlevel-diversion_002c-and-_005c_003f"></a>
+<a class="index-entry-id" id="index-diversion_002c-top_002dlevel_002c-and-_005c_003f"></a>
+<p>The <code class="code">\?</code> escape used in the top-level diversion produces no output
+at all; its argument is simply ignored.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-_005c_0021_002c-and-output-request"></a>
+<a class="index-entry-id" id="index-output-request_002c-and-_005c_0021"></a>
+<a class="index-entry-id" id="index-output-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-output-request"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-output-request"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eoutput"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.output</code></strong> <var class="def-var-arguments">contents</var><a class="copiable-link" href='#index-_002eoutput'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-output"></a>
+<p>Emit <var class="var">contents</var> directly to GNU <code class="code">troff</code>&rsquo;s intermediate output
+(subject to copy mode interpretation); this is similar to <code class="code">\!</code> used
+at the top level. An initial neutral double quote in <var class="var">contents</var> is
+stripped to allow embedding of leading spaces.
+</p>
+<p>This request can&rsquo;t be used before the first page has started&mdash;if you
+get an error, simply insert <code class="code">.br</code> before the <code class="code">output</code> request.
+</p>
+<p>Use with caution! It is normally only needed for mark-up used by a
+postprocessor that does something with the output before sending it to
+the output device, filtering out <var class="var">contents</var> again.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002easciify"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.asciify</code></strong> <var class="def-var-arguments">div</var><a class="copiable-link" href='#index-_002easciify'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-asciify"></a>
+<a class="index-entry-id" id="index-unformatting-diversions-_0028asciify_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-unformatting-_0028asciify_0029"></a>
+<a class="index-entry-id" id="index-trin-request_002c-and-asciify"></a>
+<p><em class="dfn">Unformat</em> the diversion <var class="var">div</var> in a way such that Unicode basic
+Latin (<abbr class="acronym">ASCII</abbr>) characters, characters translated with the
+<code class="code">trin</code> request, space characters, and some escape sequences, that
+were formatted and diverted into <var class="var">div</var> are treated like ordinary
+input characters when <var class="var">div</var> is reread. Doing so can be useful in
+conjunction with the <code class="code">writem</code> request. <code class="code">asciify</code> can be also
+used for gross hacks; for example, the following sets
+register&nbsp;<code class="code">n</code> to&nbsp;1.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tr @.
+.di x
+@nr n 1
+.br
+.di
+.tr @@
+.asciify x
+.x
+</pre></div></div>
+
+<p><code class="code">asciify</code> cannot return all items in a diversion to their source
+equivalent: nodes such as those produced by the <code class="code">\N</code> escape
+sequence will remain nodes, so the result cannot be guaranteed to be a
+pure string. See <a class="xref" href="Copy-Mode.html">Copy Mode</a>. Glyph parameters such as the type face
+and size are not preserved; use <code class="code">unformat</code> to achieve that.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eunformat"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.unformat</code></strong> <var class="def-var-arguments">div</var><a class="copiable-link" href='#index-_002eunformat'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-unformat"></a>
+<p>Like <code class="code">asciify</code>, unformat the diversion <var class="var">div</var>. However,
+<code class="code">unformat</code> handles only tabs and spaces between words, the latter
+usually arising from spaces or newlines in the input. Tabs are treated
+as input tokens, and spaces become adjustable again. The vertical sizes
+of lines are not preserved, but glyph information (font, type size,
+space width, and so on) is retained.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Punning-Names.html">Punning Names</a>, Previous: <a href="Traps.html">Traps</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Document-Formats.html b/doc/groff.html.node/Document-Formats.html
new file mode 100644
index 0000000..9079d67
--- /dev/null
+++ b/doc/groff.html.node/Document-Formats.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Document Formats (The GNU Troff Manual)</title>
+
+<meta name="description" content="Document Formats (The GNU Troff Manual)">
+<meta name="keywords" content="Document Formats (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Columnation.html" rel="next" title="Columnation">
+<link href="Indexing.html" rel="prev" title="Indexing">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Document-Formats">
+<div class="nav-panel">
+<p>
+Next: <a href="Columnation.html" accesskey="n" rel="next">Columnation</a>, Previous: <a href="Indexing.html" accesskey="p" rel="prev">Indexing</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Document-Formats-1">3.2.9 Document Formats</h4>
+<a class="index-entry-id" id="index-document-formats"></a>
+
+<p>Some macro packages supply stock configurations of certain documents,
+like business letters and memoranda. These often also have provision
+for a <i class="slanted">cover sheet</i>, which may be rigid in its format. With
+these features, it is even more important to use the package&rsquo;s macros in
+preference to the formatter requests presented earlier, where possible.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Document-Parts.html b/doc/groff.html.node/Document-Parts.html
new file mode 100644
index 0000000..7b83511
--- /dev/null
+++ b/doc/groff.html.node/Document-Parts.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Document Parts (The GNU Troff Manual)</title>
+
+<meta name="description" content="Document Parts (The GNU Troff Manual)">
+<meta name="keywords" content="Document Parts (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Language-Concepts.html" rel="up" title="Language Concepts">
+<link href="Argument-Units.html" rel="prev" title="Argument Units">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Document-Parts">
+<div class="nav-panel">
+<p>
+Previous: <a href="Argument-Units.html" accesskey="p" rel="prev">Argument Units</a>, Up: <a href="Language-Concepts.html" accesskey="u" rel="up">Language Concepts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Document-Parts-1">6.1.1.3 Document Parts</h4>
+
+<p>A correct intermediate output document consists of two parts, the
+<em class="dfn">prologue</em> and the <em class="dfn">body</em>.
+</p>
+<p>The task of the prologue is to set the general device parameters using
+three exactly specified commands. <code class="code">gtroff</code>&rsquo;s prologue is
+guaranteed to consist of the following three lines (in that order):
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">x T <var class="var">device</var>
+x res <var class="var">n</var> <var class="var">h</var> <var class="var">v</var>
+x init
+</pre></div></div>
+
+<p>with the arguments set as outlined in <a class="ref" href="Device-Control-Commands.html">Device Control Commands</a>.
+The parser for the intermediate output format is able to interpret
+additional whitespace and comments as well even in the prologue.
+</p>
+<p>The body is the main section for processing the document data.
+Syntactically, it is a sequence of any commands different from the ones
+used in the prologue. Processing is terminated as soon as the first
+&lsquo;<samp class="samp">x&nbsp;stop</samp>&rsquo;<!-- /@w --> command is encountered; the last line of any
+<code class="code">gtroff</code> intermediate output always contains such a command.
+</p>
+<p>Semantically, the body is page oriented. A new page is started by a
+&lsquo;<samp class="samp">p</samp>&rsquo; command. Positioning, writing, and drawing commands are always
+done within the current page, so they cannot occur before the first
+&lsquo;<samp class="samp">p</samp>&rsquo; command. Absolute positioning (by the &lsquo;<samp class="samp">H</samp>&rsquo; and &lsquo;<samp class="samp">V</samp>&rsquo;
+commands) is done relative to the current page; all other positioning is
+done relative to the current location within this page.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Drawing-Geometric-Objects.html b/doc/groff.html.node/Drawing-Geometric-Objects.html
new file mode 100644
index 0000000..fa0732f
--- /dev/null
+++ b/doc/groff.html.node/Drawing-Geometric-Objects.html
@@ -0,0 +1,361 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Drawing Geometric Objects (The GNU Troff Manual)</title>
+
+<meta name="description" content="Drawing Geometric Objects (The GNU Troff Manual)">
+<meta name="keywords" content="Drawing Geometric Objects (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Traps.html" rel="next" title="Traps">
+<link href="Page-Motions.html" rel="prev" title="Page Motions">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Drawing-Geometric-Objects">
+<div class="nav-panel">
+<p>
+Next: <a href="Traps.html" accesskey="n" rel="next">Traps</a>, Previous: <a href="Page-Motions.html" accesskey="p" rel="prev">Page Motions</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Drawing-Geometric-Objects-1">5.26 Drawing Geometric Objects</h3>
+<a class="index-entry-id" id="index-drawing-requests"></a>
+<a class="index-entry-id" id="index-requests-for-drawing"></a>
+
+<p>A few of the formatter&rsquo;s escape sequences draw lines and other geometric
+objects. Combined with each other and with page motion commands
+(see <a class="pxref" href="Page-Motions.html">Page Motions</a>), a wide variety of figures is possible. For
+complex drawings, these operations can be cumbersome; the preprocessors
+<code class="code">gpic</code> or <code class="code">ggrn</code> are typically used instead.
+</p>
+<p>The <code class="code">\l</code> and <code class="code">\L</code> escape sequences draw horizontal and
+vertical sequences of glyphs, respectively. Even the simplest of
+output devices supports them.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cl_0027l_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\l<code class="code">'</code></code><span class="r"><i class="slanted">l</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cl_0027l_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cl"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cl_0027lc_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\l<code class="code">'</code></code><span class="r"><i class="slanted">lc</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cl_0027lc_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-horizontal-lines-_0028_005cl_0029"></a>
+<a class="index-entry-id" id="index-horizontal-line_002c-drawing-_0028_005cl_0029"></a>
+<a class="index-entry-id" id="index-line_002c-horizontal_002c-drawing-_0028_005cl_0029"></a>
+<p>Draw a horizontal line of length <var class="var">l</var> from the drawing position.
+Rightward motion is positive. Afterward, the drawing position is at the
+right end of the line. The default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-baseline-rule-special-character_0028_005c_005bru_005d_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-underscore-_0028_005c_005bru_005d_0029"></a>
+<a class="index-entry-id" id="index-line-drawing-glyph"></a>
+<a class="index-entry-id" id="index-glyph_002c-for-line-drawing"></a>
+<p>The optional second parameter&nbsp;<var class="var">c</var> is a character with which to
+draw the line. The default is the baseline rule special character,
+<code class="code">\[ru]</code>.
+</p>
+<a class="index-entry-id" id="index-dummy-character-_0028_005c_0026_0029_002c-effect-on-_005cl-escape-sequence"></a>
+<a class="index-entry-id" id="index-character_002c-dummy-_0028_005c_0026_0029_002c-effect-on-_005cl-escape-sequence"></a>
+<p>If <var class="var">c</var> is a valid scaling unit, put <code class="code">\&amp;</code> after <var class="var">l</var> to
+disambiguate the input.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de textbox
+\[br]\\$*\[br]\l'|0\[rn]'\l'|0\[ul]'
+..
+</pre></div></div>
+
+<p>The foregoing outputs a box rule (a vertical line), the text
+argument(s), and another box rule. We employ the boundary-relative
+motion operator &lsquo;<samp class="samp">|</samp>&rsquo;. Finally, the line-drawing escape sequences
+draw a radical extender (a form of overline) and an underline from the
+drawing position to the position coresponding to beginning of the
+<em class="emph">input</em> line. The drawing position returns to just after the
+right-hand box rule because the lengths of the drawn lines are negative,
+as noted above.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cL_0027l_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\L<code class="code">'</code></code><span class="r"><i class="slanted">l</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cL_0027l_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cL"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cL_0027lc_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\L<code class="code">'</code></code><span class="r"><i class="slanted">lc</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cL_0027lc_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-vertical-lines-_0028_005cL_0029"></a>
+<a class="index-entry-id" id="index-vertical-line-drawing-_0028_005cL_0029"></a>
+<a class="index-entry-id" id="index-line_002c-vertical_002c-drawing-_0028_005cL_0029"></a>
+<a class="index-entry-id" id="index-line-drawing-glyph-1"></a>
+<a class="index-entry-id" id="index-glyph-for-line-drawing"></a>
+<a class="index-entry-id" id="index-box-rule-glyph-_0028_005c_005bbr_005d_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-box-rule-_0028_005c_005bbr_005d_0029"></a>
+<p>Draw a vertical line of length <var class="var">l</var> from the drawing position.
+Downward motion is positive. The default scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. The
+default character is the box rule, <code class="code">\[br]</code>. As with vertical
+motion escape sequences, text processing continues where the line ends.
+<code class="code">\L</code> is otherwise similar to <code class="code">\l</code>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ nroff &lt;&lt;EOF
+This is a \L'3v'test.
+EOF
+ &rArr; This is a
+ &rArr; |
+ &rArr; |
+ &rArr; |test.
+</pre></div></div>
+
+<p>When writing text, the drawing position is at the text baseline; recall
+<a class="ref" href="Page-Geometry.html">Page Geometry</a>.
+</p></dd></dl>
+
+<p>The <code class="code">\D</code> escape sequence provides <em class="dfn">drawing commands</em> that
+direct the output device to render geometrical objects rather than
+glyphs. Specific devices may support only a subset, or may feature
+additional ones; consult the man page for the output driver in use.
+Terminal devices in particular implement almost none. See <a class="xref" href="Graphics-Commands.html">Graphics Commands</a>.
+</p>
+<p>Rendering starts at the drawing position; when finished, the drawing
+position is left at the rightmost point of the object, even for closed
+figures, except where noted. GNU <code class="code">troff</code> draws stroked (outlined)
+objects with the stroke color, and shades filled ones with the fill
+color. See <a class="xref" href="Colors.html">Colors</a>. Coordinates <var class="var">h</var> and <var class="var">v</var> are horizontal
+and vertical motions relative to the drawing position or previous point
+in the command. The default scaling unit for horizontal measurements
+(and diameters of circles) is &lsquo;<samp class="samp">m</samp>&rsquo;; for vertical ones, &lsquo;<samp class="samp">v</samp>&rsquo;.
+</p>
+<p>Circles, ellipses, and polygons can be drawn filled or stroked. These
+are independent properties; if you want a filled, stroked figure, you
+must draw the same figure twice using each drawing command. A filled
+figure is always smaller than an outlined one because the former is
+drawn only within its defined area, whereas strokes have a line
+thickness (set with &lsquo;<samp class="samp">\D't'</samp>&rsquo;).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">\h'1i'\v'1i'\
+\# increase line thickness
+\Z'\D't 5p''\
+\# draw stroked (unfilled) polygon
+\Z'\D'p 3 3 -6 0''\
+\# draw filled (solid) polygon
+\Z'\D'P 3 3 -6 0''
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cD_0027command-argument-_2026_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\D<code class="code">'</code></code><span class="r"><i class="slanted">command argument &hellip;</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cD_0027command-argument-_2026_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cD"></a>
+<p>Drawing command escape sequence parameters begin with an ordinary
+character, <var class="var">command</var>, selecting the type of object to be drawn,
+followed by <var class="var">argument</var>s whose meaning is determined by
+<var class="var">command</var>.
+</p>
+<dl class="table">
+<dt id='index-drawing-a-spline-_0028_005cD_0027_007e-_2026_0027_0029'><span><code class="code">\D'~ <var class="var">h1</var> <var class="var">v1</var> &hellip; <var class="var">hn</var> <var class="var">vn</var>'</code><a class="copiable-link" href='#index-drawing-a-spline-_0028_005cD_0027_007e-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-spline_002c-drawing-_0028_005cD_0027_007e-_2026_0027_0029"></a>
+<p>Draw a B-spline to each point in sequence, leaving the drawing position
+at (<var class="var">hn</var>, <var class="var">vn</var>).
+</p>
+</dd>
+<dt id='index-arc_002c-drawing-_0028_005cD_0027a-_2026_0027_0029'><span><code class="code">\D'a <var class="var">hc</var> <var class="var">vc</var> <var class="var">h</var> <var class="var">v</var>'</code><a class="copiable-link" href='#index-arc_002c-drawing-_0028_005cD_0027a-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-an-arc-_0028_005cD_0027a-_2026_0027_0029"></a>
+<p>Draw a circular arc centered at (<var class="var">hc</var>, <var class="var">vc</var>) counterclockwise
+from the drawing position to a point (<var class="var">h</var>, <var class="var">v</var>) relative to the
+center. <a class="footnote" id="DOCF105" href="groff.html_fot.html#FOOT105"><sup>105</sup></a>
+</p>
+</dd>
+<dt id='index-circle_002c-stroked_002c-drawing-_0028_005cD_0027c-_2026_0027_0029'><span><code class="code">\D'c <var class="var">d</var>'</code><a class="copiable-link" href='#index-circle_002c-stroked_002c-drawing-_0028_005cD_0027c-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-stroked-circle-_0028_005cD_0027c-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-stroked-circle_002c-drawing-_0028_005cD_0027c-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-circle_002c-outlined_002c-drawing-_0028_005cD_0027c-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-drawing-an-outlined-circle-_0028_005cD_0027c-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-outlined-circle_002c-drawing-_0028_005cD_0027c-_2026_0027_0029"></a>
+<p>Draw a circle of diameter <var class="var">d</var> with its leftmost point at the drawing
+position.
+</p>
+</dd>
+<dt id='index-circle_002c-filled_002c-drawing-_0028_005cD_0027C-_2026_0027_0029'><span><code class="code">\D'C <var class="var">d</var>'</code><a class="copiable-link" href='#index-circle_002c-filled_002c-drawing-_0028_005cD_0027C-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-filled-circle-_0028_005cD_0027C-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-filled-circle_002c-drawing-_0028_005cD_0027C-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-circle_002c-solid_002c-drawing-_0028_005cD_0027C-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-drawing-a-solid-circle-_0028_005cD_0027C-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-solid-circle_002c-drawing-_0028_005cD_0027C-_2026_0027_0029"></a>
+<p>As &lsquo;<samp class="samp">\D'C <span class="r">&hellip;</span>'</samp>&rsquo;, but the circle is filled.
+</p>
+</dd>
+<dt id='index-ellipse_002c-stroked_002c-drawing-_0028_005cD_0027e-_2026_0027_0029'><span><code class="code">\D'e <var class="var">h</var> <var class="var">v</var>'</code><a class="copiable-link" href='#index-ellipse_002c-stroked_002c-drawing-_0028_005cD_0027e-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-stroked-ellipse-_0028_005cD_0027e-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-stroked-ellipse_002c-drawing-_0028_005cD_0027e-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-ellipse_002c-outlined_002c-drawing-_0028_005cD_0027e-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-drawing-an-outlined-ellipse-_0028_005cD_0027e-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-outlined-ellipse_002c-drawing-_0028_005cD_0027e-_2026_0027_0029"></a>
+<p>Draw an ellipse of width <var class="var">h</var> and height <var class="var">v</var> with its leftmost
+point at the drawing position.
+</p>
+</dd>
+<dt id='index-ellipse_002c-filled_002c-drawing-_0028_005cD_0027E-_2026_0027_0029'><span><code class="code">\D'E <var class="var">x</var> <var class="var">y</var>'</code><a class="copiable-link" href='#index-ellipse_002c-filled_002c-drawing-_0028_005cD_0027E-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-filled-ellipse-_0028_005cD_0027E-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-filled-ellipse_002c-drawing-_0028_005cD_0027E-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-ellipse_002c-solid_002c-drawing-_0028_005cD_0027E-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-drawing-a-solid-ellipse-_0028_005cD_0027E-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-solid-ellipse_002c-drawing-_0028_005cD_0027E-_2026_0027_0029"></a>
+<p>As &lsquo;<samp class="samp">\D'e <span class="r">&hellip;</span>'</samp>&rsquo;, but the ellipse is filled.
+</p>
+</dd>
+<dt id='index-line_002c-drawing-_0028_005cD_0027l-_2026_0027_0029'><span><code class="code">\D'l <var class="var">dx</var> <var class="var">dy</var>'</code><a class="copiable-link" href='#index-line_002c-drawing-_0028_005cD_0027l-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-line-_0028_005cD_0027l-_2026_0027_0029"></a>
+<p>Draw line from the drawing position to (<var class="var">h</var>, <var class="var">v</var>).
+</p>
+<p>The following is a macro for drawing a box around a text argument; for
+simplicity, the box margin is a fixed at 0.2<span class="dmn">m</span>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de TEXTBOX
+. nr @wd \w'\\$1'
+\h'.2m'\
+\h'-.2m'\v'(.2m - \\n[rsb]u)'\
+\D'l 0 -(\\n[rst]u - \\n[rsb]u + .4m)'\
+\D'l (\\n[@wd]u + .4m) 0'\
+\D'l 0 (\\n[rst]u - \\n[rsb]u + .4m)'\
+\D'l -(\\n[@wd]u + .4m) 0'\
+\h'.2m'\v'-(.2m - \\n[rsb]u)'\
+\\$1\
+\h'.2m'
+..
+</pre></div></div>
+
+<p>The argument is measured with the <code class="code">\w</code> escape sequence. Its width
+is stored in register <code class="code">@wd</code>. <code class="code">\w</code> also sets the registers
+<code class="code">rst</code> and <code class="code">rsb</code>; these contain its maximum vertical extents of
+the argument. Then, four lines are drawn to form a box, offset by the
+box margin.
+</p>
+</dd>
+<dt id='index-polygon_002c-stroked_002c-drawing-_0028_005cD_0027p-_2026_0027_0029'><span><code class="code">\D'p <var class="var">h1</var> <var class="var">v1</var> &hellip; <var class="var">hn</var> <var class="var">vn</var>'</code><a class="copiable-link" href='#index-polygon_002c-stroked_002c-drawing-_0028_005cD_0027p-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-stroked-polygon-_0028_005cD_0027p-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-stroked-polygon_002c-drawing-_0028_005cD_0027p-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-polygon_002c-outlined_002c-drawing-_0028_005cD_0027p-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-drawing-an-outlined-polygon-_0028_005cD_0027p-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-outlined-polygon_002c-drawing-_0028_005cD_0027p-_2026_0027_0029"></a>
+<p>Draw polygon with vertices at drawing position and each point in
+sequence. GNU <code class="code">troff</code> closes the polygon by drawing a line from
+(<var class="var">hn</var>, <var class="var">vn</var>) back to the initial drawing position.
+Afterward, the drawing position is left at (<var class="var">hn</var>, <var class="var">vn</var>).
+</p>
+</dd>
+<dt id='index-polygon_002c-filled_002c-drawing-_0028_005cD_0027P-_2026_0027_0029'><span><code class="code">\D'P <var class="var">dx1</var> <var class="var">dy1</var> <var class="var">dx2</var> <var class="var">dy2</var> &hellip;'</code><a class="copiable-link" href='#index-polygon_002c-filled_002c-drawing-_0028_005cD_0027P-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-drawing-a-filled-polygon-_0028_005cD_0027P-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-filled-polygon_002c-drawing-_0028_005cD_0027P-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-polygon_002c-solid_002c-drawing-_0028_005cD_0027P-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-drawing-a-solid-polygon-_0028_005cD_0027P-_2026_0027_0029"></a>
+<a class="index-entry-id" id="index-solid-polygon_002c-drawing-_0028_005cD_0027P-_2026_0027_0029"></a>
+<p>As &lsquo;<samp class="samp">\D'P <span class="r">&hellip;</span>'</samp>&rsquo;, but the polygon is filled.
+</p>
+<p>The following macro is like the &lsquo;<samp class="samp">\D'l'</samp>&rsquo; example, but shades the
+box. We draw the box before writing the text because colors in GNU
+<code class="code">troff</code> have no transparency; in othe opposite order, the filled
+polygon would occlude the text.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de TEXTBOX
+. nr @wd \w'\\$1'
+\h'.2m'\
+\h'-.2m'\v'(.2m - \\n[rsb]u)'\
+\M[lightcyan]\
+\D'P 0 -(\\n[rst]u - \\n[rsb]u + .4m) \
+ (\\n[@wd]u + .4m) 0 \
+ 0 (\\n[rst]u - \\n[rsb]u + .4m) \
+ -(\\n[@wd]u + .4m) 0'\
+\h'.2m'\v'-(.2m - \\n[rsb]u)'\
+\M[]\
+\\$1\
+\h'.2m'
+..
+</pre></div></div>
+
+</dd>
+<dt id='index-line-thickness-_0028_005cD_0027t-_2026_0027_0029'><span><code class="code">\D't <var class="var">n</var>'</code><a class="copiable-link" href='#index-line-thickness-_0028_005cD_0027t-_2026_0027_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-thickness-of-lines-_0028_005cD_0027t-_2026_0027_0029"></a>
+<p>Set the stroke thickness of geometric objects to <var class="var">n</var> basic units. A
+zero <var class="var">n</var> selects the minimal supported thickness. A negative
+<var class="var">n</var> selects a thickness proportional to the type size; this is the
+default.
+</p></dd>
+</dl>
+</dd></dl>
+
+<p>In a hazy penumbra between text rendering and drawing commands we locate
+the bracket-building escape sequence, <code class="code">\b</code>. It can assemble
+apparently large glyphs by vertically stacking ordinary ones.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cb_0027contents_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\b<code class="code">'</code></code><span class="r"><i class="slanted">contents</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cb_0027contents_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cb"></a>
+<a class="index-entry-id" id="index-pile_002c-glyph-_0028_005cb_0029"></a>
+<a class="index-entry-id" id="index-glyph-pile-_0028_005cb_0029"></a>
+<a class="index-entry-id" id="index-stacking-glyphs-_0028_005cb_0029"></a>
+<p>Pile and center a sequence of glyphs vertically on the output line.
+<em class="dfn">Piling</em> stacks glyphs corresponding to each character in
+<var class="var">contents</var>, read from left to right, and placed from top to bottom.
+GNU <code class="code">troff</code> separates the glyphs vertically by 1<span class="dmn">m</span>, and the
+pile itself is centered 0.5<span class="dmn">m</span> above the text baseline. The
+horizontal drawing position is then advanced by the width of the widest
+glyph in the pile.
+</p>
+<a class="index-entry-id" id="index-_005cb_002c-limitations-of"></a>
+<a class="index-entry-id" id="index-limitations-of-_005cb-escape-sequence"></a>
+<p>This rather inflexible positioning algorithm doesn&rsquo;t work with the
+<code class="code">dvi</code> output device since its bracket pieces vary in height.
+Instead, use the <code class="code">geqn</code> preprocessor.
+</p>
+<p><a class="ref" href="Manipulating-Spacing.html">Manipulating Spacing</a> describes how to adjust the vertical spacing
+of the output line with the <code class="code">\x</code> escape sequence.
+</p>
+<p>The application of <code class="code">\b</code> that lends its name is construction of
+brackets, braces, and parentheses when typesetting mathematics. We
+might construct a large opening (left) brace as follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">\b'\[lt]\[bv]\[lk]\[bv]\[lb]'
+</pre></div></div>
+
+<p>See <cite class="cite">groff_char<span class="r">(7)</span></cite> for a list of special character
+identifiers.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Traps.html">Traps</a>, Previous: <a href="Page-Motions.html">Page Motions</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Dummy-Characters.html b/doc/groff.html.node/Dummy-Characters.html
new file mode 100644
index 0000000..769574d
--- /dev/null
+++ b/doc/groff.html.node/Dummy-Characters.html
@@ -0,0 +1,166 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Dummy Characters (The GNU Troff Manual)</title>
+
+<meta name="description" content="Dummy Characters (The GNU Troff Manual)">
+<meta name="keywords" content="Dummy Characters (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Using-Fonts.html" rel="up" title="Using Fonts">
+<link href="Italic-Corrections.html" rel="prev" title="Italic Corrections">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Dummy-Characters">
+<div class="nav-panel">
+<p>
+Previous: <a href="Italic-Corrections.html" accesskey="p" rel="prev">Italic Corrections</a>, Up: <a href="Using-Fonts.html" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Dummy-Characters-1">5.19.10 Dummy Characters</h4>
+
+<p>As discussed in <a class="ref" href="Requests-and-Macros.html">Requests and Macros</a>, the first character on an
+input line is treated specially. Further, formatting a glyph has many
+consequences on formatter state (see <a class="pxref" href="Environments.html">Environments</a>). Occasionally,
+we want to escape this context or embrace some of those consequences
+without actually rendering a glyph to the output.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0026-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\&amp;</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0026-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0026"></a>
+<a class="index-entry-id" id="index-dummy-character-_0028_005c_0026_0029"></a>
+<a class="index-entry-id" id="index-character_002c-dummy-_0028_005c_0026_0029"></a>
+<p>Interpolate a dummy character, which is constitutive of output but
+invisible.<a class="footnote" id="DOCF81" href="groff.html_fot.html#FOOT81"><sup>81</sup></a> Its presence alters the interpretation context of a
+subsequent input character, and enjoys several applications.
+</p>
+<ul class="itemize mark-bullet">
+<li>Prevent insertion of extra space after an end-of-sentence character.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">Test.
+Test.
+ &rArr; Test. Test.
+Test.\&amp;
+Test.
+ &rArr; Test. Test.
+</pre></div></div>
+
+</li><li>Prevent recognition of a control character.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.Test
+ error&rarr; warning: macro 'Test' not defined
+\&amp;.Test
+ &rArr; .Test
+</pre></div></div>
+
+</li><li>Prevent kerning between two glyphs.
+
+
+</li><li>Translate a character to &ldquo;nothing&rdquo;.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tr JIjiK\&amp;k\&amp;UVuv
+Post universitum, alea jacta est, OK?
+ &rArr; Post vniversitvm, alea iacta est, O?
+</pre></div></div>
+</li></ul>
+
+<p>The dummy character escape sequence sees use in macro definitions as a
+means of ensuring that arguments are treated as text even if they begin
+with spaces or control characters.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de HD \&quot; typeset a simple bold heading
+. sp
+. ft B
+\&amp;\\$1 \&quot; exercise: remove the \&amp;
+. ft
+. sp
+..
+.HD .\|.\|.\|surprised?
+</pre></div></div>
+</dd></dl>
+
+<p>One way to think about the dummy character is to imagine placing the
+symbol &lsquo;<samp class="samp">&amp;</samp>&rsquo; in the input at a certain location; if doing so has all
+the side effects on formatting that you desire except for sticking an
+ugly ampersand in the midst of your text, the dummy character is what
+you want in its place.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0029-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\)</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0029-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0029"></a>
+<a class="index-entry-id" id="index-transparent-dummy-character-_0028_005c_0029_0029"></a>
+<a class="index-entry-id" id="index-character_002c-transparent-dummy-_0028_005c_0029_0029"></a>
+<a class="index-entry-id" id="index-dummy-character_002c-transparent-_0028_005c_0029_0029"></a>
+<p>Interpolate a <i class="slanted">transparent</i> dummy character&mdash;one that is
+transparent to end-of-sentence detection. It behaves as <code class="code">\&amp;</code>,
+except that <code class="code">\&amp;</code> is treated as letters and numerals normally are
+after &lsquo;<samp class="samp">.</samp>&rsquo;, &lsquo;<samp class="samp">?</samp>&rsquo; and &lsquo;<samp class="samp">!</samp>&rsquo;; <code class="code">\&amp;</code> cancels end-of-sentence
+detection, and <code class="code">\)</code> does not.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de Suffix-&amp;
+. nop \&amp;\\$1
+..
+.
+.de Suffix-)
+. nop \)\\$1
+..
+.
+Here's a sentence.\c
+.Suffix-&amp; '
+Another one.\c
+.Suffix-) '
+And a third.
+ &rArr; Here's a sentence.' Another one.' And a third.
+</pre></div></div>
+</dd></dl>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="Italic-Corrections.html">Italic Corrections</a>, Up: <a href="Using-Fonts.html">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/End_002dof_002dinput-Traps.html b/doc/groff.html.node/End_002dof_002dinput-Traps.html
new file mode 100644
index 0000000..4dad1f2
--- /dev/null
+++ b/doc/groff.html.node/End_002dof_002dinput-Traps.html
@@ -0,0 +1,187 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>End-of-input Traps (The GNU Troff Manual)</title>
+
+<meta name="description" content="End-of-input Traps (The GNU Troff Manual)">
+<meta name="keywords" content="End-of-input Traps (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Traps.html" rel="up" title="Traps">
+<link href="Leading-Space-Traps.html" rel="prev" title="Leading Space Traps">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="End_002dof_002dinput-Traps">
+<div class="nav-panel">
+<p>
+Previous: <a href="Leading-Space-Traps.html" accesskey="p" rel="prev">Leading Space Traps</a>, Up: <a href="Traps.html" accesskey="u" rel="up">Traps</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="End_002dof_002dinput-Traps-1">5.28.5 End-of-input Traps</h4>
+<a class="index-entry-id" id="index-end_002dof_002dinput-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-end_002dof_002dinput"></a>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eem"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.em</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eem'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-em"></a>
+<a class="index-entry-id" id="index-setting-end_002dof_002dinput-trap-_0028em_0029"></a>
+<a class="index-entry-id" id="index-end_002dof_002dinput-trap_002c-setting-_0028em_0029"></a>
+<a class="index-entry-id" id="index-trap_002c-end_002dof_002dinput_002c-setting-_0028em_0029"></a>
+<a class="index-entry-id" id="index-end_002dof_002dinput-macro-_0028em_0029"></a>
+<a class="index-entry-id" id="index-macro_002c-end_002dof_002dinput-_0028em_0029"></a>
+<p>Set a trap at the end of input, calling macro <var class="var">name</var> after the last
+line of the last input file has been processed. If no argument is
+given, any existing end-of-input trap is removed.
+</p>
+<p>For example, if the document had to have a section at the bottom of the
+last page for someone to approve it, the <code class="code">em</code> request could be
+used.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de approval
+\c
+. ne 3v
+. sp (\\n[.t]u - 3v)
+. in +4i
+. lc _
+. br
+Approved:\t\a
+. sp
+Date:\t\t\a
+..
+.
+.em approval
+</pre></div></div>
+
+<p>The <code class="code">\c</code> in the above example needs explanation. For historical
+reasons (compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>), the
+end-of-input macro exits as soon as it causes a page break if no
+partially collected line remains.<a class="footnote" id="DOCF111" href="groff.html_fot.html#FOOT111"><sup>111</sup></a>
+</p>
+<a class="index-entry-id" id="index-page-break_002c-final"></a>
+<a class="index-entry-id" id="index-break_002c-page_002c-final"></a>
+<a class="index-entry-id" id="index-page-ejection_002c-of-final-page"></a>
+<a class="index-entry-id" id="index-ejection_002c-page_002c-of-final-page"></a>
+<p>Let us assume that there is no <code class="code">\c</code> in the above <code class="code">approval</code>
+macro, that the page is full, and last output line has been broken with,
+say, a <code class="code">br</code> request. Because there is no more room, a <code class="code">ne</code>
+request at this point causes a page ejection, which in turn makes
+<code class="code">troff</code> exit immediately as just described. In most situations,
+this is not desired; people generally want to format the input after
+<code class="code">ne</code>.
+</p>
+<p>To force processing of the whole end-of-input macro independently of
+this behavior, it is thus advisable to (invisibly) ensure the existence
+of a partially collected line (<code class="code">\c</code>) whenever there is a chance
+that a page break can happen. In the above example, invoking the
+<code class="code">ne</code> request ensures that there is room for the subsequent
+formatted output on the same page, so we need insert <code class="code">\c</code> only
+once.
+</p>
+<p>The next example shows how to append three lines, then start a new page
+unconditionally. Since &lsquo;<samp class="samp">.ne&nbsp;1</samp>&rsquo;<!-- /@w --> doesn&rsquo;t give the desired
+effect&mdash;there is always one line available or we are already at the
+beginning of the next page&mdash;we temporarily increase the page length by
+one line so that we can use &lsquo;<samp class="samp">.ne&nbsp;2</samp>&rsquo;<!-- /@w -->.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de EM
+.pl +1v
+\c
+.ne 2
+line one
+.br
+\c
+.ne 2
+line two
+.br
+\c
+.ne 2
+line three
+.br
+.pl -1v
+\c
+'bp
+..
+.em EM
+</pre></div></div>
+
+<p>This specific feature affects only the first potential page break caused
+by the end-of-input macro; further page breaks emitted by the macro are
+handled normally.
+</p>
+<p>Another possible use of the <code class="code">em</code> request is to make GNU
+<code class="code">troff</code> emit a single large page instead of multiple pages. For
+example, one may want to produce a long plain text file for reading
+in a terminal or emulator without page footers and headers interrupting
+the body of the document. One approach is to set the page length at the
+beginning of the document to a very large value to hold all the
+text,<a class="footnote" id="DOCF112" href="groff.html_fot.html#FOOT112"><sup>112</sup></a> and
+automatically adjust it to the exact height of the document after the
+text has been output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de adjust-page-length
+. br
+. pl \\n[nl]u \&quot; \n[nl]: current vertical position
+..
+.
+.de single-page-mode
+. pl 99999
+. em adjust-page-length
+..
+.
+.\&quot; Activate the above code if configured.
+.if \n[do-continuous-rendering] \
+. single-page-mode
+</pre></div></div>
+
+<p>Since only one end-of-input trap exists and another macro package may
+already use it, care must be taken not to break the mechanism. A simple
+solution would be to append the above macro to the macro package&rsquo;s
+end-of-input macro using the <code class="code">am</code> request.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="Leading-Space-Traps.html">Leading Space Traps</a>, Up: <a href="Traps.html">Traps</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Environment.html b/doc/groff.html.node/Environment.html
new file mode 100644
index 0000000..cd92fd5
--- /dev/null
+++ b/doc/groff.html.node/Environment.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Environment (The GNU Troff Manual)</title>
+
+<meta name="description" content="Environment (The GNU Troff Manual)">
+<meta name="keywords" content="Environment (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Invoking-groff.html" rel="up" title="Invoking groff">
+<link href="Macro-Directories.html" rel="next" title="Macro Directories">
+<link href="Groff-Options.html" rel="prev" title="Groff Options">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Environment">
+<div class="nav-panel">
+<p>
+Next: <a href="Macro-Directories.html" accesskey="n" rel="next">Macro Directories</a>, Previous: <a href="Groff-Options.html" accesskey="p" rel="prev">Options</a>, Up: <a href="Invoking-groff.html" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Environment-1">2.2 Environment</h3>
+<a class="index-entry-id" id="index-environment-variables"></a>
+<a class="index-entry-id" id="index-variables-in-environment"></a>
+
+<p>There are also several environment variables (of the operating system,
+not within <code class="code">gtroff</code>) that can modify the behavior of <code class="code">groff</code>.
+</p>
+<dl class="table">
+<dt id='index-GROFF_005fBIN_005fPATH_002c-environment-variable'><span><code class="code">GROFF_BIN_PATH</code><a class="copiable-link" href='#index-GROFF_005fBIN_005fPATH_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>This search path, followed by <code class="code">PATH</code>, is used for commands executed
+by <code class="code">groff</code>.
+</p>
+</dd>
+<dt id='index-GROFF_005fCOMMAND_005fPREFIX_002c-environment-variable'><span><code class="code">GROFF_COMMAND_PREFIX</code><a class="copiable-link" href='#index-GROFF_005fCOMMAND_005fPREFIX_002c-environment-variable'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-command-prefix"></a>
+<a class="index-entry-id" id="index-prefix_002c-for-commands"></a>
+<p>If this is set to&nbsp;<var class="var">X</var>, then <code class="command">groff</code> runs
+<code class="command"><var class="var">X</var>troff</code> instead of <code class="command">gtroff</code>. This also applies
+to <code class="command">tbl</code>, <code class="command">pic</code>, <code class="command">eqn</code>, <code class="command">grn</code>,
+<code class="command">chem</code>, <code class="command">refer</code>, and <code class="command">soelim</code>. It does not
+apply to <code class="command">grops</code>, <code class="command">grodvi</code>, <code class="command">grotty</code>,
+<code class="command">pre-grohtml</code>, <code class="command">post-grohtml</code>, <code class="command">preconv</code>,
+<code class="command">grolj4</code>, <code class="command">gropdf</code>, and <code class="command">gxditview</code>.
+</p>
+<p>The default command prefix is determined during the installation
+process. If a non-GNU <code class="code">troff</code> system is found, prefix &lsquo;<samp class="samp">g</samp>&rsquo; is
+used, none otherwise.
+</p>
+</dd>
+<dt id='index-GROFF_005fENCODING_002c-environment-variable'><span><code class="code">GROFF_ENCODING</code><a class="copiable-link" href='#index-GROFF_005fENCODING_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>The value of this variable is passed to the <code class="code">preconv</code>
+preprocessor&rsquo;s <samp class="option">-e</samp> option to select the character encoding of
+input files. This variable&rsquo;s existence implies the <code class="code">groff</code> option
+<samp class="option">-k</samp>. If set but empty, <code class="code">groff</code> calls <code class="code">preconv</code>
+without an <samp class="option">-e</samp> option. <code class="code">groff</code>&rsquo;s <samp class="option">-K</samp> option
+overrides <code class="env">GROFF_ENCODING</code>. See the <cite class="cite">preconv<span class="r">(7)</span></cite> man page;
+type &lsquo;<samp class="samp">man preconv</samp>&rsquo; at the command line to view it.
+</p>
+</dd>
+<dt id='index-GROFF_005fFONT_005fPATH_002c-environment-variable'><span><code class="code">GROFF_FONT_PATH</code><a class="copiable-link" href='#index-GROFF_005fFONT_005fPATH_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>A list of directories in which to seek the selected output device&rsquo;s
+directory of device and font description files. GNU <code class="code">troff</code>
+will search directories given as arguments to any specified <samp class="option">-F</samp>
+options before these, and a built-in list of directories after them.
+See <a class="xref" href="Font-Directories.html">Font Directories</a> and the <cite class="cite">troff<span class="r">(1)</span></cite> or
+<cite class="cite">gtroff<span class="r">(1)</span></cite> man pages.
+</p>
+</dd>
+<dt id='index-GROFF_005fTMAC_005fPATH_002c-environment-variable'><span><code class="code">GROFF_TMAC_PATH</code><a class="copiable-link" href='#index-GROFF_005fTMAC_005fPATH_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>A list of directories in which to seek macro files. GNU <code class="code">troff</code>
+will search directories given as arguments to any specified <samp class="option">-M</samp>
+options before these, and a built-in list of directories after them.
+See <a class="xref" href="Macro-Directories.html">Macro Directories</a> and the <cite class="cite">troff<span class="r">(1)</span></cite> or
+<cite class="cite">gtroff<span class="r">(1)</span></cite> man pages.
+</p>
+</dd>
+<dt id='index-GROFF_005fTMPDIR_002c-environment-variable'><span><code class="code">GROFF_TMPDIR</code><a class="copiable-link" href='#index-GROFF_005fTMPDIR_002c-environment-variable'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TMPDIR_002c-environment-variable"></a>
+<p>The directory in which <code class="code">groff</code> creates temporary files. If this is
+not set and <code class="env">TMPDIR</code> is set, temporary files are created in that
+directory. Otherwise temporary files are created in a system-dependent
+default directory (on Unix and GNU/Linux systems, this is usually
+<samp class="file">/tmp</samp>). <code class="code">grops</code>, <code class="code">grefer</code>, <code class="code">pre-grohtml</code>, and
+<code class="code">post-grohtml</code> can create temporary files in this directory.
+</p>
+</dd>
+<dt id='index-GROFF_005fTYPESETTER_002c-environment-variable'><span><code class="code">GROFF_TYPESETTER</code><a class="copiable-link" href='#index-GROFF_005fTYPESETTER_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>Sets the default output device. If empty or not set, a build-time
+default (often <code class="code">ps</code>) is used. The <samp class="option">-T<var class="var">dev</var></samp> option
+overrides <code class="env">GROFF_TYPESETTER</code>.
+</p>
+</dd>
+<dt id='index-SOURCE_005fDATE_005fEPOCH_002c-environment-variable'><span><code class="code">SOURCE_DATE_EPOCH</code><a class="copiable-link" href='#index-SOURCE_005fDATE_005fEPOCH_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>A timestamp (expressed as seconds since the Unix epoch) to use as the
+output creation timestamp in place of the current time. The time is
+converted to human-readable form using <cite class="cite">localtime<span class="r">(3)</span></cite> when the
+formatter starts up and stored in registers usable by documents and
+macro packages (see <a class="pxref" href="Built_002din-Registers.html">Built-in Registers</a>).
+</p>
+</dd>
+<dt id='index-TZ_002c-environment-variable'><span><code class="code">TZ</code><a class="copiable-link" href='#index-TZ_002c-environment-variable'> &para;</a></span></dt>
+<dd><p>The time zone to use when converting the current time (or value of
+<code class="env">SOURCE_DATE_EPOCH</code>) to human-readable form; see
+<cite class="cite">tzset<span class="r">(3)</span></cite>.
+</p></dd>
+</dl>
+
+<p>MS-DOS and MS-Windows ports of <code class="code">groff</code> use semicolons, rather than
+colons, to separate the directories in the lists described above.
+</p>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Macro-Directories.html">Macro Directories</a>, Previous: <a href="Groff-Options.html">Options</a>, Up: <a href="Invoking-groff.html">Invoking <code class="code">groff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Environments.html b/doc/groff.html.node/Environments.html
new file mode 100644
index 0000000..489ee62
--- /dev/null
+++ b/doc/groff.html.node/Environments.html
@@ -0,0 +1,250 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Environments (The GNU Troff Manual)</title>
+
+<meta name="description" content="Environments (The GNU Troff Manual)">
+<meta name="keywords" content="Environments (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Suppressing-Output.html" rel="next" title="Suppressing Output">
+<link href="Diversions.html" rel="prev" title="Diversions">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Environments">
+<div class="nav-panel">
+<p>
+Next: <a href="Suppressing-Output.html" accesskey="n" rel="next">Suppressing Output</a>, Previous: <a href="Diversions.html" accesskey="p" rel="prev">Diversions</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Environments-1">5.31 Environments</h3>
+<a class="index-entry-id" id="index-environments"></a>
+
+<p>As discussed in <a class="ref" href="Deferring-Output.html">Deferring Output</a>, environments store most of the
+parameters that determine the appearance of text. A default environment
+named &lsquo;<samp class="samp">0</samp>&rsquo; exists when GNU <code class="code">troff</code> starts up; it is modified by
+formatting-related requests and escape sequences.
+</p>
+<a class="index-entry-id" id="index-stack"></a>
+<p>You can create new environments and switch among them. Only one is
+current at any given time. Active environments are managed using a
+<em class="dfn">stack</em>, a data structure supporting &ldquo;push&rdquo; and &ldquo;pop&rdquo;
+operations. The current environment is at the top of the stack.
+The same environment name can be pushed onto the stack multiple times,
+possibly interleaved with others. Popping the environment stack does
+not destroy the current environment; it remains accessible by name and
+can be made current again by pushing it at any time. Environments
+cannot be renamed or deleted, and can only be modified when current. To
+inspect the environment stack, use the <code class="code">pev</code> request; see
+<a class="ref" href="Debugging.html">Debugging</a>.
+</p>
+<p>Environments store the following information.
+</p>
+<ul class="itemize mark-bullet">
+<li>a partially collected line, if any
+
+</li><li>data about the most recently output glyph and line (registers
+<code class="code">.cdp</code>, <code class="code">.cht</code>, <code class="code">.csk</code>, <code class="code">.n</code>, <code class="code">.w</code>)
+
+</li><li>typeface parameters (size, family, style, height and slant, inter-word
+and inter-sentence space sizes)
+
+</li><li>page parameters (line length, title length, vertical spacing, line
+spacing, indentation, line numbering, centering, right-alignment,
+underlining, hyphenation parameters)
+
+</li><li>filling enablement; adjustment enablement and mode
+
+</li><li>tab stops; tab, leader, escape, control, no-break control, hyphenation,
+and margin characters
+
+</li><li>input line traps
+
+</li><li>stroke and fill colors
+</li></ul>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eev"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ev</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">ident</i></span>]</var><a class="copiable-link" href='#index-_002eev'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ev"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eev_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ev]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eev_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eev-1"></a>
+<a class="index-entry-id" id="index-switching-environments-_0028ev_0029"></a>
+<a class="index-entry-id" id="index-environment_002c-switching-_0028ev_0029"></a>
+<a class="index-entry-id" id="index-environment-number_002fname-register-_0028_002eev_0029"></a>
+<p>Enter the environment <var class="var">ident</var>, which is created if it does not
+already exist, using the same parameters as for the default environment
+used at startup. With no argument, GNU <code class="code">troff</code> switches to the
+previous environment.
+</p>
+<p>Invoking <code class="code">ev</code> with an argument puts environment <var class="var">ident</var> onto
+the top of the environment stack. (If it isn&rsquo;t already present in the
+stack, this is a proper push.) Without an argument, <code class="code">ev</code> pops the
+environment stack, making the previous environment current. It is an
+error to pop the environment stack with no previous environment
+available. The read-only string-valued register <code class="code">.ev</code> contains the
+name of the current environment&mdash;the one at the top of the stack.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ev footnote-env
+.fam N
+.ps 6
+.vs 8
+.ll -.5i
+.ev
+
+<span class="r">&hellip;</span>
+
+.ev footnote-env
+\[dg] Observe the smaller text and vertical spacing.
+.ev
+</pre></div></div>
+
+<p>We can familiarize ourselves with stack behavior by wrapping the
+<code class="code">ev</code> request with a macro that reports the contents of the
+<code class="code">.ev</code> register to the standard error stream.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de EV
+. ev \\$1
+. tm environment is now \\n[.ev]
+..
+.
+.EV foo
+.EV bar
+.EV
+.EV baz
+.EV
+.EV
+.EV
+</pre></div></div>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted"> error&rarr; environment is now foo
+ error&rarr; environment is now bar
+ error&rarr; environment is now foo
+ error&rarr; environment is now baz
+ error&rarr; environment is now foo
+ error&rarr; environment is now 0
+ error&rarr; error: environment stack underflow
+ error&rarr; environment is now 0
+</pre></div></div>
+
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eevc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.evc</code></strong> <var class="def-var-arguments">environment</var><a class="copiable-link" href='#index-_002eevc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-evc"></a>
+<a class="index-entry-id" id="index-copying-environment-_0028evc_0029"></a>
+<a class="index-entry-id" id="index-environment_002c-copying-_0028evc_0029"></a>
+<p>Copy the contents of <var class="var">environment</var> to the current environment.
+</p>
+<p>The following environment data are not copied.
+</p>
+<ul class="itemize mark-bullet">
+<li>a partially collected line, if present;
+
+</li><li>the interruption status of the previous input line (due to use of the
+<code class="code">\c</code> escape sequence);
+
+</li><li>the count of remaining lines to center, to right-justify, or to
+underline (with or without underlined spaces)&mdash;these are set to zero;
+
+</li><li>the activation status of temporary indentation;
+
+</li><li>input line traps and their associated data;
+
+</li><li>the activation status of line numbering (which can be reactivated with
+&lsquo;<samp class="samp">.nm&nbsp;+0</samp>&rsquo;<!-- /@w -->); and
+
+</li><li>the count of consecutive hyphenated lines (set to zero).
+</li></ul>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002ew_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.w]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ew_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ew"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002echt_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.cht]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002echt_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002echt"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ecdp_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.cdp]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ecdp_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ecdp"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ecsk_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.csk]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ecsk_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ecsk"></a>
+<a class="index-entry-id" id="index-environment_002c-dimensions-of-last-glyph-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029"></a>
+<a class="index-entry-id" id="index-width_002c-of-last-glyph-_0028_002ew_0029"></a>
+<a class="index-entry-id" id="index-height_002c-of-last-glyph-_0028_002echt_0029"></a>
+<a class="index-entry-id" id="index-depth_002c-of-last-glyph-_0028_002ecdp_0029"></a>
+<a class="index-entry-id" id="index-skew_002c-of-last-glyph-_0028_002ecsk_0029"></a>
+<a class="index-entry-id" id="index-last-glyph_002c-dimensions-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-last_002c-dimensions-_0028_002ew_002c-_002echt_002c-_002ecdp_002c-_002ecsk_0029"></a>
+<p>The <code class="code">\n[.w]</code> register contains the width of the last glyph
+formatted in the environment.
+</p>
+<p>The <code class="code">\n[.cht]</code> register contains the height of the last glyph
+formatted in the environment.
+</p>
+<p>The <code class="code">\n[.cdp]</code> register contains the depth of the last glyph
+formatted in the environment. It is positive for glyphs extending below
+the baseline.
+</p>
+<p>The <code class="code">\n[.csk]</code> register contains the <em class="dfn">skew</em> (how far to the
+right of the glyph&rsquo;s center that GNU <code class="code">troff</code> should place an
+accent) of the last glyph formatted in the environment.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002en_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.n]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002en_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002en"></a>
+<a class="index-entry-id" id="index-environment_002c-previous-line-length-_0028_002en_0029"></a>
+<a class="index-entry-id" id="index-line-length_002c-previous-_0028_002en_0029"></a>
+<a class="index-entry-id" id="index-length-of-previous-line-_0028_002en_0029"></a>
+<a class="index-entry-id" id="index-previous-line-length-_0028_002en_0029"></a>
+<p>The <code class="code">\n[.n]</code> register contains the length of the previous output
+line emitted in the environment.
+</p></dd></dl>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Suppressing-Output.html">Suppressing Output</a>, Previous: <a href="Diversions.html">Diversions</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Escape-Sequence-Index.html b/doc/groff.html.node/Escape-Sequence-Index.html
new file mode 100644
index 0000000..19e5a61
--- /dev/null
+++ b/doc/groff.html.node/Escape-Sequence-Index.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Escape Sequence Index (The GNU Troff Manual)</title>
+
+<meta name="description" content="Escape Sequence Index (The GNU Troff Manual)">
+<meta name="keywords" content="Escape Sequence Index (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Operator-Index.html" rel="next" title="Operator Index">
+<link href="Request-Index.html" rel="prev" title="Request Index">
+<style type="text/css">
+<!--
+a.summary-letter-printindex {text-decoration: none}
+kbd.key {font-style: normal}
+td.printindex-index-entry {vertical-align: top}
+td.printindex-index-section {vertical-align: top}
+th.entries-header-printindex {text-align:left}
+th.sections-header-printindex {text-align:left}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="appendix-level-extent" id="Escape-Sequence-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="Operator-Index.html" accesskey="n" rel="next">Operator Index</a>, Previous: <a href="Request-Index.html" accesskey="p" rel="prev">Request Index</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="appendix" id="Escape-Sequence-Index-1">Appendix C Escape Sequence Index</h2>
+
+<p>The escape character, <code class="code">\</code> by default, is always followed by at
+least one more input character, making an escape <em class="emph">sequence</em>. Any
+input token <code class="code">\<var class="var">X</var></code> with <var class="var">X</var> not in the list below emits a
+warning and interpolates glyph <var class="var">X</var>. Note the entries for <code class="code">\.</code>,
+which may be obscured by the leader dots, and for <code class="code">\<kbd class="key">RET</kbd></code> and
+<code class="code">\<kbd class="key">SP</kbd></code>, which are sorted alphabetically, not by code point
+order.
+</p>
+<div class="printindex es-printindex">
+<table class="es-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Escape-Sequence-Index_es_symbol-1">\</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-_005c"><code>\</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005c-1"><code>\</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-_005c_0021"><code>\!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Comments.html#index-_005c_0022"><code>\&quot;</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Comments.html">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Comments.html#index-_005c_0023"><code>\#</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Comments.html">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-_005c_0024"><code>\$</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-_005c_0024_002a"><code>\$*</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-_005c_00240"><code>\$0</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-_005c_0024_0040"><code>\$@</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-_005c_0024_005e"><code>\$^</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-_005c_0025"><code>\%</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Dummy-Characters.html#index-_005c_0026"><code>\&amp;</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Dummy-Characters.html">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005c_0027"><code>\<code class="code">'</code></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005c_0028"><code>\(</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Dummy-Characters.html#index-_005c_0029"><code>\)</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Dummy-Characters.html">Dummy Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-_005c_002a"><code>\*</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Italic-Corrections.html#index-_005c_002c"><code>\,</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Italic-Corrections.html">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005c_002d"><code>\-</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-_005c_002e"><code>\.</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Italic-Corrections.html#index-_005c_002f"><code>\/</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Italic-Corrections.html">Italic Corrections</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005c0"><code>\0</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-_005c_003a"><code>\:</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-_005c_003f"><code>\?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Identifiers.html#index-_005cA"><code>\A</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Identifiers.html">Identifiers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-_005ca"><code>\a</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_005cB"><code>\B</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-_005cb"><code>\b</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-_005cc"><code>\c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005cC"><code>\C</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005cd"><code>\d</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-_005cD"><code>\D</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-_005ce"><code>\e</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-_005cE"><code>\E</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-_005cf"><code>\f</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-_005cF"><code>\F</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-_005cg"><code>\g</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-_005cH"><code>\H</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005ch"><code>\h</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005ck"><code>\k</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-_005cl"><code>\l</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Drawing-Geometric-Objects.html#index-_005cL"><code>\L</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-_005cm"><code>\m</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-_005cM"><code>\M</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Interpolating-Registers.html#index-_005cn"><code>\n</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Interpolating-Registers.html">Interpolating Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Auto_002dincrement.html#index-_005cn-1"><code>\n</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Auto_002dincrement.html">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005cN"><code>\N</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-_005cnewline"><code>\<i class="slanted">newline</i></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005co"><code>\o</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Suppressing-Output.html#index-_005cO"><code>\O</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Suppressing-Output.html">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-_005cp"><code>\p</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-_005cR"><code>\R</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-_005cR-1"><code>\R</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005cr"><code>\r</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-_005cRET"><code>\<kbd class="key">RET</kbd></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-_005cS"><code>\S</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Type-Size.html#index-_005cs"><code>\s</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Type-Size.html">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005cSP"><code>\<kbd class="key">SP</kbd></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005cspace"><code>\<i class="slanted">space</i></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-_005ct"><code>\t</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005cu"><code>\u</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005cv"><code>\v</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-_005cV"><code>\V</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005cw"><code>\w</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-_005cx"><code>\x</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-_005cX"><code>\X</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-_005cY"><code>\Y</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005cz"><code>\z</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005cZ"><code>\Z</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005c_005b"><code>\[</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Copy-Mode.html#index-_005c_005c"><code>\\</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Copy-Mode.html">Copy Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005c_005e"><code>\^</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005c_005f"><code>\_</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-_005c_0060"><code>\<code class="code">`</code></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-_005c_007b"><code>\{</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-_005c_007b-1"><code>\{</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_005c_007c"><code>\|</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Conditional-Blocks.html#index-_005c_007d"><code>\}</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Conditional-Blocks.html">Conditional Blocks</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-_005c_007e"><code>\~</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+</div>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Operator-Index.html">Operator Index</a>, Previous: <a href="Request-Index.html">Request Index</a>, Up: <a href="index.html">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Fields.html b/doc/groff.html.node/Fields.html
new file mode 100644
index 0000000..6e1754a
--- /dev/null
+++ b/doc/groff.html.node/Fields.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Fields (The GNU Troff Manual)</title>
+
+<meta name="description" content="Fields (The GNU Troff Manual)">
+<meta name="keywords" content="Fields (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tabs-and-Fields.html" rel="up" title="Tabs and Fields">
+<link href="Leaders.html" rel="prev" title="Leaders">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Fields">
+<div class="nav-panel">
+<p>
+Previous: <a href="Leaders.html" accesskey="p" rel="prev">Leaders</a>, Up: <a href="Tabs-and-Fields.html" accesskey="u" rel="up">Tabs and Fields</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Fields-1">5.12.2 Fields</h4>
+<a class="index-entry-id" id="index-fields"></a>
+
+<a class="index-entry-id" id="index-field-delimiting-character-_0028fc_0029"></a>
+<a class="index-entry-id" id="index-delimiting-character_002c-for-fields-_0028fc_0029"></a>
+<a class="index-entry-id" id="index-character_002c-field-delimiting-_0028fc_0029"></a>
+<a class="index-entry-id" id="index-field-padding-character-_0028fc_0029"></a>
+<a class="index-entry-id" id="index-padding-character_002c-for-fields-_0028fc_0029"></a>
+<a class="index-entry-id" id="index-character_002c-field-padding-_0028fc_0029"></a>
+<p><em class="dfn">Fields</em> are a more general way of laying out tabular data. A field
+is defined as the data between a pair of <em class="dfn">delimiting characters</em>.
+It contains substrings that are separated by <em class="dfn">padding characters</em>.
+The width of a field is the distance on the <em class="emph">input</em> line from the
+position where the field starts to the next tab stop. A padding
+character inserts an adjustable space similar to TeX&rsquo;s <code class="code">\hss</code>
+command (thus it can even be negative) to make the sum of all substring
+lengths plus the adjustable space equal to the field width. If more
+than one padding character is inserted, the available space is evenly
+distributed among them.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">delim-char</i></span> [<span class="r"><i class="slanted">padding-char</i></span>]]</var><a class="copiable-link" href='#index-_002efc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fc"></a>
+<p>Define a delimiting and a padding character for fields. If the latter
+is missing, the padding character defaults to a space character. If
+there is no argument at all, the field mechanism is disabled (which is
+the default). In contrast to, e.g., the tab repetition character,
+delimiting and padding characters are <em class="emph">not</em> associated with the
+environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.fc # ^
+.ta T 3i
+#foo^bar^smurf#
+.br
+#foo^^bar^smurf#
+ &rArr; foo bar smurf
+ &rArr; foo bar smurf
+</pre></div></div>
+</dd></dl>
+
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/File-Formats.html b/doc/groff.html.node/File-Formats.html
new file mode 100644
index 0000000..c5d4d54
--- /dev/null
+++ b/doc/groff.html.node/File-Formats.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>File Formats (The GNU Troff Manual)</title>
+
+<meta name="description" content="File Formats (The GNU Troff Manual)">
+<meta name="keywords" content="File Formats (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Copying-This-Manual.html" rel="next" title="Copying This Manual">
+<link href="GNU-troff-Reference.html" rel="prev" title="GNU troff Reference">
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="File-Formats">
+<div class="nav-panel">
+<p>
+Next: <a href="Copying-This-Manual.html" accesskey="n" rel="next">Copying This Manual</a>, Previous: <a href="GNU-troff-Reference.html" accesskey="p" rel="prev">GNU <code class="code">troff</code> Reference</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="chapter" id="File-Formats-1">6 File Formats</h2>
+<a class="index-entry-id" id="index-file-formats"></a>
+<a class="index-entry-id" id="index-formats_002c-file"></a>
+
+<p>All files read and written by <code class="code">gtroff</code> are text files. The
+following two sections describe their format.
+</p>
+
+
+
+
+<ul class="mini-toc">
+<li><a href="gtroff-Output.html" accesskey="1"><code class="code">gtroff</code> Output</a></li>
+<li><a href="Device-and-Font-Description-Files.html" accesskey="2">Device and Font Description Files</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/File-Keyword-Index.html b/doc/groff.html.node/File-Keyword-Index.html
new file mode 100644
index 0000000..348d292
--- /dev/null
+++ b/doc/groff.html.node/File-Keyword-Index.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>File Keyword Index (The GNU Troff Manual)</title>
+
+<meta name="description" content="File Keyword Index (The GNU Troff Manual)">
+<meta name="keywords" content="File Keyword Index (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Program-and-File-Index.html" rel="next" title="Program and File Index">
+<link href="String-Index.html" rel="prev" title="String Index">
+<style type="text/css">
+<!--
+a.summary-letter-printindex {text-decoration: none}
+td.printindex-index-entry {vertical-align: top}
+td.printindex-index-section {vertical-align: top}
+th.entries-header-printindex {text-align:left}
+th.sections-header-printindex {text-align:left}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="appendix-level-extent" id="File-Keyword-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="Program-and-File-Index.html" accesskey="n" rel="next">Program and File Index</a>, Previous: <a href="String-Index.html" accesskey="p" rel="prev">String Index</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="appendix" id="File-Keyword-Index-1">Appendix H File Keyword Index</h2>
+
+<div class="printindex ky-printindex">
+<table class="ky-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#File-Keyword-Index_ky_symbol-1"><b>#</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_symbol-2"><b>-</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-V"><b>V</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="ky-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_symbol-1">#</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-_0023"><code>#</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-_0023-1"><code>#</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_symbol-2">-</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-_002d_002d_002d"><code>---</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-B">B</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-biggestfont"><code>biggestfont</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-charset"><code>charset</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-charset-1"><code>charset</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-family"><code>family</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-family-1"><code>family</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-fonts"><code>fonts</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Special-Fonts.html#index-fonts-1"><code>fonts</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Special-Fonts.html">Special Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-fonts-2"><code>fonts</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-H">H</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-hor"><code>hor</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-I">I</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-image_005fgenerator"><code>image_generator</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-K">K</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-kernpairs"><code>kernpairs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-ligatures"><code>ligatures</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-name"><code>name</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-paperlength"><code>paperlength</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-papersize"><code>papersize</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-paperwidth"><code>paperwidth</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-pass_005ffilenames"><code>pass_filenames</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-postpro"><code>postpro</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-prepro"><code>prepro</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-print"><code>print</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-res"><code>res</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-sizes"><code>sizes</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-sizescale"><code>sizescale</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-slant"><code>slant</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-spacewidth"><code>spacewidth</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-spare1"><code>spare1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-spare2"><code>spare2</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-special"><code>special</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Description-File-Format.html#index-special-1"><code>special</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Description-File-Format.html">Font Description File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-styles"><code>styles</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-styles-1"><code>styles</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-styles-2"><code>styles</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-tcommand"><code>tcommand</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-unicode"><code>unicode</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-unitwidth"><code>unitwidth</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-unscaled_005fcharwidths"><code>unscaled_charwidths</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-use_005fcharnames_005fin_005fspecial"><code>use_charnames_in_special</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-use_005fcharnames_005fin_005fspecial-1"><code>use_charnames_in_special</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="File-Keyword-Index_ky_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="DESC-File-Format.html#index-vert"><code>vert</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="DESC-File-Format.html">DESC File Format</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="ky-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#File-Keyword-Index_ky_symbol-1"><b>#</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_symbol-2"><b>-</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#File-Keyword-Index_ky_letter-V"><b>V</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Program-and-File-Index.html">Program and File Index</a>, Previous: <a href="String-Index.html">String Index</a>, Up: <a href="index.html">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Filling.html b/doc/groff.html.node/Filling.html
new file mode 100644
index 0000000..f6db6f3
--- /dev/null
+++ b/doc/groff.html.node/Filling.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Filling (The GNU Troff Manual)</title>
+
+<meta name="description" content="Filling (The GNU Troff Manual)">
+<meta name="keywords" content="Filling (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Text.html" rel="up" title="Text">
+<link href="Sentences.html" rel="next" title="Sentences">
+<link href="Text.html" rel="prev" title="Text">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Filling">
+<div class="nav-panel">
+<p>
+Next: <a href="Sentences.html" accesskey="n" rel="next">Sentences</a>, Previous: <a href="Text.html" accesskey="p" rel="prev">Text</a>, Up: <a href="Text.html" accesskey="u" rel="up">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Filling-1">5.1.1 Filling</h4>
+
+<p>When GNU <code class="code">troff</code> starts up, it obtains information about the device
+for which it is preparing output.<a class="footnote" id="DOCF18" href="groff.html_fot.html#FOOT18"><sup>18</sup></a> An essential property is the length of the output
+line, such as &ldquo;6.5 inches&rdquo;.
+</p>
+<a class="index-entry-id" id="index-word_002c-definition-of"></a>
+<a class="index-entry-id" id="index-filling"></a>
+<p>GNU <code class="code">troff</code> interprets plain text files employing the Unix
+line-ending convention. It reads input a character at a time,
+collecting words as it goes, and fits as many words together on an
+output line as it can&mdash;this is known as <em class="dfn">filling</em>. To GNU
+<code class="code">troff</code>, a <em class="dfn">word</em> is any sequence of one or more characters
+that aren&rsquo;t spaces or newlines. The exceptions separate
+words.<a class="footnote" id="DOCF19" href="groff.html_fot.html#FOOT19"><sup>19</sup></a> To disable filling, see
+<a class="ref" href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">It is a truth universally acknowledged
+that a single man in possession of a
+good fortune must be in want of a wife.
+ &rArr; It is a truth universally acknowledged that a
+ &rArr; single man in possession of a good fortune must
+ &rArr; be in want of a wife.
+</pre></div></div>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Font-Description-File-Format.html b/doc/groff.html.node/Font-Description-File-Format.html
new file mode 100644
index 0000000..a44cf20
--- /dev/null
+++ b/doc/groff.html.node/Font-Description-File-Format.html
@@ -0,0 +1,280 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Font Description File Format (The GNU Troff Manual)</title>
+
+<meta name="description" content="Font Description File Format (The GNU Troff Manual)">
+<meta name="keywords" content="Font Description File Format (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Device-and-Font-Description-Files.html" rel="up" title="Device and Font Description Files">
+<link href="DESC-File-Format.html" rel="prev" title="DESC File Format">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+pre.display-preformatted {font-family: inherit}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Font-Description-File-Format">
+<div class="nav-panel">
+<p>
+Previous: <a href="DESC-File-Format.html" accesskey="p" rel="prev"><samp class="file">DESC</samp> File Format</a>, Up: <a href="Device-and-Font-Description-Files.html" accesskey="u" rel="up">Device and Font Description Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Font-Description-File-Format-1">6.2.2 Font Description File Format</h4>
+<a class="index-entry-id" id="index-font-file_002c-format"></a>
+<a class="index-entry-id" id="index-font-description-file_002c-format"></a>
+<a class="index-entry-id" id="index-format-of-font-files"></a>
+<a class="index-entry-id" id="index-format-of-font-description-files"></a>
+
+<p>On typesetting output devices, each font is typically available at
+multiple sizes. While paper measurements in the device description file
+are in absolute units, measurements applicable to fonts must be
+proportional to the type size. <code class="code">groff</code> achieves this using the
+precedent set by <abbr class="acronym">AT&amp;T</abbr> device-independent <code class="code">troff</code>: one
+font size is chosen as a norm, and all others are scaled linearly
+relative to that basis. The &ldquo;unit width&rdquo; is the number of basic units
+per point when the font is rendered at this nominal size.
+</p>
+<p>For instance, <code class="code">groff</code>&rsquo;s <code class="code">lbp</code> device uses a <code class="code">unitwidth</code>
+of&nbsp;800. Its Times roman font &lsquo;<samp class="samp">TR</samp>&rsquo; has a <code class="code">spacewidth</code>
+of&nbsp;833; this is also the width of its comma, period, centered
+period, and mathematical asterisk, while its &lsquo;<samp class="samp">M</samp>&rsquo; is 2,963 basic
+units. Thus, an &lsquo;<samp class="samp">M</samp>&rsquo; on the <code class="code">lbp</code> device is 2,963 basic units
+wide at a notional type size of 800&nbsp;points.<a class="footnote" id="DOCF126" href="groff.html_fot.html#FOOT126"><sup>126</sup></a>
+</p>
+<p>A font description file has two sections. The first is a sequence of
+directives, and is parsed similarly to the <samp class="file">DESC</samp> file described
+above. Except for the directive names that begin the second section,
+their ordering is immaterial. Later directives of the same name
+override earlier ones, spaces and tabs are handled in the same way,
+<a class="index-entry-id" id="index-comments-in-font-description-files"></a>
+<a class="index-entry-id" id="index-font-description-files_002c-comments"></a>
+<a class="index-entry-id" id="index-_0023-1"></a>
+and the same comment syntax is supported. Empty lines are ignored
+throughout.
+</p>
+<dl class="table">
+<dt id='index-name'><span><code class="code">name <var class="var">f</var></code><a class="copiable-link" href='#index-name'> &para;</a></span></dt>
+<dd><p>The name of the font is&nbsp;<var class="var">f</var>. &lsquo;<samp class="samp">DESC</samp>&rsquo; is an invalid font
+name. Simple integers are valid, but their use is
+discouraged.<a class="footnote" id="DOCF127" href="groff.html_fot.html#FOOT127"><sup>127</sup></a>
+</p>
+</dd>
+<dt id='index-spacewidth'><span><code class="code">spacewidth <var class="var">n</var></code><a class="copiable-link" href='#index-spacewidth'> &para;</a></span></dt>
+<dd><p>The width of an unadjusted inter-word space is <var class="var">n</var>&nbsp;basic units.
+</p></dd>
+</dl>
+
+<p>The directives above must appear in the first section; those below are
+optional.
+</p>
+<dl class="table">
+<dt id='index-slant'><span><code class="code">slant <var class="var">n</var></code><a class="copiable-link" href='#index-slant'> &para;</a></span></dt>
+<dd><p>The font&rsquo;s glyphs have a slant of <var class="var">n</var>&nbsp;degrees; a positive
+<var class="var">n</var> slants in the direction of text flow.
+</p>
+</dd>
+<dt id='index-ligatures'><span><code class="code">ligatures <var class="var">lig1</var> <span class="r">&hellip;</span> <var class="var">lign</var> <span class="r">[</span>0<span class="r">]</span></code><a class="copiable-link" href='#index-ligatures'> &para;</a></span></dt>
+<dd><p>Glyphs <var class="var">lig1</var>, &hellip;, <var class="var">lign</var> are ligatures; possible ligatures
+are &lsquo;<samp class="samp">ff</samp>&rsquo;, &lsquo;<samp class="samp">fi</samp>&rsquo;, &lsquo;<samp class="samp">fl</samp>&rsquo;, &lsquo;<samp class="samp">ffi</samp>&rsquo; and &lsquo;<samp class="samp">ffl</samp>&rsquo;. For
+compatibility with other <code class="code">troff</code> implementations, the list of
+ligatures may be terminated with a&nbsp;<code class="code">0</code>. The list of ligatures
+must not extend over more than one line.
+</p>
+</dd>
+<dt id='index-special-fonts-2'><span><code class="code">special</code><a class="copiable-link" href='#index-special-fonts-2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-special-1"></a>
+<p>The font is <em class="dfn">special</em>: when a glyph is requested that is not present
+in the current font, it is sought in any mounted fonts that bear this
+property.
+</p></dd>
+</dl>
+
+<p>Other directives in this section are ignored by GNU <code class="code">troff</code>, but
+may be used by postprocessors to obtain further information about the
+font.
+</p>
+<p>The second section contains one or two subsections. These can appear in
+either order; the first one encountered commences the second section.
+Each starts with a directive on a line by itself. A <code class="code">charset</code>
+subsection is mandatory unless the associated <samp class="file">DESC</samp> file contains
+the <code class="code">unicode</code> directive. Another subsection, <code class="code">kernpairs</code>,
+is optional.
+</p>
+<a class="index-entry-id" id="index-charset-1"></a>
+<p>The directive <code class="code">charset</code> starts the character set
+subsection.<a class="footnote" id="DOCF128" href="groff.html_fot.html#FOOT128"><sup>128</sup></a> It precedes a series
+of glyph descriptions, one per line. Each such glyph description
+comprises a set of fields separated by spaces or tabs and organized as
+follows.
+</p>
+<blockquote class="quotation">
+<p><var class="var">name</var> <var class="var">metrics</var> <var class="var">type</var> <var class="var">code</var> [<var class="var">entity-name</var>]
+[<code class="code">--</code> <var class="var">comment</var>]
+</p></blockquote>
+
+<a class="index-entry-id" id="index-8_002dbit-input"></a>
+<a class="index-entry-id" id="index-input_002c-8_002dbit"></a>
+<a class="index-entry-id" id="index-accessing-unnamed-glyphs-with-_005cN"></a>
+<a class="index-entry-id" id="index-unnamed-glyphs_002c-accessing-with-_005cN"></a>
+<a class="index-entry-id" id="index-characters_002c-unnamed_002c-accessing-with-_005cN"></a>
+<a class="index-entry-id" id="index-glyphs_002c-unnamed_002c-accessing-with-_005cN"></a>
+<a class="index-entry-id" id="index-_002d_002d_002d"></a>
+<p><var class="var">name</var> identifies the glyph:
+if <var class="var">name</var> is a printable character&nbsp;<var class="var">c</var>, it corresponds to
+the <code class="code">troff</code> ordinary character&nbsp;<var class="var">c</var>. If <var class="var">name</var> is a
+multi-character sequence not beginning with <code class="code">\</code>, it corresponds to
+the GNU <code class="code">troff</code> special character escape sequence
+&lsquo;<samp class="samp">\[<var class="var">name</var>]</samp>&rsquo;. A name consisting of three minus signs,
+&lsquo;<samp class="samp">---</samp>&rsquo;, is special and indicates that the glyph is unnamed: such
+glyphs can be accessed only by the <code class="code">\N</code> escape sequence in
+<code class="code">troff</code>. A special character named &lsquo;<samp class="samp">---</samp>&rsquo; can still be defined
+using <code class="code">char</code> and similar requests. The <var class="var">name</var> &lsquo;<samp class="samp">\-</samp>&rsquo;
+defines the minus sign glyph. Finally, <var class="var">name</var> can be the
+unbreakable one-sixth and one-twelfth space escape sequences, <code class="code">\|</code>
+and <code class="code">\^</code> (&ldquo;thin&rdquo; and &ldquo;hair&rdquo; spaces, respectively), in which
+case only the width metric described below is interpreted; a font can
+thus customize the widths of these spaces.
+</p>
+<p>The form of the <var class="var">metrics</var> field is as follows.
+</p>
+<div class="display">
+<div class="group"><pre class="display-preformatted"><var class="var">width</var>[<code class="code">,</code>[<var class="var">height</var>[<code class="code">,</code>[<var class="var">depth</var>[<code class="code">,</code>[<var class="var">italic-correction</var>
+ [<code class="code">,</code>[<var class="var">left-italic-correction</var>[<code class="code">,</code>[<var class="var">subscript-correction</var>]]]]]]]]]]
+</pre></div></div>
+
+<p>There must not be any spaces, tabs, or newlines between these
+<em class="dfn">subfields</em> (which have been split here into two lines only for
+better legibility). The subfields are in basic units expressed as
+decimal integers. Unspecified subfields default to&nbsp;<code class="code">0</code>.
+Since there is no associated binary format, these values are not
+required to fit into the C language data type &lsquo;<samp class="samp">char</samp>&rsquo; as they are in
+<abbr class="acronym">AT&amp;T</abbr> device-independent <code class="code">troff</code>.
+</p>
+<p>The <var class="var">width</var> subfield gives the width of the glyph. The <var class="var">height</var>
+subfield gives the height of the glyph (upward is positive); if a glyph
+does not extend above the baseline, it should be given a zero height,
+rather than a negative height. The <var class="var">depth</var> subfield gives the depth
+of the glyph, that is, the distance below the baseline to which the
+glyph extends (downward is positive); if a glyph does not extend below
+the baseline, it should be given a zero depth, rather than a negative
+depth. Italic corrections are relevant to glyphs in italic or oblique
+styles. The <var class="var">italic-correction</var> is the amount of space that should
+be added after an oblique glyph to be followed immediately by an upright
+glyph. The <var class="var">left-italic-correction</var> is the amount of space that
+should be added before an oblique glyph to be preceded immediately by an
+upright glyph. The <var class="var">subscript-correction</var> is the amount of space
+that should be added after an oblique glyph to be followed by a
+subscript; it should be less than the italic correction.
+</p>
+<p>For fonts used with typesetting devices, the <var class="var">type</var> field gives a
+featural description of the glyph: it is a bit mask recording whether
+the glyph is an ascender, descender, both, or neither. When a <code class="code">\w</code>
+escape sequence is interpolated, these values are bitwise or-ed
+together for each glyph and stored in the <code class="code">nr</code> register. In font
+descriptions for terminal devices, all glyphs might have a type of zero,
+regardless of their appearance.
+</p>
+<dl class="table">
+<dt><code class="code">0</code></dt>
+<dd><p>means the glyph lies entirely between the baseline and a horizontal line
+at the &ldquo;x-height&rdquo; of the font; typical examples are &lsquo;<samp class="samp">a</samp>&rsquo;,
+&lsquo;<samp class="samp">c</samp>&rsquo;, and &lsquo;<samp class="samp">x</samp>&rsquo;;
+</p>
+</dd>
+<dt><code class="code">1</code></dt>
+<dd><p>means the glyph descends below the baseline, like &lsquo;<samp class="samp">p</samp>&rsquo;;
+</p>
+</dd>
+<dt><code class="code">2</code></dt>
+<dd><p>means the glyph ascends above the font&rsquo;s x-height, like &lsquo;<samp class="samp">A</samp>&rsquo; or
+&lsquo;<samp class="samp">b</samp>&rsquo;; and
+</p>
+</dd>
+<dt><code class="code">3</code></dt>
+<dd><p>means the glyph is both an ascender and a descender&mdash;this is true of
+parentheses in some fonts.
+</p></dd>
+</dl>
+
+<p>The <var class="var">code</var> field gives a numeric identifier that the postprocessor
+uses to render the glyph. The glyph can be specified to <code class="code">troff</code>
+using this code by means of the <code class="code">\N</code> escape sequence. <var class="var">code</var>
+can be any integer.<a class="footnote" id="DOCF129" href="groff.html_fot.html#FOOT129"><sup>129</sup></a>
+</p>
+<p>The <var class="var">entity-name</var> field defines an identifier for the glyph that the
+postprocessor uses to print the GNU <code class="code">troff</code> glyph <var class="var">name</var>. This
+field is optional; it was introduced so that the <code class="code">grohtml</code> output
+driver could encode its character set. For example, the glyph
+&lsquo;<samp class="samp">\[Po]</samp>&rsquo; is represented by &lsquo;<samp class="samp">&amp;pound;</samp>&rsquo; in <abbr class="acronym">HTML</abbr> 4.0.
+For efficiency, these data are now compiled directly into
+<code class="code">grohtml</code>. <code class="code">grops</code> uses the field to build sub-encoding
+arrays for PostScript fonts containing more than 256 glyphs. Anything
+on the line after the <var class="var">entity-name</var> field or &lsquo;<samp class="samp">--</samp>&rsquo; is ignored.
+</p>
+<p>A line in the <code class="code">charset</code> section can also have the form
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"><var class="var">name</var> &quot;
+</pre></div></div>
+
+<p>identifying <var class="var">name</var> as another name for the glyph mentioned in the
+preceding line. Such aliases can be chained.
+</p>
+<a class="index-entry-id" id="index-kernpairs"></a>
+<p>The directive <code class="code">kernpairs</code> starts a list of kerning adjustments to
+be made to adjacent glyph pairs from this font. It contains a sequence
+of lines formatted as follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"><var class="var">g1</var> <var class="var">g2</var> <var class="var">n</var>
+</pre></div></div>
+
+<p>The foregoing means that when glyph <var class="var">g1</var> is typeset immediately
+before <var class="var">g2</var>, the space between them should be increased
+by&nbsp;<var class="var">n</var>. Most kerning pairs should have a negative value
+for&nbsp;<var class="var">n</var>.
+</p>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="DESC-File-Format.html"><samp class="file">DESC</samp> File Format</a>, Up: <a href="Device-and-Font-Description-Files.html">Device and Font Description Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Font-Directories.html b/doc/groff.html.node/Font-Directories.html
new file mode 100644
index 0000000..89cb39d
--- /dev/null
+++ b/doc/groff.html.node/Font-Directories.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Font Directories (The GNU Troff Manual)</title>
+
+<meta name="description" content="Font Directories (The GNU Troff Manual)">
+<meta name="keywords" content="Font Directories (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Invoking-groff.html" rel="up" title="Invoking groff">
+<link href="Paper-Format.html" rel="next" title="Paper Format">
+<link href="Macro-Directories.html" rel="prev" title="Macro Directories">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Font-Directories">
+<div class="nav-panel">
+<p>
+Next: <a href="Paper-Format.html" accesskey="n" rel="next">Paper Format</a>, Previous: <a href="Macro-Directories.html" accesskey="p" rel="prev">Macro Directories</a>, Up: <a href="Invoking-groff.html" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Font-Directories-1">2.4 Font Directories</h3>
+<a class="index-entry-id" id="index-font-directories"></a>
+<a class="index-entry-id" id="index-directories-for-fonts"></a>
+<a class="index-entry-id" id="index-searching-fonts"></a>
+<a class="index-entry-id" id="index-fonts_002c-searching"></a>
+
+<p><code class="code">groff</code> enforces few restrictions on how font description files are
+named. For its family/style mechanism to work (see <a class="pxref" href="Font-Families.html">Font Families</a>),
+the names of fonts within a family should start with the family name,
+followed by the style. For example, the Times family uses &lsquo;<samp class="samp">T</samp>&rsquo; for
+the family name and &lsquo;<samp class="samp">R</samp>&rsquo;, &lsquo;<samp class="samp">B</samp>&rsquo;, &lsquo;<samp class="samp">I</samp>&rsquo;, and &lsquo;<samp class="samp">BI</samp>&rsquo; to
+indicate the styles &lsquo;roman&rsquo;, &lsquo;bold&rsquo;, &lsquo;italic&rsquo;, and &lsquo;bold italic&rsquo;,
+respectively. Thus the final font names are &lsquo;<samp class="samp">TR</samp>&rsquo;, &lsquo;<samp class="samp">TB</samp>&rsquo;,
+&lsquo;<samp class="samp">TI</samp>&rsquo;, and &lsquo;<samp class="samp">TBI</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-font-path"></a>
+<a class="index-entry-id" id="index-path_002c-for-font-files"></a>
+<p>Font description files are kept in <em class="dfn">font directories</em>, which
+together constitute the <em class="dfn">font path</em>. The search procedure
+always appends the directory <code class="code">dev</code><var class="var">name</var>, where <var class="var">name</var> is
+the name of the output device. Assuming TeX DVI output, and
+<samp class="file">/foo/bar</samp> as a font directory, the font description files for
+<code class="command">grodvi</code> must be in <samp class="file">/foo/bar/devdvi</samp>.
+Each directory in the font path is searched in the following order until
+the desired font description file is found or the list is exhausted.
+</p>
+<ul class="itemize mark-bullet">
+<li>Directories specified with GNU <code class="code">troff</code>&rsquo;s or <code class="code">groff</code>&rsquo;s
+<samp class="option">-f</samp> command-line option. All output drivers (and some
+preprocessors) support this option as well, because they require
+information about the glyphs to be rendered in the document.
+
+</li><li><a class="index-entry-id" id="index-GROFF_005fFONT_005fPATH_002c-environment-variable-1"></a>
+Directories listed in the <code class="env">GROFF_FONT_PATH</code> environment variable.
+
+</li><li><a class="index-entry-id" id="index-site_002dlocal-directory-1"></a>
+<a class="index-entry-id" id="index-directory_002c-site_002dlocal-1"></a>
+A site-local directory and the main font description directory.
+The locations corresponding to your installation are listed in section
+&ldquo;Environment&rdquo; of <cite class="cite">gtroff<span class="r">(1)</span></cite>. If not otherwise configured,
+they are as follows.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">/usr/local/share/groff/site-font
+/usr/local/share/groff/1.23.0/font
+</pre></div></div>
+
+<p>The foregoing assumes that the version of <code class="code">groff</code> is 1.23.0, and
+that the installation prefix was <samp class="file">/usr/local</samp>. It is possible to
+fine-tune these locations during the source configuration process.
+</p></li></ul>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Paper-Format.html">Paper Format</a>, Previous: <a href="Macro-Directories.html">Macro Directories</a>, Up: <a href="Invoking-groff.html">Invoking <code class="code">groff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Font-Families.html b/doc/groff.html.node/Font-Families.html
new file mode 100644
index 0000000..f631c1a
--- /dev/null
+++ b/doc/groff.html.node/Font-Families.html
@@ -0,0 +1,182 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Font Families (The GNU Troff Manual)</title>
+
+<meta name="description" content="Font Families (The GNU Troff Manual)">
+<meta name="keywords" content="Font Families (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Using-Fonts.html" rel="up" title="Using Fonts">
+<link href="Font-Positions.html" rel="next" title="Font Positions">
+<link href="Selecting-Fonts.html" rel="prev" title="Selecting Fonts">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Font-Families">
+<div class="nav-panel">
+<p>
+Next: <a href="Font-Positions.html" accesskey="n" rel="next">Font Positions</a>, Previous: <a href="Selecting-Fonts.html" accesskey="p" rel="prev">Selecting Fonts</a>, Up: <a href="Using-Fonts.html" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Font-Families-1">5.19.2 Font Families</h4>
+<a class="index-entry-id" id="index-font-families"></a>
+<a class="index-entry-id" id="index-families_002c-font"></a>
+<a class="index-entry-id" id="index-font-styles"></a>
+<a class="index-entry-id" id="index-styles_002c-font"></a>
+
+<p>To accommodate the wide variety of fonts available, GNU <code class="code">troff</code>
+distinguishes <em class="dfn">font families</em> and <em class="dfn">font styles</em>. A resolved
+font name is the catenation of a font family and a style. Selecting an
+abstract style causes GNU <code class="code">troff</code> to combine it with the default
+font family.
+</p>
+<p>You can thus compose a document using abstract styles exclusively for
+its body or running text, selecting a specific family only for titles or
+examples, for instance, and change the default family on the command
+line (recall <a class="ref" href="Groff-Options.html">Options</a>).
+</p>
+<p>Fonts for the devices <code class="code">ps</code>, <code class="code">pdf</code>, <code class="code">dvi</code>, <code class="code">lj4</code>,
+<code class="code">lbp</code>, and the X11 devices support this mechanism. By default,
+GNU <code class="code">troff</code> uses the Times family with the four styles &lsquo;<samp class="samp">R</samp>&rsquo;,
+&lsquo;<samp class="samp">I</samp>&rsquo;, &lsquo;<samp class="samp">B</samp>&rsquo;, and &lsquo;<samp class="samp">BI</samp>&rsquo;.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efam"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fam</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">family</i></span>]</var><a class="copiable-link" href='#index-_002efam'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fam"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002efam_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.fam]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002efam_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002efam-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cFf"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\F</code><span class="r"><i class="slanted">f</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cFf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cF"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cF_0028fm"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\F(</code><span class="r"><i class="slanted">fm</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cF_0028fm'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cF_005bfamily_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\F[</code><span class="r"><i class="slanted">family</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cF_005bfamily_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-changing-font-family-_0028fam_002c-_005cF_0029"></a>
+<a class="index-entry-id" id="index-font-family_002c-changing-_0028fam_002c-_005cF_0029"></a>
+<p>Set the default font family, used in combination with abstract styles to
+construct a resolved font name, to <var class="var">family</var> (one-character
+name&nbsp;<var class="var">f</var>, two-character name <var class="var">fm</var>). If no argument is
+given, GNU <code class="code">troff</code> selects the previous font family; if there none,
+is it falls back to the device&rsquo;s default<a class="footnote" id="DOCF76" href="groff.html_fot.html#FOOT76"><sup>76</sup></a> or its own (&lsquo;<samp class="samp">T</samp>&rsquo;).
+</p>
+<p>The <code class="code">\F</code> escape sequence works similarly. In disanalogy to
+<code class="code">\f</code>, &lsquo;<samp class="samp">\FP</samp>&rsquo; makes &lsquo;<samp class="samp">P</samp>&rsquo; the default family. Use
+&lsquo;<samp class="samp">\F[]</samp>&rsquo; to select the previous default family. The default font
+family is available in the read-only string-valued register <code class="code">.fam</code>;
+it is associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">spam, \&quot; startup defaults are T (Times) R (roman)
+.fam H \&quot; make Helvetica the default family
+spam, \&quot; family H + style R = HR
+.ft B \&quot; family H + style B = HB
+spam,
+.ft CR \&quot; Courier roman (default family not changed)
+spam,
+.ft \&quot; back to Helvetica bold
+spam,
+.fam T \&quot; make Times the default family
+spam, \&quot; family T + style B = TB
+.ft AR \&quot; font AR (not a style)
+baked beans,
+.ft R \&quot; family T + style R = TR
+and spam.
+</pre></div></div>
+
+<p><code class="code">\F</code> doesn&rsquo;t produce an input token in GNU <code class="code">troff</code>. As a
+consequence, it can be used in requests like <code class="code">mc</code> (which expects
+a single character as an argument) to change the font family on the fly.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.mc \F[P]x\F[]
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002esty"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sty</code></strong> <var class="def-var-arguments">n style</var><a class="copiable-link" href='#index-_002esty'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-sty"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002esty_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.sty]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002esty_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002esty-1"></a>
+<a class="index-entry-id" id="index-setting-up-an-abstract-font-style-_0028sty_0029"></a>
+<a class="index-entry-id" id="index-abstract-font-style_002c-setting-up-_0028sty_0029"></a>
+<a class="index-entry-id" id="index-font-style_002c-abstract_002c-setting-up-_0028sty_0029"></a>
+<a class="index-entry-id" id="index-style_002c-font_002c-abstract_002c-setting-up-_0028sty_0029"></a>
+<a class="index-entry-id" id="index-cs-request_002c-and-font-styles"></a>
+<a class="index-entry-id" id="index-bd-request_002c-and-font-styles"></a>
+<a class="index-entry-id" id="index-tkf-request_002c-and-font-styles"></a>
+<a class="index-entry-id" id="index-uf-request_002c-and-font-styles"></a>
+<a class="index-entry-id" id="index-fspecial-request_002c-and-font-styles"></a>
+<p>Associate an abstract style <var class="var">style</var> with mounting
+position&nbsp;<var class="var">n</var>, which must be a non-negative integer. If the
+requests <code class="code">cs</code>, <code class="code">bd</code>, <code class="code">tkf</code>, <code class="code">uf</code>, or <code class="code">fspecial</code>
+are applied to an abstract style, they are instead applied to the member
+of the current family corresponding to that style.
+</p>
+<a class="index-entry-id" id="index-DESC-1"></a>
+<a class="index-entry-id" id="index-styles-1"></a>
+<p>The default family can be set with the <samp class="option">-f</samp> option (see <a class="pxref" href="Groff-Options.html">Options</a>). The <code class="code">styles</code> command in the <samp class="file">DESC</samp> file controls
+which font positions (if any) are initially associated with abstract
+styles rather than fonts.
+</p>
+<p><strong class="strong">Caution:</strong> The <var class="var">style</var> argument is not validated.
+Errors may occur later, when the formatter attempts to construct a
+resolved font name, or format a character for output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr BarPos \n[.fp]
+.sty \n[.fp] Bar
+.fam Foo
+.ft \n[BarPos]
+.tm .f=\n[.f]
+A
+ error&rarr; error: no font family named 'Foo' exists
+ error&rarr; .f=41
+ error&rarr; error: cannot format glyph: no current font
+</pre></div></div>
+
+<p>When an abstract style has been selected, the read-only string-valued
+register &lsquo;<samp class="samp">.sty</samp>&rsquo; interpolates its name; this datum is associated
+with the environment (see <a class="pxref" href="Environments.html">Environments</a>). Otherwise, &lsquo;<samp class="samp">.sty</samp>&rsquo;
+interpolates nothing.
+</p></dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Font-Positions.html">Font Positions</a>, Previous: <a href="Selecting-Fonts.html">Selecting Fonts</a>, Up: <a href="Using-Fonts.html">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Font-Positions.html b/doc/groff.html.node/Font-Positions.html
new file mode 100644
index 0000000..387b4bb
--- /dev/null
+++ b/doc/groff.html.node/Font-Positions.html
@@ -0,0 +1,138 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Font Positions (The GNU Troff Manual)</title>
+
+<meta name="description" content="Font Positions (The GNU Troff Manual)">
+<meta name="keywords" content="Font Positions (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Using-Fonts.html" rel="up" title="Using Fonts">
+<link href="Using-Symbols.html" rel="next" title="Using Symbols">
+<link href="Font-Families.html" rel="prev" title="Font Families">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Font-Positions">
+<div class="nav-panel">
+<p>
+Next: <a href="Using-Symbols.html" accesskey="n" rel="next">Using Symbols</a>, Previous: <a href="Font-Families.html" accesskey="p" rel="prev">Font Families</a>, Up: <a href="Using-Fonts.html" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Font-Positions-1">5.19.3 Font Positions</h4>
+<a class="index-entry-id" id="index-font-positions"></a>
+<a class="index-entry-id" id="index-positions_002c-font"></a>
+
+<p>To support typeface indirection through abstract styles, and for
+compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, the formatter maintains
+a list of font <em class="dfn">positions</em> at which fonts required by a document are
+<em class="dfn">mounted</em>. An output device&rsquo;s description file <samp class="file">DESC</samp>
+typically configures a set of pre-mounted fonts; see <a class="ref" href="Device-and-Font-Description-Files.html">Device and Font Description Files</a>. A font need not be explicitly mounted before
+it is selected; GNU <code class="code">troff</code> will search <code class="env">GROFF_FONT_PATH</code> for
+it by name and mount it at the first free mounting position on demand.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fp</code></strong> <var class="def-var-arguments">pos id [<span class="r"><i class="slanted">font-description-file-name</i></span>]</var><a class="copiable-link" href='#index-_002efp'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fp"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ef_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.f]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ef_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ef"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002efp_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.fp]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002efp_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002efp-1"></a>
+<a class="index-entry-id" id="index-mounting-a-font-_0028fp_0029"></a>
+<a class="index-entry-id" id="index-font_002c-mounting-_0028fp_0029"></a>
+<p>Mount a font under the name <var class="var">id</var> at mounting position <var class="var">pos</var>, a
+non-negative integer. When the formatter starts up, it reads the output
+device&rsquo;s description to mount an initial set of faces, and selects font
+position&nbsp;1. Position&nbsp;0 is unused by default. Unless the
+<var class="var">font-description-file-name</var> argument is given, <var class="var">id</var> should be
+the name of a font description file stored in a directory corresponding
+to the selected output device. GNU <code class="code">troff</code> does not traverse
+directories to locate the font description file.
+</p>
+<a class="index-entry-id" id="index-font-aliasing-with-third-argument-to-fp-request"></a>
+<a class="index-entry-id" id="index-aliasing-fonts-with-third-argument-to-fp-request"></a>
+<p>The optional third argument enables font names to be aliased, which can
+be necessary in compatibility mode since AT&amp;T <code class="code">troff</code> syntax
+affords no means of identifying fonts with names longer than two
+characters, like &lsquo;<samp class="samp">TBI</samp>&rsquo; or &lsquo;<samp class="samp">ZCMI</samp>&rsquo;, in a font selection escape
+sequence. See <a class="xref" href="Compatibility-Mode.html">Compatibility Mode</a>. You can also alias fonts on
+mounting for convenience or abstraction. (See below regarding the
+<code class="code">.fp</code> register.)
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.fp \n[.fp] SC ZCMI
+Send a \f(SChand-written\fP thank-you note.
+.fp \n[.fp] Emph TI
+.fp \n[.fp] Strong TB
+Are \f[Emph]these names\f[] \f[Strong]comfortable\f[]?
+</pre></div></div>
+
+<p>&lsquo;<samp class="samp">DESC</samp>&rsquo;, &lsquo;<samp class="samp">P</samp>&rsquo;, and non-negative integers are not usable as font
+identifiers.
+</p>
+<a class="index-entry-id" id="index-font-position-register-_0028_002ef_0029"></a>
+<p>The position of the currently selected font (or abstract style) is
+available in the read-only register &lsquo;<samp class="samp">.f</samp>&rsquo;. It is associated with
+the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<p>You can copy the value of <code class="code">.f</code> to another register to save it for
+later use.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr saved-font \n[.f]
+<span class="r">&hellip; <i class="i">text involving many font changes</i> &hellip;</span>
+.ft \n[saved-font]
+</pre></div></div>
+
+<a class="index-entry-id" id="index-next-free-font-position-register-_0028_002efp_0029"></a>
+<p>The index of the next (non-zero) free font position is available in the
+read-only register &lsquo;<samp class="samp">.fp</samp>&rsquo;.
+<a class="index-entry-id" id="index-DESC-file_002c-and-font-mounting"></a>
+Fonts not listed in the <samp class="file">DESC</samp> file are automatically mounted at
+position &lsquo;<samp class="samp">\n[.fp]</samp>&rsquo; when selected with the <code class="code">ft</code> request or
+<code class="code">\f</code> escape sequence. When mounting a font at a position
+explicitly with the <code class="code">fp</code> request, this same practice should be
+followed, although GNU <code class="code">troff</code> does not enforce this strictly.
+</p></dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Using-Symbols.html">Using Symbols</a>, Previous: <a href="Font-Families.html">Font Families</a>, Up: <a href="Using-Fonts.html">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Font-and-Size-Changes.html b/doc/groff.html.node/Font-and-Size-Changes.html
new file mode 100644
index 0000000..d8319bf
--- /dev/null
+++ b/doc/groff.html.node/Font-and-Size-Changes.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Font and Size Changes (The GNU Troff Manual)</title>
+
+<meta name="description" content="Font and Size Changes (The GNU Troff Manual)">
+<meta name="keywords" content="Font and Size Changes (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Predefined-Text.html" rel="next" title="Predefined Text">
+<link href="Columnation.html" rel="prev" title="Columnation">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Font-and-Size-Changes">
+<div class="nav-panel">
+<p>
+Next: <a href="Predefined-Text.html" accesskey="n" rel="next">Predefined Text</a>, Previous: <a href="Columnation.html" accesskey="p" rel="prev">Columnation</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Font-and-Size-Changes-1">3.2.11 Font and Size Changes</h4>
+
+<p>The formatter&rsquo;s requests and escape sequences for setting the typeface
+and size are not always intuitive, so all macro packages provide macros
+to make these operations simpler. They also make it more convenient to
+change typefaces in the middle of a word and can handle italic
+corrections automatically. See <a class="xref" href="Italic-Corrections.html">Italic Corrections</a>.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Footnotes-and-Endnotes.html b/doc/groff.html.node/Footnotes-and-Endnotes.html
new file mode 100644
index 0000000..82d14e7
--- /dev/null
+++ b/doc/groff.html.node/Footnotes-and-Endnotes.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Footnotes and Endnotes (The GNU Troff Manual)</title>
+
+<meta name="description" content="Footnotes and Endnotes (The GNU Troff Manual)">
+<meta name="keywords" content="Footnotes and Endnotes (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Table-of-Contents.html" rel="next" title="Table of Contents">
+<link href="Displays-and-Keeps.html" rel="prev" title="Displays and Keeps">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Footnotes-and-Endnotes">
+<div class="nav-panel">
+<p>
+Next: <a href="Table-of-Contents.html" accesskey="n" rel="next">Table of Contents</a>, Previous: <a href="Displays-and-Keeps.html" accesskey="p" rel="prev">Displays and Keeps</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Footnotes-and-Endnotes-1">3.2.6 Footnotes and Endnotes</h4>
+<a class="index-entry-id" id="index-footnotes"></a>
+<a class="index-entry-id" id="index-endnotes"></a>
+
+<p><i class="slanted">Footnotes</i> and <i class="slanted">endnotes</i> are forms of delayed
+formatting. They are recorded at their points of relevance in
+the input, but not formatted there. Instead, a <i class="slanted">mark</i> cues the
+reader to check the &ldquo;foot&rdquo;, or bottom, of the current page, or in the
+case of endnotes, an annotation list later in the document. Macro
+packages that support these features also supply a means of
+automatically numbering either type of annotation.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Formatter-Instructions.html b/doc/groff.html.node/Formatter-Instructions.html
new file mode 100644
index 0000000..b6527ad
--- /dev/null
+++ b/doc/groff.html.node/Formatter-Instructions.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Formatter Instructions (The GNU Troff Manual)</title>
+
+<meta name="description" content="Formatter Instructions (The GNU Troff Manual)">
+<meta name="keywords" content="Formatter Instructions (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Registers.html" rel="next" title="Registers">
+<link href="Identifiers.html" rel="prev" title="Identifiers">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Formatter-Instructions">
+<div class="nav-panel">
+<p>
+Next: <a href="Registers.html" accesskey="n" rel="next">Registers</a>, Previous: <a href="Identifiers.html" accesskey="p" rel="prev">Identifiers</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Formatter-Instructions-1">5.6 Formatter Instructions</h3>
+<a class="index-entry-id" id="index-formatter-instructions"></a>
+<a class="index-entry-id" id="index-instructing-the-formatter"></a>
+
+<p>To support documents that require more than filling, automatic line
+breaking and hyphenation, adjustment, and supplemental inter-sentence
+space, the <code class="code">roff</code> language offers two means of embedding
+instructions to the formatter.
+</p>
+<a class="index-entry-id" id="index-request-1"></a>
+<p>One is a <em class="dfn">request</em>, which begins with a control character and takes
+up the remainder of the input line. Requests often perform relatively
+large-scale operations such as setting the page length, breaking the
+line, or starting a new page. They also conduct internal operations
+like defining macros.
+</p>
+<a class="index-entry-id" id="index-escape-sequence"></a>
+<a class="index-entry-id" id="index-sequence_002c-escape"></a>
+<p>The other is an <em class="dfn">escape sequence</em>, which begins with the escape
+character and can be embedded anywhere in the input, even in arguments
+to requests and other escape sequences. Escape sequences interpolate
+special characters, strings, or registers, and handle comparatively
+minor formatting tasks like sub- and superscripting.
+</p>
+<p>Some operations, such as font selection and type size alteration, are
+available via both requests and escape sequences.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="Control-Characters.html" accesskey="1">Control Characters</a></li>
+<li><a href="Invoking-Requests.html" accesskey="2">Invoking Requests</a></li>
+<li><a href="Calling-Macros.html" accesskey="3">Calling Macros</a></li>
+<li><a href="Using-Escape-Sequences.html" accesskey="4">Using Escape Sequences</a></li>
+<li><a href="Delimiters.html" accesskey="5">Delimiters</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/GNU-troff-Reference.html b/doc/groff.html.node/GNU-troff-Reference.html
new file mode 100644
index 0000000..396d40a
--- /dev/null
+++ b/doc/groff.html.node/GNU-troff-Reference.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>GNU troff Reference (The GNU Troff Manual)</title>
+
+<meta name="description" content="GNU troff Reference (The GNU Troff Manual)">
+<meta name="keywords" content="GNU troff Reference (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="File-Formats.html" rel="next" title="File Formats">
+<link href="Major-Macro-Packages.html" rel="prev" title="Major Macro Packages">
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="GNU-troff-Reference">
+<div class="nav-panel">
+<p>
+Next: <a href="File-Formats.html" accesskey="n" rel="next">File Formats</a>, Previous: <a href="Major-Macro-Packages.html" accesskey="p" rel="prev">Macro Packages</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="chapter" id="GNU-troff-Reference-1">5 GNU <code class="code">troff</code> Reference</h2>
+<a class="index-entry-id" id="index-reference_002c-gtroff"></a>
+<a class="index-entry-id" id="index-gtroff_002c-reference"></a>
+
+<p>This chapter covers <em class="emph">all</em> of the facilities of the GNU
+<code class="code">troff</code> formatting engine. Users of macro packages may skip it if
+not interested in details.
+</p>
+
+
+
+
+<ul class="mini-toc">
+<li><a href="Text.html" accesskey="1">Text</a></li>
+<li><a href="Page-Geometry.html" accesskey="2">Page Geometry</a></li>
+<li><a href="Measurements.html" accesskey="3">Measurements</a></li>
+<li><a href="Numeric-Expressions.html" accesskey="4">Numeric Expressions</a></li>
+<li><a href="Identifiers.html" accesskey="5">Identifiers</a></li>
+<li><a href="Formatter-Instructions.html" accesskey="6">Formatter Instructions</a></li>
+<li><a href="Comments.html" accesskey="7">Comments</a></li>
+<li><a href="Registers.html" accesskey="8">Registers</a></li>
+<li><a href="Manipulating-Filling-and-Adjustment.html" accesskey="9">Manipulating Filling and Adjustment</a></li>
+<li><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></li>
+<li><a href="Manipulating-Spacing.html">Manipulating Spacing</a></li>
+<li><a href="Tabs-and-Fields.html">Tabs and Fields</a></li>
+<li><a href="Character-Translations.html">Character Translations</a></li>
+<li><a href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></li>
+<li><a href="Line-Layout.html">Line Layout</a></li>
+<li><a href="Line-Continuation.html">Line Continuation</a></li>
+<li><a href="Page-Layout.html">Page Layout</a></li>
+<li><a href="Page-Control.html">Page Control</a></li>
+<li><a href="Using-Fonts.html">Using Fonts</a></li>
+<li><a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a></li>
+<li><a href="Colors.html">Colors</a></li>
+<li><a href="Strings.html">Strings</a></li>
+<li><a href="Conditionals-and-Loops.html">Conditionals and Loops</a></li>
+<li><a href="Writing-Macros.html">Writing Macros</a></li>
+<li><a href="Page-Motions.html">Page Motions</a></li>
+<li><a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></li>
+<li><a href="Deferring-Output.html">Deferring Output</a></li>
+<li><a href="Traps.html">Traps</a></li>
+<li><a href="Diversions.html">Diversions</a></li>
+<li><a href="Punning-Names.html">Punning Names</a></li>
+<li><a href="Environments.html">Environments</a></li>
+<li><a href="Suppressing-Output.html">Suppressing Output</a></li>
+<li><a href="I_002fO.html">I/O</a></li>
+<li><a href="Postprocessor-Access.html">Postprocessor Access</a></li>
+<li><a href="Miscellaneous.html">Miscellaneous</a></li>
+<li><a href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a></li>
+<li><a href="Debugging.html">Debugging</a></li>
+<li><a href="Implementation-Differences.html">Implementation Differences</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Graphics-Commands.html b/doc/groff.html.node/Graphics-Commands.html
new file mode 100644
index 0000000..87a856c
--- /dev/null
+++ b/doc/groff.html.node/Graphics-Commands.html
@@ -0,0 +1,247 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Graphics Commands (The GNU Troff Manual)</title>
+
+<meta name="description" content="Graphics Commands (The GNU Troff Manual)">
+<meta name="keywords" content="Graphics Commands (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Command-Reference.html" rel="up" title="Command Reference">
+<link href="Device-Control-Commands.html" rel="next" title="Device Control Commands">
+<link href="Simple-Commands.html" rel="prev" title="Simple Commands">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Graphics-Commands">
+<div class="nav-panel">
+<p>
+Next: <a href="Device-Control-Commands.html" accesskey="n" rel="next">Device Control Commands</a>, Previous: <a href="Simple-Commands.html" accesskey="p" rel="prev">Simple Commands</a>, Up: <a href="Command-Reference.html" accesskey="u" rel="up">Command Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Graphics-Commands-1">6.1.2.3 Graphics Commands</h4>
+
+<p>Each graphics or drawing command in the intermediate output starts with
+the letter &lsquo;<samp class="samp">D</samp>&rsquo;, followed by one or two characters that specify a
+subcommand; this is followed by a fixed or variable number of integer
+arguments that are separated by a single space character. A &lsquo;<samp class="samp">D</samp>&rsquo;
+command may not be followed by another command on the same line (apart
+from a comment), so each &lsquo;<samp class="samp">D</samp>&rsquo; command is terminated by a syntactical
+line break.
+</p>
+<p><code class="code">gtroff</code> output follows the classical spacing rules (no space
+between command and subcommand, all arguments are preceded by a single
+space character), but the parser allows optional space between the
+command letters and makes the space before the first argument optional.
+As usual, each space can be any sequence of tab and space characters.
+</p>
+<p>Some graphics commands can take a variable number of arguments. In this
+case, they are integers representing a size measured in basic units
+&lsquo;<samp class="samp">u</samp>&rsquo;. The arguments called <var class="var">h1</var>, <var class="var">h2</var>, &hellip;, <var class="var">hn</var>
+stand for horizontal distances where positive means right, negative
+left. The arguments called <var class="var">v1</var>, <var class="var">v2</var>, &hellip;, <var class="var">vn</var> stand
+for vertical distances where positive means down, negative up. All
+these distances are offsets relative to the current location.
+</p>
+<p>Each graphics command directly corresponds to a similar <code class="code">gtroff</code>
+<code class="code">\D</code> escape sequence. See <a class="xref" href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a>.
+</p>
+<p>Unknown &lsquo;<samp class="samp">D</samp>&rsquo; commands are assumed to be device-specific. Its
+arguments are parsed as strings; the whole information is then sent to
+the postprocessor.
+</p>
+<p>In the following command reference, the syntax element &lsaquo;<span class="r">line
+break</span>&rsaquo; means a syntactical line break as defined above.
+</p>
+<dl class="table">
+<dt><code class="code">D~ <var class="var">h1</var> <var class="var">v1</var> <var class="var">h2</var> <var class="var">v2</var> &hellip; <var class="var">hn</var> <var class="var">vn</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw B-spline from current position to offset (<var class="var">h1</var>,<var class="var">v1</var>), then
+to offset (<var class="var">h2</var>,<var class="var">v2</var>), if given, etc., up to
+(<var class="var">hn</var>,<var class="var">vn</var>). This command takes a variable number of argument
+pairs; the current position is moved to the terminal point of the drawn
+curve.
+</p>
+</dd>
+<dt><code class="code">Da <var class="var">h1</var> <var class="var">v1</var> <var class="var">h2</var> <var class="var">v2</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw arc from current position to
+(<var class="var">h1</var>,<var class="var">v1</var>)<em class="math">+</em>(<var class="var">h2</var>,<var class="var">v2</var>) with center at
+(<var class="var">h1</var>,<var class="var">v1</var>); then move the current position to the final point
+of the arc.
+</p>
+</dd>
+<dt><code class="code">DC <var class="var">d</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dt><code class="code">DC <var class="var">d</var> <var class="var">dummy-arg</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw a solid circle using the current fill color with
+diameter&nbsp;<var class="var">d</var> (integer in basic units &lsquo;<samp class="samp">u</samp>&rsquo;) with leftmost
+point at the current position; then move the current position to the
+rightmost point of the circle. An optional second integer argument is
+ignored (this allows the formatter to generate an even number of
+arguments). This command is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">Dc <var class="var">d</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw circle line with diameter&nbsp;<var class="var">d</var> (integer in basic units
+&lsquo;<samp class="samp">u</samp>&rsquo;) with leftmost point at the current position; then move the
+current position to the rightmost point of the circle.
+</p>
+</dd>
+<dt><code class="code">DE <var class="var">h</var> <var class="var">v</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw a solid ellipse in the current fill color with a horizontal
+diameter of&nbsp;<var class="var">h</var> and a vertical diameter of&nbsp;<var class="var">v</var> (both
+integers in basic units &lsquo;<samp class="samp">u</samp>&rsquo;) with the leftmost point at the current
+position; then move to the rightmost point of the ellipse. This command
+is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">De <var class="var">h</var> <var class="var">v</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw an outlined ellipse with a horizontal diameter of&nbsp;<var class="var">h</var> and
+a vertical diameter of&nbsp;<var class="var">v</var> (both integers in basic units
+&lsquo;<samp class="samp">u</samp>&rsquo;) with the leftmost point at current position; then move to the
+rightmost point of the ellipse.
+</p>
+</dd>
+<dt><code class="code">DF <var class="var">color-scheme</var> <span class="r">[</span><var class="var">component</var> &hellip;<span class="r">]</span>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set fill color for solid drawing objects using different color schemes;
+the analogous command for setting the color of text, line graphics, and
+the outline of graphic objects is &lsquo;<samp class="samp">m</samp>&rsquo;. The color components are
+specified as integer arguments between 0 and 65535. The number of color
+components and their meaning vary for the different color schemes.
+These commands are generated by <code class="code">gtroff</code>&rsquo;s escape sequences
+&lsquo;<samp class="samp">\D'F &hellip;'</samp>&rsquo; and <code class="code">\M</code> (with no other corresponding
+graphics commands). No position changing. This command is a
+<code class="code">gtroff</code> extension.
+</p>
+<dl class="table">
+<dt><code class="code">DFc <var class="var">cyan</var> <var class="var">magenta</var> <var class="var">yellow</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set fill color for solid drawing objects using the CMY color scheme,
+having the 3&nbsp;color components <var class="var">cyan</var>, <var class="var">magenta</var>, and
+<var class="var">yellow</var>.
+</p>
+</dd>
+<dt><code class="code">DFd&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set fill color for solid drawing objects to the default fill color value
+(black in most cases). No component arguments.
+</p>
+</dd>
+<dt><code class="code">DFg <var class="var">gray</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set fill color for solid drawing objects to the shade of gray given by
+the argument, an integer between 0 (black) and 65535 (white).
+</p>
+</dd>
+<dt><code class="code">DFk <var class="var">cyan</var> <var class="var">magenta</var> <var class="var">yellow</var> <var class="var">black</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set fill color for solid drawing objects using the CMYK color scheme,
+having the 4&nbsp;color components <var class="var">cyan</var>, <var class="var">magenta</var>,
+<var class="var">yellow</var>, and <var class="var">black</var>.
+</p>
+</dd>
+<dt><code class="code">DFr <var class="var">red</var> <var class="var">green</var> <var class="var">blue</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set fill color for solid drawing objects using the RGB color scheme,
+having the 3&nbsp;color components <var class="var">red</var>, <var class="var">green</var>, and
+<var class="var">blue</var>.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code class="code">Df <var class="var">n</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>The argument&nbsp;<var class="var">n</var> must be an integer in the range <em class="math">-32767</em>
+to 32767.
+</p>
+<dl class="table">
+<dt><em class="math">0 &le; <var class="var">n</var> &le; 1000</em></dt>
+<dd><p>Set the color for filling solid drawing objects to a shade of gray,
+where 0 corresponds to solid white, 1000 (the default) to solid black,
+and values in between to intermediate shades of gray; this is obsoleted
+by command &lsquo;<samp class="samp">DFg</samp>&rsquo;.
+</p>
+</dd>
+<dt><em class="math"><var class="var">n</var> &lt; 0</em> or <em class="math"><var class="var">n</var> &gt; 1000</em></dt>
+<dd><p>Set the filling color to the color that is currently being used for the
+text and the outline, see command &lsquo;<samp class="samp">m</samp>&rsquo;. For example, the command
+sequence
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">mg 0 0 65535
+Df -1
+</pre></div></div>
+
+<p>sets all colors to blue.
+</p></dd>
+</dl>
+
+<p>No position changing. This command is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">Dl <var class="var">h</var> <var class="var">v</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw line from current position to offset (<var class="var">h</var>,<var class="var">v</var>) (integers in
+basic units &lsquo;<samp class="samp">u</samp>&rsquo;); then set current position to the end of the drawn
+line.
+</p>
+</dd>
+<dt><code class="code">Dp <var class="var">h1</var> <var class="var">v1</var> <var class="var">h2</var> <var class="var">v2</var> &hellip; <var class="var">hn</var> <var class="var">vn</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw a polygon line from current position to offset (<var class="var">h1</var>,<var class="var">v1</var>),
+from there to offset (<var class="var">h2</var>,<var class="var">v2</var>), etc., up to offset
+(<var class="var">hn</var>,<var class="var">vn</var>), and from there back to the starting position. For
+historical reasons, the position is changed by adding the sum of all
+arguments with odd index to the actual horizontal position and the even
+ones to the vertical position. Although this doesn&rsquo;t make sense it is
+kept for compatibility.
+This command is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">DP <var class="var">h1</var> <var class="var">v1</var> <var class="var">h2</var> <var class="var">v2</var> &hellip; <var class="var">hn</var> <var class="var">vn</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Draw a solid polygon in the current fill color rather than an outlined
+polygon, using the same arguments and positioning as the corresponding
+&lsquo;<samp class="samp">Dp</samp>&rsquo; command.
+This command is a <code class="code">gtroff</code> extension.
+</p>
+</dd>
+<dt><code class="code">Dt <var class="var">n</var>&lsaquo;<span class="r">line break</span>&rsaquo;</code></dt>
+<dd><p>Set the current line thickness to&nbsp;<var class="var">n</var> (an integer in basic
+units &lsquo;<samp class="samp">u</samp>&rsquo;) if <em class="math"><var class="var">n</var>&gt;0</em>; if <em class="math"><var class="var">n</var>=0</em> select the
+smallest available line thickness; if <em class="math"><var class="var">n</var>&lt;0</em> set the line
+thickness proportional to the type size (this is the default before the
+first &lsquo;<samp class="samp">Dt</samp>&rsquo; command was specified). For historical reasons, the
+horizontal position is changed by adding the argument to the actual
+horizontal position, while the vertical position is not changed.
+Although this doesn&rsquo;t make sense it is kept for compatibility.
+This command is a <code class="code">gtroff</code> extension.
+</p></dd>
+</dl>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Device-Control-Commands.html">Device Control Commands</a>, Previous: <a href="Simple-Commands.html">Simple Commands</a>, Up: <a href="Command-Reference.html">Command Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Groff-Options.html b/doc/groff.html.node/Groff-Options.html
new file mode 100644
index 0000000..48ea5e5
--- /dev/null
+++ b/doc/groff.html.node/Groff-Options.html
@@ -0,0 +1,536 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Groff Options (The GNU Troff Manual)</title>
+
+<meta name="description" content="Groff Options (The GNU Troff Manual)">
+<meta name="keywords" content="Groff Options (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Invoking-groff.html" rel="up" title="Invoking groff">
+<link href="Environment.html" rel="next" title="Environment">
+<link href="Invoking-groff.html" rel="prev" title="Invoking groff">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span.w-nolinebreak-text {white-space: nowrap}
+span:hover a.copiable-link {visibility: visible}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Groff-Options">
+<div class="nav-panel">
+<p>
+Next: <a href="Environment.html" accesskey="n" rel="next">Environment</a>, Previous: <a href="Invoking-groff.html" accesskey="p" rel="prev">Invoking <code class="code">groff</code></a>, Up: <a href="Invoking-groff.html" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Options">2.1 Options</h3>
+<a class="index-entry-id" id="index-options"></a>
+
+<a class="index-entry-id" id="index-groff"></a>
+<a class="index-entry-id" id="index-gtroff"></a>
+<a class="index-entry-id" id="index-gpic"></a>
+<a class="index-entry-id" id="index-geqn"></a>
+<a class="index-entry-id" id="index-ggrn"></a>
+<a class="index-entry-id" id="index-grap"></a>
+<a class="index-entry-id" id="index-gtbl"></a>
+<a class="index-entry-id" id="index-gchem"></a>
+<a class="index-entry-id" id="index-grefer"></a>
+<a class="index-entry-id" id="index-gsoelim"></a>
+<a class="index-entry-id" id="index-preconv"></a>
+<p><code class="code">groff</code> normally runs the <code class="code">gtroff</code> program and a
+postprocessor appropriate for the selected device. The default device
+is &lsquo;<samp class="samp">ps</samp>&rsquo; (but it can be changed when <code class="code">groff</code> is configured and
+built). It can optionally preprocess with any of <code class="code">gpic</code>,
+<code class="code">geqn</code>, <code class="code">gtbl</code>, <code class="code">ggrn</code>, <code class="code">grap</code>, <code class="code">gchem</code>,
+<code class="code">grefer</code>, <code class="code">gsoelim</code>, or <code class="code">preconv</code>.
+</p>
+<p>This section documents only options to the <code class="code">groff</code> front end. Many
+of the arguments to <code class="code">groff</code> are passed on to <code class="code">gtroff</code>;
+therefore, those are also included. Arguments to preprocessors and
+output drivers can be found in the man pages <cite class="cite">gpic<span class="r">(1)</span></cite>,
+<cite class="cite">geqn<span class="r">(1)</span></cite>, <cite class="cite">gtbl<span class="r">(1)</span></cite>, <cite class="cite">ggrn<span class="r">(1)</span></cite>,
+<cite class="cite">grefer<span class="r">(1)</span></cite>, <cite class="cite">gchem<span class="r">(1)</span></cite>, <cite class="cite">gsoelim<span class="r">(1)</span></cite>,
+<cite class="cite">preconv<span class="r">(1)</span></cite>, <cite class="cite">grotty<span class="r">(1)</span></cite>, <cite class="cite">grops<span class="r">(1)</span></cite>,
+<cite class="cite">gropdf<span class="r">(1)</span></cite>, <cite class="cite">grohtml<span class="r">(1)</span></cite>, <cite class="cite">grodvi<span class="r">(1)</span></cite>,
+<cite class="cite">grolj4<span class="r">(1)</span></cite>, <cite class="cite">grolbp<span class="r">(1)</span></cite>, and <cite class="cite">gxditview<span class="r">(1)</span></cite>.
+</p>
+<p>The command-line format for <code class="code">groff</code> is:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff [ -abceghijklpstvzCEGNRSUVXZ ] [ -d<var class="var">cs</var> ] [ -D<var class="var">arg</var> ]
+ [ -f<var class="var">fam</var> ] [ -F<var class="var">dir</var> ] [ -I<var class="var">dir</var> ] [ -K<var class="var">arg</var> ]
+ [ -L<var class="var">arg</var> ] [ -m<var class="var">name</var> ] [ -M<var class="var">dir</var> ] [ -n<var class="var">num</var> ]
+ [ -o<var class="var">list</var> ] [ -P<var class="var">arg</var> ] [ -r<var class="var">cn</var> ] [ -T<var class="var">dev</var> ]
+ [ -w<var class="var">name</var> ] [ -W<var class="var">name</var> ] [ <var class="var">files</var>&hellip; ]
+</pre></div></div>
+
+<p>The command-line format for <code class="code">gtroff</code> is as follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">gtroff [ -abcivzCERU ] [ -d<var class="var">cs</var> ] [ -f<var class="var">fam</var> ] [ -F<var class="var">dir</var> ]
+ [ -m<var class="var">name</var> ] [ -M<var class="var">dir</var> ] [ -n<var class="var">num</var> ] [ -o<var class="var">list</var> ]
+ [ -r<var class="var">cn</var> ] [ -T<var class="var">name</var> ] [ -w<var class="var">name</var> ] [ -W<var class="var">name</var> ]
+ [ <var class="var">files</var>&hellip; ]
+</pre></div></div>
+
+<p>Obviously, many of the options to <code class="code">groff</code> are actually passed on to
+<code class="code">gtroff</code>.
+</p>
+<p>Options without an argument can be grouped behind a
+single&nbsp;<samp class="option">-</samp>. A filename of&nbsp;<samp class="file">-</samp> denotes the
+standard input. Whitespace is permitted between an option and its
+argument.
+</p>
+<p>The <code class="code">grog</code> command can be used to guess the correct <code class="code">groff</code>
+command to format a file. See its man page <cite class="cite">grog<span class="r">(1)</span></cite>; type
+&lsquo;<samp class="samp">man grog</samp>&rsquo; at the command line to view it.
+</p>
+<p><code class="command">groff</code>&rsquo;s command-line options are as follows.
+</p>
+<a class="index-entry-id" id="index-command_002dline-options"></a>
+<dl class="table">
+<dt id='index-plain-text-approximation-output-register-_0028_002eA_0029'><span>&lsquo;<samp class="samp">-a</samp>&rsquo;<a class="copiable-link" href='#index-plain-text-approximation-output-register-_0028_002eA_0029'> &para;</a></span></dt>
+<dd><p>Generate a plain text approximation of the typeset output. The
+read-only register <code class="code">.A</code> is set to&nbsp;1. See <a class="xref" href="Built_002din-Registers.html">Built-in Registers</a>. This option produces a sort of abstract preview of the
+formatted output.
+</p>
+<ul class="itemize mark-bullet">
+<li>Page breaks are marked by a phrase in angle brackets; for example,
+&lsquo;<samp class="samp">&lt;beginning of page&gt;</samp>&rsquo;.
+
+</li><li>Lines are broken where they would be in the formatted output.
+
+</li><li>A horizontal motion of any size is represented as one space. Adjacent
+horizontal motions are not combined. Inter-sentence space nodes (those
+arising from the second argument to the <code class="code">ss</code> request) are not
+represented.
+
+</li><li>Vertical motions are not represented.
+
+</li><li>Special characters are rendered in angle brackets; for example, the
+default soft hyphen character appears as &lsquo;<samp class="samp">&lt;hy&gt;</samp>&rsquo;.
+</li></ul>
+
+<p>The above description should not be considered a specification; the
+details of <samp class="option">-a</samp> output are subject to change.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-b</samp>&rsquo;</dt>
+<dd><p>Write a backtrace reporting the state of <code class="command">gtroff</code>&rsquo;s input parser
+to the standard error stream with each diagnostic message. The line
+numbers given in the backtrace might not always be correct, because
+<code class="command">gtroff</code>&rsquo;s idea of line numbers can be confused by requests that
+append to
+macros.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-c</samp>&rsquo;</dt>
+<dd><p>Start with color output disabled.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-C</samp>&rsquo;</dt>
+<dd><p>Enable AT&amp;T <code class="command">troff</code> compatibility mode; implies <samp class="option">-c</samp>.
+See <a class="xref" href="Implementation-Differences.html">Implementation Differences</a>, for the list of incompatibilities
+between <code class="command">groff</code> and <abbr class="acronym">AT&amp;T</abbr> <code class="command">troff</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-d<var class="var">c</var><var class="var">text</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">-d<var class="var">string</var>=<var class="var">text</var></samp>&rsquo;</dt>
+<dd><p>Define <code class="code">roff</code> string <var class="var">c</var> or <var class="var">string</var> as&nbsp;<var class="var">t</var> or
+<var class="var">text</var>. <var class="var">c</var>&nbsp;must be one character; <var class="var">string</var> can be
+of arbitrary length. Such string assignments happen before any macro
+file is loaded, including the startup file. Due to <code class="code">getopt_long</code>
+limitations, <var class="var">c</var>&nbsp;cannot be, and <var class="var">string</var> cannot contain, an
+equals sign, even though that is a valid character in a <code class="code">roff</code>
+identifier.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-D<var class="var">enc</var></samp>&rsquo;</dt>
+<dd><p>Set fallback input encoding used by <code class="command">preconv</code> to <var class="var">enc</var>;
+implies <samp class="option">-k</samp>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-e</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">geqn</code> preprocessor.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-E</samp>&rsquo;</dt>
+<dd><p>Inhibit <code class="command">gtroff</code> error messages. This option does <em class="emph">not</em>
+suppress messages sent to the standard error stream by documents or
+macro packages using <code class="code">tm</code> or related requests.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-f<var class="var">fam</var></samp>&rsquo;</dt>
+<dd><p>Use <var class="var">fam</var> as the default font family. See <a class="xref" href="Font-Families.html">Font Families</a>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-F<var class="var">dir</var></samp>&rsquo;</dt>
+<dd><p>Search in directory <samp class="file"><var class="var">dir</var></samp> for the selected output device&rsquo;s
+directory of device and font description files. See the description of
+<code class="env">GROFF_FONT_PATH</code> in <a class="ref" href="Environment.html">Environment</a> below for the default search
+locations and ordering.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-g</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">ggrn</code> preprocessor.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-G</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">grap</code> preprocessor; implies <samp class="option">-p</samp>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-h</samp>&rsquo;</dt>
+<dd><p>Display a usage message and exit.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-i</samp>&rsquo;</dt>
+<dd><p>Read the standard input after all the named input files have been
+processed.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-I<var class="var">dir</var></samp>&rsquo;</dt>
+<dd><p>Search the directory <var class="var">dir</var> for files named in several contexts;
+implies <samp class="option">-g</samp> and <samp class="option">-s</samp>.
+</p>
+<ul class="itemize mark-bullet">
+<li><code class="command">gsoelim</code> replaces <code class="code">so</code> requests with the contents of their
+file name arguments.
+
+</li><li><code class="command">gtroff</code> searches for files named as operands in its command
+line and as arguments to <code class="code">psbb</code>, <code class="code">so</code>, and <code class="code">soquiet</code>
+requests.
+
+</li><li>Output drivers may search for files; for instance, <code class="command">grops</code> looks
+for files named in &lsquo;<samp class="samp">\X'ps: import <span class="r">&hellip;</span>'</samp>&rsquo;, &lsquo;<samp class="samp">\X'ps: file
+<span class="r">&hellip;</span>'</samp>&rsquo;, and &lsquo;<samp class="samp">\X'pdf: pdfpic <span class="r">&hellip;</span>'</samp>&rsquo; device control
+escape sequences.
+</li></ul>
+
+<p>This option may be specified more than once; the directories are
+searched in the order specified. If you want to search the current
+directory before others, add &lsquo;<samp class="samp">-I .</samp>&rsquo; at the desired place. The
+current working directory is otherwise searched last. <samp class="option">-I</samp> works
+similarly to, and is named for, the &ldquo;include&rdquo; option of Unix C
+compilers.
+</p>
+<p><samp class="option">-I</samp> options are passed to <code class="command">gsoelim</code>, <code class="command">gtroff</code>,
+and output drivers; with the flag letter changed to <samp class="option">-M</samp>, they
+are also passed to <code class="command">ggrn</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-j</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">gchem</code> preprocessor. Implies <samp class="option">-p</samp>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-k</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">preconv</code> preprocessor. Refer to its man page for its
+behavior if neither of <code class="command">groff</code>&rsquo;s <samp class="option">-K</samp> or <samp class="option">-D</samp>
+options is also specified.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-K<var class="var">enc</var></samp>&rsquo;</dt>
+<dd><p>Set input encoding used by <code class="command">preconv</code> to <var class="var">enc</var>; implies
+<samp class="option">-k</samp>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-l</samp>&rsquo;</dt>
+<dd><p>Send the output to a spooler for printing. The <code class="code">print</code> directive
+in the device description file specifies the default command to be used;
+see <a class="ref" href="Device-and-Font-Description-Files.html">Device and Font Description Files</a>.
+See options <samp class="option">-L</samp> and <samp class="option">-X</samp>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-L<var class="var">arg</var></samp>&rsquo;</dt>
+<dd><p>Pass <var class="var">arg</var> to the print spooler program. If multiple <var class="var">arg</var>s are
+required, pass each with a separate <samp class="option">-L</samp> option. <code class="command">groff</code>
+does not prefix an option dash to <var class="var">arg</var> before passing it to the
+spooler program.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-m<var class="var">name</var></samp>&rsquo;</dt>
+<dd><p>Process the file <samp class="file"><var class="var">name</var>.tmac</samp> prior to any input files.
+If not found, <samp class="file">tmac.<var class="var">name</var></samp> is attempted. <var class="var">name</var>
+(in both arrangements) is presumed to be a macro file; see the
+description of <code class="env">GROFF_TMAC_PATH</code> in <a class="ref" href="Environment.html">Environment</a> below for the
+default search locations and ordering. This option and its argument are
+also passed to <code class="command">geqn</code>, <code class="command">grap</code>, and <code class="command">ggrn</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-M<var class="var">dir</var></samp>&rsquo;</dt>
+<dd><p>Search directory <samp class="file"><var class="var">dir</var></samp> for macro files; see the description
+of <code class="env">GROFF_TMAC_PATH</code> in <a class="ref" href="Environment.html">Environment</a> below for the default
+search locations and ordering. This option and its argument are also
+passed to <code class="command">geqn</code>, <code class="command">grap</code>, and <code class="command">ggrn</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-n<var class="var">num</var></samp>&rsquo;</dt>
+<dd><p>Number the first page <var class="var">num</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-N</samp>&rsquo;</dt>
+<dd><p>Prohibit newlines between <code class="code">eqn</code> delimiters: pass <samp class="option">-N</samp> to
+<code class="command">geqn</code>.
+</p>
+</dd>
+<dt id='index-print-current-page-register-_0028_002eP_0029'><span>&lsquo;<samp class="samp">-o<var class="var">list</var></samp>&rsquo;<a class="copiable-link" href='#index-print-current-page-register-_0028_002eP_0029'> &para;</a></span></dt>
+<dd><p>Output only pages in <var class="var">list</var>, which is a comma-separated list of page
+ranges; &lsquo;<samp class="samp"><var class="var">n</var></samp>&rsquo; means page&nbsp;<var class="var">n</var>, &lsquo;<samp class="samp"><var class="var">m</var>-<var class="var">n</var></samp>&rsquo;
+means every page between <var class="var">m</var> and&nbsp;<var class="var">n</var>, &lsquo;<samp class="samp">-<var class="var">n</var></samp>&rsquo; means
+every page up to&nbsp;<var class="var">n</var>, &lsquo;<samp class="samp"><var class="var">n</var>-</samp>&rsquo; means every page from
+<var class="var">n</var>&nbsp;on. <code class="command">gtroff</code> stops processing and exits after
+formatting the last page enumerated in <var class="var">list</var>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-p</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">gpic</code> preprocessor.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-P<var class="var">arg</var></samp>&rsquo;</dt>
+<dd><p>Pass <var class="var">arg</var> to the postprocessor. If multiple <var class="var">arg</var>s are
+required, pass each with a separate <samp class="option">-P</samp> option. <code class="command">groff</code>
+does not prefix an option dash to <var class="var">arg</var> before passing it to the
+postprocessor.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-r<var class="var">c</var><var class="var">numeric-expression</var></samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">-r<var class="var">register</var>=<var class="var">expr</var></samp>&rsquo;</dt>
+<dd><p>Set <code class="code">roff</code> register&nbsp;<var class="var">c</var> or <var class="var">register</var> to the value
+<var class="var">numeric-expression</var> (see <a class="pxref" href="Numeric-Expressions.html">Numeric Expressions</a>).
+<var class="var">c</var>&nbsp;must be one character; <var class="var">register</var> can be of arbitrary
+length. Such register assignments happen before any macro file is
+loaded, including the startup file. Due to <code class="code">getopt_long</code>
+limitations, <var class="var">c</var>&nbsp;cannot be, and <var class="var">register</var> cannot contain,
+an equals sign, even though that is a valid character in a <code class="code">roff</code>
+identifier.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-R</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">grefer</code> preprocessor. No mechanism is provided for passing
+arguments to <code class="command">grefer</code> because most <code class="command">grefer</code> options have
+equivalent language elements that can be specified within the document.
+</p>
+<a class="index-entry-id" id="index-troffrc"></a>
+<a class="index-entry-id" id="index-troffrc_002dend"></a>
+<p><code class="command">gtroff</code> also accepts a <samp class="option">-R</samp> option, which is not
+accessible via <code class="command">groff</code>. This option prevents the loading of the
+<samp class="file">troffrc</samp> and <samp class="file">troffrc-end</samp> files.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-s</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">gsoelim</code> preprocessor.
+</p>
+</dd>
+<dt id='index-open-request_002c-and-safer-mode'><span>&lsquo;<samp class="samp">-S</samp>&rsquo;<a class="copiable-link" href='#index-open-request_002c-and-safer-mode'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-opena-request_002c-and-safer-mode"></a>
+<a class="index-entry-id" id="index-pso-request_002c-and-safer-mode"></a>
+<a class="index-entry-id" id="index-sy-request_002c-and-safer-mode"></a>
+<a class="index-entry-id" id="index-pi-request_002c-and-safer-mode"></a>
+<a class="index-entry-id" id="index-safer-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-safer"></a>
+<p>Operate in &ldquo;safer&rdquo; mode; see <samp class="option">-U</samp> below for its opposite. For
+security reasons, safer mode is enabled by default.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-t</samp>&rsquo;</dt>
+<dd><p>Run <code class="command">gtbl</code> preprocessor.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-T<var class="var">dev</var></samp>&rsquo;</dt>
+<dd><p>Direct <code class="command">gtroff</code> to format the input for the output device
+<var class="var">dev</var>. <code class="command">groff</code> then calls an output driver to convert
+<code class="command">gtroff</code>&rsquo;s output to a form appropriate for <var class="var">dev</var>. The
+following output devices are available.
+</p>
+<dl class="table">
+<dt><code class="code">ps</code></dt>
+<dd><p>For PostScript printers and previewers.
+</p>
+</dd>
+<dt><code class="code">pdf</code></dt>
+<dd><p>For <abbr class="acronym">PDF</abbr> viewers or printers.
+</p>
+</dd>
+<dt><code class="code">dvi</code></dt>
+<dd><p>For TeX DVI format.
+</p>
+</dd>
+<dt><code class="code">X75</code></dt>
+<dd><p>For a 75<span class="dmn">dpi</span> X11 previewer.
+</p>
+</dd>
+<dt><code class="code">X75-12</code></dt>
+<dd><p>For a 75<span class="dmn">dpi</span> X11 previewer with a 12-point base font in the
+document.
+</p>
+</dd>
+<dt><code class="code">X100</code></dt>
+<dd><p>For a 100<span class="dmn">dpi</span> X11 previewer.
+</p>
+</dd>
+<dt><code class="code">X100-12</code></dt>
+<dd><p>For a 100<span class="dmn">dpi</span> X11 previewer with a 12-point base font in the
+document.
+</p>
+</dd>
+<dt id='index-encoding_002c-output_002c-ASCII'><span><code class="code">ascii</code><a class="copiable-link" href='#index-encoding_002c-output_002c-ASCII'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-encoding_002c-output_002c-ISO-646"></a>
+<a class="index-entry-id" id="index-ASCII-output-encoding"></a>
+<a class="index-entry-id" id="index-ISO-646-output-encoding"></a>
+<a class="index-entry-id" id="index-output-encoding_002c-ASCII"></a>
+<a class="index-entry-id" id="index-output-encoding_002c-ISO-646"></a>
+<p>For typewriter-like devices using the (7-bit) <abbr class="acronym">ASCII</abbr>
+(ISO&nbsp;646) character set.
+</p>
+</dd>
+<dt id='index-encoding_002c-output_002c-Latin_002d1-_0028ISO-8859_002d1_0029'><span><code class="code">latin1</code><a class="copiable-link" href='#index-encoding_002c-output_002c-Latin_002d1-_0028ISO-8859_002d1_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Latin_002d1-_0028ISO-8859_002d1_0029-output-encoding"></a>
+<a class="index-entry-id" id="index-ISO-8859_002d1-_0028Latin_002d1_0029-output-encoding"></a>
+<a class="index-entry-id" id="index-output-encoding_002c-Latin_002d1-_0028ISO-8859_002d1_0029"></a>
+<p>For typewriter-like devices that support the <span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->
+(ISO&nbsp;<span class="w-nolinebreak-text">8859-1</span><!-- /@w -->) character set.
+</p>
+</dd>
+<dt id='index-encoding_002c-output_002c-UTF_002d8'><span><code class="code">utf8</code><a class="copiable-link" href='#index-encoding_002c-output_002c-UTF_002d8'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-UTF_002d8-output-encoding"></a>
+<a class="index-entry-id" id="index-output-encoding_002c-UTF_002d8"></a>
+<p>For typewriter-like devices that use the Unicode (ISO&nbsp;10646)
+character set with <span class="w-nolinebreak-text">UTF-8</span><!-- /@w --> encoding.
+</p>
+</dd>
+<dt id='index-encoding_002c-output_002c-EBCDIC'><span><code class="code">cp1047</code><a class="copiable-link" href='#index-encoding_002c-output_002c-EBCDIC'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EBCDIC-output-encoding"></a>
+<a class="index-entry-id" id="index-output-encoding_002c-EBCDIC"></a>
+<a class="index-entry-id" id="index-encoding_002c-output_002c-code-page-1047"></a>
+<a class="index-entry-id" id="index-code-page-1047-output-encoding"></a>
+<a class="index-entry-id" id="index-output-encoding_002c-code-page-1047"></a>
+<a class="index-entry-id" id="index-IBM-code-page-1047-output-encoding"></a>
+<a class="index-entry-id" id="index-CCSID-1047-output-encoding-_0028EBCDIC_0029"></a>
+<p>For typewriter-like devices that use the <abbr class="acronym">EBCDIC</abbr> encoding IBM
+code page 1047.
+</p>
+</dd>
+<dt><code class="code">lj4</code></dt>
+<dd><p>For HP LaserJet4-compatible (or other PCL5-compatible) printers.
+</p>
+</dd>
+<dt><code class="code">lbp</code></dt>
+<dd><p>For Canon <abbr class="acronym">CaPSL</abbr> printers (<span class="w-nolinebreak-text">LBP-4</span><!-- /@w --> and <span class="w-nolinebreak-text">LBP-8</span><!-- /@w --> series laser
+printers).
+</p>
+<a class="index-entry-id" id="index-pre_002dgrohtml"></a>
+<a class="index-entry-id" id="index-post_002dgrohtml"></a>
+<a class="index-entry-id" id="index-grohtml_002c-the-program"></a>
+</dd>
+<dt><code class="code">html</code></dt>
+<dt><code class="code">xhtml</code></dt>
+<dd><p>To produce <abbr class="acronym">HTML</abbr> and <abbr class="acronym">XHTML</abbr> output, respectively.
+This driver consists of two parts, a preprocessor
+(<code class="command">pre-grohtml</code>) and a postprocessor (<code class="command">post-grohtml</code>).
+</p></dd>
+</dl>
+
+<a class="index-entry-id" id="index-output-device-name-string-_0028_002eT_0029"></a>
+<a class="index-entry-id" id="index-output-device-usage-register-_0028_002eT_0029"></a>
+<p>The predefined GNU <code class="code">troff</code> string <code class="code">.T</code> contains the name of
+the output device; the read-only register <code class="code">.T</code> is set to&nbsp;1 if
+this option is used (which is always true if <code class="command">groff</code> is used to
+call GNU <code class="command">troff</code>). See <a class="xref" href="Built_002din-Registers.html">Built-in Registers</a>.
+</p>
+<p>The postprocessor to be used for a device is specified by the
+<code class="code">postpro</code> command in the device description file. (See <a class="xref" href="Device-and-Font-Description-Files.html">Device and Font Description Files</a>.) This can be overridden with the
+<samp class="option">-X</samp> option.
+</p>
+</dd>
+<dt id='index-mode_002c-unsafe'><span>&lsquo;<samp class="samp">-U</samp>&rsquo;<a class="copiable-link" href='#index-mode_002c-unsafe'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-unsafe-mode"></a>
+<p>Operate in <em class="dfn">unsafe mode</em>, which enables the <code class="code">open</code>,
+<code class="code">opena</code>, <code class="code">pi</code>, <code class="code">pso</code>, and <code class="code">sy</code> requests. These
+requests are disabled by default because they allow an untrusted input
+document to write to arbitrary file names and run arbitrary commands.
+This option also adds the current directory to the macro package search
+path; see the <samp class="option">-m</samp> option above. <samp class="option">-U</samp> is passed to
+<code class="command">gpic</code> and <code class="command">gtroff</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-v</samp>&rsquo;</dt>
+<dd><p>Write version information for <code class="command">groff</code> and all programs run by it
+to the standard output stream; that is, the given command line is
+processed in the usual way, passing <samp class="option">-v</samp> to the formatter and any
+pre- or postprocessors invoked.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-V</samp>&rsquo;</dt>
+<dd><p>Output the pipeline that would be run by <code class="command">groff</code>
+(as a wrapper program) to the standard output stream, but do not execute
+it. If given more than once, the pipeline is both written to the
+standard error stream and run.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-w<var class="var">category</var></samp>&rsquo;</dt>
+<dd><p>Enable warnings in <var class="var">category</var>. Categories are listed in
+<a class="ref" href="Warnings.html">Warnings</a>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-W<var class="var">category</var></samp>&rsquo;</dt>
+<dd><p>Inhibit warnings in <var class="var">category</var>. Categories are listed in
+<a class="ref" href="Warnings.html">Warnings</a>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-X</samp>&rsquo;</dt>
+<dd><p>Use <code class="command">gxditview</code> instead of the usual postprocessor to (pre)view
+a document on an X11 display. Combining this option with
+<samp class="option">-Tps</samp> uses the font metrics of the PostScript device, whereas
+the <samp class="option">-TX75</samp> and <samp class="option">-TX100</samp> options use the metrics of X11
+fonts.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-z</samp>&rsquo;</dt>
+<dd><p>Suppress formatted output from <code class="command">gtroff</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">-Z</samp>&rsquo;</dt>
+<dd><p>Disable postprocessing. <code class="command">gtroff</code> output will appear on the
+standard output stream (unless suppressed with <samp class="option">-z</samp>; see
+<a class="ref" href="gtroff-Output.html"><code class="code">gtroff</code> Output</a> for a description of this format.
+</p></dd>
+</dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Environment.html">Environment</a>, Previous: <a href="Invoking-groff.html">Invoking <code class="code">groff</code></a>, Up: <a href="Invoking-groff.html">Invoking <code class="code">groff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Gtroff-Internals.html b/doc/groff.html.node/Gtroff-Internals.html
new file mode 100644
index 0000000..2e38fe7
--- /dev/null
+++ b/doc/groff.html.node/Gtroff-Internals.html
@@ -0,0 +1,187 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Gtroff Internals (The GNU Troff Manual)</title>
+
+<meta name="description" content="Gtroff Internals (The GNU Troff Manual)">
+<meta name="keywords" content="Gtroff Internals (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Debugging.html" rel="next" title="Debugging">
+<link href="Miscellaneous.html" rel="prev" title="Miscellaneous">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Gtroff-Internals">
+<div class="nav-panel">
+<p>
+Next: <a href="Debugging.html" accesskey="n" rel="next">Debugging</a>, Previous: <a href="Miscellaneous.html" accesskey="p" rel="prev">Miscellaneous</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="gtroff-Internals">5.36 <code class="code">gtroff</code> Internals</h3>
+
+<a class="index-entry-id" id="index-input-token"></a>
+<a class="index-entry-id" id="index-token_002c-input"></a>
+<a class="index-entry-id" id="index-output-node"></a>
+<a class="index-entry-id" id="index-node_002c-output"></a>
+<p><code class="code">gtroff</code> processes input in three steps. One or more input
+characters are converted to an <em class="dfn">input token</em>.<a class="footnote" id="DOCF119" href="groff.html_fot.html#FOOT119"><sup>119</sup></a> Then, one or more input tokens are converted to
+an <em class="dfn">output node</em>. Finally, output nodes are converted to the
+intermediate output language understood by all output devices.
+</p>
+<p>Actually, before step one happens, <code class="code">gtroff</code> converts certain escape
+sequences into reserved input characters (not accessible by the user);
+such reserved characters are used for other internal processing also &ndash;
+this is the very reason why not all characters are valid input.
+See <a class="xref" href="Identifiers.html">Identifiers</a>, for more on this topic.
+</p>
+<p>For example, the input string &lsquo;<samp class="samp">fi\[:u]</samp>&rsquo; is converted into a
+character token &lsquo;<samp class="samp">f</samp>&rsquo;, a character token &lsquo;<samp class="samp">i</samp>&rsquo;, and a special
+token &lsquo;<samp class="samp">:u</samp>&rsquo; (representing u&nbsp;umlaut). Later on, the character
+tokens &lsquo;<samp class="samp">f</samp>&rsquo; and &lsquo;<samp class="samp">i</samp>&rsquo; are merged to a single output node
+representing the ligature glyph &lsquo;<samp class="samp">fi</samp>&rsquo; (provided the current font has
+a glyph for this ligature); the same happens with &lsquo;<samp class="samp">:u</samp>&rsquo;. All output
+glyph nodes are &lsquo;processed&rsquo;, which means that they are invariably
+associated with a given font, font size, advance width, etc. During the
+formatting process, <code class="code">gtroff</code> itself adds various nodes to control
+the data flow.
+</p>
+<p>Macros, diversions, and strings collect elements in two chained lists: a
+list of input tokens that have been passed unprocessed, and a list of
+output nodes. Consider the following diversion.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.di xxx
+a
+\!b
+c
+.br
+.di
+</pre></div></div>
+
+<p>It contains these elements.
+</p>
+<table class="multitable">
+<tbody><tr><td>node list</td><td>token list</td><td>element number</td></tr>
+<tr><td><i class="i">line start node</i></td><td>&mdash;</td><td>1</td></tr>
+<tr><td><i class="i">glyph node <code class="code">a</code></i></td><td>&mdash;</td><td>2</td></tr>
+<tr><td><i class="i">word space node</i></td><td>&mdash;</td><td>3</td></tr>
+<tr><td>&mdash;</td><td><code class="code">b</code></td><td>4</td></tr>
+<tr><td>&mdash;</td><td><code class="code">\n</code></td><td>5</td></tr>
+<tr><td><i class="i">glyph node <code class="code">c</code></i></td><td>&mdash;</td><td>6</td></tr>
+<tr><td><i class="i">vertical size node</i></td><td>&mdash;</td><td>7</td></tr>
+<tr><td><i class="i">vertical size node</i></td><td>&mdash;</td><td>8</td></tr>
+<tr><td>&mdash;</td><td><code class="code">\n</code></td><td>9</td></tr>
+</tbody>
+</table>
+
+<a class="index-entry-id" id="index-_005cv_002c-internal-representation"></a>
+<p>Elements 1, 7, and&nbsp;8 are inserted by <code class="code">gtroff</code>; the latter two
+(which are always present) specify the vertical extent of the last line,
+possibly modified by <code class="code">\x</code>. The <code class="code">br</code> request finishes the
+pending output line, inserting a newline input token, which is
+subsequently converted to a space when the diversion is reread. Note
+that the word space node has a fixed width that isn&rsquo;t adjustable
+anymore. To convert horizontal space nodes back to input tokens, use
+the <code class="code">unformat</code> request.
+</p>
+<p>Macros only contain elements in the token list (and the node list is
+empty); diversions and strings can contain elements in both lists.
+</p>
+<p>The <code class="code">chop</code> request simply reduces the number of elements in a
+macro, string, or diversion by one. Exceptions are <em class="dfn">compatibility
+save</em> and <em class="dfn">compatibility ignore</em> input tokens, which are ignored.
+The <code class="code">substring</code> request also ignores those input tokens.
+</p>
+<p>Some requests like <code class="code">tr</code> or <code class="code">cflags</code> work on glyph identifiers
+only; this means that the associated glyph can be changed without
+destroying this association. This can be very helpful for substituting
+glyphs. In the following example, we assume that glyph &lsquo;<samp class="samp">foo</samp>&rsquo; isn&rsquo;t
+available by default, so we provide a substitution using the
+<code class="code">fchar</code> request and map it to input character &lsquo;<samp class="samp">x</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.fchar \[foo] foo
+.tr x \[foo]
+</pre></div></div>
+
+<p>Now let us assume that we install an additional special font &lsquo;<samp class="samp">bar</samp>&rsquo;
+that has glyph &lsquo;<samp class="samp">foo</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.special bar
+.rchar \[foo]
+</pre></div></div>
+
+<p>Since glyphs defined with <code class="code">fchar</code> are searched before glyphs in
+special fonts, we must call <code class="code">rchar</code> to remove the definition of the
+fallback glyph. Anyway, the translation is still active; &lsquo;<samp class="samp">x</samp>&rsquo; now
+maps to the real glyph &lsquo;<samp class="samp">foo</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-compatibility-mode_002c-and-parameters"></a>
+<a class="index-entry-id" id="index-mode_002c-compatibility_002c-and-parameters"></a>
+<a class="index-entry-id" id="index-arguments_002c-and-compatibility-mode"></a>
+<a class="index-entry-id" id="index-parameters_002c-and-compatibility-mode"></a>
+<a class="index-entry-id" id="index-macro-arguments_002c-and-compatibility-mode"></a>
+<a class="index-entry-id" id="index-request-arguments_002c-and-compatibility-mode"></a>
+<p>Macro and request arguments preserve compatibility mode enablement.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.cp 1 \&quot; switch to compatibility mode
+.de xx
+\\$1
+..
+.cp 0 \&quot; switch compatibility mode off
+.xx caf\['e]
+ &rArr; café
+</pre></div></div>
+
+<p>Since compatibility mode is enabled while <code class="code">de</code> is invoked, the
+macro <code class="code">xx</code> enables compatibility mode when it is called. Argument
+<code class="code">$1</code> can still be handled properly because it inherits the
+compatibility mode enablement status that was active at the point where
+<code class="code">xx</code> was called.
+</p>
+<p>After interpolation of the parameters, the compatibility save and
+restore tokens are removed.
+</p>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Debugging.html">Debugging</a>, Previous: <a href="Miscellaneous.html">Miscellaneous</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Headers-and-Footers.html b/doc/groff.html.node/Headers-and-Footers.html
new file mode 100644
index 0000000..5d1c50a
--- /dev/null
+++ b/doc/groff.html.node/Headers-and-Footers.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Headers and Footers (The GNU Troff Manual)</title>
+
+<meta name="description" content="Headers and Footers (The GNU Troff Manual)">
+<meta name="keywords" content="Headers and Footers (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Page-Layout-Adjustment.html" rel="next" title="Page Layout Adjustment">
+<link href="Sections-and-Chapters.html" rel="prev" title="Sections and Chapters">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Headers-and-Footers">
+<div class="nav-panel">
+<p>
+Next: <a href="Page-Layout-Adjustment.html" accesskey="n" rel="next">Page Layout</a>, Previous: <a href="Sections-and-Chapters.html" accesskey="p" rel="prev">Sections and Chapters</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Headers-and-Footers-1">3.2.3 Headers and Footers</h4>
+
+<p><i class="slanted">Headers</i> and <i class="slanted">footers</i> occupy the top and bottom of
+each page, respectively, and contain data like the page number and the
+article or chapter title. Their appearance is not affected by the
+running text. Some packages allow for different titles on even- and
+odd-numbered pages (for printed, bound material).
+</p>
+<p>Headers and footers are together called <i class="slanted">titles</i>, and comprise
+three parts: left-aligned, centered, and right-aligned. A &lsquo;<samp class="samp">%</samp>&rsquo;
+character appearing anywhere in a title is automatically replaced by the
+page number. See <a class="xref" href="Page-Layout.html">Page Layout</a>.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Headings-in-ms.html b/doc/groff.html.node/Headings-in-ms.html
new file mode 100644
index 0000000..a5d0cc7
--- /dev/null
+++ b/doc/groff.html.node/Headings-in-ms.html
@@ -0,0 +1,214 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Headings in ms (The GNU Troff Manual)</title>
+
+<meta name="description" content="Headings in ms (The GNU Troff Manual)">
+<meta name="keywords" content="Headings in ms (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Body-Text.html" rel="up" title="ms Body Text">
+<link href="Typeface-and-decoration.html" rel="next" title="Typeface and decoration">
+<link href="Paragraphs-in-ms.html" rel="prev" title="Paragraphs in ms">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Headings-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="Typeface-and-decoration.html" accesskey="n" rel="next">Typeface and decoration</a>, Previous: <a href="Paragraphs-in-ms.html" accesskey="p" rel="prev">Paragraphs</a>, Up: <a href="ms-Body-Text.html" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Headings">4.6.5.4 Headings</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-headings"></a>
+
+<p>Use headings to create a sequential or hierarchical structure for your
+document. The <samp class="file">ms</samp> macros print headings in <strong class="strong">bold</strong> using
+the same font family and, by default, type size as the body text.
+Headings are available with and without automatic numbering. Text on
+input lines following the macro call becomes the heading&rsquo;s title. Call
+a paragraphing macro to end the heading text and start the section&rsquo;s
+content.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eNH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NH</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">depth</i></span>]</var><a class="copiable-link" href='#index-_002eNH'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-NH-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eNH-1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NH</code></strong> <var class="def-var-arguments"><code class="t">S</code> <span class="r"><i class="slanted">heading-depth-index</i></span> &hellip;</var><a class="copiable-link" href='#index-_002eNH-1'> &para;</a></span></dt>
+<dd><p>Set an automatically numbered heading.
+</p>
+<p><samp class="file">ms</samp> produces a numbered heading the form <var class="var">a.b.c&hellip;</var>, to
+any depth desired, with the numbering of each depth increasing
+automatically and being reset to zero when a more significant level is
+increased. &ldquo;1&rdquo;&nbsp;is the most significant or coarsest division of
+the document. Only non-zero values are output. If <var class="var">depth</var> is
+omitted, it is taken to be &lsquo;<samp class="samp">1</samp>&rsquo;.
+</p>
+<p>If you specify <var class="var">depth</var> such that an ascending gap occurs relative to
+the previous <code class="code">NH</code> call&mdash;that is, you &ldquo;skip a depth&rdquo;, as by
+&lsquo;<samp class="samp">.NH 1</samp>&rsquo; and then &lsquo;<samp class="samp">.NH 3</samp>&rsquo;&mdash;<code class="code">groff</code> <samp class="file">ms</samp> emits a
+warning on the standard error stream.
+</p>
+<p>Alternatively, you can give <code class="code">NH</code> a first argument of&nbsp;<code class="code">S</code>,
+followed by integers to number the heading depths explicitly. Further
+automatic numbering, if used, resumes using the specified indices as
+their predecessors.
+This feature is a Berkeley extension.
+</p></dd></dl>
+
+<p>An example may be illustrative.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.NH 1
+Animalia
+.NH 2
+Arthropoda
+.NH 3
+Crustacea
+.NH 2
+Chordata
+.NH S 6 6 6
+Daimonia
+.NH 1
+Plantae
+</pre></div>
+</td></tr></table>
+
+<p>The above results in numbering as follows; the vertical space that
+normally precedes each heading is omitted.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">1. Animalia
+1.1. Arthropoda
+1.1.1. Crustacea
+1.2. Chordata
+6.6.6. Daimonia
+7. Plantae
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bSN_002dSTYLE_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN-STYLE]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_002dSTYLE_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SN_002dSTYLE-_005bms_005d-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bSN_002dDOT_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN-DOT]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_002dDOT_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SN_002dDOT-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bSN_002dNO_002dDOT_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN-NO-DOT]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_002dNO_002dDOT_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SN_002dNO_002dDOT-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bSN_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SN-_005bms_005d"></a>
+<p>After <code class="code">NH</code> is called, the assigned number is made available in the
+strings <code class="code">SN-DOT</code> (as it appears in a printed heading with default
+formatting, followed by a terminating period) and <code class="code">SN-NO-DOT</code> (with
+the terminating period omitted). These are GNU extensions.
+</p>
+<p>You can control the style used to print numbered headings by defining an
+appropriate alias for the string <code class="code">SN-STYLE</code>. By default,
+<code class="code">SN-STYLE</code> is aliased to <code class="code">SN-DOT</code>. If you prefer to omit the
+terminating period from numbers appearing in numbered headings, you may
+define the alias as follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.als SN-STYLE SN-NO-DOT
+</pre></div></div>
+
+<p>Any such change in numbering style becomes effective from the next use
+of <code class="code">NH</code> following redefinition of the alias for <code class="code">SN-STYLE</code>.
+The formatted number of the current heading is available in the
+<code class="code">SN</code> string (a feature first documented by Berkeley), which
+facilitates its inclusion in, for example, table captions, equation
+labels, and <code class="code">XS</code>/<code class="code">XA</code>/<code class="code">XE</code> table of contents entries.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eSH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.SH</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">depth</i></span>]</var><a class="copiable-link" href='#index-_002eSH'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SH-_005bms_005d"></a>
+<p>Set an unnumbered heading.
+</p>
+<p>The optional <var class="var">depth</var> argument is a GNU extension indicating the
+heading depth corresponding to the <var class="var">depth</var> argument of <code class="code">NH</code>.
+It matches the type size at which the heading is set to that of a
+numbered heading at the same depth when the <code class="code">GROWPS</code> and
+<code class="code">PSINCR</code> heading size adjustment mechanism is in effect.
+</p></dd></dl>
+
+<p>If the <code class="code">GROWPS</code> register is set to a value greater than the
+<var class="var">level</var> argument to <code class="code">NH</code> or <code class="code">SH</code>, the type size of a
+heading produced by these macros increases by <code class="code">PSINCR</code> units over
+the size specified by <code class="code">PS</code> multiplied by the difference of
+<code class="code">GROWPS</code> and <var class="var">level</var>. The value stored in <code class="code">PSINCR</code> is
+interpreted in <code class="code">groff</code> basic units; the <code class="code">p</code> scaling unit
+should be employed when assigning a value specified in points. For
+example, the sequence
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.nr PS 10
+.nr GROWPS 3
+.nr PSINCR 1.5p
+.NH 1
+Carnivora
+.NH 2
+Felinae
+.NH 3
+Felis catus
+.SH 2
+Machairodontinae
+</pre></div>
+</td></tr></table>
+
+<p>will cause &ldquo;1. Carnivora&rdquo; to be printed in 13-point text, followed by
+&ldquo;1.1. Felinae&rdquo; in 11.5-point text, while &ldquo;1.1.1. Felis catus&rdquo; and
+all more deeply nested heading levels will remain in the 10-point text
+specified by the <code class="code">PS</code> register. &ldquo;Machairodontinae&rdquo; is printed at
+11.5 points, since it corresponds to heading level&nbsp;2.
+</p>
+<p>The <code class="code">HORPHANS</code> register operates in conjunction with the <code class="code">NH</code>
+and <code class="code">SH</code> macros to inhibit the printing of isolated headings at the
+bottom of a page; it specifies the minimum number of lines of an
+immediately subsequent paragraph that must be kept on the same page as
+the heading. If insufficient space remains on the current page to
+accommodate the heading and this number of lines of paragraph text, a
+page break is forced before the heading is printed. Any display macro
+call or <code class="code">tbl</code>, <code class="code">pic</code>, or <code class="code">eqn</code> region between the heading
+and the subsequent paragraph suppresses this grouping. See <a class="xref" href="ms-keeps-and-displays.html">Keeps, boxed keeps, and displays</a> and <a class="ref" href="ms-Insertions.html">Tables, figures, equations, and references</a>.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Typeface-and-decoration.html">Typeface and decoration</a>, Previous: <a href="Paragraphs-in-ms.html">Paragraphs</a>, Up: <a href="ms-Body-Text.html">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Hyphenation.html b/doc/groff.html.node/Hyphenation.html
new file mode 100644
index 0000000..ec22419
--- /dev/null
+++ b/doc/groff.html.node/Hyphenation.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Hyphenation (The GNU Troff Manual)</title>
+
+<meta name="description" content="Hyphenation (The GNU Troff Manual)">
+<meta name="keywords" content="Hyphenation (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Text.html" rel="up" title="Text">
+<link href="Breaking.html" rel="next" title="Breaking">
+<link href="Sentences.html" rel="prev" title="Sentences">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Hyphenation">
+<div class="nav-panel">
+<p>
+Next: <a href="Breaking.html" accesskey="n" rel="next">Breaking</a>, Previous: <a href="Sentences.html" accesskey="p" rel="prev">Sentences</a>, Up: <a href="Text.html" accesskey="u" rel="up">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Hyphenation-1">5.1.3 Hyphenation</h4>
+<a class="index-entry-id" id="index-hyphenation"></a>
+
+<p>When an output line is nearly full, it is uncommon for the next word
+collected from the input to exactly fill it&mdash;typically, there is room
+left over only for part of the next word. The process of splitting a
+word so that it appears partially on one line (with a hyphen to indicate
+to the reader that the word has been broken) with its remainder on the
+next is <em class="dfn">hyphenation</em>. Hyphenation points can be manually
+specified; GNU <code class="code">troff</code> also uses a hyphenation algorithm and
+language-specific pattern files (based on those used in TeX) to
+decide which words can be hyphenated and where.
+</p>
+<p>Hyphenation does not always occur even when the hyphenation rules for a
+word allow it; it can be disabled, and when not disabled there are
+several parameters that can prevent it in certain circumstances.
+See <a class="xref" href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a>.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/I_002fO.html b/doc/groff.html.node/I_002fO.html
new file mode 100644
index 0000000..92a7fc0
--- /dev/null
+++ b/doc/groff.html.node/I_002fO.html
@@ -0,0 +1,457 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>I/O (The GNU Troff Manual)</title>
+
+<meta name="description" content="I/O (The GNU Troff Manual)">
+<meta name="keywords" content="I/O (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Postprocessor-Access.html" rel="next" title="Postprocessor Access">
+<link href="Suppressing-Output.html" rel="prev" title="Suppressing Output">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="I_002fO">
+<div class="nav-panel">
+<p>
+Next: <a href="Postprocessor-Access.html" accesskey="n" rel="next">Postprocessor Access</a>, Previous: <a href="Suppressing-Output.html" accesskey="p" rel="prev">Suppressing Output</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="I_002fO-1">5.33 I/O</h3>
+<a class="index-entry-id" id="index-i_002fo"></a>
+<a class="index-entry-id" id="index-input-and-output-requests"></a>
+<a class="index-entry-id" id="index-requests-for-input-and-output"></a>
+<a class="index-entry-id" id="index-output-and-input-requests"></a>
+
+<p><code class="code">gtroff</code> has several requests for including files:
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eso"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.so</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002eso'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-so"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002esoquiet"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.soquiet</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002esoquiet'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-soquiet"></a>
+<a class="index-entry-id" id="index-including-a-file-_0028so_0029"></a>
+<a class="index-entry-id" id="index-file_002c-inclusion-_0028so_0029"></a>
+<p>Replace the <code class="code">so</code> request&rsquo;s control line with the contents of the
+file named by the argument, &ldquo;sourcing&rdquo; it. <var class="var">file</var> is sought in
+the directories specified by <samp class="option">-I</samp> command-line option. If
+<var class="var">file</var> does not exist, a warning in category &lsquo;<samp class="samp">file</samp>&rsquo; is produced
+and the request has no further effect. See <a class="xref" href="Warnings.html">Warnings</a>, for
+information about the enablement and suppression of warnings.
+</p>
+<p><code class="code">so</code> can be useful for large documents; e.g., allowing each chapter
+of a book to be kept in a separate file. However, files interpolated
+with <code class="code">so</code> are not preprocessed; to overcome this limitation, see
+the <cite class="cite">gsoelim<span class="r">(1)</span></cite> man page.
+</p>
+<p>Since GNU <code class="code">troff</code> replaces the entire control line with the
+contents of a file, it matters whether <code class="code">file</code> is terminated with a
+newline or not. Assume that file <samp class="file">xxx</samp> contains only the word
+&lsquo;<samp class="samp">foo</samp>&rsquo; without a trailing newline.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ printf 'foo' &gt; xxx
+
+The situation is
+.so xxx
+bar.
+ &rArr; The situation is foobar.
+</pre></div></div>
+
+<p><code class="code">soquiet</code> works the same way, except that no warning diagnostic is
+issued if <var class="var">file</var> does not exist.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epso"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pso</code></strong> <var class="def-var-arguments">command</var><a class="copiable-link" href='#index-_002epso'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pso"></a>
+<p>Read the standard output from the specified <var class="var">command</var> and include
+it in place of the <code class="code">pso</code> request.
+</p>
+<a class="index-entry-id" id="index-safer-mode-3"></a>
+<a class="index-entry-id" id="index-mode_002c-safer-3"></a>
+<a class="index-entry-id" id="index-unsafe-mode-3"></a>
+<a class="index-entry-id" id="index-mode_002c-unsafe-3"></a>
+<p>It is an error to use this request in safer mode, which is the
+default. Invoke GNU <code class="code">troff</code> or a front end with the <samp class="option">-U</samp>
+option to enable unsafe mode.
+</p>
+<p>The comment regarding a final newline for the <code class="code">so</code> request is valid
+for <code class="code">pso</code> also.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002emso"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.mso</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002emso'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-mso"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002emsoquiet"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.msoquiet</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002emsoquiet'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-msoquiet"></a>
+<p>Identical to the <code class="code">so</code> and <code class="code">soquiet</code> requests, respectively,
+except that <code class="code">gtroff</code> searches for the specified <var class="var">file</var> in the
+same directories as macro files for the <samp class="option">-m</samp> command-line option.
+If the file name to be included has the form <samp class="file"><var class="var">name</var>.tmac</samp> and
+it isn&rsquo;t found, these requests try to include <samp class="file">tmac.<var class="var">name</var></samp> and
+vice versa.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etrf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.trf</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002etrf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-trf"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ecf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cf</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002ecf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-cf"></a>
+<a class="index-entry-id" id="index-transparent-output-_0028cf_002c-trf_0029"></a>
+<a class="index-entry-id" id="index-output_002c-transparent-_0028cf_002c-trf_0029"></a>
+<a class="index-entry-id" id="index-cf-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-cf-request"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-cf-request"></a>
+<a class="index-entry-id" id="index-trf-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-trf-request"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-trf-request"></a>
+<p>Transparently output the contents of <var class="var">file</var>. Each line is output as
+if it were preceded by <code class="code">\!</code>; however, the lines are <em class="emph">not</em>
+subject to copy mode interpretation. If the file does not end with a
+newline, <code class="code">trf</code> adds one. Both requests cause a break.
+</p>
+<p>When used in a diversion, these requests embed a node (see <a class="pxref" href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a>) in it that, when reread, causes the contents of <var class="var">file</var>
+to be transparently copied to the output. In <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code>, the contents of <var class="var">file</var> are immediately copied to the
+output regardless of whether there is a current diversion; this
+behaviour is so anomalous that it must be considered a bug.
+</p>
+<a class="index-entry-id" id="index-trf-request_002c-and-invalid-characters"></a>
+<a class="index-entry-id" id="index-characters_002c-invalid-for-trf-request"></a>
+<a class="index-entry-id" id="index-invalid-characters-for-trf-request"></a>
+<p>While <code class="code">cf</code> copies the contents of <var class="var">file</var> completely
+unprocessed, <code class="code">trf</code> disallows characters such as NUL that are not
+valid <code class="code">gtroff</code> input characters (see <a class="pxref" href="Identifiers.html">Identifiers</a>).
+</p>
+<p>For <code class="code">cf</code>, within a diversion, &ldquo;completely unprocessed&rdquo; means that
+each line of a file to be inserted is handled as if it were preceded by
+<code class="code">\!\\!</code>.
+</p>
+<p>To define a macro&nbsp;<code class="code">x</code> containing the contents of
+file&nbsp;<samp class="file">f</samp>, use
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ev 1
+.di x
+.trf f
+.di
+.ev
+</pre></div></div>
+
+<p>The calls to <code class="code">ev</code> prevent the partially collected output line
+from becoming part of the diversion (see <a class="pxref" href="Diversions.html">Diversions</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enx"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nx</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">file</i></span>]</var><a class="copiable-link" href='#index-_002enx'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nx"></a>
+<a class="index-entry-id" id="index-processing-next-file-_0028nx_0029"></a>
+<a class="index-entry-id" id="index-file_002c-processing-next-_0028nx_0029"></a>
+<a class="index-entry-id" id="index-next-file_002c-processing-_0028nx_0029"></a>
+<p>Force <code class="code">gtroff</code> to continue processing of the file specified as an
+argument. If no argument is given, immediately jump to the end of file.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002erd"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rd</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">prompt</i></span> [<span class="r"><i class="slanted">arg1</i></span> <span class="r"><i class="slanted">arg2</i></span> &hellip;]]</var><a class="copiable-link" href='#index-_002erd'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rd"></a>
+<a class="index-entry-id" id="index-reading-from-standard-input-_0028rd_0029"></a>
+<a class="index-entry-id" id="index-standard-input_002c-reading-from-_0028rd_0029"></a>
+<a class="index-entry-id" id="index-input_002c-standard_002c-reading-from-_0028rd_0029"></a>
+<p>Read from standard input, and include what is read as though it were
+part of the input file. Text is read until a blank line is encountered.
+</p>
+<p>If standard input is a TTY input device (keyboard), write <var class="var">prompt</var>
+to standard error, followed by a colon (or send BEL for a beep if no
+argument is given).
+</p>
+<p>Arguments after <var class="var">prompt</var> are available for the input. For example,
+the line
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.rd data foo bar
+</pre></div></div>
+
+<p>with the input &lsquo;<samp class="samp">This&nbsp;is&nbsp;\$2.</samp>&rsquo;<!-- /@w --> prints
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">This is bar.
+</pre></div></div>
+</dd></dl>
+
+<a class="index-entry-id" id="index-form-letters"></a>
+<a class="index-entry-id" id="index-letters_002c-form"></a>
+<p>Using the <code class="code">nx</code> and <code class="code">rd</code> requests, it is easy to set up form
+letters. The form letter template is constructed like this, putting the
+following lines into a file called <samp class="file">repeat.let</samp>:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ce
+\*(td
+.sp 2
+.nf
+.rd
+.sp
+.rd
+.fi
+Body of letter.
+.bp
+.nx repeat.let
+</pre></div></div>
+
+<a class="index-entry-id" id="index-ex-request_002c-used-with-nx-and-rd"></a>
+<p>When this is run, a file containing the following lines should be
+redirected in. Requests included in this file are executed as though
+they were part of the form letter. The last block of input is the
+<code class="code">ex</code> request, which tells GNU <code class="code">troff</code> to stop processing. If
+this were not there, <code class="code">troff</code> would not know when to stop.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Trent A. Fisher
+708 NW 19th Av., #202
+Portland, OR 97209
+
+Dear Trent,
+
+Len Adollar
+4315 Sierra Vista
+San Diego, CA 92103
+
+Dear Mr. Adollar,
+
+.ex
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epi"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pi</code></strong> <var class="def-var-arguments">pipe</var><a class="copiable-link" href='#index-_002epi'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pi"></a>
+<p>Pipe the output of <code class="code">gtroff</code> to the shell command(s) specified by
+<var class="var">pipe</var>. This request must occur before <code class="code">gtroff</code> has a chance
+to print anything.
+</p>
+<a class="index-entry-id" id="index-safer-mode-4"></a>
+<a class="index-entry-id" id="index-mode_002c-safer-4"></a>
+<a class="index-entry-id" id="index-unsafe-mode-4"></a>
+<a class="index-entry-id" id="index-mode_002c-unsafe-4"></a>
+<p>It is an error to use this request in safer mode, which is the
+default. Invoke GNU <code class="code">troff</code> or a front end with the <samp class="option">-U</samp>
+option to enable unsafe mode.
+</p>
+<p>Multiple calls to <code class="code">pi</code> are allowed, acting as a chain. For
+example,
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.pi foo
+.pi bar
+...
+</pre></div></div>
+
+<p>is the same as &lsquo;<samp class="samp">.pi&nbsp;foo&nbsp;|&nbsp;bar</samp>&rsquo;<!-- /@w -->.
+</p>
+<a class="index-entry-id" id="index-groff_002c-and-pi-request"></a>
+<a class="index-entry-id" id="index-pi-request_002c-and-groff"></a>
+<p>The intermediate output format of GNU <code class="code">troff</code> is piped to the
+specified commands. Consequently, calling <code class="code">groff</code> without the
+<samp class="option">-Z</samp> option normally causes a fatal error.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-system-commands_002c-running"></a>
+<a class="index-entry-id" id="index-running-system-commands"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002esy"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sy</code></strong> <var class="def-var-arguments">cmds</var><a class="copiable-link" href='#index-_002esy'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-sy"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bsystat_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[systat]</code></strong><a class="copiable-link" href='#index-_005cn_005bsystat_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-systat"></a>
+<p>Execute the shell command(s) specified by <var class="var">cmds</var>. The output is not
+saved anywhere, so it is up to the user to do so.
+</p>
+<a class="index-entry-id" id="index-safer-mode-5"></a>
+<a class="index-entry-id" id="index-mode_002c-safer-5"></a>
+<a class="index-entry-id" id="index-unsafe-mode-5"></a>
+<a class="index-entry-id" id="index-mode_002c-unsafe-5"></a>
+<p>It is an error to use this request in safer mode; this is the default.
+Give GNU <code class="code">troff</code> or a front end program the <samp class="option">-U</samp> option to
+enable unsafe mode.
+</p>
+<p>The following code fragment introduces the current time into a document.
+</p>
+<a class="index-entry-id" id="index-perl"></a>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.sy perl -e 'printf &quot;.nr H %d\\n.nr M %d\\n.nr S %d\\n&quot;,\
+ (localtime(time))[2,1,0]' &gt; /tmp/x\n[$$]
+.so /tmp/x\n[$$]
+.sy rm /tmp/x\n[$$]
+\nH:\nM:\nS
+</pre></div></div>
+
+<p>This works by having the Perl script (run by <code class="code">sy</code>) write
+<code class="code">nr</code> requests that set the registers <code class="code">H</code>, <code class="code">M</code>, and
+<code class="code">S</code> to a temporary file. The <code class="code">roff</code> document then reads the
+temporary file using the <code class="code">so</code> request.
+</p>
+<a class="index-entry-id" id="index-time_002c-formatting"></a>
+<a class="index-entry-id" id="index-formatting-the-time"></a>
+<p>The registers <code class="code">seconds</code>, <code class="code">minutes</code>, and <code class="code">hours</code>,
+initialized at startup of GNU <code class="code">troff</code>, should satisfy most
+requirements. Use the <code class="code">af</code> request to format their values for
+output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.af hours 00
+.af minutes 00
+.af seconds 00
+\n[hours]:\n[minutes]:\n[seconds]
+ &rArr; 02:17:54
+</pre></div></div>
+
+<a class="index-entry-id" id="index-system_0028_0029-return-value-register-_0028systat_0029"></a>
+<p>The writable register <code class="code">systat</code> contains the return value of the
+<code class="code">system()</code> function executed by the last <code class="code">sy</code> request.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eopen"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.open</code></strong> <var class="def-var-arguments">stream file</var><a class="copiable-link" href='#index-_002eopen'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-open"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eopena"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.opena</code></strong> <var class="def-var-arguments">stream file</var><a class="copiable-link" href='#index-_002eopena'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-opena"></a>
+<a class="index-entry-id" id="index-opening-file-_0028open_0029"></a>
+<a class="index-entry-id" id="index-file_002c-opening-_0028open_0029"></a>
+<a class="index-entry-id" id="index-appending-to-a-file-_0028opena_0029"></a>
+<a class="index-entry-id" id="index-file_002c-appending-to-_0028opena_0029"></a>
+<p>Open the specified <var class="var">file</var> for writing and associates the specified
+<var class="var">stream</var> with it.
+</p>
+<p>The <code class="code">opena</code> request is like <code class="code">open</code>, but if the file exists,
+append to it instead of truncating it.
+</p>
+<a class="index-entry-id" id="index-safer-mode-6"></a>
+<a class="index-entry-id" id="index-mode_002c-safer-6"></a>
+<a class="index-entry-id" id="index-unsafe-mode-6"></a>
+<a class="index-entry-id" id="index-mode_002c-unsafe-6"></a>
+<p>It is an error to use these requests in safer mode; this is the default.
+Give GNU <code class="code">troff</code> or a front end program the <samp class="option">-U</samp> option to
+enable unsafe mode.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewrite"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.write</code></strong> <var class="def-var-arguments">stream data</var><a class="copiable-link" href='#index-_002ewrite'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-write"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ewritec"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.writec</code></strong> <var class="def-var-arguments">stream data</var><a class="copiable-link" href='#index-_002ewritec'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-writec"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-write-request"></a>
+<a class="index-entry-id" id="index-write-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-write-request"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-writec-request"></a>
+<a class="index-entry-id" id="index-writec-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-writec-request"></a>
+<a class="index-entry-id" id="index-writing-to-file-_0028write_002c-writec_0029"></a>
+<a class="index-entry-id" id="index-file_002c-writing-to-_0028write_002c-writec_0029"></a>
+<p>Write to the file associated with the specified <var class="var">stream</var>. The
+stream must previously have been the subject of an open request. The
+remainder of the line is interpreted as the <code class="code">ds</code> request reads its
+second argument: an initial neutral double quote in <var class="var">contents</var> is
+stripped to allow embedding of leading spaces, and it is read in copy
+mode.
+</p>
+<p>The <code class="code">writec</code> request is like <code class="code">write</code>, but only <code class="code">write</code>
+appends a newline to the data.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewritem"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.writem</code></strong> <var class="def-var-arguments">stream xx</var><a class="copiable-link" href='#index-_002ewritem'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-writem"></a>
+<a class="index-entry-id" id="index-asciify-request_002c-and-writem"></a>
+<p>Write the contents of the macro or string <var class="var">xx</var> to the file
+associated with the specified <var class="var">stream</var>.
+</p>
+<a class="index-entry-id" id="index-writem-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-writem-request"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-writem-request"></a>
+<p><var class="var">xx</var> is read in copy mode, i.e., already formatted elements are
+ignored. Consequently, diversions must be unformatted with the
+<code class="code">asciify</code> request before calling <code class="code">writem</code>. Usually, this
+means a loss of information.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eclose"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.close</code></strong> <var class="def-var-arguments">stream</var><a class="copiable-link" href='#index-_002eclose'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-close"></a>
+<a class="index-entry-id" id="index-closing-file-_0028close_0029"></a>
+<a class="index-entry-id" id="index-file_002c-closing-_0028close_0029"></a>
+<p>Close the specified <var class="var">stream</var>; the stream is no longer an acceptable
+argument to the <code class="code">write</code> request.
+</p>
+<p>Here a simple macro to write an index entry.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.open idx test.idx
+.
+.de IX
+. write idx \\n[%] \\$*
+..
+.
+.IX test entry
+.
+.close idx
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cVe"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\V</code><span class="r"><i class="slanted">e</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cVe'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cV"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cV_0028ev"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\V(</code><span class="r"><i class="slanted">ev</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cV_0028ev'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cV_005benv_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\V[</code><span class="r"><i class="slanted">env</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cV_005benv_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cV_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-_005cV"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005cV"></a>
+<p>Interpolate the contents of the specified environment variable <var class="var">env</var>
+(one-character name&nbsp;<var class="var">e</var>, two-character name <var class="var">ev</var>) as
+returned by the function <cite class="cite">getenv<span class="r">(3)</span></cite>. <code class="code">\V</code> is interpreted
+even in copy mode (see <a class="pxref" href="Copy-Mode.html">Copy Mode</a>).
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Postprocessor-Access.html">Postprocessor Access</a>, Previous: <a href="Suppressing-Output.html">Suppressing Output</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Identifiers.html b/doc/groff.html.node/Identifiers.html
new file mode 100644
index 0000000..5734bb5
--- /dev/null
+++ b/doc/groff.html.node/Identifiers.html
@@ -0,0 +1,210 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Identifiers (The GNU Troff Manual)</title>
+
+<meta name="description" content="Identifiers (The GNU Troff Manual)">
+<meta name="keywords" content="Identifiers (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Formatter-Instructions.html" rel="next" title="Formatter Instructions">
+<link href="Numeric-Expressions.html" rel="prev" title="Numeric Expressions">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Identifiers">
+<div class="nav-panel">
+<p>
+Next: <a href="Formatter-Instructions.html" accesskey="n" rel="next">Formatter Instructions</a>, Previous: <a href="Numeric-Expressions.html" accesskey="p" rel="prev">Numeric Expressions</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Identifiers-1">5.5 Identifiers</h3>
+<a class="index-entry-id" id="index-identifiers"></a>
+
+<p>An <em class="dfn">identifier</em> labels a GNU <code class="code">troff</code> datum such as a register,
+name (macro, string, or diversion), typeface, color, special character,
+character class, environment, or stream. Valid identifiers consist of
+one or more ordinary characters.
+<a class="index-entry-id" id="index-ordinary-character"></a>
+<a class="index-entry-id" id="index-character_002c-ordinary"></a>
+An <i class="slanted">ordinary character</i> is an input character that is not the
+escape character, a leader, tab, newline, or invalid as GNU <code class="code">troff</code>
+input.
+</p>
+<a class="index-entry-id" id="index-invalid-input-characters"></a>
+<a class="index-entry-id" id="index-input-characters_002c-invalid"></a>
+<a class="index-entry-id" id="index-characters_002c-invalid-input"></a>
+<a class="index-entry-id" id="index-Unicode"></a>
+<p>Invalid input characters are a subset of control characters (from the
+sets &ldquo;C0 Controls&rdquo; and &ldquo;C1 Controls&rdquo; as Unicode describes them).
+When GNU <code class="code">troff</code> encounters one in an identifier, it produces a
+warning in category &lsquo;<samp class="samp">input</samp>&rsquo; (see <a class="pxref" href="Warnings.html">Warnings</a>). They are removed
+during interpretation: an identifier &lsquo;<samp class="samp">foo</samp>&rsquo;, followed by an invalid
+character and then &lsquo;<samp class="samp">bar</samp>&rsquo;, is processed as &lsquo;<samp class="samp">foobar</samp>&rsquo;.
+</p>
+<p>On a machine using the ISO 646, 8859, or 10646 character encodings,
+invalid input characters are <code class="code">0x00</code>, <code class="code">0x08</code>, <code class="code">0x0B</code>,
+<code class="code">0x0D</code>&ndash;<code class="code">0x1F</code>, and <code class="code">0x80</code>&ndash;<code class="code">0x9F</code>. On an
+<abbr class="acronym">EBCDIC</abbr> host, they are <code class="code">0x00</code>&ndash;<code class="code">0x01</code>, <code class="code">0x08</code>,
+<code class="code">0x09</code>, <code class="code">0x0B</code>, <code class="code">0x0D</code>&ndash;<code class="code">0x14</code>,
+<code class="code">0x17</code>&ndash;<code class="code">0x1F</code>, and
+<code class="code">0x30</code>&ndash;<code class="code">0x3F</code>.<a class="footnote" id="DOCF40" href="groff.html_fot.html#FOOT40"><sup>40</sup></a> Some of these code points are used
+by GNU <code class="code">troff</code> internally, making it non-trivial to extend the
+program to accept UTF-8 or other encodings that use characters from
+these ranges.<a class="footnote" id="DOCF41" href="groff.html_fot.html#FOOT41"><sup>41</sup></a>
+</p>
+<p>Thus, the identifiers &lsquo;<samp class="samp">br</samp>&rsquo;, &lsquo;<samp class="samp">PP</samp>&rsquo;, &lsquo;<samp class="samp">end-list</samp>&rsquo;,
+&lsquo;<samp class="samp">ref*normal-print</samp>&rsquo;, &lsquo;<samp class="samp">|</samp>&rsquo;, &lsquo;<samp class="samp">@_</samp>&rsquo;, and &lsquo;<samp class="samp">!&quot;#$%'()*+,-./</samp>&rsquo;
+are all valid. Discretion should be exercised to prevent confusion.
+Identifiers starting with &lsquo;<samp class="samp">(</samp>&rsquo; or &lsquo;<samp class="samp">[</samp>&rsquo; require care.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr x 9
+.nr y 1
+.nr (x 2
+.nr [y 3
+.nr sum1 (\n(x + \n[y])
+ error&rarr; a space character is not allowed in an escape
+ error&rarr; sequence parameter
+A:2+3=\n[sum1]
+.nr sum2 (\n((x + \n[[y])
+B:2+3=\n[sum2]
+.nr sum3 (\n[(x] + \n([y)
+C:2+3=\n[sum3]
+ &rArr; A:2+3=1 B:2+3=5 C:2+3=5
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_005d_002c-as-part-of-an-identifier"></a>
+<p>An identifier with a closing bracket (&lsquo;<samp class="samp">]</samp>&rsquo;) in its name can&rsquo;t be
+accessed with bracket-form escape sequences that expect an identifier as
+a parameter. For example, &lsquo;<samp class="samp">\[foo]]</samp>&rsquo; accesses the glyph &lsquo;<samp class="samp">foo</samp>&rsquo;,
+followed by &lsquo;<samp class="samp">]</samp>&rsquo; in whatever the surrounding context is, whereas
+&lsquo;<samp class="samp">\C'foo]'</samp>&rsquo; formats a glyph named &lsquo;<samp class="samp">foo]</samp>&rsquo;. Similarly, the
+identifier &lsquo;<samp class="samp">(</samp>&rsquo; can&rsquo;t be interpolated <em class="emph">except</em> with bracket
+forms.
+</p>
+<a class="index-entry-id" id="index-refer_002c-and-macro-names-starting-with-_005b-or-_005d"></a>
+<a class="index-entry-id" id="index-_005b_002c-macro-names-starting-with_002c-and-refer"></a>
+<a class="index-entry-id" id="index-_005d_002c-macro-names-starting-with_002c-and-refer"></a>
+<a class="index-entry-id" id="index-macro-names_002c-starting-with-_005b-or-_005d_002c-and-refer"></a>
+<p>If you begin a macro, string, or diversion name with either of the
+characters &lsquo;<samp class="samp">[</samp>&rsquo; or &lsquo;<samp class="samp">]</samp>&rsquo;, you foreclose use of the <code class="code">grefer</code>
+preprocessor, which recognizes &lsquo;<samp class="samp">.[</samp>&rsquo; and &lsquo;<samp class="samp">.]</samp>&rsquo; as bibliographic
+reference delimiters.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cA_0027anything_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\A<code class="code">'</code></code><span class="r"><i class="slanted">anything</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cA_0027anything_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cA"></a>
+<p>Interpolate&nbsp;1 if <var class="var">anything</var> is a valid identifier, and&nbsp;0
+otherwise. The delimiter need not be a neutral apostrophe; see
+<a class="ref" href="Delimiters.html">Delimiters</a>. Because invalid input characters are removed (see
+above), invalid identifiers are empty or contain spaces, tabs, or
+newlines.
+</p>
+<p>You can employ <code class="code">\A</code> to validate a macro argument before using it to
+construct another escape sequence or identifier.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; usage: .init-coordinate-pair name val1 val2
+.\&quot; Create a coordinate pair where name!x=val1 and
+.\&quot; name!y=val2.
+.de init-coordinate-pair
+. if \A'\\$1' \{\
+. if \B'\\$2' .nr \\$1!x \\$2
+. if \B'\\$3' .nr \\$1!y \\$3
+. \}
+..
+.init-coordinate-pair center 5 10
+The center is at (\n[center!x], \n[center!y]).
+.init-coordinate-pair &quot;poi&rarr;nt&quot; trash garbage \&quot; ignored
+.init-coordinate-pair point trash garbage \&quot; ignored
+ &rArr; The center is at (5, 10).
+</pre></div></div>
+
+<p>In this example, we also validated the numeric arguments; the registers
+&lsquo;<samp class="samp">point!x</samp>&rsquo; and &lsquo;<samp class="samp">point!y</samp>&rsquo; remain undefined. See <a class="xref" href="Numeric-Expressions.html">Numeric Expressions</a> for the <code class="code">\B</code> escape sequence.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-undefined-identifiers"></a>
+<a class="index-entry-id" id="index-identifiers_002c-undefined"></a>
+<p>How GNU <code class="code">troff</code> handles the interpretation of an undefined
+identifier depends on the context. There is no way to invoke an
+undefined request; such syntax is interpreted as a macro call instead.
+If the identifier is interpreted as a string, macro, or diversion, GNU
+<code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">mac</samp>&rsquo;, defines it as
+empty, and interpolates nothing. If the identifier is interpreted as a
+register, GNU <code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">reg</samp>&rsquo;,
+initializes it to zero, and interpolates that value. See <a class="xref" href="Warnings.html">Warnings</a>,
+<a class="ref" href="Interpolating-Registers.html">Interpolating Registers</a>, and <a class="ref" href="Strings.html">Strings</a>. Attempting to use an
+undefined typeface, special character, color, character class,
+environment, or stream generally provokes an error diagnostic.
+</p>
+<a class="index-entry-id" id="index-name-space_002c-common_002c-of-macros_002c-diversions_002c-and-strings"></a>
+<a class="index-entry-id" id="index-common-name-space-of-macros_002c-diversions_002c-and-strings"></a>
+<a class="index-entry-id" id="index-macros_002c-shared-name-space-with-strings-and-diversions"></a>
+<a class="index-entry-id" id="index-strings_002c-shared-name-space-with-macros-and-diversions"></a>
+<a class="index-entry-id" id="index-diversions_002c-shared-name-space-with-macros-and-strings"></a>
+<p>Identifiers for requests, macros, strings, and diversions share one name
+space; special characters and character classes another. No other
+object types do.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de xxx
+. nop foo
+..
+.di xxx
+bar
+.br
+.di
+.
+.xxx
+ &rArr; bar
+</pre></div></div>
+
+<p>The foregoing example shows that GNU <code class="code">troff</code> reuses the identifier
+&lsquo;<samp class="samp">xxx</samp>&rsquo;, changing it from a macro to a diversion. No warning is
+emitted, and the previous contents of &lsquo;<samp class="samp">xxx</samp>&rsquo; are lost.
+</p>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Formatter-Instructions.html">Formatter Instructions</a>, Previous: <a href="Numeric-Expressions.html">Numeric Expressions</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Implementation-Differences.html b/doc/groff.html.node/Implementation-Differences.html
new file mode 100644
index 0000000..4645778
--- /dev/null
+++ b/doc/groff.html.node/Implementation-Differences.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Implementation Differences (The GNU Troff Manual)</title>
+
+<meta name="description" content="Implementation Differences (The GNU Troff Manual)">
+<meta name="keywords" content="Implementation Differences (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Safer-Mode.html" rel="next" title="Safer Mode">
+<link href="Debugging.html" rel="prev" title="Debugging">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Implementation-Differences">
+<div class="nav-panel">
+<p>
+Next: <a href="Safer-Mode.html" accesskey="n" rel="next">Safer Mode</a>, Previous: <a href="Debugging.html" accesskey="p" rel="prev">Debugging</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Implementation-Differences-1">5.38 Implementation Differences</h3>
+<a class="index-entry-id" id="index-implementation-differences"></a>
+<a class="index-entry-id" id="index-differences-in-implementation"></a>
+<a class="index-entry-id" id="index-incompatibilities-with-AT_0026T-troff"></a>
+
+<p>GNU <code class="code">troff</code> has a number of features that cause incompatibilities
+with documents written for other versions of <code class="code">troff</code>. Some GNU
+extensions to <code class="code">troff</code> have become supported by other
+implementations.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="Safer-Mode.html" accesskey="1">Safer Mode</a></li>
+<li><a href="Compatibility-Mode.html" accesskey="2">Compatibility Mode</a></li>
+<li><a href="Other-Differences.html" accesskey="3">Other Differences</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Indented-regions-in-ms.html b/doc/groff.html.node/Indented-regions-in-ms.html
new file mode 100644
index 0000000..44c648f
--- /dev/null
+++ b/doc/groff.html.node/Indented-regions-in-ms.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Indented regions in ms (The GNU Troff Manual)</title>
+
+<meta name="description" content="Indented regions in ms (The GNU Troff Manual)">
+<meta name="keywords" content="Indented regions in ms (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Body-Text.html" rel="up" title="ms Body Text">
+<link href="ms-keeps-and-displays.html" rel="next" title="ms keeps and displays">
+<link href="Lists-in-ms.html" rel="prev" title="Lists in ms">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Indented-regions-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-keeps-and-displays.html" accesskey="n" rel="next">Keeps, boxed keeps, and displays</a>, Previous: <a href="Lists-in-ms.html" accesskey="p" rel="prev">Lists</a>, Up: <a href="ms-Body-Text.html" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Indented-regions">4.6.5.7 Indented regions</h4>
+
+<p>You may need to indent a region of text while otherwise formatting it
+normally. Indented regions can be nested; you can change <code class="code">\n[PI]</code>
+before each call to vary the amount of inset.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eRS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RS</code></strong><a class="copiable-link" href='#index-_002eRS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RS-_005bms_005d"></a>
+<p>Begin a region where headings, paragraphs, and displays are indented
+(further) by the amount stored in the <code class="code">PI</code> register.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eRE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RE</code></strong><a class="copiable-link" href='#index-_002eRE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RE-_005bms_005d"></a>
+<p>End the (next) most recent indented region.
+</p></dd></dl>
+
+<p>This feature enables you to easily line up text under hanging and
+indented paragraphs.
+<a class="index-entry-id" id="index-ms-macros_002c-nested-lists"></a>
+<a class="index-entry-id" id="index-nested-lists-_005bms_005d"></a>
+For example, you may wish to structure lists hierarchically.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.IP \[bu] 2
+Lawyers:
+.RS
+.IP \[bu]
+Dewey,
+.IP \[bu]
+Cheatham,
+and
+.IP \[bu]
+and Howe.
+.RE
+.IP \[bu]
+Guns
+</pre></div>
+</td></tr></table>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">&bull; Lawyers:
+
+ &bull; Dewey,
+
+ &bull; Cheatham, and
+
+ &bull; Howe.
+
+&bull; Guns
+</pre></div></div>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Indexing.html b/doc/groff.html.node/Indexing.html
new file mode 100644
index 0000000..26895ca
--- /dev/null
+++ b/doc/groff.html.node/Indexing.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Indexing (The GNU Troff Manual)</title>
+
+<meta name="description" content="Indexing (The GNU Troff Manual)">
+<meta name="keywords" content="Indexing (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Document-Formats.html" rel="next" title="Document Formats">
+<link href="Table-of-Contents.html" rel="prev" title="Table of Contents">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Indexing">
+<div class="nav-panel">
+<p>
+Next: <a href="Document-Formats.html" accesskey="n" rel="next">Document Formats</a>, Previous: <a href="Table-of-Contents.html" accesskey="p" rel="prev">Table of Contents</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Indexing-1">3.2.8 Indexing</h4>
+<a class="index-entry-id" id="index-index_002c-in-macro-package"></a>
+
+<a class="index-entry-id" id="index-makeindex"></a>
+<p>An index is similar to a table of contents, in that entry labels and
+locations must be collected, but poses a greater challenge because it
+needs to be sorted before it is output. Here, processing the document
+in multiple passes is inescapable, and tools like the <code class="code">makeindex</code>
+program are necessary.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Input-Conventions.html b/doc/groff.html.node/Input-Conventions.html
new file mode 100644
index 0000000..35005bd
--- /dev/null
+++ b/doc/groff.html.node/Input-Conventions.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Input Conventions (The GNU Troff Manual)</title>
+
+<meta name="description" content="Input Conventions (The GNU Troff Manual)">
+<meta name="keywords" content="Input Conventions (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Text.html" rel="up" title="Text">
+<link href="Input-Encodings.html" rel="prev" title="Input Encodings">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Input-Conventions">
+<div class="nav-panel">
+<p>
+Previous: <a href="Input-Encodings.html" accesskey="p" rel="prev">Input Encodings</a>, Up: <a href="Text.html" accesskey="u" rel="up">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Input-Conventions-1">5.1.10 Input Conventions</h4>
+<a class="index-entry-id" id="index-input-conventions"></a>
+<a class="index-entry-id" id="index-conventions-for-input"></a>
+
+<p>Since GNU <code class="code">troff</code> fills text automatically, it is common practice
+in the <code class="code">roff</code> language to avoid visual composition of text in input
+files: the esthetic appeal of the formatted output is what matters.
+Therefore, <code class="code">roff</code> input should be arranged such that it is easy for
+authors and maintainers to compose and develop the document, understand
+the syntax of <code class="code">roff</code> requests, macro calls, and preprocessor
+languages used, and predict the behavior of the formatter. Several
+traditions have accrued in service of these goals.
+</p>
+<ul class="itemize mark-bullet">
+<li>Follow sentence endings in the input with newlines to ease their
+recognition (see <a class="pxref" href="Sentences.html">Sentences</a>). It is frequently convenient to end
+text lines after colons and semicolons as well, as these typically
+precede independent clauses. Consider doing so after commas; they often
+occur in lists that become easy to scan when itemized by line, or
+constitute supplements to the sentence that are added, deleted, or
+updated to clarify it. Parenthetical and quoted phrases are also good
+candidates for placement on text lines by themselves.
+
+</li><li>Set your text editor&rsquo;s line length to 72 characters or
+fewer.<a class="footnote" id="DOCF32" href="groff.html_fot.html#FOOT32"><sup>32</sup></a>
+This limit, combined with the previous item of advice, makes it less
+common that an input line will wrap in your text editor, and thus will
+help you perceive excessively long constructions in your text. Recall
+that natural languages originate in speech, not writing, and that
+punctuation is correlated with pauses for breathing and changes in
+prosody.
+
+</li><li>Use <code class="code">\&amp;</code> after &lsquo;<samp class="samp">!</samp>&rsquo;, &lsquo;<samp class="samp">?</samp>&rsquo;, and &lsquo;<samp class="samp">.</samp>&rsquo; if they are
+followed by space, tab, or newline characters and don&rsquo;t end a sentence.
+
+</li><li>In filled text lines, use <code class="code">\&amp;</code> before &lsquo;<samp class="samp">.</samp>&rsquo; and &lsquo;<samp class="samp">'</samp>&rsquo; if they
+are preceded by space, so that reflowing the input doesn&rsquo;t turn them
+into control lines.
+
+</li><li>Do not use spaces to perform indentation or align columns of a table.
+Leading spaces are reliable when text is not being filled.
+
+</li><li>Comment your document. It is never too soon to apply comments to
+record information of use to future document maintainers (including your
+future self). We thus introduce another escape sequence, <code class="code">\&quot;</code>,
+which causes GNU <code class="code">troff</code> to ignore the remainder of the input line.
+
+</li><li>Use the empty request&mdash;a control character followed immediately by a
+newline&mdash;to visually manage separation of material in input files.
+Many of the <code class="code">groff</code> project&rsquo;s own documents use an empty request
+between sentences, after macro definitions, and where a break is
+expected, and two empty requests between paragraphs or other requests or
+macro calls that will introduce vertical space into the document.
+
+<p>You can combine the empty request with the comment escape sequence to
+include whole-line comments in your document, and even &ldquo;comment out&rdquo;
+sections of it.
+</p></li></ul>
+
+<p>We conclude this section with an example sufficiently long to illustrate
+most of the above suggestions in practice. For the purpose of fitting
+the example between the margins of this manual with the font used for
+its typeset version, we have shortened the input line length to 56
+columns. As before, an arrow &rarr; indicates a tab character.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.\&quot; nroff this_file.roff | less
+.\&quot; groff -T ps this_file.roff &gt; this_file.ps
+&rarr;The theory of relativity is intimately connected with
+the theory of space and time.
+.
+I shall therefore begin with a brief investigation of
+the origin of our ideas of space and time,
+although in doing so I know that I introduce a
+controversial subject. \&quot; remainder of paragraph elided
+.
+.
+
+&rarr;The experiences of an individual appear to us arranged
+in a series of events;
+in this series the single events which we remember
+appear to be ordered according to the criterion of
+\[lq]earlier\[rq] and \[lq]later\[rq], \&quot; punct swapped
+which cannot be analysed further.
+.
+There exists,
+therefore,
+for the individual,
+an I-time,
+or subjective time.
+.
+This itself is not measurable.
+.
+I can,
+indeed,
+associate numbers with the events,
+in such a way that the greater number is associated with
+the later event than with an earlier one;
+but the nature of this association may be quite
+arbitrary.
+.
+This association I can define by means of a clock by
+comparing the order of events furnished by the clock
+with the order of a given series of events.
+.
+We understand by a clock something which provides a
+series of events which can be counted,
+and which has other properties of which we shall speak
+later.
+.\&quot; Albert Einstein, _The Meaning of Relativity_, 1922
+</pre></div>
+</td></tr></table>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="Input-Encodings.html">Input Encodings</a>, Up: <a href="Text.html">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Input-Encodings.html b/doc/groff.html.node/Input-Encodings.html
new file mode 100644
index 0000000..f9ef79d
--- /dev/null
+++ b/doc/groff.html.node/Input-Encodings.html
@@ -0,0 +1,154 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Input Encodings (The GNU Troff Manual)</title>
+
+<meta name="description" content="Input Encodings (The GNU Troff Manual)">
+<meta name="keywords" content="Input Encodings (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Text.html" rel="up" title="Text">
+<link href="Input-Conventions.html" rel="next" title="Input Conventions">
+<link href="Macro-Packages.html" rel="prev" title="Macro Packages">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.w-nolinebreak-text {white-space: nowrap}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Input-Encodings">
+<div class="nav-panel">
+<p>
+Next: <a href="Input-Conventions.html" accesskey="n" rel="next">Input Conventions</a>, Previous: <a href="Macro-Packages.html" accesskey="p" rel="prev">Macro Packages</a>, Up: <a href="Text.html" accesskey="u" rel="up">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Input-Encodings-1">5.1.9 Input Encodings</h4>
+
+<p>The <code class="command">groff</code> command&rsquo;s <samp class="option">-k</samp> option calls the
+<code class="command">preconv</code> preprocessor to perform input character encoding
+conversions. Input to the GNU <code class="code">troff</code> formatter itself, on the
+other hand, must be in one of two encodings it can recognize.
+</p>
+<dl class="table">
+<dt id='index-encoding_002c-input_002c-EBCDIC'><span><code class="code">cp1047</code><a class="copiable-link" href='#index-encoding_002c-input_002c-EBCDIC'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EBCDIC_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-input-encoding_002c-EBCDIC"></a>
+<a class="index-entry-id" id="index-encoding_002c-input_002c-code-page-1047"></a>
+<a class="index-entry-id" id="index-code-page-1047_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-input-encoding_002c-code-page-1047"></a>
+<a class="index-entry-id" id="index-IBM-code-page-1047-input-encoding"></a>
+<a class="index-entry-id" id="index-cp1047_002etmac"></a>
+<p>The code page 1047 input encoding works only on <abbr class="acronym">EBCDIC</abbr>
+platforms (and conversely, the other input encodings don&rsquo;t work with
+<abbr class="acronym">EBCDIC</abbr>); the file <samp class="file">cp1047.tmac</samp> is loaded at startup.
+</p>
+</dd>
+<dt id='index-encoding_002c-input_002c-Latin_002d1-_0028ISO-8859_002d1_0029'><span><code class="code">latin1</code><a class="copiable-link" href='#index-encoding_002c-input_002c-Latin_002d1-_0028ISO-8859_002d1_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Latin_002d1-_0028ISO-8859_002d1_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-ISO-8859_002d1-_0028Latin_002d1_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-input-encoding_002c-Latin_002d1-_0028ISO-8859_002d1_0029"></a>
+<a class="index-entry-id" id="index-latin1_002etmac"></a>
+<p>ISO <span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->, an encoding for Western European languages, is the
+default input encoding on non-<abbr class="acronym">EBCDIC</abbr> platforms; the file
+<samp class="file">latin1.tmac</samp> is loaded at startup.
+</p></dd>
+</dl>
+
+<p>Any document that is encoded in ISO 646:1991 (a descendant of USAS
+<span class="w-nolinebreak-text">X3.4-1968</span><!-- /@w --> or &ldquo;US-ASCII&rdquo;), or, equivalently, uses only code points
+from the &ldquo;C0 Controls&rdquo; and &ldquo;Basic Latin&rdquo; parts of the Unicode
+character set is also a valid ISO <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> document; the standards
+are interchangeable in their first 128 code points.<a class="footnote" id="DOCF30" href="groff.html_fot.html#FOOT30"><sup>30</sup></a>
+</p>
+<p>Other encodings are supported by means of macro packages.
+</p>
+<dl class="table">
+<dt id='index-encoding_002c-input_002c-Latin_002d2-_0028ISO-8859_002d2_0029'><span><code class="code">latin2</code><a class="copiable-link" href='#index-encoding_002c-input_002c-Latin_002d2-_0028ISO-8859_002d2_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Latin_002d2-_0028ISO-8859_002d2_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-ISO-8859_002d2-_0028Latin_002d2_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-input-encoding_002c-Latin_002d2-_0028ISO-8859_002d2_0029"></a>
+<a class="index-entry-id" id="index-latin2_002etmac"></a>
+<p>To use ISO <span class="w-nolinebreak-text">Latin-2</span><!-- /@w -->, an encoding for Central and Eastern European
+languages, invoke &lsquo;<samp class="samp">.mso&nbsp;latin2.tmac</samp>&rsquo;<!-- /@w --> at the beginning of your
+document or supply &lsquo;<samp class="samp">-mlatin2</samp>&rsquo; as a command-line argument to
+<code class="code">groff</code>.
+</p>
+</dd>
+<dt id='index-encoding_002c-input_002c-Latin_002d5-_0028ISO-8859_002d9_0029'><span><code class="code">latin5</code><a class="copiable-link" href='#index-encoding_002c-input_002c-Latin_002d5-_0028ISO-8859_002d9_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Latin_002d5-_0028ISO-8859_002d9_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-ISO-8859_002d9-_0028Latin_002d5_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-input-encoding_002c-Latin_002d5-_0028ISO-8859_002d9_0029"></a>
+<a class="index-entry-id" id="index-latin5_002etmac"></a>
+<p>To use ISO <span class="w-nolinebreak-text">Latin-5</span><!-- /@w -->, an encoding for the Turkish language, invoke
+&lsquo;<samp class="samp">.mso&nbsp;latin5.tmac</samp>&rsquo;<!-- /@w --> at the beginning of your document or
+supply &lsquo;<samp class="samp">-mlatin5</samp>&rsquo; as a command-line argument to <code class="code">groff</code>.
+</p>
+</dd>
+<dt id='index-encoding_002c-input_002c-Latin_002d9-_0028ISO-8859_002d15_0029'><span><code class="code">latin9</code><a class="copiable-link" href='#index-encoding_002c-input_002c-Latin_002d9-_0028ISO-8859_002d15_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Latin_002d9-_0028ISO-8859_002d15_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-ISO-8859_002d15-_0028Latin_002d9_0029_002c-input-encoding"></a>
+<a class="index-entry-id" id="index-input-encoding_002c-Latin_002d9-_0028ISO-8859_002d15_0029"></a>
+<a class="index-entry-id" id="index-latin9_002etmac"></a>
+<p>ISO <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> succeeds <span class="w-nolinebreak-text">Latin-1</span><!-- /@w -->; it includes a Euro sign and better
+glyph coverage for French. To use this encoding, invoke &lsquo;<samp class="samp">.mso&nbsp;latin9.tmac</samp>&rsquo;<!-- /@w --> at the beginning of your document or supply
+&lsquo;<samp class="samp">-mlatin9</samp>&rsquo; as a command-line argument to <code class="code">groff</code>.
+</p></dd>
+</dl>
+
+<p>Some characters from an input encoding may not be available with a
+particular output driver, or their glyphs may not have representation in
+the font used. For terminal devices, fallbacks are defined, like
+&lsquo;<samp class="samp">EUR</samp>&rsquo; for the Euro sign and &lsquo;<samp class="samp">(C)</samp>&rsquo; for the copyright sign. For
+typesetter devices, you may need to &ldquo;mount&rdquo; fonts that support glyphs
+required by the document. See <a class="xref" href="Font-Positions.html">Font Positions</a>.
+</p>
+<a class="index-entry-id" id="index-freeeuro_002epfa"></a>
+<a class="index-entry-id" id="index-ec_002etmac"></a>
+<p>Because a Euro glyph was not historically defined in PostScript fonts,
+<code class="code">groff</code> comes with a font called <samp class="file">freeeuro.pfa</samp> that provides
+the Euro in several styles. Standard PostScript fonts contain the
+glyphs from <span class="w-nolinebreak-text">Latin-5</span><!-- /@w --> and <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> that <span class="w-nolinebreak-text">Latin-1</span><!-- /@w --> lacks, so these
+encodings are supported for the <samp class="option">ps</samp> and <samp class="option">pdf</samp> output
+devices as <code class="code">groff</code> ships, while <span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> is not.
+</p>
+<p>Unicode supports characters from all other input encodings; the
+<samp class="option">utf8</samp> output driver for terminals therefore does as well. The
+DVI output driver supports the <span class="w-nolinebreak-text">Latin-2</span><!-- /@w --> and <span class="w-nolinebreak-text">Latin-9</span><!-- /@w --> encodings if
+the command-line option <samp class="option">-mec</samp> is used as well. <a class="footnote" id="DOCF31" href="groff.html_fot.html#FOOT31"><sup>31</sup></a>
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Input-Conventions.html">Input Conventions</a>, Previous: <a href="Macro-Packages.html">Macro Packages</a>, Up: <a href="Text.html">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Input-Line-Traps.html b/doc/groff.html.node/Input-Line-Traps.html
new file mode 100644
index 0000000..f0d7fef
--- /dev/null
+++ b/doc/groff.html.node/Input-Line-Traps.html
@@ -0,0 +1,185 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Input Line Traps (The GNU Troff Manual)</title>
+
+<meta name="description" content="Input Line Traps (The GNU Troff Manual)">
+<meta name="keywords" content="Input Line Traps (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Traps.html" rel="up" title="Traps">
+<link href="Blank-Line-Traps.html" rel="next" title="Blank Line Traps">
+<link href="Diversion-Traps.html" rel="prev" title="Diversion Traps">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Input-Line-Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="Blank-Line-Traps.html" accesskey="n" rel="next">Blank Line Traps</a>, Previous: <a href="Diversion-Traps.html" accesskey="p" rel="prev">Diversion Traps</a>, Up: <a href="Traps.html" accesskey="u" rel="up">Traps</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Input-Line-Traps-1">5.28.2 Input Line Traps</h4>
+<a class="index-entry-id" id="index-input-line-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-input-line"></a>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eit"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.it</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span> <span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eit'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-it"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eitc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.itc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span> <span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002eitc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-itc"></a>
+<a class="index-entry-id" id="index-setting-input-line-trap-_0028it_002c-itc_0029"></a>
+<a class="index-entry-id" id="index-input-line-trap_002c-setting-_0028it_002c-itc_0029"></a>
+<a class="index-entry-id" id="index-trap_002c-input-line_002c-setting-_0028it_002c-itc_0029"></a>
+<a class="index-entry-id" id="index-clearing-input-line-trap-_0028it_002c-itc_0029"></a>
+<a class="index-entry-id" id="index-input-line-trap_002c-clearing-_0028it_002c-itc_0029"></a>
+<a class="index-entry-id" id="index-trap_002c-input-line_002c-clearing-_0028it_002c-itc_0029"></a>
+<p>Set an input line trap, calling macro <var class="var">name</var> after processing the
+next <var class="var">n</var>&nbsp;productive input lines (recall <a class="ref" href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a>). Any existing input line trap in the
+environment is replaced. Without arguments, <code class="code">it</code> and <code class="code">itc</code>
+clear any input line trap that has not yet sprung.
+</p>
+<p>Consider a macro &lsquo;<samp class="samp">.ST <var class="var">s n</var></samp>&rsquo; which sets the next
+<var class="var">n</var>&nbsp;input lines in the font style&nbsp;<var class="var">s</var>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de ST \&quot; Use style $1 for next $2 text lines.
+. it \\$2 ES
+. ft \\$1
+..
+.de ES \&quot; end ST
+. ft R
+..
+.ST I 1
+oblique
+face
+.ST I 1
+oblique\c
+face
+ &rArr; <i class="i">oblique</i> face <i class="i">oblique</i>face &nbsp;<span class="r">(second &ldquo;face&rdquo; upright)</span>
+</pre></div></div>
+
+<a class="index-entry-id" id="index-input-line-traps-and-interrupted-lines-_0028itc_0029"></a>
+<a class="index-entry-id" id="index-interrupted-lines-and-input-line-traps-_0028itc_0029"></a>
+<a class="index-entry-id" id="index-traps_002c-input-line_002c-and-interrupted-lines-_0028itc_0029"></a>
+<a class="index-entry-id" id="index-lines_002c-interrupted_002c-and-input-line-traps-_0028itc_0029"></a>
+<p>Unlike the <code class="code">ce</code> and <code class="code">rj</code> requests, <code class="code">it</code> counts lines
+interrupted with the <code class="code">\c</code> escape sequence separately (see <a class="pxref" href="Line-Continuation.html">Line Continuation</a>); <code class="code">itc</code> does not. To see the difference, let&rsquo;s
+change the previous example to use <code class="code">itc</code> instead.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"><span class="r">&hellip;</span>
+. itc \\$2 ES
+<span class="r">&hellip;</span>
+ &rArr; <i class="i">oblique</i> face <i class="i">obliqueface</i> &nbsp;<span class="r">(second &ldquo;face&rdquo; oblique)</span>
+</pre></div></div>
+
+<p>You can think of the <code class="code">ce</code> and <code class="code">rj</code> requests as implicitly
+creating an input line trap with <code class="code">itc</code> that schedules a break when
+the trap is sprung.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de BR
+. br
+. <i class="slanted">internal: disable centering-without-filling</i>
+..
+.
+.de ce
+. if \\n[.br] .br
+. itc \\$1 BR
+. <i class="slanted">internal: enable centering-without-filling</i>
+..
+</pre></div></div>
+
+<p>Let us consider in more detail the sorts of input lines that are or are
+not &ldquo;productive&rdquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de Trap
+TRAP SPRUNG
+..
+.de Mac
+.if r a \l'5n'
+..
+.it 2 Trap
+.
+foo
+.Mac
+bar
+baz
+.it 1 Trap
+.sp \&quot; moves, but does not write or draw
+qux
+.itc 1 Trap
+\h'5n'\c \&quot; moves, but does not write or draw
+jat
+</pre></div></div>
+
+<p>When &lsquo;<samp class="samp">Trap</samp>&rsquo; gets called depends on whether the &lsquo;<samp class="samp">a</samp>&rsquo; register is
+defined; the control line with the <code class="code">if</code> request may or may not
+produce written output. We also see that the spacing request <code class="code">sp</code>,
+while certainly affecting the output, does not spring the input line
+trap. Similarly, the horizontal motion escape sequence <code class="code">\h</code> also
+affected the output, but was not &ldquo;written&rdquo;. Observe that we had to
+follow it with <code class="code">\c</code> and use <code class="code">itc</code> to prevent the newline at
+the end of the text line from causing a word break, which, like an
+ordinary space character, counts as written output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ groff -Tascii input-trap-example.groff
+ &rArr; foo bar TRAP SPRUNG baz
+ &rArr;
+ &rArr; qux TRAP SPRUNG jat TRAP SPRUNG
+$ groff -Tascii -ra1 input-trap-example.groff
+ &rArr; foo _____ TRAP SPRUNG bar baz
+ &rArr;
+ &rArr; qux TRAP SPRUNG jat TRAP SPRUNG
+</pre></div></div>
+</dd></dl>
+
+<p>Input line traps are associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>); switching to another environment suspends the
+current input line trap, and going back resumes it, restoring the count
+of qualifying lines enumerated in that environment.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Blank-Line-Traps.html">Blank Line Traps</a>, Previous: <a href="Diversion-Traps.html">Diversion Traps</a>, Up: <a href="Traps.html">Traps</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Installation.html b/doc/groff.html.node/Installation.html
new file mode 100644
index 0000000..659fdce
--- /dev/null
+++ b/doc/groff.html.node/Installation.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Installation (The GNU Troff Manual)</title>
+
+<meta name="description" content="Installation (The GNU Troff Manual)">
+<meta name="keywords" content="Installation (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Introduction.html" rel="up" title="Introduction">
+<link href="Conventions-Used-in-This-Manual.html" rel="next" title="Conventions Used in This Manual">
+<link href="Output-Device-Intro.html" rel="prev" title="Output Device Intro">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Installation">
+<div class="nav-panel">
+<p>
+Next: <a href="Conventions-Used-in-This-Manual.html" accesskey="n" rel="next">Conventions Used in This Manual</a>, Previous: <a href="Output-Device-Intro.html" accesskey="p" rel="prev">Output Devices</a>, Up: <a href="Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Installation-1">1.7 Installation</h3>
+<a class="index-entry-id" id="index-installation"></a>
+
+<p>Locate installation instructions in the files <samp class="file">INSTALL</samp>,
+<samp class="file">INSTALL.extra</samp>, and <samp class="file">INSTALL.REPO</samp> in the <code class="code">groff</code> source
+distribution. Being a GNU project, <code class="code">groff</code> supports the familiar
+&lsquo;<samp class="samp">./configure &amp;&amp; make</samp>&rsquo; command sequence.
+</p>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Intermediate-Output-Examples.html b/doc/groff.html.node/Intermediate-Output-Examples.html
new file mode 100644
index 0000000..0947e86
--- /dev/null
+++ b/doc/groff.html.node/Intermediate-Output-Examples.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Intermediate Output Examples (The GNU Troff Manual)</title>
+
+<meta name="description" content="Intermediate Output Examples (The GNU Troff Manual)">
+<meta name="keywords" content="Intermediate Output Examples (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gtroff-Output.html" rel="up" title="gtroff Output">
+<link href="Output-Language-Compatibility.html" rel="next" title="Output Language Compatibility">
+<link href="Command-Reference.html" rel="prev" title="Command Reference">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Intermediate-Output-Examples">
+<div class="nav-panel">
+<p>
+Next: <a href="Output-Language-Compatibility.html" accesskey="n" rel="next">Output Language Compatibility</a>, Previous: <a href="Command-Reference.html" accesskey="p" rel="prev">Command Reference</a>, Up: <a href="gtroff-Output.html" accesskey="u" rel="up"><code class="code">gtroff</code> Output</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Intermediate-Output-Examples-1">6.1.3 Intermediate Output Examples</h4>
+
+<p>This section presents the intermediate output generated from the same
+input for three different devices. The input is the sentence &lsquo;<samp class="samp">hell
+world</samp>&rsquo; fed into <code class="code">gtroff</code> on the command line.
+</p>
+<dl class="table">
+<dt>High-resolution device <code class="code">ps</code></dt>
+<dd>
+<p>This is the standard output of <code class="code">gtroff</code> if no <samp class="option">-T</samp> option is
+given.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">shell&gt; echo &quot;hell world&quot; | groff -Z -T ps
+
+x T ps
+x res 72000 1 1
+x init
+</pre></div><pre class="example-preformatted">p1
+x font 5 TR
+f5
+s10000
+V12000
+H72000
+thell
+wh2500
+tw
+H96620
+torld
+n12000 0
+</pre><div class="group"><pre class="example-preformatted">x trailer
+V792000
+x stop
+</pre></div></div>
+
+<p>This output can be fed into <code class="code">grops</code> to get its representation as a
+PostScript file.
+</p>
+</dd>
+<dt>Low-resolution device <code class="code">latin1</code></dt>
+<dd>
+<p>This is similar to the high-resolution device except that the
+positioning is done at a minor scale. Some comments (lines starting
+with &lsquo;<samp class="samp">#</samp>&rsquo;) were added for clarification; they were not generated by
+the formatter.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">shell&gt; echo &quot;hell world&quot; | groff -Z -T latin1
+
+# prologue
+x T latin1
+x res 240 24 40
+x init
+</pre></div><pre class="example-preformatted"># begin a new page
+p1
+# font setup
+x font 1 R
+f1
+s10
+# initial positioning on the page
+V40
+H0
+# write text 'hell'
+thell
+# inform about space, and issue a horizontal jump
+wh24
+# write text 'world'
+tworld
+# announce line break, but do nothing because...
+n40 0
+</pre><div class="group"><pre class="example-preformatted"># ...the end of the document has been reached
+x trailer
+V2640
+x stop
+</pre></div></div>
+
+<p>This output can be fed into <code class="code">grotty</code> to get a formatted text
+document.
+</p>
+</dd>
+<dt><abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> output</dt>
+<dd><p>Since a computer monitor has a much lower resolution than modern
+printers, the intermediate output for X11 devices can use the
+jump-and-write command with its 2-digit displacements.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">shell&gt; echo &quot;hell world&quot; | groff -Z -T X100
+
+x T X100
+x res 100 1 1
+x init
+</pre></div><pre class="example-preformatted">p1
+x font 5 TR
+f5
+s10
+V16
+H100
+# write text with jump-and-write commands
+ch07e07l03lw06w11o07r05l03dh7
+n16 0
+</pre><div class="group"><pre class="example-preformatted">x trailer
+V1100
+x stop
+</pre></div></div>
+
+<p>This output can be fed into <code class="code">xditview</code> or <code class="code">gxditview</code> for
+displaying in&nbsp;X.
+</p>
+<p>Due to the obsolete jump-and-write command, the text clusters in the
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> output are almost unreadable.
+</p></dd>
+</dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Output-Language-Compatibility.html">Output Language Compatibility</a>, Previous: <a href="Command-Reference.html">Command Reference</a>, Up: <a href="gtroff-Output.html"><code class="code">gtroff</code> Output</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Interpolating-Registers.html b/doc/groff.html.node/Interpolating-Registers.html
new file mode 100644
index 0000000..21d01f8
--- /dev/null
+++ b/doc/groff.html.node/Interpolating-Registers.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Interpolating Registers (The GNU Troff Manual)</title>
+
+<meta name="description" content="Interpolating Registers (The GNU Troff Manual)">
+<meta name="keywords" content="Interpolating Registers (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Registers.html" rel="up" title="Registers">
+<link href="Auto_002dincrement.html" rel="next" title="Auto-increment">
+<link href="Setting-Registers.html" rel="prev" title="Setting Registers">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Interpolating-Registers">
+<div class="nav-panel">
+<p>
+Next: <a href="Auto_002dincrement.html" accesskey="n" rel="next">Auto-increment</a>, Previous: <a href="Setting-Registers.html" accesskey="p" rel="prev">Setting Registers</a>, Up: <a href="Registers.html" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Interpolating-Registers-1">5.8.2 Interpolating Registers</h4>
+<a class="index-entry-id" id="index-interpolating-registers-_0028_005cn_0029"></a>
+<a class="index-entry-id" id="index-registers_002c-interpolating-_0028_005cn_0029"></a>
+
+<p>Register contents are interpolated with the <code class="code">\n</code> escape sequence.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cni"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n</code><span class="r"><i class="slanted">i</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cni'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cn"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_0028id"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n(</code><span class="r"><i class="slanted">id</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cn_0028id'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005bident_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\n[</code><span class="r"><i class="slanted">ident</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cn_005bident_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nested-assignments"></a>
+<a class="index-entry-id" id="index-assignments_002c-nested"></a>
+<a class="index-entry-id" id="index-indirect-assignments"></a>
+<a class="index-entry-id" id="index-assignments_002c-indirect"></a>
+<p>Interpolate register with name <var class="var">ident</var> (one-character
+name&nbsp;<var class="var">i</var>, two-character name <var class="var">id</var>). <code class="code">\n</code> is
+interpreted even in copy mode (see <a class="pxref" href="Copy-Mode.html">Copy Mode</a>). If the register is
+undefined, it is created and assigned a value of&nbsp;&lsquo;<samp class="samp">0</samp>&rsquo;, that
+value is interpolated, and a warning in category &lsquo;<samp class="samp">reg</samp>&rsquo; is emitted.
+See <a class="xref" href="Warnings.html">Warnings</a>, for information about the enablement and suppression of
+warnings.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 5
+.nr as \na+\na
+\n(as
+ &rArr; 10
+</pre></div></div>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a1 5
+.nr ab 6
+.ds str b
+.ds num 1
+\n[a\n[num]]
+ &rArr; 5
+\n[a\*[str]]
+ &rArr; 6
+</pre></div></div>
+</dd></dl>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Introduction.html b/doc/groff.html.node/Introduction.html
new file mode 100644
index 0000000..65499fc
--- /dev/null
+++ b/doc/groff.html.node/Introduction.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Introduction (The GNU Troff Manual)</title>
+
+<meta name="description" content="Introduction (The GNU Troff Manual)">
+<meta name="keywords" content="Introduction (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Invoking-groff.html" rel="next" title="Invoking groff">
+<link href="index.html" rel="prev" title="Top">
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="Introduction">
+<div class="nav-panel">
+<p>
+Next: <a href="Invoking-groff.html" accesskey="n" rel="next">Invoking <code class="code">groff</code></a>, Previous: <a href="index.html" accesskey="p" rel="prev">GNU <code class="code">troff</code></a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="chapter" id="Introduction-1">1 Introduction</h2>
+<a class="index-entry-id" id="index-introduction"></a>
+
+<p>GNU <code class="code">roff</code> (or <code class="code">groff</code>) is a programming system for
+typesetting documents. It is highly flexible and has been used
+extensively for over thirty years.
+</p>
+
+
+
+<ul class="mini-toc">
+<li><a href="Background.html" accesskey="1">Background</a></li>
+<li><a href="What-Is-groff_003f.html" accesskey="2">What Is <code class="code">groff</code>?</a></li>
+<li><a href="groff-Capabilities.html" accesskey="3"><code class="code">groff</code> Capabilities</a></li>
+<li><a href="Macro-Package-Intro.html" accesskey="4">Macro Packages</a></li>
+<li><a href="Preprocessor-Intro.html" accesskey="5">Preprocessors</a></li>
+<li><a href="Output-Device-Intro.html" accesskey="6">Output Devices</a></li>
+<li><a href="Installation.html" accesskey="7">Installation</a></li>
+<li><a href="Conventions-Used-in-This-Manual.html" accesskey="8">Conventions Used in This Manual</a></li>
+<li><a href="Credits.html" accesskey="9">Credits</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Invocation-Examples.html b/doc/groff.html.node/Invocation-Examples.html
new file mode 100644
index 0000000..c72781d
--- /dev/null
+++ b/doc/groff.html.node/Invocation-Examples.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Invocation Examples (The GNU Troff Manual)</title>
+
+<meta name="description" content="Invocation Examples (The GNU Troff Manual)">
+<meta name="keywords" content="Invocation Examples (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Invoking-groff.html" rel="up" title="Invoking groff">
+<link href="Paper-Format.html" rel="prev" title="Paper Format">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Invocation-Examples">
+<div class="nav-panel">
+<p>
+Previous: <a href="Paper-Format.html" accesskey="p" rel="prev">Paper Format</a>, Up: <a href="Invoking-groff.html" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Invocation-Examples-1">2.6 Invocation Examples</h3>
+<a class="index-entry-id" id="index-invocation-examples"></a>
+<a class="index-entry-id" id="index-examples-of-invocation"></a>
+
+<p><code class="code">roff</code> systems are best known for formatting man pages. Once a
+<code class="command">man</code> librarian program has located a man page, it may execute
+a <code class="code">groff</code> command much like the following.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -t -man -Tutf8 /usr/share/man/man1/groff.1
+</pre></div></div>
+
+<p>The librarian will also pipe the output through a pager, which might not
+interpret the SGR terminal escape sequences <code class="command">groff</code> emits for
+boldface, underlining, or italics; see the <cite class="cite">grotty<span class="r">(1)</span></cite> man page
+for a discussion.
+</p>
+<p>To process a <code class="code">roff</code> input file using the preprocessors
+<code class="command">gtbl</code> and <code class="command">gpic</code> and the <samp class="file">me</samp> macro package in the
+way to which AT&amp;T <code class="code">troff</code> users were accustomed, one would type (or
+script) a pipeline.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">gpic foo.me | gtbl | gtroff -me -Tutf8 | grotty
+</pre></div></div>
+
+<p>Using <code class="command">groff</code>, this pipe can be shortened to an equivalent
+command.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -p -t -me -T utf8 foo.me
+</pre></div></div>
+
+<p>An even easier way to do this is to use <code class="command">grog</code> to guess the
+preprocessor and macro options and execute the result by using the
+command substitution feature of the shell.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$(grog -Tutf8 foo.me)
+</pre></div></div>
+
+<p>Each command-line option to a postprocessor must be specified with any
+required leading dashes &lsquo;<samp class="samp">-</samp>&rsquo;
+because <code class="command">groff</code> passes the arguments as-is to the postprocessor;
+this permits arbitrary arguments to be transmitted. For example, to
+pass a title to the <code class="command">gxditview</code> postprocessor,
+the shell commands
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -X -P -title -P 'trial run' mydoc.t
+</pre></div></div>
+
+<p>and
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -X -Z mydoc.t | gxditview -title 'trial run' -
+</pre></div></div>
+
+<p>are equivalent.
+</p>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="Paper-Format.html">Paper Format</a>, Up: <a href="Invoking-groff.html">Invoking <code class="code">groff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Invoking-Requests.html b/doc/groff.html.node/Invoking-Requests.html
new file mode 100644
index 0000000..1864553
--- /dev/null
+++ b/doc/groff.html.node/Invoking-Requests.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Invoking Requests (The GNU Troff Manual)</title>
+
+<meta name="description" content="Invoking Requests (The GNU Troff Manual)">
+<meta name="keywords" content="Invoking Requests (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Formatter-Instructions.html" rel="up" title="Formatter Instructions">
+<link href="Calling-Macros.html" rel="next" title="Calling Macros">
+<link href="Control-Characters.html" rel="prev" title="Control Characters">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Invoking-Requests">
+<div class="nav-panel">
+<p>
+Next: <a href="Calling-Macros.html" accesskey="n" rel="next">Calling Macros</a>, Previous: <a href="Control-Characters.html" accesskey="p" rel="prev">Control Characters</a>, Up: <a href="Formatter-Instructions.html" accesskey="u" rel="up">Formatter Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Invoking-Requests-1">5.6.2 Invoking Requests</h4>
+<a class="index-entry-id" id="index-invoking-requests"></a>
+<a class="index-entry-id" id="index-requests_002c-invoking"></a>
+
+<p>A control character is optionally followed by tabs and/or spaces and
+then an identifier naming a request or macro. The invocation of an
+unrecognized request is interpreted as a macro call. Defining a macro
+with the same name as a request replaces the request. Deleting a
+request name with the <code class="code">rm</code> request makes it unavailable. The
+<code class="code">als</code> request can alias requests, permitting them to be wrapped or
+non-destructively replaced. See <a class="xref" href="Strings.html">Strings</a>.
+</p>
+<a class="index-entry-id" id="index-request-arguments"></a>
+<a class="index-entry-id" id="index-arguments-to-requests"></a>
+<a class="index-entry-id" id="index-tabs_002c-and-macro-arguments"></a>
+<a class="index-entry-id" id="index-macro-arguments_002c-and-tabs"></a>
+<a class="index-entry-id" id="index-arguments-to-macros_002c-and-tabs"></a>
+<a class="index-entry-id" id="index-tabs_002c-and-request-arguments"></a>
+<a class="index-entry-id" id="index-request-arguments_002c-and-tabs"></a>
+<a class="index-entry-id" id="index-arguments-to-requests_002c-and-tabs"></a>
+<p>There is no inherent limit on argument length or quantity. Most
+requests take one or more arguments, and ignore any they do not expect.
+A request may be separated from its arguments by tabs or spaces, but
+only spaces can separate an argument from its successor. Only one
+between arguments is necessary; any excess is ignored. GNU <code class="code">troff</code>
+does not allow tabs for argument separation.<a class="footnote" id="DOCF43" href="groff.html_fot.html#FOOT43"><sup>43</sup></a>
+</p>
+<p>Generally, a space <em class="emph">within</em> a request argument is not relevant, not
+meaningful, or is supported by bespoke provisions, as with the <code class="code">tl</code>
+request&rsquo;s delimiters (see <a class="pxref" href="Page-Layout.html">Page Layout</a>). Some requests, like
+<code class="code">ds</code>, interpret the remainder of the control line as a single
+argument. See <a class="xref" href="Strings.html">Strings</a>.
+</p>
+<a class="index-entry-id" id="index-structuring-source-code-of-documents-or-macro-packages"></a>
+<a class="index-entry-id" id="index-documents_002c-structuring-the-source-of"></a>
+<a class="index-entry-id" id="index-macro-package_002c-structuring-the-source-of"></a>
+<a class="index-entry-id" id="index-package_002c-package_002c-structuring-the-source-of"></a>
+<a class="index-entry-id" id="index-indentation_002c-of-roff-source-code"></a>
+<p>Spaces and tabs immediately after a control character are ignored.
+Commonly, authors structure the source of documents or macro files with
+them.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de center
+. if \\n[.br] \
+. br
+. ce \\$1
+..
+.
+.
+.de right-align
+.&rarr;if \\n[.br] \
+.&rarr;&rarr;br
+.&rarr;rj \\$1
+..
+</pre></div></div>
+
+<a class="index-entry-id" id="index-blank-line-trap-_0028blm_0029"></a>
+<a class="index-entry-id" id="index-blank-line-macro-_0028blm_0029-1"></a>
+<p>If you assign an empty blank line trap, you can separate macro
+definitions (or any input lines) with blank lines.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de do-nothing
+..
+.blm do-nothing \&quot; activate blank line trap
+
+.de center
+. if \\n[.br] \
+. br
+. ce \\$1
+..
+
+
+.de right-align
+.&rarr;if \\n[.br] \
+.&rarr;&rarr;br
+.&rarr;rj \\$1
+..
+
+.blm \&quot; deactivate blank line trap
+</pre></div></div>
+
+<p>See <a class="xref" href="Blank-Line-Traps.html">Blank Line Traps</a>.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Calling-Macros.html">Calling Macros</a>, Previous: <a href="Control-Characters.html">Control Characters</a>, Up: <a href="Formatter-Instructions.html">Formatter Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Invoking-groff.html b/doc/groff.html.node/Invoking-groff.html
new file mode 100644
index 0000000..a302025
--- /dev/null
+++ b/doc/groff.html.node/Invoking-groff.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Invoking groff (The GNU Troff Manual)</title>
+
+<meta name="description" content="Invoking groff (The GNU Troff Manual)">
+<meta name="keywords" content="Invoking groff (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Tutorial-for-Macro-Users.html" rel="next" title="Tutorial for Macro Users">
+<link href="Introduction.html" rel="prev" title="Introduction">
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="Invoking-groff">
+<div class="nav-panel">
+<p>
+Next: <a href="Tutorial-for-Macro-Users.html" accesskey="n" rel="next">Tutorial for Macro Users</a>, Previous: <a href="Introduction.html" accesskey="p" rel="prev">Introduction</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="chapter" id="Invoking-groff-1">2 Invoking <code class="code">groff</code></h2>
+<a class="index-entry-id" id="index-invoking-groff"></a>
+<a class="index-entry-id" id="index-groff-invocation"></a>
+
+<p>This chapter focuses on how to invoke the <code class="code">groff</code> front end. This
+front end takes care of the details of constructing the pipeline among
+the preprocessors, <code class="code">gtroff</code> and the postprocessor.
+</p>
+<p>It has become a tradition that GNU programs get the prefix &lsquo;<samp class="samp">g</samp>&rsquo; to
+distinguish them from their original counterparts provided by the host
+(see <a class="pxref" href="Environment.html">Environment</a>). Thus, for example, <code class="code">geqn</code> is GNU
+<code class="code">eqn</code>. On operating systems like GNU/Linux or the Hurd, which
+don&rsquo;t contain proprietary versions of <code class="code">troff</code>, and on
+MS-DOS/MS-Windows, where <code class="code">troff</code> and associated programs are not
+available at all, this prefix is omitted since GNU <code class="code">troff</code> is the
+only incarnation of <code class="code">troff</code> used. Exception: &lsquo;<samp class="samp">groff</samp>&rsquo; is never
+replaced by &lsquo;<samp class="samp">roff</samp>&rsquo;.
+</p>
+<p>In this document, we consequently say &lsquo;<samp class="samp">gtroff</samp>&rsquo; when talking about
+the GNU <code class="code">troff</code> program. All other implementations of <code class="code">troff</code> are called <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code>, which is the common origin of almost all <code class="code">troff</code>
+implementations<a class="footnote" id="DOCF4" href="groff.html_fot.html#FOOT4"><sup>4</sup></a> (with more or less compatible changes). Similarly, we say
+&lsquo;<samp class="samp">gpic</samp>&rsquo;, &lsquo;<samp class="samp">geqn</samp>&rsquo;, and so on.
+</p>
+
+
+
+<ul class="mini-toc">
+<li><a href="Groff-Options.html" accesskey="1">Options</a></li>
+<li><a href="Environment.html" accesskey="2">Environment</a></li>
+<li><a href="Macro-Directories.html" accesskey="3">Macro Directories</a></li>
+<li><a href="Font-Directories.html" accesskey="4">Font Directories</a></li>
+<li><a href="Paper-Format.html" accesskey="5">Paper Format</a></li>
+<li><a href="Invocation-Examples.html" accesskey="6">Invocation Examples</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Italic-Corrections.html b/doc/groff.html.node/Italic-Corrections.html
new file mode 100644
index 0000000..42620d8
--- /dev/null
+++ b/doc/groff.html.node/Italic-Corrections.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Italic Corrections (The GNU Troff Manual)</title>
+
+<meta name="description" content="Italic Corrections (The GNU Troff Manual)">
+<meta name="keywords" content="Italic Corrections (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Using-Fonts.html" rel="up" title="Using Fonts">
+<link href="Dummy-Characters.html" rel="next" title="Dummy Characters">
+<link href="Ligatures-and-Kerning.html" rel="prev" title="Ligatures and Kerning">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Italic-Corrections">
+<div class="nav-panel">
+<p>
+Next: <a href="Dummy-Characters.html" accesskey="n" rel="next">Dummy Characters</a>, Previous: <a href="Ligatures-and-Kerning.html" accesskey="p" rel="prev">Ligatures and Kerning</a>, Up: <a href="Using-Fonts.html" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Italic-Corrections-1">5.19.9 Italic Corrections</h4>
+
+<p>When typesetting adjacent glyphs from typefaces of different slants, the
+space between them may require adjustment.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002f-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\/</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002f-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_002f"></a>
+<a class="index-entry-id" id="index-italic-correction-_0028_005c_002f_0029"></a>
+<a class="index-entry-id" id="index-correction_002c-italic-_0028_005c_002f_0029"></a>
+<a class="index-entry-id" id="index-correction-between-oblique-and-upright-glyph-_0028_005c_002f_002c-_005c_002c_0029"></a>
+<a class="index-entry-id" id="index-roman-glyph_002c-correction-after-italic-glyph-_0028_005c_002f_0029"></a>
+<a class="index-entry-id" id="index-upright-glyph_002c-correction-after-oblique-glyph-_0028_005c_002f_0029"></a>
+<p>Apply an <em class="dfn">italic correction</em>: modify the spacing of the preceding
+glyph so that the distance between it and the following glyph is correct
+if the latter is of upright shape. For example, if an
+italic&nbsp;&lsquo;<samp class="samp">f</samp>&rsquo; is followed immediately by a roman right
+parenthesis, then in many fonts the top right portion of
+the&nbsp;&lsquo;<samp class="samp">f</samp>&rsquo; overlaps the top left of the right parenthesis, which
+is ugly. Use this escape sequence whenever an oblique glyph is
+immediately followed by an upright glyph without any intervening space.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002c-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\,</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002c-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_002c"></a>
+<a class="index-entry-id" id="index-left-italic-correction-_0028_005c_002c_0029"></a>
+<a class="index-entry-id" id="index-correction_002c-left-italic-_0028_005c_002c_0029"></a>
+<a class="index-entry-id" id="index-correction-between-upright-and-oblique-glyph-_0028_005c_002f_002c-_005c_002c_0029"></a>
+<a class="index-entry-id" id="index-roman-glyph_002c-correction-before-italic-glyph-_0028_005c_002c_0029"></a>
+<a class="index-entry-id" id="index-upright-glyph_002c-correction-before-oblique-glyph-_0028_005c_002c_0029"></a>
+<p>Apply a <em class="dfn">left italic correction</em>: modify the spacing of the
+following glyph so that the distance between it and the preceding
+glyph is correct if the latter is of upright shape. For example,
+if a roman left parenthesis is immediately followed by an
+italic&nbsp;&lsquo;<samp class="samp">f</samp>&rsquo;, then in many fonts the bottom left portion of
+the&nbsp;&lsquo;<samp class="samp">f</samp>&rsquo; overlaps the bottom of the left parenthesis, which is
+ugly. Use this escape sequence whenever an upright glyph is followed
+immediately by an oblique glyph without any intervening space.
+</p></dd></dl>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Language-Concepts.html b/doc/groff.html.node/Language-Concepts.html
new file mode 100644
index 0000000..16badc5
--- /dev/null
+++ b/doc/groff.html.node/Language-Concepts.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Language Concepts (The GNU Troff Manual)</title>
+
+<meta name="description" content="Language Concepts (The GNU Troff Manual)">
+<meta name="keywords" content="Language Concepts (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gtroff-Output.html" rel="up" title="gtroff Output">
+<link href="Command-Reference.html" rel="next" title="Command Reference">
+<link href="gtroff-Output.html" rel="prev" title="gtroff Output">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Language-Concepts">
+<div class="nav-panel">
+<p>
+Next: <a href="Command-Reference.html" accesskey="n" rel="next">Command Reference</a>, Previous: <a href="gtroff-Output.html" accesskey="p" rel="prev"><code class="code">gtroff</code> Output</a>, Up: <a href="gtroff-Output.html" accesskey="u" rel="up"><code class="code">gtroff</code> Output</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Language-Concepts-1">6.1.1 Language Concepts</h4>
+
+<p>The fundamental operation of the GNU <code class="code">troff</code> formatter is the
+translation of the <code class="code">groff</code> input language into a device-independent
+form primarily concerned with what has to be written or drawn at
+specific positions on the output device. This language is simple and
+imperative. In the following discussion, the term <em class="dfn">command</em> always
+refers to this intermediate output language, and never to the
+<code class="code">groff</code> language intended for direct use by document authors.
+Intermediate output commands comprise several categories: glyph output;
+font, color, and text size selection; motion of the printing position;
+page advancement; drawing of geometric objects; and device control
+commands, a catch-all for operations not easily classified as any of the
+foregoing, such as directives to start and stop output, identify the
+intended output device, or place URL hyperlinks in supported output
+formats.
+</p>
+
+<ul class="mini-toc">
+<li><a href="Separation.html" accesskey="1">Separation</a></li>
+<li><a href="Argument-Units.html" accesskey="2">Argument Units</a></li>
+<li><a href="Document-Parts.html" accesskey="3">Document Parts</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Leaders.html b/doc/groff.html.node/Leaders.html
new file mode 100644
index 0000000..1a590e8
--- /dev/null
+++ b/doc/groff.html.node/Leaders.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Leaders (The GNU Troff Manual)</title>
+
+<meta name="description" content="Leaders (The GNU Troff Manual)">
+<meta name="keywords" content="Leaders (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Tabs-and-Fields.html" rel="up" title="Tabs and Fields">
+<link href="Fields.html" rel="next" title="Fields">
+<link href="Tabs-and-Fields.html" rel="prev" title="Tabs and Fields">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Leaders">
+<div class="nav-panel">
+<p>
+Next: <a href="Fields.html" accesskey="n" rel="next">Fields</a>, Previous: <a href="Tabs-and-Fields.html" accesskey="p" rel="prev">Tabs and Fields</a>, Up: <a href="Tabs-and-Fields.html" accesskey="u" rel="up">Tabs and Fields</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Leaders-1">5.12.1 Leaders</h4>
+<a class="index-entry-id" id="index-leaders"></a>
+
+<p>Sometimes it is desirable to fill a tab stop with a given glyph,
+but also use tab stops normally on the same output line. An example is
+a table of contents entry that uses dots to bridge the entry name with
+its page number, which is itself aligned between tab stops. The
+<code class="code">roff</code> language provides <em class="dfn">leaders</em> for this
+purpose.<a class="footnote" id="DOCF67" href="groff.html_fot.html#FOOT67"><sup>67</sup></a>
+</p>
+<a class="index-entry-id" id="index-leader-character-1"></a>
+<p>A leader character (<abbr class="acronym">ISO</abbr> and <abbr class="acronym">EBCDIC</abbr> code
+point&nbsp;1, also known as <abbr class="acronym">SOH</abbr> or &ldquo;start of heading&rdquo;),
+behaves similarly to a tab character: it moves to the next tab stop.
+The difference is that for this movement, the default fill character is
+a period &lsquo;<samp class="samp">.</samp>&rsquo;.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005ca-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\a</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ca-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005ca"></a>
+<a class="index-entry-id" id="index-leader-character_002c-non_002dinterpreted-_0028_005ca_0029"></a>
+<a class="index-entry-id" id="index-character_002c-leader_002c-non_002dinterpreted-_0028_005ca_0029"></a>
+<a class="index-entry-id" id="index-_005ca_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-_005ca"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005ca"></a>
+<p>Interpolate a leader in copy mode; see <a class="ref" href="Copy-Mode.html">Copy Mode</a>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">c</i></span>]</var><a class="copiable-link" href='#index-_002elc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lc"></a>
+<a class="index-entry-id" id="index-leader-repetition-character-_0028lc_0029"></a>
+<a class="index-entry-id" id="index-character_002c-leader-repetition-_0028lc_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-leader-repetition-_0028lc_0029"></a>
+<p>Set the leader repetition character to the ordinary or special character
+<var class="var">c</var>. Recall <a class="ref" href="Tabs-and-Leaders.html">Tabs and Leaders</a>: when encountering a leader
+character in the input, the formatter writes as many dots &lsquo;<samp class="samp">.</samp>&rsquo; as
+are necessary until
+reaching the next tab stop; this is the <em class="dfn">leader definition
+character</em>. Omitting <var class="var">c</var> unsets the leader
+character. With no argument, GNU <code class="code">troff</code> treats leaders the same
+as tabs. The leader repetition character is associated with the
+environment (see <a class="pxref" href="Environments.html">Environments</a>). Only a single <var class="var">c</var> is
+recognized; any excess is ignored.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-table-of-contents-1"></a>
+<a class="index-entry-id" id="index-contents_002c-table-of-1"></a>
+<p>A table of contents, for example, may define tab stops after a section
+number, a title, and a gap to be filled with leader dots. The page
+number follows the leader, after a right-aligned final tab stop wide
+enough to house the largest page number occurring in the document.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds entry1 19.\tThe Prophet\a\t98
+.ds entry2 20.\tAll Astir\a\t101
+.ta .5i 4.5i +.5iR
+.nf
+\*[entry1]
+\*[entry2]
+ &rArr; 19. The Prophet............................. 98
+ &rArr; 20. All Astir............................... 101
+</pre></div></div>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Fields.html">Fields</a>, Previous: <a href="Tabs-and-Fields.html">Tabs and Fields</a>, Up: <a href="Tabs-and-Fields.html">Tabs and Fields</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Leading-Space-Traps.html b/doc/groff.html.node/Leading-Space-Traps.html
new file mode 100644
index 0000000..b107793
--- /dev/null
+++ b/doc/groff.html.node/Leading-Space-Traps.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Leading Space Traps (The GNU Troff Manual)</title>
+
+<meta name="description" content="Leading Space Traps (The GNU Troff Manual)">
+<meta name="keywords" content="Leading Space Traps (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Traps.html" rel="up" title="Traps">
+<link href="End_002dof_002dinput-Traps.html" rel="next" title="End-of-input Traps">
+<link href="Blank-Line-Traps.html" rel="prev" title="Blank Line Traps">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Leading-Space-Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="End_002dof_002dinput-Traps.html" accesskey="n" rel="next">End-of-input Traps</a>, Previous: <a href="Blank-Line-Traps.html" accesskey="p" rel="prev">Blank Line Traps</a>, Up: <a href="Traps.html" accesskey="u" rel="up">Traps</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Leading-Space-Traps-1">5.28.4 Leading Space Traps</h4>
+<a class="index-entry-id" id="index-leading-space-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-leading-space"></a>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elsm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lsm</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002elsm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lsm"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005blsn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[lsn]</code></strong><a class="copiable-link" href='#index-_005cn_005blsn_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lsn"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005blss_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[lss]</code></strong><a class="copiable-link" href='#index-_005cn_005blss_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lss"></a>
+<a class="index-entry-id" id="index-leading-spaces-macro-_0028lsm_0029"></a>
+<p>Set a leading space trap, calling the macro <var class="var">name</var> when GNU
+<code class="code">troff</code> encounters leading spaces in an input line; the implicit
+line break that normally happens in this case is suppressed. If no
+argument is supplied, the default leading space behavior is
+(re-)established (see <a class="pxref" href="Breaking.html">Breaking</a>).
+</p>
+<p>The count of leading spaces on an input line is stored in register
+<code class="code">lsn</code>, and the amount of corresponding horizontal motion in
+register <code class="code">lss</code>, irrespective of whether a leading space trap is
+set. When it is, the leading spaces are removed from the input line,
+and no motion is produced before calling <var class="var">name</var>.
+</p>
+</dd></dl>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Ligatures-and-Kerning.html b/doc/groff.html.node/Ligatures-and-Kerning.html
new file mode 100644
index 0000000..b00ed74
--- /dev/null
+++ b/doc/groff.html.node/Ligatures-and-Kerning.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Ligatures and Kerning (The GNU Troff Manual)</title>
+
+<meta name="description" content="Ligatures and Kerning (The GNU Troff Manual)">
+<meta name="keywords" content="Ligatures and Kerning (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Using-Fonts.html" rel="up" title="Using Fonts">
+<link href="Dummy-Characters.html" rel="next" title="Dummy Characters">
+<link href="Artificial-Fonts.html" rel="prev" title="Artificial Fonts">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Ligatures-and-Kerning">
+<div class="nav-panel">
+<p>
+Next: <a href="Dummy-Characters.html" accesskey="n" rel="next">Dummy Characters</a>, Previous: <a href="Artificial-Fonts.html" accesskey="p" rel="prev">Artificial Fonts</a>, Up: <a href="Using-Fonts.html" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Ligatures-and-Kerning-1">5.19.8 Ligatures and Kerning</h4>
+<a class="index-entry-id" id="index-ligatures-and-kerning"></a>
+<a class="index-entry-id" id="index-kerning-and-ligatures"></a>
+
+<p>Ligatures are groups of characters that are run together, i.e, producing
+a single glyph. For example, the letters &lsquo;f&rsquo; and &lsquo;i&rsquo; can form a
+ligature &lsquo;fi&rsquo; as in the word &lsquo;file&rsquo;. This produces a cleaner look
+(albeit subtle) to the printed output. Usually, ligatures are not
+available in fonts for TTY output devices.
+</p>
+<p>Most PostScript fonts support the fi and fl ligatures. The C/A/T
+typesetter that was the target of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> also
+supported &lsquo;ff&rsquo;, &lsquo;ffi&rsquo;, and &lsquo;ffl&rsquo; ligatures. Advanced typesetters or
+&lsquo;expert&rsquo; fonts may include ligatures for &lsquo;ft&rsquo; and &lsquo;ct&rsquo;, although GNU
+<code class="code">troff</code> does not support these (yet).
+</p>
+<p>Only the current font is checked for ligatures and kerns; neither
+special fonts nor special charcters defined with the <code class="code">char</code> request
+(and its siblings) are taken into account.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elg"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lg</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">flag</i></span>]</var><a class="copiable-link" href='#index-_002elg'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lg"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002elg_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.lg]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002elg_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002elg-1"></a>
+<a class="index-entry-id" id="index-activating-ligatures-_0028lg_0029"></a>
+<a class="index-entry-id" id="index-ligatures_002c-activating-_0028lg_0029"></a>
+<a class="index-entry-id" id="index-ligatures-enabled-register-_0028_002elg_0029"></a>
+<p>Switch the ligature mechanism on or off; if the parameter is non-zero or
+missing, ligatures are enabled, otherwise disabled. Default is on. The
+current ligature mode can be found in the read-only register <code class="code">.lg</code>
+(set to 1 or&nbsp;2 if ligatures are enabled, 0&nbsp;otherwise).
+</p>
+<p>Setting the ligature mode to&nbsp;2 enables the two-character ligatures
+(fi, fl, and ff) and disables the three-character ligatures (ffi and
+ffl).
+</p></dd></dl>
+
+<p><em class="dfn">Pairwise kerning</em> is another subtle typesetting mechanism that
+modifies the distance between a glyph pair to improve readability. In
+most cases (but not always) the distance is decreased.
+Typewriter-like fonts and fonts for terminals where all glyphs have the
+same width don&rsquo;t use kerning.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ekern"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.kern</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">flag</i></span>]</var><a class="copiable-link" href='#index-_002ekern'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-kern"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ekern_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.kern]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ekern_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ekern-1"></a>
+<a class="index-entry-id" id="index-activating-kerning-_0028kern_0029"></a>
+<a class="index-entry-id" id="index-kerning_002c-activating-_0028kern_0029"></a>
+<a class="index-entry-id" id="index-kerning-enabled-register-_0028_002ekern_0029"></a>
+<p>Switch kerning on or off. If the parameter is non-zero or missing,
+enable pairwise kerning, otherwise disable it. The read-only register
+<code class="code">.kern</code> is set to&nbsp;1 if pairwise kerning is enabled,
+0&nbsp;otherwise.
+</p>
+<a class="index-entry-id" id="index-dummy-character-_0028_005c_0026_0029_002c-effect-on-kerning"></a>
+<a class="index-entry-id" id="index-character_002c-dummy-_0028_005c_0026_0029_002c-effect-on-kerning"></a>
+<p>If the font description file contains pairwise kerning information,
+glyphs from that font are kerned. Kerning between two glyphs can be
+inhibited by placing <code class="code">\&amp;</code> between them: &lsquo;<samp class="samp">V\&amp;A</samp>&rsquo;.
+</p>
+<p>See <a class="xref" href="Font-Description-File-Format.html">Font Description File Format</a>.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-track-kerning"></a>
+<a class="index-entry-id" id="index-kerning_002c-track"></a>
+<p><em class="dfn">Track kerning</em> expands or reduces the space between glyphs. This
+can be handy, for example, if you need to squeeze a long word onto a
+single line or spread some text to fill a narrow column. It must be
+used with great care since it is usually considered bad typography if
+the reader notices the effect.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etkf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tkf</code></strong> <var class="def-var-arguments">f s1 n1 s2 n2</var><a class="copiable-link" href='#index-_002etkf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tkf"></a>
+<a class="index-entry-id" id="index-activating-track-kerning-_0028tkf_0029"></a>
+<a class="index-entry-id" id="index-track-kerning_002c-activating-_0028tkf_0029"></a>
+<p>Enable track kerning for font&nbsp;<var class="var">f</var>. If the current font
+is&nbsp;<var class="var">f</var> the width of every glyph is increased by an amount
+between <var class="var">n1</var> and <var class="var">n2</var> (<var class="var">n1</var>, <var class="var">n2</var> can be negative); if
+the current type size is less than or equal to <var class="var">s1</var> the width is
+increased by <var class="var">n1</var>; if it is greater than or equal to <var class="var">s2</var> the
+width is increased by <var class="var">n2</var>; if the type size is greater than or
+equal to <var class="var">s1</var> and less than or equal to <var class="var">s2</var> the increase in
+width is a linear function of the type size.
+</p>
+<p>The default scaling unit is &lsquo;<samp class="samp">z</samp>&rsquo; for <var class="var">s1</var> and <var class="var">s2</var>, &lsquo;<samp class="samp">p</samp>&rsquo;
+for <var class="var">n1</var> and <var class="var">n2</var>.
+</p>
+<p>The track kerning amount is added even to the rightmost glyph in a line;
+for large values it is thus recommended to increase the line length by
+the same amount to compensate.
+</p></dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Dummy-Characters.html">Dummy Characters</a>, Previous: <a href="Artificial-Fonts.html">Artificial Fonts</a>, Up: <a href="Using-Fonts.html">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Line-Continuation.html b/doc/groff.html.node/Line-Continuation.html
new file mode 100644
index 0000000..f818cd9
--- /dev/null
+++ b/doc/groff.html.node/Line-Continuation.html
@@ -0,0 +1,166 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Line Continuation (The GNU Troff Manual)</title>
+
+<meta name="description" content="Line Continuation (The GNU Troff Manual)">
+<meta name="keywords" content="Line Continuation (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Page-Layout.html" rel="next" title="Page Layout">
+<link href="Line-Layout.html" rel="prev" title="Line Layout">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Line-Continuation">
+<div class="nav-panel">
+<p>
+Next: <a href="Page-Layout.html" accesskey="n" rel="next">Page Layout</a>, Previous: <a href="Line-Layout.html" accesskey="p" rel="prev">Line Layout</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Line-Continuation-1">5.16 Line Continuation</h3>
+<a class="index-entry-id" id="index-line-control"></a>
+<a class="index-entry-id" id="index-control_002c-line"></a>
+
+<p>When filling is enabled, input and output line breaks generally do not
+correspond. The <code class="code">roff</code> language therefore distinguishes input and
+output line continuation.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cRET-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\<kbd class="key">RET</kbd></code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cRET-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cRET"></a>
+<a class="index-entry-id" id="index-input-line-continuation-_0028_005cRET_0029"></a>
+<a class="index-entry-id" id="index-line_002c-input_002c-continuation-_0028_005cRET_0029"></a>
+<a class="index-entry-id" id="index-continuation_002c-input-line-_0028_005cRET_0029"></a>
+<a class="index-entry-id" id="index-_005cnewline"></a>
+<p><code class="code">\<kbd class="key">RET</kbd></code> (a backslash immediately followed by a newline)
+suppresses the effects of that newline in the input. The next input
+line thus retains the classification of its predecessor as a control or
+text line. <code class="code">\<kbd class="key">RET</kbd></code> is useful for managing line lengths in the
+input during document maintenance; you can break an input line in the
+middle of a request invocation, macro call, or escape sequence. Input
+line continuation is invisible to the formatter, with two exceptions:
+the <code class="code">|</code> operator recognizes the new input line
+(see <a class="pxref" href="Numeric-Expressions.html">Numeric Expressions</a>), and the input line counter register
+<code class="code">.c</code> is incremented.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 50n
+.de I
+. ft I
+. nop \\$*
+. ft
+..
+Our film class watched
+.I The Effect of Gamma Rays on Man-in-the-Moon
+Marigolds. \&quot; whoops, the input line wrapped
+.br
+.I My own opus begins on line \n[.c] \
+and ends on line \n[.c].
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; Our film class watched <i class="i">The Effect of Gamma Rays on</i>
+ &rArr; <i class="i">Man-in-the-Moon</i> Marigolds.
+ &rArr; <i class="i">My own opus begins on line 11 and ends on line 12.</i>
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cc-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\c</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cc-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cc"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eint_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.int]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eint_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eint"></a>
+<a class="index-entry-id" id="index-output-line_002c-continuation-_0028_005cc_0029"></a>
+<a class="index-entry-id" id="index-line_002c-output_002c-continuation-_0028_005cc_0029"></a>
+<a class="index-entry-id" id="index-continuation_002c-output-line-_0028_005cc_0029"></a>
+<a class="index-entry-id" id="index-interrupted-line"></a>
+<a class="index-entry-id" id="index-line_002c-interrupted"></a>
+<a class="index-entry-id" id="index-_005cR_002c-after-_005cc"></a>
+<p><code class="code">\c</code> continues an output line. Nothing after it on the input line
+is formatted. In contrast to <code class="code">\<kbd class="key">RET</kbd></code>, a line after <code class="code">\c</code>
+remains a new input line, so a control character is recognized at its
+beginning. The visual results depend on whether filling is enabled; see
+<a class="ref" href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a>.
+</p>
+<ul class="itemize mark-bullet">
+<li><a class="index-entry-id" id="index-_005cc_002c-when-filling-enabled"></a>
+<a class="index-entry-id" id="index-fill-mode_002c-and-_005cc"></a>
+<a class="index-entry-id" id="index-mode_002c-fill_002c-and-_005cc"></a>
+If filling is enabled, a word interrupted with <code class="code">\c</code> is continued
+with the text on the next input text line, without an intervening space.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">This is a te\c
+st.
+ &rArr; This is a test.
+</pre></div></div>
+
+</li><li><a class="index-entry-id" id="index-_005cc_002c-when-filling-disabled"></a>
+<a class="index-entry-id" id="index-no_002dfill-mode_002c-and-_005cc"></a>
+<a class="index-entry-id" id="index-mode_002c-no_002dfill_002c-and-_005cc"></a>
+If filling is disabled, the next input text line after <code class="code">\c</code> is
+handled as a continuation of the same input text line.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nf
+This is a \c
+test.
+ &rArr; This is a test.
+</pre></div></div>
+</li></ul>
+
+<p>An intervening control line that causes a break overrides <code class="code">\c</code>,
+flushing out the pending output line in the usual way.
+</p>
+<a class="index-entry-id" id="index-interrupted-line-register-_0028_002eint_0029"></a>
+<a class="index-entry-id" id="index-continued-output-line-register-_0028_002eint_0029"></a>
+<p>The <code class="code">.int</code> register contains a positive value if the last output
+line was continued with <code class="code">\c</code>; this datum is associated with the
+environment (see <a class="pxref" href="Environments.html">Environments</a>).<a class="footnote" id="DOCF69" href="groff.html_fot.html#FOOT69"><sup>69</sup></a>
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Page-Layout.html">Page Layout</a>, Previous: <a href="Line-Layout.html">Line Layout</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Line-Layout.html b/doc/groff.html.node/Line-Layout.html
new file mode 100644
index 0000000..4cfed5f
--- /dev/null
+++ b/doc/groff.html.node/Line-Layout.html
@@ -0,0 +1,267 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Line Layout (The GNU Troff Manual)</title>
+
+<meta name="description" content="Line Layout (The GNU Troff Manual)">
+<meta name="keywords" content="Line Layout (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Line-Continuation.html" rel="next" title="Line Continuation">
+<link href="troff-and-nroff-Modes.html" rel="prev" title="troff and nroff Modes">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Line-Layout">
+<div class="nav-panel">
+<p>
+Next: <a href="Line-Continuation.html" accesskey="n" rel="next">Line Continuation</a>, Previous: <a href="troff-and-nroff-Modes.html" accesskey="p" rel="prev"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Line-Layout-1">5.15 Line Layout</h3>
+<a class="index-entry-id" id="index-line-layout"></a>
+<a class="index-entry-id" id="index-layout_002c-line"></a>
+
+<a class="index-entry-id" id="index-dimensions_002c-line"></a>
+<a class="index-entry-id" id="index-line-dimensions"></a>
+<p>The following drawing shows the dimensions that <code class="code">gtroff</code> uses for
+placing a line of output onto the page. They are labeled with the
+request that manipulates each dimension.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> --&gt;| in |&lt;--
+ |&lt;-----------ll------------&gt;|
+ +----+----+----------------------+----+
+ | : : : |
+ +----+----+----------------------+----+
+--&gt;| po |&lt;--
+ |&lt;--------paper width----------------&gt;|
+</pre></div></div>
+
+<p>These dimensions are:
+</p>
+<dl class="ftable">
+<dt id='index-po'><span><code class="code">po</code><a class="copiable-link" href='#index-po'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-left-margin-_0028po_0029"></a>
+<a class="index-entry-id" id="index-margin_002c-left-_0028po_0029"></a>
+<a class="index-entry-id" id="index-page-offset-_0028po_0029"></a>
+<a class="index-entry-id" id="index-offset_002c-page-_0028po_0029"></a>
+<p><em class="dfn">Page offset</em>&mdash;this is the leftmost position of text on the final
+output, defining the <em class="dfn">left margin</em>.
+</p>
+</dd>
+<dt id='index-in'><span><code class="code">in</code><a class="copiable-link" href='#index-in'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-indentation-_0028in_0029"></a>
+<a class="index-entry-id" id="index-line-indentation-_0028in_0029"></a>
+<p><em class="dfn">Indentation</em>&mdash;this is the distance from the left margin where
+text is printed.
+</p>
+</dd>
+<dt id='index-ll'><span><code class="code">ll</code><a class="copiable-link" href='#index-ll'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-line-length-_0028ll_0029"></a>
+<a class="index-entry-id" id="index-length-of-line-_0028ll_0029"></a>
+<p><em class="dfn">Line length</em>&mdash;this is the distance from the left margin to right
+margin.
+</p></dd>
+</dl>
+
+<a class="index-entry-id" id="index-margin_002c-right"></a>
+<a class="index-entry-id" id="index-right-margin"></a>
+<p>The right margin is not explicitly configured; the combination of page
+offset and line length provides the information necessary to derive it.
+</p>
+<p>A simple demonstration:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 3i
+This is text without indentation.
+The line length has been set to 3\~inches.
+.in +.5i
+.ll -.5i
+Now the left and right margins are both increased.
+.in
+.ll
+Calling .in and .ll without parameters restores
+the previous values.
+</pre></div></div>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; This is text without indenta-
+ &rArr; tion. The line length has
+ &rArr; been set to 3 inches.
+ &rArr; Now the left and
+ &rArr; right margins are
+ &rArr; both increased.
+ &rArr; Calling .in and .ll without
+ &rArr; parameters restores the previ-
+ &rArr; ous values.
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epo"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.po</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">offset</i></span>]</var><a class="copiable-link" href='#index-_002epo'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-po-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002epo-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.po</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">offset</i></span></var><a class="copiable-link" href='#index-_002epo-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002epo-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.po</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">offset</i></span></var><a class="copiable-link" href='#index-_002epo-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eo_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.o]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eo_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eo"></a>
+<a class="index-entry-id" id="index-tty_002etmac-1"></a>
+<p>Set page offset to <var class="var">offset</var> (or increment or decrement its current
+value by <var class="var">offset</var>). If invoked without an argument, the page offset
+is restored to the value before the previous <code class="code">po</code> request.
+This request does not cause a break; the page offset in effect when an
+output line is broken prevails (see <a class="pxref" href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a>). The initial value is 1<span class="dmn">i</span> and the default scaling
+unit is &lsquo;<samp class="samp">m</samp>&rsquo;. On terminal devices, the page offset is set to zero
+by a driver-specific macro file, <samp class="file">tty.tmac</samp>. The current page
+offset can be found in the read-only register &lsquo;<samp class="samp">.o</samp>&rsquo;.
+<a class="index-entry-id" id="index-CSTR-_002354-errata-1"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-po-request"></a>
+This request is incorrectly documented in the <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> manual as using a default scaling unit of &lsquo;<samp class="samp">v</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.po 3i
+\n[.o]
+ &rArr; 720
+.po -1i
+\n[.o]
+ &rArr; 480
+.po
+\n[.o]
+ &rArr; 720
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ein"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.in</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">indent</i></span>]</var><a class="copiable-link" href='#index-_002ein'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-in-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ein-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.in</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">indent</i></span></var><a class="copiable-link" href='#index-_002ein-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002ein-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.in</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">indent</i></span></var><a class="copiable-link" href='#index-_002ein-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ei_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.i]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ei_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ei"></a>
+<p>Set indentation to <var class="var">indent</var> (or increment or decrement the current
+value by <var class="var">indent</var>). This request causes a break. Initially, there
+is no indentation.
+</p>
+<p>If <code class="code">in</code> is called without an argument, the indentation is reset to
+the previous value before the last call to <code class="code">in</code>. The default
+scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;.
+</p>
+<p>If a negative indentation value is specified (which is not allowed),
+<code class="code">gtroff</code> emits a warning in category &lsquo;<samp class="samp">range</samp>&rsquo; and sets the
+indentation to zero.
+</p>
+<p>The effect of <code class="code">in</code> is delayed until a partially collected line (if
+it exists) is output. A temporary indentation value is reset to zero
+also.
+</p>
+<p>The current indentation (as set by <code class="code">in</code>) can be found in the
+read-only register &lsquo;<samp class="samp">.i</samp>&rsquo;. The indentation is associated with the
+environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eti"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ti</code></strong> <var class="def-var-arguments">offset</var><a class="copiable-link" href='#index-_002eti'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ti"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eti-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ti</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">offset</i></span></var><a class="copiable-link" href='#index-_002eti-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002eti-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ti</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">offset</i></span></var><a class="copiable-link" href='#index-_002eti-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ein_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.in]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ein_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ein-3"></a>
+<p>Temporarily indent the next output line by <var class="var">offset</var>. If an
+increment or decrement value is specified, adjust the temporary
+indentation relative to the value set by the <code class="code">in</code> request.
+</p>
+<p>This request causes a break; its value is associated with the
+environment (see <a class="pxref" href="Environments.html">Environments</a>). The default scaling unit is
+&lsquo;<samp class="samp">m</samp>&rsquo;. A call of <code class="code">ti</code> without an argument is ignored.
+</p>
+<p>If the total indentation value is negative (which is not allowed),
+<code class="code">gtroff</code> emits a warning in category &lsquo;<samp class="samp">range</samp>&rsquo; and sets the
+temporary indentation to zero. &lsquo;Total indentation&rsquo; is either
+<var class="var">offset</var> if specified as an absolute value, or the temporary plus
+normal indentation, if <var class="var">offset</var> is given as a relative value.
+</p>
+<p>The effect of <code class="code">ti</code> is delayed until a partially collected line (if
+it exists) is output.
+</p>
+<p>The read-only register <code class="code">.in</code> is the indentation that applies to the
+current output line.
+</p>
+<p>The difference between <code class="code">.i</code> and <code class="code">.in</code> is that the latter takes
+into account whether a partially collected line still uses the old
+indentation value or a temporary indentation value is active.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ell"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ll</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">length</i></span>]</var><a class="copiable-link" href='#index-_002ell'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ll-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ell-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ll</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002ell-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002ell-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ll</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002ell-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002el_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.l]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002el_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002el"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ell_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ll]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ell_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ell-3"></a>
+<p>Set the line length to <var class="var">length</var> (or increment or decrement the
+current value by <var class="var">length</var>). Initially, the line length is set to
+6.5<span class="dmn">i</span>. The effect of <code class="code">ll</code> is delayed until a partially
+collected line (if it exists) is output. The default scaling unit is
+&lsquo;<samp class="samp">m</samp>&rsquo;.
+</p>
+<p>If <code class="code">ll</code> is called without an argument, the line length is reset to
+the previous value before the last call to <code class="code">ll</code>. If a negative
+line length is specified (which is not allowed), <code class="code">gtroff</code> emits a
+warning in category &lsquo;<samp class="samp">range</samp>&rsquo; and sets the line length to zero. The
+line length is associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<a class="index-entry-id" id="index-line-length-register-_0028_002el_0029"></a>
+<p>The current line length (as set by <code class="code">ll</code>) can be found in the
+read-only register &lsquo;<samp class="samp">.l</samp>&rsquo;. The read-only register <code class="code">.ll</code> is the
+line length that applies to the current output line.
+</p>
+<p>Similar to <code class="code">.i</code> and <code class="code">.in</code>, the difference between <code class="code">.l</code>
+and <code class="code">.ll</code> is that the latter takes into account whether a partially
+collected line still uses the old line length value.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Line-Continuation.html">Line Continuation</a>, Previous: <a href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Lists-in-ms.html b/doc/groff.html.node/Lists-in-ms.html
new file mode 100644
index 0000000..bde2b7c
--- /dev/null
+++ b/doc/groff.html.node/Lists-in-ms.html
@@ -0,0 +1,216 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Lists in ms (The GNU Troff Manual)</title>
+
+<meta name="description" content="Lists in ms (The GNU Troff Manual)">
+<meta name="keywords" content="Lists in ms (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Body-Text.html" rel="up" title="ms Body Text">
+<link href="Indented-regions-in-ms.html" rel="next" title="Indented regions in ms">
+<link href="Typeface-and-decoration.html" rel="prev" title="Typeface and decoration">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Lists-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="Indented-regions-in-ms.html" accesskey="n" rel="next">Indented regions</a>, Previous: <a href="Typeface-and-decoration.html" accesskey="p" rel="prev">Typeface and decoration</a>, Up: <a href="ms-Body-Text.html" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Lists">4.6.5.6 Lists</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-lists"></a>
+
+<p>The <var class="var">marker</var> argument to the <code class="code">IP</code> macro can be employed to
+present a variety of lists; for instance, you can use a bullet glyph
+(<code class="code">\[bu]</code>) for unordered lists, a number (or auto-incrementing
+register) for numbered lists, or a word or phrase for glossary-style or
+definition lists. If you set the paragraph indentation register
+<code class="code">PI</code> before calling <code class="code">IP</code>, you can later reorder the items in
+the list without having to ensure that a <var class="var">width</var> argument remains
+affixed to the first call.
+</p>
+<p>The following is an example of a bulleted list.
+<a class="index-entry-id" id="index-example-markup_002c-bulleted-list-_005bms_005d"></a>
+<a class="index-entry-id" id="index-bulleted-list_002c-example-markup-_005bms_005d"></a>
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.nr PI 2n
+A bulleted list:
+.IP \[bu]
+lawyers
+.IP \[bu]
+guns
+.IP \[bu]
+money
+</pre></div>
+</td></tr></table>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">A bulleted list:
+
+&bull; lawyers
+
+&bull; guns
+
+&bull; money
+</pre></div></div>
+
+<p>The following is an example of a numbered list.
+<a class="index-entry-id" id="index-example-markup_002c-numbered-list-_005bms_005d"></a>
+<a class="index-entry-id" id="index-numbered-list_002c-example-markup-_005bms_005d"></a>
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.nr step 0 1
+.nr PI 3n
+A numbered list:
+.IP \n+[step]
+lawyers
+.IP \n+[step]
+guns
+.IP \n+[step]
+money
+</pre></div>
+</td></tr></table>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">A numbered list:
+
+1. lawyers
+
+2. guns
+
+3. money
+</pre></div></div>
+
+<p>Here we have employed the <code class="code">nr</code> request to create a register of our
+own, &lsquo;<samp class="samp">step</samp>&rsquo;. We initialized it to zero and assigned it an
+auto-increment of 1. Each time we use the escape sequence
+&lsquo;<samp class="samp">\n+[PI]</samp>&rsquo; (note the plus sign), the formatter applies the increment
+just before interpolating the register&rsquo;s value. Preparing the <code class="code">PI</code>
+register as well enables us to rearrange the list without the tedium of
+updating macro calls.
+</p>
+<p>The next example illustrates a glossary-style list.
+<a class="index-entry-id" id="index-example-markup_002c-glossary_002dstyle-list-_005bms_005d"></a>
+<a class="index-entry-id" id="index-glossary_002dstyle-list_002c-example-markup-_005bms_005d"></a>
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">A glossary-style list:
+.IP lawyers 0.4i
+Two or more attorneys.
+.IP guns
+Firearms,
+preferably large-caliber.
+.IP money
+Gotta pay for those
+lawyers and guns!
+</pre></div>
+</td></tr></table>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">A glossary-style list:
+
+lawyers
+ Two or more attorneys.
+
+guns Firearms, preferably large-caliber.
+
+money
+ Gotta pay for those lawyers and guns!
+</pre></div></div>
+
+<p>In the previous example, observe how the <code class="code">IP</code> macro places the
+definition on the same line as the term if it has enough space. If this
+is not what you want, there are a few workarounds we will illustrate by
+modifying the example. First, you can use a <code class="code">br</code> request to force
+a break after printing the term or label.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.IP guns
+.br
+Firearms,
+</pre></div>
+</td></tr></table>
+
+<p>Second, you could apply the <code class="code">\p</code> escape sequence to force a break.
+The space following the escape sequence is important; if you omit it,
+<code class="code">groff</code> prints the first word of the paragraph text on the same
+line as the term or label (if it fits) <em class="emph">then</em> breaks the line.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.IP guns
+\p Firearms,
+</pre></div>
+</td></tr></table>
+
+<p>Finally, you may append a horizontal motion to the marker with the
+<code class="code">\h</code> escape sequence; using the same amount as the indentation will
+ensure that the marker is too wide for <code class="code">groff</code> to treat it as
+&ldquo;fitting&rdquo; on the same line as the paragraph text.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.IP guns\h'0.4i'
+Firearms,
+</pre></div>
+</td></tr></table>
+
+<p>In each case, the result is the same.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">A glossary-style list:
+
+lawyers
+ Two or more attorneys.
+
+guns
+ Firearms, preferably large-caliber.
+
+money
+ Gotta pay for those lawyers and guns!
+</pre></div></div>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Indented-regions-in-ms.html">Indented regions</a>, Previous: <a href="Typeface-and-decoration.html">Typeface and decoration</a>, Up: <a href="ms-Body-Text.html">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Macro-Directories.html b/doc/groff.html.node/Macro-Directories.html
new file mode 100644
index 0000000..c1557bd
--- /dev/null
+++ b/doc/groff.html.node/Macro-Directories.html
@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Macro Directories (The GNU Troff Manual)</title>
+
+<meta name="description" content="Macro Directories (The GNU Troff Manual)">
+<meta name="keywords" content="Macro Directories (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Invoking-groff.html" rel="up" title="Invoking groff">
+<link href="Font-Directories.html" rel="next" title="Font Directories">
+<link href="Environment.html" rel="prev" title="Environment">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Macro-Directories">
+<div class="nav-panel">
+<p>
+Next: <a href="Font-Directories.html" accesskey="n" rel="next">Font Directories</a>, Previous: <a href="Environment.html" accesskey="p" rel="prev">Environment</a>, Up: <a href="Invoking-groff.html" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Macro-Directories-1">2.3 Macro Directories</h3>
+<a class="index-entry-id" id="index-macro-directories"></a>
+<a class="index-entry-id" id="index-directories-for-macros"></a>
+<a class="index-entry-id" id="index-searching-macros"></a>
+<a class="index-entry-id" id="index-macros_002c-searching"></a>
+
+<p>A macro file must have a name in the form <code class="code"><var class="var">name</var>.tmac</code> or
+<code class="code">tmac.<var class="var">name</var></code> and be placed in a <em class="dfn">tmac directory</em> to be
+found by the <samp class="option">-m<var class="var">name</var></samp> command-line option.<a class="footnote" id="DOCF5" href="groff.html_fot.html#FOOT5"><sup>5</sup></a>
+<a class="index-entry-id" id="index-tmac_002c-directory"></a>
+<a class="index-entry-id" id="index-directory_002c-for-tmac-files"></a>
+<a class="index-entry-id" id="index-tmac_002c-path"></a>
+<a class="index-entry-id" id="index-path_002c-for-tmac-files"></a>
+<a class="index-entry-id" id="index-locating-macro-files"></a>
+<a class="index-entry-id" id="index-macro-file-search-path"></a>
+<a class="index-entry-id" id="index-file_002c-macro_002c-search-path"></a>
+<a class="index-entry-id" id="index-locating-macro-packages"></a>
+<a class="index-entry-id" id="index-macro-package-search-path"></a>
+<a class="index-entry-id" id="index-package_002c-macro_002c-search-path"></a>
+Together, these directories constitute the <em class="dfn">tmac path</em>. Each
+directory is searched in the following order until the desired macro
+file is found or the list is exhausted.
+</p>
+<ul class="itemize mark-bullet">
+<li>Directories specified with GNU <code class="code">troff</code>&rsquo;s or <code class="code">groff</code>&rsquo;s
+<samp class="option">-M</samp> command-line option.
+
+</li><li><a class="index-entry-id" id="index-GROFF_005fTMAC_005fPATH_002c-environment-variable-1"></a>
+Directories listed in the <code class="env">GROFF_TMAC_PATH</code> environment variable.
+
+</li><li><a class="index-entry-id" id="index-safer-mode-1"></a>
+<a class="index-entry-id" id="index-mode_002c-safer-1"></a>
+<a class="index-entry-id" id="index-unsafe-mode-1"></a>
+<a class="index-entry-id" id="index-mode_002c-unsafe-1"></a>
+<a class="index-entry-id" id="index-current-directory"></a>
+<a class="index-entry-id" id="index-directory_002c-current"></a>
+The current working directory (only if in unsafe mode using the
+<samp class="option">-U</samp> command-line option).
+
+</li><li><a class="index-entry-id" id="index-home-directory"></a>
+<a class="index-entry-id" id="index-directory_002c-home"></a>
+The user&rsquo;s home directory, <code class="env">HOME</code>.
+
+</li><li><a class="index-entry-id" id="index-site_002dlocal-directory"></a>
+<a class="index-entry-id" id="index-directory_002c-site_002dlocal"></a>
+<a class="index-entry-id" id="index-platform_002dspecific-directory"></a>
+<a class="index-entry-id" id="index-directory_002c-platform_002dspecific"></a>
+A platform-dependent directory, a site-local (platform-independent)
+directory, and the main <i class="slanted">tmac</i> directory. The locations
+corresponding to your installation are listed in section &ldquo;Environment&rdquo;
+of <cite class="cite">gtroff<span class="r">(1)</span></cite>. If not otherwise configured, they are as
+follows.
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">/usr/local/lib/groff/site-tmac
+/usr/local/share/groff/site-tmac
+/usr/local/share/groff/1.23.0/tmac
+</pre></div></div>
+
+<p>The foregoing assumes that the version of <code class="code">groff</code> is 1.23.0, and
+that the installation prefix was <samp class="file">/usr/local</samp>. It is possible to
+fine-tune these locations during the source configuration process.
+</p></li></ul>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Font-Directories.html">Font Directories</a>, Previous: <a href="Environment.html">Environment</a>, Up: <a href="Invoking-groff.html">Invoking <code class="code">groff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Macro-Index.html b/doc/groff.html.node/Macro-Index.html
new file mode 100644
index 0000000..c727a85
--- /dev/null
+++ b/doc/groff.html.node/Macro-Index.html
@@ -0,0 +1,335 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Macro Index (The GNU Troff Manual)</title>
+
+<meta name="description" content="Macro Index (The GNU Troff Manual)">
+<meta name="keywords" content="Macro Index (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="String-Index.html" rel="next" title="String Index">
+<link href="Register-Index.html" rel="prev" title="Register Index">
+<style type="text/css">
+<!--
+a.summary-letter-printindex {text-decoration: none}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+td.printindex-index-entry {vertical-align: top}
+td.printindex-index-section {vertical-align: top}
+th.entries-header-printindex {text-align:left}
+th.sections-header-printindex {text-align:left}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="appendix-level-extent" id="Macro-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="String-Index.html" accesskey="n" rel="next">String Index</a>, Previous: <a href="Register-Index.html" accesskey="p" rel="prev">Register Index</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="appendix" id="Macro-Index-1">Appendix F Macro Index</h2>
+
+<p>The macro package a specific macro belongs to is appended in brackets.
+They appear without the leading control character (normally &lsquo;<samp class="samp">.</samp>&rsquo;).
+</p>
+<div class="printindex ma-printindex">
+<table class="ma-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-1"><b>1</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-2"><b>2</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-3"><b>[</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-4"><b>]</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-X"><b>X</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="ma-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_symbol-1">1</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Multiple-Columns.html#index-1C-_005bms_005d"><code>1C <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Multiple-Columns.html">ms Multiple Columns</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_symbol-2">2</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Multiple-Columns.html#index-2C-_005bms_005d"><code>2C <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Multiple-Columns.html">ms Multiple Columns</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_symbol-3">[</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-_005b-_005bms_005d"><code>[ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_symbol-4">]</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-_005d-_005bms_005d"><code>] <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Description-Macros.html#index-AB-_005bms_005d"><code>AB <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Description-Macros.html">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Description-Macros.html#index-AE-_005bms_005d"><code>AE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Description-Macros.html">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Description-Macros.html#index-AI-_005bms_005d"><code>AI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Description-Macros.html">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-AM-_005bms_005d"><code>AM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Description-Macros.html#index-AU-_005bms_005d"><code>AU <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Description-Macros.html">ms Document Description Macros</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-B">B</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-B-_005bms_005d"><code>B <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-B1-_005bms_005d"><code>B1 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-B2-_005bms_005d"><code>B2 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-BD-_005bms_005d"><code>BD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-BI-_005bms_005d"><code>BI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-BT-_005bman_005d"><code>BT <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-BX-_005bms_005d"><code>BX <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-CD-_005bms_005d"><code>CD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-CT-_005bman_005d"><code>CT <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-CW-_005bman_005d"><code>CW <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-CW-_005bms_005d"><code>CW <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Description-Macros.html#index-DA-_005bms_005d"><code>DA <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Description-Macros.html">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-De-_005bman_005d"><code>De <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-DE-_005bms_005d"><code>DE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-Ds-_005bman_005d"><code>Ds <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-DS-_005bms_005d"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-DS-_005bms_005d-1"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-DS-_005bms_005d-2"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-DS-_005bms_005d-3"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-DS-_005bms_005d-4"><code>DS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-E">E</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-EE-_005bman_005d"><code>EE <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Headers-and-Footers.html#index-EF-_005bms_005d"><code>EF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Headers-and-Footers.html">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Headers-and-Footers.html#index-EH-_005bms_005d"><code>EH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Headers-and-Footers.html">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-EN-_005bms_005d"><code>EN <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-EQ-_005bms_005d"><code>EQ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-EX-_005bman_005d"><code>EX <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Footnotes.html#index-FE-_005bms_005d"><code>FE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Footnotes.html">ms Footnotes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Footnotes.html#index-FS-_005bms_005d"><code>FS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Footnotes.html">ms Footnotes</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-G">G</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-G-_005bman_005d"><code>G <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-GL-_005bman_005d"><code>GL <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-H">H</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-HB-_005bman_005d"><code>HB <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-I">I</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-I-_005bms_005d"><code>I <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-ID-_005bms_005d"><code>ID <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paragraphs-in-ms.html#index-IP-_005bms_005d"><code>IP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paragraphs-in-ms.html">Paragraphs in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-K">K</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-KE-_005bms_005d"><code>KE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-KF-_005bms_005d"><code>KF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-KS-_005bms_005d"><code>KS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-LD-_005bms_005d"><code>LD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-LG-_005bms_005d"><code>LG <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paragraphs-in-ms.html#index-LP-_005bms_005d"><code>LP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paragraphs-in-ms.html">Paragraphs in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Multiple-Columns.html#index-MC-_005bms_005d"><code>MC <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Multiple-Columns.html">ms Multiple Columns</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-MS-_005bman_005d"><code>MS <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Description-Macros.html#index-ND-_005bms_005d"><code>ND <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Description-Macros.html">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-NE-_005bman_005d"><code>NE <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Headings-in-ms.html#index-NH-_005bms_005d"><code>NH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Headings-in-ms.html">Headings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-NL-_005bms_005d"><code>NL <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-NT-_005bman_005d"><code>NT <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-O">O</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Headers-and-Footers.html#index-OF-_005bms_005d"><code>OF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Headers-and-Footers.html">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Headers-and-Footers.html#index-OH-_005bms_005d"><code>OH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Headers-and-Footers.html">ms Headers and Footers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Headers-and-Footers.html#index-P1-_005bms_005d"><code>P1 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Headers-and-Footers.html">ms Headers and Footers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-PE-_005bms_005d"><code>PE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-PF-_005bms_005d"><code>PF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-PN-_005bman_005d"><code>PN <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-Pn-_005bman_005d"><code>Pn <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paragraphs-in-ms.html#index-PP-_005bms_005d"><code>PP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paragraphs-in-ms.html">Paragraphs in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-PS-_005bms_005d"><code>PS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-PT-_005bman_005d"><code>PT <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-PX-_005bms_005d"><code>PX <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-Q">Q</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paragraphs-in-ms.html#index-QE-_005bms_005d"><code>QE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paragraphs-in-ms.html">Paragraphs in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paragraphs-in-ms.html#index-QP-_005bms_005d"><code>QP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paragraphs-in-ms.html">Paragraphs in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paragraphs-in-ms.html#index-QS-_005bms_005d"><code>QS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paragraphs-in-ms.html">Paragraphs in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-R-_005bman_005d"><code>R <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-R-_005bms_005d"><code>R <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-keeps-and-displays.html#index-RD-_005bms_005d"><code>RD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-keeps-and-displays.html">ms keeps and displays</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Indented-regions-in-ms.html#index-RE-_005bms_005d"><code>RE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Indented-regions-in-ms.html">Indented regions in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-RN-_005bman_005d"><code>RN <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Description-Macros.html#index-RP-_005bms_005d"><code>RP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Description-Macros.html">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Indented-regions-in-ms.html#index-RS-_005bms_005d"><code>RS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Indented-regions-in-ms.html">Indented regions in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Headings-in-ms.html#index-SH-_005bms_005d"><code>SH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Headings-in-ms.html">Headings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-SM-_005bms_005d"><code>SM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tab-Stops-in-ms.html#index-TA-_005bms_005d"><code>TA <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tab-Stops-in-ms.html">Tab Stops in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-TB-_005bman_005d"><code>TB <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-TC-_005bms_005d"><code>TC <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-TE-_005bms_005d"><code>TE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Description-Macros.html#index-TL-_005bms_005d"><code>TL <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Description-Macros.html">ms Document Description Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-TS-_005bms_005d"><code>TS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-UL-_005bms_005d"><code>UL <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-VE-_005bman_005d"><code>VE <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-VS-_005bman_005d"><code>VS <span class="r">[</span>man<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Macro-Index_ma_letter-X">X</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-XA-_005bms_005d"><code>XA <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-XE-_005bms_005d"><code>XE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-XH-_005bms_005d"><code>XH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-XH_002dREPLACEMENT-_005bms_005d"><code>XH-REPLACEMENT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-XH_002dUPDATE_002dTOC-_005bms_005d"><code>XH-UPDATE-TOC <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-XN-_005bms_005d"><code>XN <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-XN_002dINIT-_005bms_005d"><code>XN-INIT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-XN_002dREPLACEMENT-_005bms_005d"><code>XN-REPLACEMENT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paragraphs-in-ms.html#index-XP-_005bms_005d"><code>XP <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paragraphs-in-ms.html">Paragraphs in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-TOC.html#index-XS-_005bms_005d"><code>XS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-TOC.html">ms TOC</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="ma-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-1"><b>1</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-2"><b>2</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-3"><b>[</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_symbol-4"><b>]</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Macro-Index_ma_letter-X"><b>X</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="String-Index.html">String Index</a>, Previous: <a href="Register-Index.html">Register Index</a>, Up: <a href="index.html">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Macro-Package-Intro.html b/doc/groff.html.node/Macro-Package-Intro.html
new file mode 100644
index 0000000..77f2036
--- /dev/null
+++ b/doc/groff.html.node/Macro-Package-Intro.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Macro Package Intro (The GNU Troff Manual)</title>
+
+<meta name="description" content="Macro Package Intro (The GNU Troff Manual)">
+<meta name="keywords" content="Macro Package Intro (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Introduction.html" rel="up" title="Introduction">
+<link href="Preprocessor-Intro.html" rel="next" title="Preprocessor Intro">
+<link href="groff-Capabilities.html" rel="prev" title="groff Capabilities">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Macro-Package-Intro">
+<div class="nav-panel">
+<p>
+Next: <a href="Preprocessor-Intro.html" accesskey="n" rel="next">Preprocessors</a>, Previous: <a href="groff-Capabilities.html" accesskey="p" rel="prev"><code class="code">groff</code> Capabilities</a>, Up: <a href="Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Macro-Packages-1">1.4 Macro Packages</h3>
+<a class="index-entry-id" id="index-macro-package_002c-introduction"></a>
+<a class="index-entry-id" id="index-package_002c-macro_002c-introduction"></a>
+
+<p>Elemental typesetting functions can be be challenging to use directly
+with complex documents. A <em class="dfn">macro</em> facility specifies how certain
+routine operations, such as starting paragraphs, or printing headers and
+footers, should be performed in terms of those low-level instructions.
+Macros can be specific to one document or collected together into a
+<em class="dfn">macro package</em> for use by many. Several macro packages available;
+the most widely used are provided with <code class="code">groff</code>. They are
+<samp class="file">man</samp>, <samp class="file">mdoc</samp>, <samp class="file">me</samp>, <samp class="file">mm</samp>, <samp class="file">mom</samp>, and
+<samp class="file">ms</samp>.
+</p>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Macro-Packages.html b/doc/groff.html.node/Macro-Packages.html
new file mode 100644
index 0000000..762ea31
--- /dev/null
+++ b/doc/groff.html.node/Macro-Packages.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Macro Packages (The GNU Troff Manual)</title>
+
+<meta name="description" content="Macro Packages (The GNU Troff Manual)">
+<meta name="keywords" content="Macro Packages (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Text.html" rel="up" title="Text">
+<link href="Input-Encodings.html" rel="next" title="Input Encodings">
+<link href="Requests-and-Macros.html" rel="prev" title="Requests and Macros">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Macro-Packages">
+<div class="nav-panel">
+<p>
+Next: <a href="Input-Encodings.html" accesskey="n" rel="next">Input Encodings</a>, Previous: <a href="Requests-and-Macros.html" accesskey="p" rel="prev">Requests and Macros</a>, Up: <a href="Text.html" accesskey="u" rel="up">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Macro-Packages-3">5.1.8 Macro Packages</h4>
+<a class="index-entry-id" id="index-macro-package"></a>
+<a class="index-entry-id" id="index-package_002c-macro"></a>
+
+<p>Macro definitions can be collected into <em class="dfn">macro files</em>, <code class="code">roff</code>
+input files designed to produce no output themselves but instead ease
+the preparation of other <code class="code">roff</code> documents. There is no syntactical
+difference between a macro file and any other <code class="code">roff</code> document; only
+its purpose distinguishes it. When a macro file is installed at a
+standard location and suitable for use by a general audience, it is
+often termed a <em class="dfn">macro package</em>.<a class="footnote" id="DOCF29" href="groff.html_fot.html#FOOT29"><sup>29</sup></a> Macro packages can be
+loaded by supplying the <samp class="option">-m</samp> option to GNU <code class="command">troff</code> or a
+<code class="code">groff</code> front end. Alternatively, a document requiring a macro
+package can load it with the <code class="code">mso</code> (&ldquo;macro source&rdquo;) request.
+</p>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Major-Macro-Packages.html b/doc/groff.html.node/Major-Macro-Packages.html
new file mode 100644
index 0000000..414994f
--- /dev/null
+++ b/doc/groff.html.node/Major-Macro-Packages.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Major Macro Packages (The GNU Troff Manual)</title>
+
+<meta name="description" content="Major Macro Packages (The GNU Troff Manual)">
+<meta name="keywords" content="Major Macro Packages (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="GNU-troff-Reference.html" rel="next" title="GNU troff Reference">
+<link href="Tutorial-for-Macro-Users.html" rel="prev" title="Tutorial for Macro Users">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="Major-Macro-Packages">
+<div class="nav-panel">
+<p>
+Next: <a href="GNU-troff-Reference.html" accesskey="n" rel="next">GNU <code class="code">troff</code> Reference</a>, Previous: <a href="Tutorial-for-Macro-Users.html" accesskey="p" rel="prev">Tutorial for Macro Users</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="chapter" id="Macro-Packages-2">4 Macro Packages</h2>
+<a class="index-entry-id" id="index-major-macro-package"></a>
+<a class="index-entry-id" id="index-package_002c-macro_002c-major"></a>
+<a class="index-entry-id" id="index-macro-package_002c-major"></a>
+
+<p>This chapter surveys the &ldquo;major&rdquo; macro packages that come with
+<code class="code">groff</code>. One, <samp class="file">ms</samp>, is presented in detail.
+</p>
+<a class="index-entry-id" id="index-full_002dservice-macro-package"></a>
+<a class="index-entry-id" id="index-package_002c-macro_002c-full_002dservice"></a>
+<a class="index-entry-id" id="index-macro-package_002c-full_002dservice"></a>
+<p>Major macro packages are also sometimes described as <em class="dfn">full-service</em>
+due to the breadth of features they provide and because more than one
+cannot be used by the same document; for example
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -m man foo.man -m ms bar.doc
+</pre></div></div>
+
+<p>doesn&rsquo;t work. Option arguments are processed before non-option
+arguments; the above (failing) sample is thus reordered to
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -m man -m ms foo.man bar.doc
+</pre></div></div>
+
+<a class="index-entry-id" id="index-minor-macro-package"></a>
+<a class="index-entry-id" id="index-package_002c-macro_002c-minor"></a>
+<a class="index-entry-id" id="index-macro-package_002c-minor"></a>
+<a class="index-entry-id" id="index-auxiliary-macro-package"></a>
+<a class="index-entry-id" id="index-package_002c-macro_002c-auxiliary"></a>
+<a class="index-entry-id" id="index-macro-package_002c-auxiliary"></a>
+<p>Many auxiliary, or &ldquo;minor&rdquo;, macro packages are also available. They
+may in general be used with any full-service macro package and handle a
+variety of tasks from character encoding selection, to language
+localization, to inlining of raster images. See the
+<cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page for a list. Type &lsquo;<samp class="samp">man
+groff_tmac</samp>&rsquo; at the command line to view it.
+</p>
+
+
+
+<ul class="mini-toc">
+<li><a href="man.html" accesskey="1"><samp class="file">man</samp></a></li>
+<li><a href="mdoc.html" accesskey="2"><samp class="file">mdoc</samp></a></li>
+<li><a href="me.html" accesskey="3"><samp class="file">me</samp></a></li>
+<li><a href="mm.html" accesskey="4"><samp class="file">mm</samp></a></li>
+<li><a href="mom.html" accesskey="5"><samp class="file">mom</samp></a></li>
+<li><a href="ms.html" accesskey="6"><samp class="file">ms</samp></a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Manipulating-Filling-and-Adjustment.html b/doc/groff.html.node/Manipulating-Filling-and-Adjustment.html
new file mode 100644
index 0000000..632aade
--- /dev/null
+++ b/doc/groff.html.node/Manipulating-Filling-and-Adjustment.html
@@ -0,0 +1,501 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Manipulating Filling and Adjustment (The GNU Troff Manual)</title>
+
+<meta name="description" content="Manipulating Filling and Adjustment (The GNU Troff Manual)">
+<meta name="keywords" content="Manipulating Filling and Adjustment (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Manipulating-Hyphenation.html" rel="next" title="Manipulating Hyphenation">
+<link href="Registers.html" rel="prev" title="Registers">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Manipulating-Filling-and-Adjustment">
+<div class="nav-panel">
+<p>
+Next: <a href="Manipulating-Hyphenation.html" accesskey="n" rel="next">Manipulating Hyphenation</a>, Previous: <a href="Registers.html" accesskey="p" rel="prev">Registers</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Manipulating-Filling-and-Adjustment-1">5.9 Manipulating Filling and Adjustment</h3>
+<a class="index-entry-id" id="index-manipulating-filling-and-adjustment"></a>
+<a class="index-entry-id" id="index-filling-and-adjustment_002c-manipulating"></a>
+<a class="index-entry-id" id="index-adjustment-and-filling_002c-manipulating"></a>
+<a class="index-entry-id" id="index-justifying-text"></a>
+<a class="index-entry-id" id="index-text_002c-justifying"></a>
+
+<a class="index-entry-id" id="index-break-1"></a>
+<a class="index-entry-id" id="index-line-break"></a>
+<a class="index-entry-id" id="index-bp-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-ce-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-cf-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-fi-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-fl-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-in-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-nf-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-rj-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-sp-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-ti-request_002c-causing-implicit-break"></a>
+<a class="index-entry-id" id="index-trf-request_002c-causing-implicit-break"></a>
+<p>When an output line is pending (see below), a break moves the drawing
+position to the beginning of the next text baseline, interrupting
+filling. Various ways of causing breaks were shown in <a class="ref" href="Breaking.html">Breaking</a>.
+The <code class="code">br</code> request likewise causes a break. Several other requests
+imply breaks: <code class="code">bp</code>, <code class="code">ce</code>, <code class="code">cf</code>, <code class="code">fi</code>, <code class="code">fl</code>,
+<code class="code">in</code>, <code class="code">nf</code>, <code class="code">rj</code>, <code class="code">sp</code>, <code class="code">ti</code>, and <code class="code">trf</code>.
+If the no-break control character is used with any of these requests,
+GNU <code class="code">troff</code> suppresses the break; instead the requested operation
+takes effect at the next break. &lsquo;<samp class="samp">'br</samp>&rsquo; does nothing.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 55n
+This line is normally filled and adjusted.
+.br
+A line's alignment is decided
+'ce \&quot; Center the next input line (no break).
+when it is output.
+This line returns to normal filling and adjustment.
+ &rArr; This line is normally filled and adjusted.
+ &rArr; A line's alignment is decided when it is output.
+ &rArr; This line returns to normal filling and adjustment.
+</pre></div></div>
+
+<a class="index-entry-id" id="index-pending-output-line"></a>
+<a class="index-entry-id" id="index-partially-collected-line"></a>
+<a class="index-entry-id" id="index-output-line-properties"></a>
+<a class="index-entry-id" id="index-properties-of-output-lines"></a>
+<p>Output line properties like page offset, indentation, adjustment, and
+even the location of its text baseline, are not determined until the
+line has been broken. An output line is said to be <em class="dfn">pending</em> if
+some input has been collected but an output line corresponding to it has
+not yet been written; such an output line is also termed <em class="dfn">partially
+collected</em>. If no output line is pending, it is as if a break has
+already happened; additional breaks, whether explicit or implicit, have
+no effect. If the vertical drawing position is negative&mdash;as it is when
+the formatter starts up&mdash;a break starts a new page (even if no output
+line is pending) unless an end-of-input macro is being interpreted.
+See <a class="xref" href="End_002dof_002dinput-Traps.html">End-of-input Traps</a>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.br</code></strong><a class="copiable-link" href='#index-_002ebr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-br"></a>
+<p>Break the line: emit any pending output line without adjustment.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">foo bar
+.br
+baz
+'br
+qux
+ &rArr; foo bar
+ &rArr; baz qux
+</pre></div></div>
+</dd></dl>
+
+<p>Sometimes you want to prevent a break within a phrase or between a
+quantity and its units.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_007e-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\~</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_007e-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_007e"></a>
+<a class="index-entry-id" id="index-unbreakable-space-_0028_005c_007e_0029"></a>
+<a class="index-entry-id" id="index-space_002c-unbreakable-_0028_005c_007e_0029"></a>
+<p>Insert an unbreakable space that is adjustable like an ordinary space.
+It is discarded from the end of an output line if a break is forced.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Set the output speed to\~1.
+There are 1,024\~bytes in 1\~KiB.
+J.\~F.\~Ossanna wrote the original CSTR\~#54.
+</pre></div></div>
+</dd></dl>
+
+<p>By default, GNU <code class="code">troff</code> fills text and adjusts it to reach the
+output line length. The <code class="code">nf</code> request disables filling; the
+<code class="code">fi</code> request reënables it.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efi"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fi</code></strong><a class="copiable-link" href='#index-_002efi'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fi"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eu_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.u]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eu_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eu"></a>
+<a class="index-entry-id" id="index-filling-of-output_002c-enabling-_0028fi_0029"></a>
+<a class="index-entry-id" id="index-output_002c-filling_002c-enablement-of-_0028fi_0029"></a>
+<a class="index-entry-id" id="index-fill-mode-_0028fi_0029_002c-enabling"></a>
+<a class="index-entry-id" id="index-mode_002c-fill-_0028fi_0029_002c-enabling"></a>
+<p>Enable filling of output lines; a pending output line is broken. The
+read-only register <code class="code">.u</code> is set to&nbsp;1. The filling enablement
+status, sometimes called <em class="dfn">fill mode</em>, is associated with the
+environment (see <a class="pxref" href="Environments.html">Environments</a>). See <a class="xref" href="Line-Continuation.html">Line Continuation</a>, for
+interaction with the <code class="code">\c</code> escape sequence.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nf</code></strong><a class="copiable-link" href='#index-_002enf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nf"></a>
+<a class="index-entry-id" id="index-filling-of-output_002c-disabling-_0028nf_0029"></a>
+<a class="index-entry-id" id="index-output_002c-filling_002c-disablement-of-_0028nf_0029"></a>
+<a class="index-entry-id" id="index-no_002dfill-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-no_002dfill"></a>
+<a class="index-entry-id" id="index-fill-mode_002c-disabling"></a>
+<a class="index-entry-id" id="index-mode_002c-fill_002c-disabling"></a>
+<p>Disable filling of output lines: the output line length (see <a class="pxref" href="Line-Layout.html">Line Layout</a>) is ignored and output lines are broken where the input lines
+are. A pending output line is broken and adjustment is suppressed. The
+read-only register <code class="code">.u</code> is set to&nbsp;0. The filling enablement
+status is associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>). See
+<a class="ref" href="Line-Continuation.html">Line Continuation</a>, for interaction with the <code class="code">\c</code> escape
+sequence.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ead"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ad</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">mode</i></span>]</var><a class="copiable-link" href='#index-_002ead'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ad"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ej_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.j]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ej_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ej"></a>
+<p>Enable output line adjustment in <var class="var">mode</var>, taking effect when the
+pending (or next) output line is broken. Adjustment is suppressed when
+filling is. <var class="var">mode</var> can have one of the following values.
+</p>
+<dl class="table">
+<dt><code class="code">b</code></dt>
+<dt><code class="code">n</code></dt>
+<dd><p>Adjust &ldquo;normally&rdquo;: if the output line does not consume the distance
+between the indentation and the configured output line length, GNU
+<code class="code">troff</code> stretches adjustable spaces within the line until that
+length is reached. When the indentation is zero, this mode spreads the
+line to both the left and right margins. This is the GNU <code class="code">troff</code>
+default.
+</p>
+</dd>
+<dt id='index-centered-text-_0028filled_0029'><span><code class="code">c</code><a class="copiable-link" href='#index-centered-text-_0028filled_0029'> &para;</a></span></dt>
+<dd><p>Center filled text. Contrast with the <code class="code">ce</code> request, which centers
+text <em class="emph">without</em> filling it.
+</p>
+</dd>
+<dt id='index-ragged_002dright-text'><span><code class="code">l</code><a class="copiable-link" href='#index-ragged_002dright-text'> &para;</a></span></dt>
+<dd><p>Align text to the left without adjusting it.
+</p>
+</dd>
+<dt id='index-ragged_002dleft-text'><span><code class="code">r</code><a class="copiable-link" href='#index-ragged_002dleft-text'> &para;</a></span></dt>
+<dd><p>Align text to the right without adjusting it.
+</p></dd>
+</dl>
+
+<p><var class="var">mode</var> can also be a value previously stored in the <code class="code">.j</code>
+register. Using <code class="code">ad</code> without an argument is the same as &lsquo;<samp class="samp">.ad
+\n[.j]</samp>&rsquo;; unless filling is disabled, GNU <code class="code">troff</code> resumes adjusting
+lines in the same way it did before adjustment was disabled by
+invocation of the <code class="code">na</code> request.
+</p>
+<a class="index-entry-id" id="index-adjustment-mode-register-_0028_002ej_0029"></a>
+<p>The adjustment mode and enablement status are encoded in the read-only
+register <code class="code">.j</code>. These parameters are associated with the
+environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<p>The value of <code class="code">.j</code> for any adjustment mode is an implementation
+detail and should not be relied upon as a programmer&rsquo;s interface. Do
+not write logic to interpret or perform arithmetic on it.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 48n
+.de AD
+. br
+. ad \\$1
+..
+.de NA
+. br
+. na
+..
+left
+.AD r
+.nr ad \n(.j
+right
+.AD c
+center
+.NA
+left
+.AD
+center
+.AD \n(ad
+right
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; left
+ &rArr; right
+ &rArr; center
+ &rArr; left
+ &rArr; center
+ &rArr; right
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ena"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.na</code></strong><a class="copiable-link" href='#index-_002ena'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-na"></a>
+<p>Disable output line adjustment. This produces the same output as
+left-alignment, but the value of the adjustment mode register <code class="code">.j</code>
+is altered differently. The adjustment mode and enablement status are
+associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebrp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.brp</code></strong><a class="copiable-link" href='#index-_002ebrp'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-brp"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cp-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\p</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cp-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cp"></a>
+<p>Break, adjusting the line per the current adjustment mode. <code class="code">\p</code>
+schedules a break with adjustment at the next word boundary. The escape
+sequence is itself neither a break nor a space of any kind; it can thus
+be placed in the middle of a word to cause a break at the end of that
+word.
+</p>
+<p>Breaking with immediate adjustment can produce ugly results since GNU
+<code class="code">troff</code> doesn&rsquo;t have a sophisticated paragraph-building algorithm,
+as TeX has, for example. Instead, GNU <code class="code">troff</code> fills and adjusts
+a paragraph line by line.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 4.5i
+This is an uninteresting sentence.
+This is an uninteresting sentence.\p
+This is an uninteresting sentence.
+</pre></div></div>
+
+<p>is formatted as follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">This is an uninteresting sentence. This is
+an uninteresting sentence.
+This is an uninteresting sentence.
+</pre></div></div>
+</dd></dl>
+
+<a class="index-entry-id" id="index-productive-input-line"></a>
+<a class="index-entry-id" id="index-input-line_002c-productive"></a>
+<a class="index-entry-id" id="index-line_002c-productive-input"></a>
+<p>To clearly present the next couple of requests, we must introduce the
+concept of &ldquo;productive&rdquo; input lines. A <em class="dfn">productive input line</em> is
+one that directly produces formatted output. Text lines produce
+output,<a class="footnote" id="DOCF53" href="groff.html_fot.html#FOOT53"><sup>53</sup></a> as do control
+lines containing requests like <code class="code">tl</code> or escape sequences like
+<code class="code">\D</code>. Macro calls are not <em class="emph">directly</em> productive, and thus not
+counted, but their interpolated contents can be. Empty requests, and
+requests and escape sequences that define registers or strings or alter
+the formatting environment (as with changes to the size, face, height,
+slant, or color of the type) are not productive. We will also preview
+the output line continuation escape sequence, <code class="code">\c</code>, which
+&ldquo;connects&rdquo; two input lines that would otherwise be counted separately.
+<a class="footnote" id="DOCF54" href="groff.html_fot.html#FOOT54"><sup>54</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de hello
+Hello, world!
+..
+.ce \&quot; center output of next productive input line
+.
+.nr junk-reg 1
+.ft I
+Chorus: \c
+.ft
+.hello
+Went the day well?
+ &rArr; <i class="slanted">Chorus:</i> Hello, world!
+ &rArr; Went the day well?
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ece"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ce</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ece'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ce"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ece_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ce]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ece_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ece-1"></a>
+<a class="index-entry-id" id="index-centered-text-_0028unfilled_0029"></a>
+<a class="index-entry-id" id="index-centering-lines-_0028ce_0029"></a>
+<a class="index-entry-id" id="index-lines_002c-centering-_0028ce_0029"></a>
+<p>Break (unless the no-break control character is used), center the output
+of the next <var class="var">n</var> productive input lines with respect to the line
+length and indentation without filling, then break again regardless of
+the invoking control character.
+If the argument is not positive, centering is disabled. Omitting the
+argument implies an <var class="var">n</var> of &lsquo;<samp class="samp">1</samp>&rsquo;. The count of lines remaining
+to be centered is stored in the read-only register <code class="code">.ce</code> and is
+associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<a class="index-entry-id" id="index-ce-request_002c-difference-from-_002ead-c"></a>
+<p>While the &lsquo;<samp class="samp">.ad&nbsp;c</samp>&rsquo;<!-- /@w --> request also centers text, it fills the text
+as well.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de FR
+This is a small text fragment that shows the differences
+between the `.ce' and the `.ad c' requests.
+..
+.ll 4i
+.ce 1000
+.FR
+.ce 0
+
+.ad c
+.FR
+ &rArr; This is a small text fragment that shows
+ &rArr; the differences
+ &rArr; between the &lsquo;.ce&rsquo; and the &lsquo;.ad c&rsquo; requests.
+ &rArr;
+ &rArr; This is a small text fragment that shows
+ &rArr; the differences between the &lsquo;.ce&rsquo; and
+ &rArr; the &lsquo;.ad c&rsquo; requests.
+</pre></div></div>
+
+<p>The previous example illustrates a common idiom of turning centering on
+for a quantity of lines far in excess of what is required, and off again
+after the text to be centered. This technique relieves humans of
+counting lines for requests that take a count of input lines as an
+argument.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002erj"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rj</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002erj'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rj"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002erj_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.rj]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002erj_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002erj-1"></a>
+<a class="index-entry-id" id="index-justifying-text-_0028rj_0029"></a>
+<a class="index-entry-id" id="index-text_002c-justifying-_0028rj_0029"></a>
+<a class="index-entry-id" id="index-right_002djustifying-_0028rj_0029"></a>
+<p>Break (unless the no-break control character is used), align the output
+of the next <var class="var">n</var> productive input lines to the right margin without
+filling, then break again regardless of the control character.
+If the argument is not positive, right-alignment is disabled. Omitting
+the argument implies an <var class="var">n</var> of &lsquo;<samp class="samp">1</samp>&rsquo;. The count of lines
+remaining to be right-aligned is stored in the read-only register
+<code class="code">.rj</code> and is associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 49n
+.rj 3
+At first I hoped that such a technically unsound
+project would collapse but I soon realized it was
+doomed to success. \[em] C. A. R. Hoare
+ &rArr; At first I hoped that such a technically unsound
+ &rArr; project would collapse but I soon realized it was
+ &rArr; doomed to success. -- C. A. R. Hoare
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ess"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ss</code></strong> <var class="def-var-arguments">word-space-size [<span class="r"><i class="slanted">additional-sentence-space-size</i></span>]</var><a class="copiable-link" href='#index-_002ess'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ss"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ess_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ss]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ess_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ess-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002esss_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.sss]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002esss_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002esss"></a>
+<a class="index-entry-id" id="index-word-space-size-register-_0028_002ess_0029"></a>
+<a class="index-entry-id" id="index-size-of-word-space-register-_0028_002ess_0029"></a>
+<a class="index-entry-id" id="index-space-between-words-register-_0028_002ess_0029"></a>
+<a class="index-entry-id" id="index-inter_002dsentence-space-size-register-_0028_002esss_0029"></a>
+<a class="index-entry-id" id="index-sentence-space-size-register-_0028_002esss_0029"></a>
+<a class="index-entry-id" id="index-size-of-sentence-space-register-_0028_002esss_0029"></a>
+<a class="index-entry-id" id="index-space-between-sentences-register-_0028_002esss_0029"></a>
+<p>Set the sizes of spaces between words and
+sentences<a class="footnote" id="DOCF55" href="groff.html_fot.html#FOOT55"><sup>55</sup></a> in twelfths
+of font&rsquo;s space width (typically one-fourth to one-third em for Western
+scripts). The default for both parameters is&nbsp;12. Negative values
+are erroneous.
+<a class="index-entry-id" id="index-inter_002dword-spacing_002c-minimal"></a>
+<a class="index-entry-id" id="index-minimal-inter_002dword-spacing"></a>
+<a class="index-entry-id" id="index-space_002c-between-words"></a>
+The first argument is a minimum; if an output line undergoes adjustment,
+such spaces may increase in width.
+<a class="index-entry-id" id="index-inter_002dsentence-space_002c-additional"></a>
+<a class="index-entry-id" id="index-additional-inter_002dsentence-space"></a>
+<a class="index-entry-id" id="index-space_002c-between-sentences"></a>
+The optional second argument sets the amount of additional space
+separating sentences on the same output line. If omitted, this amount
+is set to <var class="var">word-space-size</var>. The request is ignored if there are no
+parameters.
+</p>
+<a class="index-entry-id" id="index-filling_002c-and-inter_002dsentence-space"></a>
+<a class="index-entry-id" id="index-mode_002c-fill_002c-and-inter_002dsentence-space"></a>
+<p>Additional inter-sentence space is used only if the output line is not
+full when the end of a sentence occurs in the input. If a sentence ends
+at the end of an input line, then both an inter-word space and an
+inter-sentence space are added to the output; if two spaces follow the
+end of a sentence in the middle of an input line, then the second space
+becomes an inter-sentence space in the output. Additional
+inter-sentence space is not adjusted, but the inter-word space that
+always precedes it may be. Further input spaces after the second, if
+present, are adjusted as normal.
+</p>
+<p>The read-only registers <code class="code">.ss</code> and <code class="code">.sss</code> hold the minimal
+inter-word space and additional inter-sentence space amounts,
+respectively. These parameters are part of the environment
+(see <a class="pxref" href="Environments.html">Environments</a>), and rounded down to the nearest multiple
+of&nbsp;12 on terminals.
+</p>
+<a class="index-entry-id" id="index-discardable-horizontal-space"></a>
+<a class="index-entry-id" id="index-space_002c-discardable_002c-horizontal"></a>
+<a class="index-entry-id" id="index-horizontal-discardable-space"></a>
+<p>The <code class="code">ss</code> request can insert discardable horizontal space; that is,
+space that is discarded at a break. For example, some footnote styles
+collect the notes into a single paragraph with large gaps between
+each note.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 48n
+1.\~J. Fict. Ch. Soc. 6 (2020), 3\[en]14.
+.ss 12 48 \&quot; applies to next sentence ending
+Reprints no longer available through FCS.
+.ss 12 \&quot; go back to normal
+2.\~Better known for other work.
+ &rArr; 1. J. Fict. Ch. Soc. 6 (2020), 3-14. Reprints
+ &rArr; no longer available through FCS. 2. Better
+ &rArr; known for other work.
+</pre></div></div>
+
+<p>If <em class="emph">undiscardable</em> space is required, use the <code class="code">\h</code> escape
+sequence.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a>, Previous: <a href="Registers.html">Registers</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Manipulating-Hyphenation.html b/doc/groff.html.node/Manipulating-Hyphenation.html
new file mode 100644
index 0000000..6d88ea8
--- /dev/null
+++ b/doc/groff.html.node/Manipulating-Hyphenation.html
@@ -0,0 +1,580 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Manipulating Hyphenation (The GNU Troff Manual)</title>
+
+<meta name="description" content="Manipulating Hyphenation (The GNU Troff Manual)">
+<meta name="keywords" content="Manipulating Hyphenation (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Manipulating-Spacing.html" rel="next" title="Manipulating Spacing">
+<link href="Manipulating-Filling-and-Adjustment.html" rel="prev" title="Manipulating Filling and Adjustment">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Manipulating-Hyphenation">
+<div class="nav-panel">
+<p>
+Next: <a href="Manipulating-Spacing.html" accesskey="n" rel="next">Manipulating Spacing</a>, Previous: <a href="Manipulating-Filling-and-Adjustment.html" accesskey="p" rel="prev">Manipulating Filling and Adjustment</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Manipulating-Hyphenation-1">5.10 Manipulating Hyphenation</h3>
+<a class="index-entry-id" id="index-manipulating-hyphenation"></a>
+<a class="index-entry-id" id="index-hyphenation_002c-manipulating"></a>
+
+<a class="index-entry-id" id="index-hyphenation_002c-automatic"></a>
+<a class="index-entry-id" id="index-automatic-hyphenation"></a>
+<p>When filling, GNU <code class="code">troff</code> hyphenates words as needed at
+user-specified and automatically determined hyphenation points. The
+machine-driven determination of hyphenation points in words requires
+algorithms and data, and is susceptible to conventions and preferences.
+Before tackling such <em class="dfn">automatic hyphenation</em>, let us consider how
+hyphenation points can be set explicitly.
+</p>
+<a class="index-entry-id" id="index-hyphenation_002c-explicit"></a>
+<a class="index-entry-id" id="index-explicit-hyphenation"></a>
+<a class="index-entry-id" id="index-hyphenation_002c-manual"></a>
+<a class="index-entry-id" id="index-manual-hyphenation"></a>
+<p>Explicitly hyphenated words such as &ldquo;mother-in-law&rdquo; are eligible for
+breaking after each of their hyphens. Relatively few words in a
+language offer such obvious break points, however, and automatic
+detection of syllabic (or phonetic) boundaries for hyphenation is not
+perfect,<a class="footnote" id="DOCF56" href="groff.html_fot.html#FOOT56"><sup>56</sup></a> particularly for
+unusual words found in technical literature. We can instruct GNU
+<code class="code">troff</code> how to hyphenate specific words if the need arises.
+</p>
+<a class="index-entry-id" id="index-hyphenation-exceptions"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehw"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hw</code></strong> <var class="def-var-arguments">word &hellip;</var><a class="copiable-link" href='#index-_002ehw'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hw"></a>
+<p>Define each <em class="dfn">hyphenation exception</em> <var class="var">word</var> with each hyphen &lsquo;-&rsquo;
+in the word indicating a hyphenation point. For example, the request
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.hw in-sa-lub-rious alpha
+</pre></div></div>
+
+<p>marks potential hyphenation points in &ldquo;insalubrious&rdquo;, and prevents
+&ldquo;alpha&rdquo; from being hyphenated at all.
+</p>
+<p>Besides the space character, any character whose hyphenation code is
+zero can be used to separate the arguments of <code class="code">hw</code> (see the
+<code class="code">hcode</code> request below). In addition, this request can be used more
+than once.
+</p>
+<a class="index-entry-id" id="index-hw-request_002c-and-hy-restrictions"></a>
+<p>Hyphenation points specified with <code class="code">hw</code> are not subject to the
+within-word placement restrictions imposed by the <code class="code">hy</code> request (see
+below).
+</p>
+<p>Hyphenation exceptions specified with the <code class="code">hw</code> request are
+associated with the hyphenation language (see the <code class="code">hla</code> request
+below) and environment (see <a class="pxref" href="Environments.html">Environments</a>); invoking the <code class="code">hw</code>
+request in the absence of a hyphenation language is an error.
+</p>
+<p>The request is ignored if there are no parameters.
+</p></dd></dl>
+
+<p>These are known as hyphenation <i class="slanted">exceptions</i> in the expectation
+that most users will avail themselves of automatic hyphenation; these
+exceptions override any rules that would normally apply to a word
+matching a hyphenation exception defined with <code class="code">hw</code>.
+</p>
+<p>Situations also arise when only a specific occurrence of a word needs
+its hyphenation altered or suppressed, or when a URL or similar string
+needs to be breakable in sensible places without hyphenation.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0025-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\%</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0025-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0025"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_003a-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\:</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_003a-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_003a"></a>
+<a class="index-entry-id" id="index-hyphenation-character-_0028_005c_0025_0029"></a>
+<a class="index-entry-id" id="index-character_002c-hyphenation-_0028_005c_0025_0029"></a>
+<a class="index-entry-id" id="index-disabling-hyphenation-_0028_005c_0025_0029"></a>
+<a class="index-entry-id" id="index-hyphenation_002c-disabling-_0028_005c_0025_0029"></a>
+<p>To tell GNU <code class="code">troff</code> how to hyphenate words as they occur in input,
+use the <code class="code">\%</code> escape sequence; it is the default <em class="dfn">hyphenation
+character</em>. Each instance within a word indicates to GNU <code class="code">troff</code>
+that the word may be hyphenated at that point, while prefixing a word
+with this escape sequence prevents it from being otherwise hyphenated.
+This mechanism affects only that occurrence of the word; to change the
+hyphenation of a word for the remainder of input processing, use the
+<code class="code">hw</code> request.
+</p>
+<a class="index-entry-id" id="index-_005cX_002c-followed-by-_005c_0025"></a>
+<a class="index-entry-id" id="index-_005cY_002c-followed-by-_005c_0025"></a>
+<a class="index-entry-id" id="index-_005c_0025_002c-following-_005cX-or-_005cY"></a>
+<p>GNU <code class="code">troff</code> regards the escape sequences <code class="code">\X</code> and <code class="code">\Y</code> as
+starting a word; that is, the <code class="code">\%</code> escape sequence in, say,
+&lsquo;<samp class="samp">\X'...'\%foobar</samp>&rsquo;<!-- /@w --> or &lsquo;<samp class="samp">\Y'...'\%foobar</samp>&rsquo;<!-- /@w --> no longer
+prevents hyphenation of &lsquo;<samp class="samp">foobar</samp>&rsquo; but inserts a hyphenation point
+just prior to it; most likely this isn&rsquo;t what you want.
+See <a class="xref" href="Postprocessor-Access.html">Postprocessor Access</a>.
+</p>
+<a class="index-entry-id" id="index-non_002dprinting-break-point-_0028_005c_003a_0029"></a>
+<a class="index-entry-id" id="index-breaking-without-hyphens-_0028_005c_003a_0029"></a>
+<a class="index-entry-id" id="index-file-names_002c-breaking-_0028_005c_003a_0029"></a>
+<a class="index-entry-id" id="index-breaking-file-names-_0028_005c_003a_0029"></a>
+<a class="index-entry-id" id="index-URLs_002c-breaking-_0028_005c_003a_0029"></a>
+<a class="index-entry-id" id="index-breaking-URLs-_0028_005c_003a_0029"></a>
+<p><code class="code">\:</code> inserts a non-printing break point; that is, a word can break
+there, but the soft hyphen glyph (see below) is not written to the
+output if it does. This escape sequence is an input word boundary, so
+the remainder of the word is subject to hyphenation as normal.
+</p>
+<p>You can combine <code class="code">\:</code> and <code class="code">\%</code> to control breaking of a file
+name or URL, or to permit hyphenation only after certain explicit
+hyphens within a word.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">The \%Lethbridge-Stewart-\:\%Sackville-Baggins divorce
+was, in retrospect, inevitable once the contents of
+\%/var/log/\:\%httpd/\:\%access_log on the family web
+server came to light, revealing visitors from Hogwarts.
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">char</i></span>]</var><a class="copiable-link" href='#index-_002ehc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hc"></a>
+<p>Change the hyphenation character to <var class="var">char</var>. This character then
+works as the <code class="code">\%</code> escape sequence normally does, and thus no longer
+appears in the output.<a class="footnote" id="DOCF57" href="groff.html_fot.html#FOOT57"><sup>57</sup></a> Without an
+argument, <code class="code">hc</code> resets the hyphenation character to <code class="code">\%</code> (the
+default). The hyphenation character is associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eshc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.shc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">c</i></span>]</var><a class="copiable-link" href='#index-_002eshc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-shc"></a>
+<a class="index-entry-id" id="index-soft-hyphen-character_002c-setting-_0028shc_0029"></a>
+<a class="index-entry-id" id="index-character_002c-soft-hyphen_002c-setting-_0028shc_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-soft-hyphen-_0028hy_0029"></a>
+<a class="index-entry-id" id="index-soft-hyphen-glyph-_0028hy_0029"></a>
+<a class="index-entry-id" id="index-char-request_002c-and-soft-hyphen-character"></a>
+<a class="index-entry-id" id="index-tr-request_002c-and-soft-hyphen-character"></a>
+<p>Set the <em class="dfn">soft hyphen character</em>, inserted when a word is hyphenated
+automatically or at a hyphenation character, to the ordinary or special
+character&nbsp;<var class="var">c</var>.<a class="footnote" id="DOCF58" href="groff.html_fot.html#FOOT58"><sup>58</sup></a> If the argument is omitted, the soft
+hyphen character is set to the default, <code class="code">\[hy]</code>. If no glyph for
+<var class="var">c</var> exists in the font in use at a potential hyphenation point, then
+the line is not broken there. Neither character definitions (specified
+with the <code class="code">char</code> and similar requests) nor translations (specified
+with the <code class="code">tr</code> request) are applied to <var class="var">c</var>.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-hyphenation-parameters_002c-automatic"></a>
+<a class="index-entry-id" id="index-automatic-hyphenation-parameters"></a>
+<p>Several requests influence automatic hyphenation. Because conventions
+vary, a variety of hyphenation modes is available to the <code class="code">hy</code>
+request; these determine whether hyphenation will apply to a
+word prior to breaking a line at the end of a page (more or less; see
+below for details), and at which positions within that word
+automatically determined hyphenation points are permissible. The places
+within a word that are eligible for hyphenation are determined by
+language-specific data and lettercase relationships. Furthermore,
+hyphenation of a word might be suppressed due to a limit on
+consecutive hyphenated lines (<code class="code">hlm</code>), a minimum line length
+threshold (<code class="code">hym</code>), or because the line can instead be adjusted with
+additional inter-word space (<code class="code">hys</code>).
+</p>
+<a class="index-entry-id" id="index-hyphenation-mode-register-_0028_002ehy_0029"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehy"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hy</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">mode</i></span>]</var><a class="copiable-link" href='#index-_002ehy'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hy"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehy_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hy]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehy_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ehy-1"></a>
+<p>Set automatic hyphenation mode to <var class="var">mode</var>, an integer encoding
+conditions for hyphenation; if omitted, &lsquo;<samp class="samp">1</samp>&rsquo; is implied. The
+hyphenation mode is available in the read-only register &lsquo;<samp class="samp">.hy</samp>&rsquo;; it
+is associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>). The default
+hyphenation mode depends on the localization file loaded when GNU
+<code class="code">troff</code> starts up; see the <code class="code">hpf</code> request below.
+</p>
+<p>Typesetting practice generally does not avail itself of every
+opportunity for hyphenation, but the details differ by language and site
+mandates. The hyphenation modes of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> were
+implemented with English-language publishing practices of the 1970s in
+mind, not a scrupulous enumeration of conceivable parameters. GNU
+<code class="code">troff</code> extends those modes such that finer-grained control is
+possible, favoring compatibility with older implementations over a more
+intuitive arrangement. The means of hyphenation mode control is a set
+of numbers that can be added up to encode the behavior
+sought.<a class="footnote" id="DOCF59" href="groff.html_fot.html#FOOT59"><sup>59</sup></a> The entries in the
+following table are termed <em class="dfn">values</em>; the sum of the desired
+values is the <em class="dfn">mode</em>.
+</p>
+<dl class="table">
+<dt><code class="code">0</code></dt>
+<dd><p>disables hyphenation.
+</p>
+</dd>
+<dt><code class="code">1</code></dt>
+<dd><p>enables hyphenation except after the first and before the last character
+of a word.
+</p></dd>
+</dl>
+
+<p>The remaining values &ldquo;imply&rdquo; 1; that is, they enable hyphenation
+under the same conditions as &lsquo;<samp class="samp">.hy 1</samp>&rsquo;, and then apply or lift
+restrictions relative to that basis.
+</p>
+<dl class="table">
+<dt><code class="code">2</code></dt>
+<dd><p>disables hyphenation of the last word on a page,<a class="footnote" id="DOCF60" href="groff.html_fot.html#FOOT60"><sup>60</sup></a> even for explicitly hyphenated words.
+</p>
+</dd>
+<dt><code class="code">4</code></dt>
+<dd><p>disables hyphenation before the last two characters of a word.
+</p>
+</dd>
+<dt><code class="code">8</code></dt>
+<dd><p>disables hyphenation after the first two characters of a word.
+</p>
+</dd>
+<dt><code class="code">16</code></dt>
+<dd><p>enables hyphenation before the last character of a word.
+</p>
+</dd>
+<dt><code class="code">32</code></dt>
+<dd><p>enables hyphenation after the first character of a word.
+</p></dd>
+</dl>
+
+<p>Apart from value&nbsp;2, restrictions imposed by the hyphenation mode
+are <em class="emph">not</em> respected for words whose hyphenations have been
+specified with the hyphenation character (&lsquo;<samp class="samp">\%</samp>&rsquo; by default) or the
+<code class="code">hw</code> request.
+</p>
+<p>Nonzero values in the previous table are additive. For example,
+mode&nbsp;12 causes GNU <code class="code">troff</code> to hyphenate neither the last two
+nor the first two characters of a word. Some values cannot be used
+together because they contradict; for instance, values 4 and&nbsp;16,
+and values 8 and&nbsp;32. As noted, it is superfluous to add 1 to any
+non-zero even mode.
+</p>
+<a class="index-entry-id" id="index-hyphenation-pattern-files"></a>
+<a class="index-entry-id" id="index-pattern-files_002c-for-hyphenation"></a>
+<p>The automatic placement of hyphens in words is determined by
+<em class="dfn">pattern files</em>, which are derived from TeX and available for
+several languages. The number of characters at the beginning of a word
+after which the first hyphenation point should be inserted is determined
+by the patterns themselves; it can&rsquo;t be reduced further without
+introducing additional, invalid hyphenation points (unfortunately, this
+information is not part of a pattern file&mdash;you have to know it in
+advance). The same is true for the number of characters at the end of
+a word before the last hyphenation point should be inserted. For
+example, you can supply the following input to &lsquo;<samp class="samp">echo $(nroff)</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 1
+.hy 48
+splitting
+</pre></div></div>
+
+<p>You will get
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">s- plit- t- in- g
+</pre></div></div>
+
+<p>instead of the correct &lsquo;split- ting&rsquo;. English patterns as distributed
+with GNU <code class="code">troff</code> need two characters at the beginning and three
+characters at the end; this means that value&nbsp;4 of <code class="code">hy</code> is
+mandatory. Value&nbsp;8 is possible as an additional restriction, but
+values&nbsp;16 and&nbsp;32 should be avoided, as should mode&nbsp;1.
+Modes&nbsp;4 and&nbsp;6 are typical.
+</p>
+<p>A table of left and right minimum character counts for hyphenation as
+needed by the patterns distributed with GNU <code class="code">troff</code> follows; see
+the <cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page for more information on GNU
+<code class="code">troff</code>&rsquo;s language macro files.
+</p>
+<table class="multitable">
+<thead><tr><th>language</th><th>pattern name</th><th>left min</th><th>right min</th></tr></thead>
+<tbody><tr><td>Czech</td><td>cs</td><td>2</td><td>2</td></tr>
+<tr><td>English</td><td>en</td><td>2</td><td>3</td></tr>
+<tr><td>French</td><td>fr</td><td>2</td><td>3</td></tr>
+<tr><td>German traditional</td><td>det</td><td>2</td><td>2</td></tr>
+<tr><td>German reformed</td><td>den</td><td>2</td><td>2</td></tr>
+<tr><td>Italian</td><td>it</td><td>2</td><td>2</td></tr>
+<tr><td>Swedish</td><td>sv</td><td>1</td><td>2</td></tr>
+</tbody>
+</table>
+
+<p>Hyphenation exceptions within pattern files (i.e., the words within a
+TeX <code class="code">\hyphenation</code> group) obey the hyphenation restrictions
+given by <code class="code">hy</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enh"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nh</code></strong><a class="copiable-link" href='#index-_002enh'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nh"></a>
+<p>Disable automatic hyphenation; i.e., set the hyphenation mode to&nbsp;0
+(see above). The hyphenation mode of the last call to <code class="code">hy</code> is not
+remembered.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehpf"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hpf</code></strong> <var class="def-var-arguments">pattern-file</var><a class="copiable-link" href='#index-_002ehpf'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hpf"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ehpfa"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hpfa</code></strong> <var class="def-var-arguments">pattern-file</var><a class="copiable-link" href='#index-_002ehpfa'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hpfa"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ehpfcode"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hpfcode</code></strong> <var class="def-var-arguments">a b [c d] &hellip;</var><a class="copiable-link" href='#index-_002ehpfcode'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hpfcode"></a>
+<a class="index-entry-id" id="index-hyphenation-patterns-_0028hpf_0029"></a>
+<a class="index-entry-id" id="index-patterns-for-hyphenation-_0028hpf_0029"></a>
+<p>Read hyphenation patterns from <var class="var">pattern-file</var>, which is sought
+in the same way that macro files are with the <code class="code">mso</code> request or the
+<samp class="option">-m<var class="var">name</var></samp> command-line option to <code class="code">groff</code>. The
+<var class="var">pattern-file</var> should have the same format as (simple) TeX
+pattern files. More specifically, the following scanning rules are
+implemented.
+</p>
+<ul class="itemize mark-bullet">
+<li>A percent sign starts a comment (up to the end of the line) even if
+preceded by a backslash.
+
+</li><li>&ldquo;Digraphs&rdquo; like <code class="code">\$</code> are not supported.
+
+</li><li><code class="code">^^<var class="var">xx</var></code> (where each <var class="var">x</var> is 0&ndash;9 or a&ndash;f) and
+<code class="code">^^<var class="var">c</var></code> (character <var class="var">c</var> in the code point range 0&ndash;127
+decimal) are recognized; other uses of <code class="code">^</code> cause an error.
+
+</li><li>No macro expansion is performed.
+
+</li><li><code class="code">hpf</code> checks for the expression <code class="code">\patterns{&hellip;}</code>
+(possibly with whitespace before or after the braces). Everything
+between the braces is taken as hyphenation patterns. Consequently,
+<code class="code">{</code> and <code class="code">}</code> are not allowed in patterns.
+
+</li><li>Similarly, <code class="code">\hyphenation{&hellip;}</code> gives a list of hyphenation
+exceptions.
+
+</li><li><code class="code">\endinput</code> is recognized also.
+
+</li><li>For backward compatibility, if <code class="code">\patterns</code> is missing, the whole
+file is treated as a list of hyphenation patterns (except that the
+<code class="code">%</code> character is recognized as the start of a comment).
+</li></ul>
+
+<p>The <code class="code">hpfa</code> request appends a file of patterns to the current list.
+</p>
+<p>The <code class="code">hpfcode</code> request defines mapping values for character codes in
+pattern files. It is an older mechanism no longer used by GNU
+<code class="code">troff</code>&rsquo;s own macro files; for its successor, see <code class="code">hcode</code>
+below. <code class="code">hpf</code> or <code class="code">hpfa</code> apply the mapping after reading the
+patterns but before replacing or appending to the active list of
+patterns. Its arguments are pairs of character codes&mdash;integers from 0
+to&nbsp;255. The request maps character code&nbsp;<var class="var">a</var> to
+code&nbsp;<var class="var">b</var>, code&nbsp;<var class="var">c</var> to code&nbsp;<var class="var">d</var>, and so on.
+Character codes that would otherwise be invalid in GNU <code class="code">troff</code> can
+be used. By default, every code maps to itself except those for letters
+&lsquo;A&rsquo; to &lsquo;Z&rsquo;, which map to those for &lsquo;a&rsquo; to &lsquo;z&rsquo;.
+</p>
+<a class="index-entry-id" id="index-localization"></a>
+<a class="index-entry-id" id="index-troffrc-2"></a>
+<a class="index-entry-id" id="index-cs_002etmac"></a>
+<a class="index-entry-id" id="index-de_002etmac"></a>
+<a class="index-entry-id" id="index-en_002etmac"></a>
+<a class="index-entry-id" id="index-fr_002etmac"></a>
+<a class="index-entry-id" id="index-it_002etmac"></a>
+<a class="index-entry-id" id="index-ja_002etmac"></a>
+<a class="index-entry-id" id="index-sv_002etmac"></a>
+<a class="index-entry-id" id="index-zh_002etmac"></a>
+<p>The set of hyphenation patterns is associated with the language set by
+the <code class="code">hla</code> request (see below). The <code class="code">hpf</code> request is usually
+invoked by a localization file loaded by the <samp class="file">troffrc</samp>
+file.<a class="footnote" id="DOCF61" href="groff.html_fot.html#FOOT61"><sup>61</sup></a>
+</p>
+<p>A second call to <code class="code">hpf</code> (for the same language) replaces the
+hyphenation patterns with the new ones. Invoking <code class="code">hpf</code> or
+<code class="code">hpfa</code> causes an error if there is no hyphenation language. If no
+<code class="code">hpf</code> request is specified (either in the document, in a file
+loaded at startup, or in a macro package), GNU <code class="code">troff</code> won&rsquo;t
+automatically hyphenate at all.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehcode"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hcode</code></strong> <var class="def-var-arguments">c1 code1 [c2 code2] &hellip;</var><a class="copiable-link" href='#index-_002ehcode'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hcode"></a>
+<a class="index-entry-id" id="index-hyphenation-code-_0028hcode_0029"></a>
+<a class="index-entry-id" id="index-code_002c-hyphenation-_0028hcode_0029"></a>
+<p>Set the hyphenation code of character <var class="var">c1</var> to <var class="var">code1</var>, that of
+<var class="var">c2</var> to <var class="var">code2</var>, and so on. A hyphenation code must be an
+ordinary character (not a special character escape sequence) other than
+a digit or a space. The request is ignored if given no arguments.
+</p>
+<p>For hyphenation to work, hyphenation codes must be set up. At
+startup, GNU <code class="code">troff</code> assigns hyphenation codes to the letters
+&lsquo;<samp class="samp">a</samp>&rsquo;&ndash;&lsquo;<samp class="samp">z</samp>&rsquo; (mapped to themselves), to the letters
+&lsquo;<samp class="samp">A</samp>&rsquo;&ndash;&lsquo;<samp class="samp">Z</samp>&rsquo; (mapped to &lsquo;<samp class="samp">a</samp>&rsquo;&ndash;&lsquo;<samp class="samp">z</samp>&rsquo;), and zero to all other
+characters. Normally, hyphenation patterns contain only lowercase
+letters which should be applied regardless of case. In other words,
+they assume that the words &lsquo;FOO&rsquo; and &lsquo;Foo&rsquo; should be hyphenated exactly
+as &lsquo;foo&rsquo; is. The <code class="code">hcode</code> request extends this principle to letters
+outside the Unicode basic Latin alphabet; without it, words containing
+such letters won&rsquo;t be hyphenated properly even if the corresponding
+hyphenation patterns contain them.
+</p>
+<p>For example, the following <code class="code">hcode</code> requests are necessary to assign
+hyphenation codes to the letters &lsquo;<samp class="samp">ÄäÖöÜüß</samp>&rsquo;, needed for German.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.hcode ä ä Ä ä
+.hcode ö ö Ö ö
+.hcode ü ü Ü ü
+.hcode ß ß
+</pre></div></div>
+
+<p>Without these assignments, GNU <code class="code">troff</code> treats the German word
+&lsquo;Kindergärten&rsquo;<!-- /@w --> (the plural form of &lsquo;kindergarten&rsquo;) as two words
+&lsquo;kinderg&rsquo;<!-- /@w --> and &lsquo;rten&rsquo;<!-- /@w --> because the hyphenation code of the
+umlaut&nbsp;a is zero by default, just like a space. There is a German
+hyphenation pattern that covers &lsquo;kinder&rsquo;<!-- /@w -->, so GNU <code class="code">troff</code> finds
+the hyphenation &lsquo;kin-der&rsquo;. The other two hyphenation points
+(&lsquo;kin-der-gär-ten&rsquo;) are missed.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehla"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hla</code></strong> <var class="def-var-arguments">lang</var><a class="copiable-link" href='#index-_002ehla'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hla"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehla_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hla]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehla_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ehla-1"></a>
+<a class="index-entry-id" id="index-hpf-request_002c-and-hyphenation-language"></a>
+<a class="index-entry-id" id="index-hw-request_002c-and-hyphenation-language"></a>
+<a class="index-entry-id" id="index-troffrc-3"></a>
+<a class="index-entry-id" id="index-troffrc_002dend-1"></a>
+<p>Set the hyphenation language to <var class="var">lang</var>. Hyphenation exceptions
+specified with the <code class="code">hw</code> request and hyphenation patterns and
+exceptions specified with the <code class="code">hpf</code> and <code class="code">hpfa</code> requests are
+associated with the hyphenation language. The <code class="code">hla</code> request is
+usually invoked by a localization file, which is turn loaded by the
+<samp class="file">troffrc</samp> or <samp class="file">troffrc-end</samp> file; see the <code class="code">hpf</code> request
+above.
+</p>
+<a class="index-entry-id" id="index-hyphenation-language-register-_0028_002ehla_0029"></a>
+<p>The hyphenation language is available in the read-only string-valued
+register &lsquo;<samp class="samp">.hla</samp>&rsquo;; it is associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehlm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hlm</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002ehlm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hlm"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehlm_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hlm]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehlm_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ehlm-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehlc_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hlc]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehlc_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ehlc"></a>
+<a class="index-entry-id" id="index-explicit-hyphen-_0028_005c_0025_0029"></a>
+<a class="index-entry-id" id="index-hyphen_002c-explicit-_0028_005c_0025_0029"></a>
+<a class="index-entry-id" id="index-consecutive-hyphenated-lines-_0028hlm_0029"></a>
+<a class="index-entry-id" id="index-lines_002c-consecutive-hyphenated-_0028hlm_0029"></a>
+<a class="index-entry-id" id="index-hyphenated-lines_002c-consecutive-_0028hlm_0029"></a>
+<p>Set the maximum quantity of consecutive hyphenated lines to <var class="var">n</var>. If
+<var class="var">n</var> is negative, there is no maximum. If omitted, <var class="var">n</var>
+is&nbsp;&minus;1. This value is associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>). Only lines output from a given environment
+count toward the maximum associated with that environment. Hyphens
+resulting from <code class="code">\%</code> are counted; explicit hyphens are not.
+</p>
+<a class="index-entry-id" id="index-hyphenation-consecutive-line-limit-register-_0028_002ehlm_0029"></a>
+<a class="index-entry-id" id="index-hyphenation-consecutive-line-count-register-_0028_002ehlc_0029"></a>
+<p>The <code class="code">.hlm</code> read-only register stores this maximum. The count of
+immediately preceding consecutive hyphenated lines is available in the
+read-only register <code class="code">.hlc</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehym"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hym</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">length</i></span>]</var><a class="copiable-link" href='#index-_002ehym'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hym"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehym_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hym]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehym_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ehym-1"></a>
+<a class="index-entry-id" id="index-hyphenation-margin-_0028hym_0029"></a>
+<a class="index-entry-id" id="index-margin-for-hyphenation-_0028hym_0029"></a>
+<a class="index-entry-id" id="index-ad-request_002c-and-hyphenation-margin"></a>
+<p>Set the (right) hyphenation margin to <var class="var">length</var>. If the adjustment
+mode is not &lsquo;<samp class="samp">b</samp>&rsquo; or &lsquo;<samp class="samp">n</samp>&rsquo;, the line is not hyphenated if it is
+shorter than <var class="var">length</var>. Without an argument, the hyphenation margin
+is reset to its default value, 0. The default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;.
+The hyphenation margin is associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<p>A negative argument resets the hyphenation margin to zero, emitting a
+warning in category &lsquo;<samp class="samp">range</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-hyphenation-margin-register-_0028_002ehym_0029"></a>
+<p>The hyphenation margin is available in the <code class="code">.hym</code> read-only
+register.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ehys"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.hys</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">hyphenation-space</i></span>]</var><a class="copiable-link" href='#index-_002ehys'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hys"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ehys_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.hys]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ehys_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ehys-1"></a>
+<a class="index-entry-id" id="index-hyphenation-space-_0028hys_0029"></a>
+<a class="index-entry-id" id="index-hyphenation-space-adjustment-threshold"></a>
+<a class="index-entry-id" id="index-ad-request_002c-and-hyphenation-space"></a>
+<p>Suppress hyphenation of the line in adjustment modes &lsquo;<samp class="samp">b</samp>&rsquo; or
+&lsquo;<samp class="samp">n</samp>&rsquo; if it can be justified by adding no more than
+<var class="var">hyphenation-space</var> extra space to each inter-word space. Without
+an argument, the hyphenation space adjustment threshold is set to its
+default value, 0. The default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;. The
+hyphenation space adjustment threshold is associated with the
+environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<p>A negative argument resets the hyphenation space adjustment threshold to
+zero, emitting a warning in category &lsquo;<samp class="samp">range</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-hyphenation-space-adjustment-threshold-register-_0028_002ehys_0029"></a>
+<p>The hyphenation space adjustment threshold is available in the
+<code class="code">.hys</code> read-only register.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Manipulating-Spacing.html">Manipulating Spacing</a>, Previous: <a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Manipulating-Spacing.html b/doc/groff.html.node/Manipulating-Spacing.html
new file mode 100644
index 0000000..6b45b8a
--- /dev/null
+++ b/doc/groff.html.node/Manipulating-Spacing.html
@@ -0,0 +1,220 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Manipulating Spacing (The GNU Troff Manual)</title>
+
+<meta name="description" content="Manipulating Spacing (The GNU Troff Manual)">
+<meta name="keywords" content="Manipulating Spacing (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Tabs-and-Fields.html" rel="next" title="Tabs and Fields">
+<link href="Manipulating-Hyphenation.html" rel="prev" title="Manipulating Hyphenation">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Manipulating-Spacing">
+<div class="nav-panel">
+<p>
+Next: <a href="Tabs-and-Fields.html" accesskey="n" rel="next">Tabs and Fields</a>, Previous: <a href="Manipulating-Hyphenation.html" accesskey="p" rel="prev">Manipulating Hyphenation</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Manipulating-Spacing-1">5.11 Manipulating Spacing</h3>
+<a class="index-entry-id" id="index-manipulating-spacing"></a>
+<a class="index-entry-id" id="index-spacing_002c-manipulating"></a>
+
+<p>A break causes the formatter to update the vertical drawing position at
+which the new text baseline is aligned. You can alter this location.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002esp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sp</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">distance</i></span>]</var><a class="copiable-link" href='#index-_002esp'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-sp"></a>
+<p>Break and move the next text baseline down by <var class="var">distance</var>, or until
+springing a page location trap.<a class="footnote" id="DOCF62" href="groff.html_fot.html#FOOT62"><sup>62</sup></a>
+If invoked with the no-break control character, <code class="code">sp</code> moves the
+pending output line&rsquo;s text baseline by <var class="var">distance</var>. A negative
+<var class="var">distance</var> will not reduce the position of the text baseline below
+zero. Inside a diversion, any <var class="var">distance</var> argument is ignored. The
+default scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. If <var class="var">distance</var> is not specified,
+&lsquo;<samp class="samp">1v</samp>&rsquo; is assumed.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.pl 5v \&quot; Set page length to 5 vees.
+.de xx
+\-\-\-
+. br
+..
+.wh 0 xx \&quot; Set a trap at the top of the page.
+foo on page \n%
+.sp 2v
+bar on page \n%
+.sp 50v \&quot; This will cause a page break.
+baz on page \n%
+.pl \n(nlu \&quot; Truncate page to current position.
+ &rArr; ---
+ &rArr; foo on page 1
+ &rArr;
+ &rArr;
+ &rArr; bar on page 1
+ &rArr; ---
+ &rArr; baz on page 2
+</pre></div></div>
+
+<p>You might use the following macros to set the baseline of the next
+output text at a given distance from the top or the bottom of the page.
+We subtract one line height (<code class="code">\n[.v]</code>) because the <code class="code">|</code>
+operator moves to one vee below the page top (recall <a class="ref" href="Numeric-Expressions.html">Numeric Expressions</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de y-from-top-down
+. sp |\\$1-\\n[.v]u
+..
+.
+.de y-from-bot-up
+. sp |\\n[.p]u-\\$1-\\n[.v]u
+..
+</pre></div></div>
+
+<p>A call to &lsquo;<samp class="samp">.y-from-bot-up 10c</samp>&rsquo; means that the next text baseline
+will be 10&nbsp;cm from the bottom edge of the paper.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002els"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ls</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">count</i></span>]</var><a class="copiable-link" href='#index-_002els'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ls"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eL_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.L]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eL_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eL"></a>
+<a class="index-entry-id" id="index-double_002dspacing-_0028ls_0029"></a>
+<p>Set the line spacing; add <var class="var">count</var>&minus;1<!-- /@w --> blank lines after each
+line of text. With no argument, GNU <code class="code">troff</code> uses the previous
+value before the last <code class="code">ls</code> call. The default is <code class="code">1</code>.
+</p>
+
+<a class="index-entry-id" id="index-line-spacing-register-_0028_002eL_0029"></a>
+<p>The read-only register <code class="code">.L</code> contains the current line spacing; it
+is associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p></dd></dl>
+
+<p>The <code class="code">ls</code> request is a coarse mechanism. See <a class="xref" href="Changing-the-Type-Size.html">Changing the Type Size</a>, for the requests <code class="code">vs</code> and <code class="code">pvs</code> as alternatives to
+<code class="code">ls</code>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cx_0027spacing_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\x<code class="code">'</code></code><span class="r"><i class="slanted">spacing</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cx_0027spacing_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cx"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ea_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.a]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ea_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ea"></a>
+<p>Sometimes, an output line requires additional vertical spacing, for
+instance to allow room for a tall construct like an inline equation with
+exponents or subscripts (particularly if they are iterated). The
+<code class="code">\x</code> escape sequence takes a delimited measurement (like
+&lsquo;<samp class="samp">\x'3p'</samp>&rsquo;) to increase the vertical spacing of the pending output
+line. The default scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. If the measurement is
+positive, extra vertical space is inserted below the current line; a
+negative measurement adds space above. If <code class="code">\x</code> is applied to the
+pending output line multiple times, the maxima of the positive and
+negative adjustments are separately applied. The delimiter need not be
+a neutral apostrophe; see <a class="ref" href="Delimiters.html">Delimiters</a>.
+</p>
+<a class="index-entry-id" id="index-extra-post_002dvertical-line-space-register-_0028_002ea_0029"></a>
+<p>The <code class="code">.a</code> read-only register contains the extra vertical spacing
+<em class="emph">after</em> the text baseline of the most recently emitted output line.
+(In other words, it is the largest positive argument to <code class="code">\x</code>
+encountered on that line.) This quantity is exposed via a register
+because if an output line requires this &ldquo;extra post-vertical line
+spacing&rdquo;, and the subsequent output line requires &ldquo;extra pre-vertical
+line spacing&rdquo; (a negative argument to <code class="code">\x</code>), then applying both
+can lead to excessive spacing between the output lines. Text that is
+piling high on line <var class="var">n</var> might not require (as much) extra
+pre-vertical line spacing if line <var class="var">n</var>&minus;1 carries extra
+post-vertical line spacing.
+</p>
+<p>Use of <code class="code">\x</code> can be necessary in combination with the
+bracket-building escape sequence <code class="code">\b</code>,<a class="footnote" id="DOCF63" href="groff.html_fot.html#FOOT63"><sup>63</sup></a> as the following example shows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nf
+This is a test of \[rs]b (1).
+This is a test of \[rs]b (2).
+This is a test of \b'xyz'\x'-1m'\x'1m' (3).
+This is a test of \[rs]b (4).
+This is a test of \[rs]b (5).
+ &rArr; This is a test of \b (1).
+ &rArr; This is a test of \b (2).
+ &rArr; x
+ &rArr; This is a test of y (3).
+ &rArr; z
+ &rArr; This is a test of \b (4).
+ &rArr; This is a test of \b (5).
+</pre></div></div>
+</dd></dl>
+
+<p>Without <code class="code">\x</code>, the backslashes on the lines marked &lsquo;<samp class="samp">(2)</samp>&rsquo; and
+&lsquo;<samp class="samp">(4)</samp>&rsquo; would be overprinted.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ens"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ns</code></strong><a class="copiable-link" href='#index-_002ens'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ns"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ers"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rs</code></strong><a class="copiable-link" href='#index-_002ers'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rs"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ens_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ns]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ens_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ens-1"></a>
+<a class="index-entry-id" id="index-sp-request_002c-and-no_002dspace-mode"></a>
+<a class="index-entry-id" id="index-no_002dspace-mode-_0028ns_0029"></a>
+<a class="index-entry-id" id="index-mode_002c-no_002dspace-_0028ns_0029"></a>
+<a class="index-entry-id" id="index-blank-lines_002c-disabling"></a>
+<a class="index-entry-id" id="index-lines_002c-blank_002c-disabling"></a>
+<p>Enable <em class="dfn">no-space mode</em>. Vertical spacing, whether by <code class="code">sp</code>
+requests or blank input lines, is disabled. The <code class="code">bp</code> request to
+advance to the next page is also disabled, unless it is accompanied by a
+page number (see <a class="pxref" href="Page-Control.html">Page Control</a>). No-space mode ends automatically
+when text<a class="footnote" id="DOCF64" href="groff.html_fot.html#FOOT64"><sup>64</sup></a> is formatted for output <a class="footnote" id="DOCF65" href="groff.html_fot.html#FOOT65"><sup>65</sup></a> or the <code class="code">rs</code> request is invoked, which ends
+no-space mode. The read-only register <code class="code">.ns</code> interpolates a Boolean
+value indicating the enablement of no-space mode.
+</p>
+<p>A paragraphing macro might ordinarily insert vertical space to separate
+paragraphs. A section heading macro could invoke <code class="code">ns</code> to suppress
+this spacing for the first paragraph in a section.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Tabs-and-Fields.html">Tabs and Fields</a>, Previous: <a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Manipulating-Type-Size-and-Vertical-Spacing.html b/doc/groff.html.node/Manipulating-Type-Size-and-Vertical-Spacing.html
new file mode 100644
index 0000000..e566ad7
--- /dev/null
+++ b/doc/groff.html.node/Manipulating-Type-Size-and-Vertical-Spacing.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Manipulating Type Size and Vertical Spacing (The GNU Troff Manual)</title>
+
+<meta name="description" content="Manipulating Type Size and Vertical Spacing (The GNU Troff Manual)">
+<meta name="keywords" content="Manipulating Type Size and Vertical Spacing (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Colors.html" rel="next" title="Colors">
+<link href="Using-Fonts.html" rel="prev" title="Using Fonts">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Manipulating-Type-Size-and-Vertical-Spacing">
+<div class="nav-panel">
+<p>
+Next: <a href="Colors.html" accesskey="n" rel="next">Colors</a>, Previous: <a href="Using-Fonts.html" accesskey="p" rel="prev">Using Fonts</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Manipulating-Type-Size-and-Vertical-Spacing-1">5.20 Manipulating Type Size and Vertical Spacing</h3>
+<a class="index-entry-id" id="index-manipulating-type-size-and-vertical-spacing"></a>
+
+<a class="index-entry-id" id="index-text-baseline-1"></a>
+<a class="index-entry-id" id="index-baseline_002c-text-1"></a>
+<a class="index-entry-id" id="index-type-size"></a>
+<a class="index-entry-id" id="index-size_002c-size"></a>
+<a class="index-entry-id" id="index-vertical-spacing-1"></a>
+<a class="index-entry-id" id="index-spacing_002c-vertical-1"></a>
+<p>These concepts were introduced in <a class="ref" href="Page-Geometry.html">Page Geometry</a>. The height of a
+font&rsquo;s tallest glyph is one em, which is equal to the type size in
+points.<a class="footnote" id="DOCF82" href="groff.html_fot.html#FOOT82"><sup>82</sup></a> A vertical spacing of less than 120% of
+the type size can make a document hard to read. Larger proportions can
+be useful to spread the text for annotations or proofreader&rsquo;s marks. By
+default, GNU <code class="code">troff</code> uses 10&nbsp;point type on 12&nbsp;point
+spacing.
+<a class="index-entry-id" id="index-leading"></a>
+Typographers call the difference between type size and vertical spacing
+<em class="dfn">leading</em>.<a class="footnote" id="DOCF83" href="groff.html_fot.html#FOOT83"><sup>83</sup></a>
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="Changing-the-Type-Size.html" accesskey="1">Changing the Type Size</a></li>
+<li><a href="Changing-the-Vertical-Spacing.html" accesskey="2">Changing the Vertical Spacing</a></li>
+<li><a href="Using-Fractional-Type-Sizes.html" accesskey="3">Using Fractional Type Sizes</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Measurements.html b/doc/groff.html.node/Measurements.html
new file mode 100644
index 0000000..a4f1c82
--- /dev/null
+++ b/doc/groff.html.node/Measurements.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Measurements (The GNU Troff Manual)</title>
+
+<meta name="description" content="Measurements (The GNU Troff Manual)">
+<meta name="keywords" content="Measurements (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Numeric-Expressions.html" rel="next" title="Numeric Expressions">
+<link href="Text.html" rel="prev" title="Text">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Measurements">
+<div class="nav-panel">
+<p>
+Next: <a href="Numeric-Expressions.html" accesskey="n" rel="next">Numeric Expressions</a>, Previous: <a href="Text.html" accesskey="p" rel="prev">Text</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Measurements-1">5.3 Measurements</h3>
+<a class="index-entry-id" id="index-measurements"></a>
+<a class="index-entry-id" id="index-scaling-indicator"></a>
+<a class="index-entry-id" id="index-indicator_002c-scaling"></a>
+
+<a class="index-entry-id" id="index-units-of-measurement"></a>
+<a class="index-entry-id" id="index-measurement-units"></a>
+<p>The formatter sometimes requires the input of numeric parameters to
+specify measurements. These are specified as integers or decimal
+fractions with an optional <em class="dfn">scaling unit</em> suffixed. A scaling unit
+is a letter that immediately follows the last digit of a number. Digits
+after the decimal point are optional. Measurement expressions include
+&lsquo;<samp class="samp">10.5p</samp>&rsquo;, &lsquo;<samp class="samp">11i</samp>&rsquo;, and &lsquo;<samp class="samp">3.c</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-basic-units_002c-conversion-to"></a>
+<a class="index-entry-id" id="index-units_002c-basic_002c-conversion-to"></a>
+<a class="index-entry-id" id="index-conversion-to-basic-units"></a>
+<p>Measurements are scaled by the scaling unit and stored internally (with
+any fractional part discarded) in basic units.
+<a class="index-entry-id" id="index-device-resolution_002c-obtaining-in-the-formatter"></a>
+<a class="index-entry-id" id="index-resolution_002c-device_002c-obtaining-in-the-formatter"></a>
+The device resolution can therefore be obtained by storing a value of
+&lsquo;<samp class="samp">1i</samp>&rsquo; to a register. The only constraint on the basic unit is that
+it is at least as small as any other unit.
+</p>
+<dl class="table">
+<dd><a class="index-entry-id" id="index-basic-scaling-unit-_0028u_0029"></a>
+<a class="index-entry-id" id="index-u-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-u"></a>
+<a class="index-entry-id" id="index-scaling-unit-u"></a>
+</dd>
+<dt><code class="code">u</code></dt>
+<dd><p>Basic unit.
+</p>
+</dd>
+<dt id='index-inch-scaling-unit-_0028i_0029'><span><code class="code">i</code><a class="copiable-link" href='#index-inch-scaling-unit-_0028i_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-i-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-i"></a>
+<a class="index-entry-id" id="index-scaling-unit-i"></a>
+<p>Inch; defined as 2.54&nbsp;centimeters.
+</p>
+</dd>
+<dt id='index-centimeter-scaling-unit-_0028c_0029'><span><code class="code">c</code><a class="copiable-link" href='#index-centimeter-scaling-unit-_0028c_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-c-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-c"></a>
+<a class="index-entry-id" id="index-scaling-unit-c"></a>
+<p>Centimeter; a centimeter is about 0.3937&nbsp;inches.
+</p>
+</dd>
+<dt id='index-point-scaling-unit-_0028p_0029'><span><code class="code">p</code><a class="copiable-link" href='#index-point-scaling-unit-_0028p_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-p-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-p"></a>
+<a class="index-entry-id" id="index-scaling-unit-p"></a>
+<p>Point; a typesetter&rsquo;s unit used for measuring type size.
+There are 72&nbsp;points to an inch.
+</p>
+</dd>
+<dt id='index-pica-scaling-unit-_0028P_0029'><span><code class="code">P</code><a class="copiable-link" href='#index-pica-scaling-unit-_0028P_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-P-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-P"></a>
+<a class="index-entry-id" id="index-scaling-unit-P"></a>
+<p>Pica; another typesetter&rsquo;s unit. There are 6&nbsp;picas to an inch and
+12&nbsp;points to a pica.
+</p>
+</dd>
+<dt><code class="code">s</code></dt>
+<dt><code class="code">z</code></dt>
+<dd><p>See <a class="xref" href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a>, for a discussion of these units.
+</p>
+</dd>
+<dt><code class="code">f</code></dt>
+<dd><p>GNU <code class="code">troff</code> defines this unit to scale decimal fractions in the
+interval [0, 1] to 16-bit unsigned integers. It multiplies a quantity
+by 65,536. See <a class="xref" href="Colors.html">Colors</a>, for usage.
+</p></dd>
+</dl>
+
+<p>The magnitudes of other scaling units depend on the text formatting
+parameters in effect. These are useful when specifying measurements
+that need to scale with the typeface or vertical spacing.
+</p>
+<dl class="table">
+<dt id='index-em-scaling-unit-_0028m_0029'><span><code class="code">m</code><a class="copiable-link" href='#index-em-scaling-unit-_0028m_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-m-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-m"></a>
+<a class="index-entry-id" id="index-scaling-unit-m"></a>
+<p>Em; an em is equal to the current type size in points. It is named thus
+because it is approximately the width of the letter&nbsp;&lsquo;<samp class="samp">M</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-en-scaling-unit-_0028n_0029'><span><code class="code">n</code><a class="copiable-link" href='#index-en-scaling-unit-_0028n_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-n-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-n"></a>
+<a class="index-entry-id" id="index-scaling-unit-n"></a>
+<p>En; an en is one-half em.
+</p>
+</dd>
+<dt id='index-vertical-space-unit-_0028v_0029'><span><code class="code">v</code><a class="copiable-link" href='#index-vertical-space-unit-_0028v_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-space_002c-vertical_002c-unit-_0028v_0029"></a>
+<a class="index-entry-id" id="index-vee-scaling-unit-_0028v_0029"></a>
+<a class="index-entry-id" id="index-v-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-v"></a>
+<a class="index-entry-id" id="index-scaling-unit-v"></a>
+<p>Vee; recall <a class="ref" href="Page-Geometry.html">Page Geometry</a>.
+</p>
+</dd>
+<dt id='index-M-scaling-unit'><span><code class="code">M</code><a class="copiable-link" href='#index-M-scaling-unit'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-unit_002c-scaling_002c-M"></a>
+<a class="index-entry-id" id="index-scaling-unit-M"></a>
+<p>Hundredth of an em.
+</p></dd>
+</dl>
+
+
+
+<ul class="mini-toc">
+<li><a href="Motion-Quanta.html" accesskey="1">Motion Quanta</a></li>
+<li><a href="Default-Units.html" accesskey="2">Default Units</a></li>
+</ul>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Numeric-Expressions.html">Numeric Expressions</a>, Previous: <a href="Text.html">Text</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Miscellaneous.html b/doc/groff.html.node/Miscellaneous.html
new file mode 100644
index 0000000..db1eef3
--- /dev/null
+++ b/doc/groff.html.node/Miscellaneous.html
@@ -0,0 +1,275 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Miscellaneous (The GNU Troff Manual)</title>
+
+<meta name="description" content="Miscellaneous (The GNU Troff Manual)">
+<meta name="keywords" content="Miscellaneous (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Gtroff-Internals.html" rel="next" title="Gtroff Internals">
+<link href="Postprocessor-Access.html" rel="prev" title="Postprocessor Access">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span.w-nolinebreak-text {white-space: nowrap}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Miscellaneous">
+<div class="nav-panel">
+<p>
+Next: <a href="Gtroff-Internals.html" accesskey="n" rel="next"><code class="code">gtroff</code> Internals</a>, Previous: <a href="Postprocessor-Access.html" accesskey="p" rel="prev">Postprocessor Access</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Miscellaneous-1">5.35 Miscellaneous</h3>
+
+<p>We document here GNU <code class="code">troff</code> features that fit poorly elsewhere.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nm</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">start</i></span> [<span class="r"><i class="slanted">increment</i></span> [<span class="r"><i class="slanted">space</i></span> [<span class="r"><i class="slanted">indentation</i></span>]]]]</var><a class="copiable-link" href='#index-_002enm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nm"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bln_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[ln]</code></strong><a class="copiable-link" href='#index-_005cn_005bln_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ln"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002enm_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.nm]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002enm_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002enm-1"></a>
+<a class="index-entry-id" id="index-printing-line-numbers-_0028nm_0029"></a>
+<a class="index-entry-id" id="index-line-numbers_002c-printing-_0028nm_0029"></a>
+<a class="index-entry-id" id="index-numbers_002c-line_002c-printing-_0028nm_0029"></a>
+<p>Begin (or, with no arguments, cease) numbering output lines.
+<var class="var">start</var> assigns the number of the <em class="emph">next</em> output line. Only
+line numbers divisible by <var class="var">increment</var> are marked (default:
+&lsquo;<samp class="samp">1</samp>&rsquo;). <var class="var">space</var> configures the horizontal spacing between the
+number and the text (default: &lsquo;<samp class="samp">1</samp>&rsquo;). Any given <var class="var">indentation</var> is
+applied to the numbers (default: &lsquo;<samp class="samp">0</samp>&rsquo;). The third and fourth
+arguments are reckoned in numeral widths (<code class="code">\0</code>). <var class="var">start</var> must
+be non-negative and <var class="var">increment</var> positive.
+</p>
+<p>The formatter aligns the number to the right in a width of three numeral
+spaces plus <var class="var">indentation</var>, then catenates <var class="var">space</var> and the output
+line. The line length is <em class="emph">not</em> reduced. Depending on the value of
+the page offset,<a class="footnote" id="DOCF117" href="groff.html_fot.html#FOOT117"><sup>117</sup></a> numbers wider than
+the allocated space protrude into the left margin, or shift the output
+line to the right.
+</p>
+<p>Line numbering parameters corresponding to missing arguments are not
+altered. After numbering is disabled, &lsquo;<samp class="samp">.nm +0</samp>&rsquo; resumes it using
+the previously active parameters.
+</p>
+<p>The parameters of <code class="code">nm</code> are associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<a class="index-entry-id" id="index-output-line-number-register-_0028ln_0029"></a>
+<a class="index-entry-id" id="index-line-number_002c-output_002c-register-_0028ln_0029"></a>
+<p>While numbering is enabled, the output line number register <code class="code">ln</code> is
+updated as each line is output, even if no line number is formatted with
+it because it is being skipped (it is not a multiple of <var class="var">increment</var>)
+or because numbering is suppressed (see the <code class="code">nn</code> request below).
+</p>
+<p>The <code class="code">.nm</code> register tracks the enablement status of numbering.
+Temporary suspension of numbering with the <code class="code">nn</code> request does
+<em class="emph">not</em> alter its value.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.po 5n
+.ll 44n
+Programming,
+when stripped of all its circumstantial irrelevancies,
+.nm 999 1 1 -4
+boils down to no more and no less than
+.nm +0 3
+very effective thinking so as to avoid unmastered
+.nn 2
+complexity,
+to very vigorous separation of your many
+different concerns.
+.br
+\(em Edsger Dijkstra
+.sp
+.nm 1 1 1
+This guy's arrogance takes your breath away.
+.br
+\(em John Backus
+ &rArr; Programming, when stripped of all its cir-
+ &rArr; 999 cumstantial irrelevancies, boils down to no
+ &rArr; more and no less than very effective think-
+ &rArr; ing so as to avoid unmastered complexity, to
+ &rArr; very vigorous separation of your many dif-
+ &rArr; ferent concerns.
+ &rArr; 1002 -- Edsger Dijkstra
+ &rArr;
+ &rArr; 1 This guy&rsquo;s arrogance takes your breath away.
+ &rArr; 2 -- John Backus
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nn</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">skip</i></span>]</var><a class="copiable-link" href='#index-_002enn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nn"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002enn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.nn]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002enn_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002enn-1"></a>
+<p>Suppress numbering of the next <var class="var">skip</var> output lines that would
+otherwise be numbered. The default is&nbsp;1. <code class="code">nn</code> can be invoked
+when line numbering is not active; suppression of numbering will take
+effect for <var class="var">skip</var> lines once <code class="code">nm</code> enables it.
+</p>
+<p>The <code class="code">.nn</code> register stores the count of output lines still to have
+their numbering suppressed.
+</p>
+<p>This count is associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p></dd></dl>
+
+<p>To test whether the current output line will be numbered, you must check
+both the <code class="code">.nm</code> and <code class="code">.nn</code> registers.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> .de is-numbered
+ . nop This line
+ . ie (\\n[.nm] &amp; (1-\\n[.nn])) IS
+ . el ISN'T
+ . nop numbered.
+ . br
+ ..
+ Test line numbering.
+ .is-numbered
+ .nm 1
+ .nn 1
+ .is-numbered
+ .is-numbered
+ .nm
+ .is-numbered
+ &rArr; Test line numbering. This line ISN&rsquo;T numbered.
+ &rArr; This line ISN&rsquo;T numbered.
+ &rArr; 1 This line IS numbered.
+ &rArr; This line ISN&rsquo;T numbered.
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002emc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.mc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">margin-character</i></span> [<span class="r"><i class="slanted">distance</i></span>]</var><a class="copiable-link" href='#index-_002emc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-mc"></a>
+<a class="index-entry-id" id="index-margin-glyph-_0028mc_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-for-margins-_0028mc_0029"></a>
+<p>Begin (or, with no arguments, cease) writing a <em class="dfn">margin-character</em> to
+the right of each output line. The <var class="var">distance</var> argument separates
+<var class="var">margin-character</var> from the right margin. If absent, the most
+recent value is used; the default is 10&nbsp;points. If an output line
+exceeds the line length, the margin character is appended to it.
+<a class="index-entry-id" id="index-tl-request_002c-and-mc"></a>
+No margin character is written on lines produced by the <code class="code">tl</code>
+request.
+</p>
+<p>The margin character is a property of the output line; the margin
+character last configured when the line is output controls. If the
+margin character is disabled before an output line breaks, none is
+output (but see below).
+</p>
+<p>The margin character is associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 5i
+.nf
+.mc \[br]
+This paragraph is marked with a margin character.
+.sp
+As seen above, vertical space isn't thus marked.
+\&amp;
+An output line that is present, but empty, is.
+ &rArr; This paragraph is marked with a margin character. |
+ &rArr;
+ &rArr; As seen above, vertical space isn&rsquo;t thus marked. |
+ &rArr; |
+ &rArr; An output line that is present, but empty, is. |
+</pre></div></div>
+</dd></dl>
+
+<p>For compatibility with <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, a call to <code class="code">mc</code>
+to set the margin character can&rsquo;t be undone immediately; at least one
+line gets a margin character.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 10n
+.nf
+.mc |
+.mc *
+.mc
+foo
+bar
+ &rArr; foo *
+ &rArr; bar
+</pre></div></div>
+
+<a class="index-entry-id" id="index-gdiffmk"></a>
+<a class="index-entry-id" id="index-nrchbar"></a>
+<a class="index-entry-id" id="index-changebar"></a>
+<a class="index-entry-id" id="index-diffmk"></a>
+<p>The margin character mechanism is commonly used to annotate changes in
+documents. The <code class="code">groff</code> distribution ships a program,
+<code class="command">gdiffmk</code>, to assist with this task.<a class="footnote" id="DOCF118" href="groff.html_fot.html#FOOT118"><sup>118</sup></a>
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epsbb"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.psbb</code></strong> <var class="def-var-arguments">file</var><a class="copiable-link" href='#index-_002epsbb'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-psbb"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bllx_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[llx]</code></strong><a class="copiable-link" href='#index-_005cn_005bllx_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-llx"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005blly_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[lly]</code></strong><a class="copiable-link" href='#index-_005cn_005blly_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lly"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005burx_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[urx]</code></strong><a class="copiable-link" href='#index-_005cn_005burx_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-urx"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bury_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[ury]</code></strong><a class="copiable-link" href='#index-_005cn_005bury_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ury"></a>
+<a class="index-entry-id" id="index-PostScript_002c-bounding-box"></a>
+<a class="index-entry-id" id="index-bounding-box"></a>
+<p>Retrieve the bounding box of the PostScript image found in <var class="var">file</var>,
+which must conform to Adobe&rsquo;s <em class="dfn">Document Structuring Conventions</em>
+(DSC), locate a <code class="code">%%BoundingBox</code> comment, and store the (upper-,
+lower-, <span class="w-nolinebreak-text">-left</span><!-- /@w -->, <span class="w-nolinebreak-text">-right</span><!-- /@w -->) values into the registers <code class="code">llx</code>,
+<code class="code">lly</code>, <code class="code">urx</code>, and <code class="code">ury</code>. If an error occurs (for
+example, if no <code class="code">%%BoundingBox</code> comment is present), the formatter
+sets these registers to&nbsp;0.
+</p>
+<p>The search path for <var class="var">file</var> can be controlled with the <samp class="option">-I</samp>
+command-line option.
+</p></dd></dl>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a>, Previous: <a href="Postprocessor-Access.html">Postprocessor Access</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Missing-Unix-Version-7-ms-Macros.html b/doc/groff.html.node/Missing-Unix-Version-7-ms-Macros.html
new file mode 100644
index 0000000..99f7b62
--- /dev/null
+++ b/doc/groff.html.node/Missing-Unix-Version-7-ms-Macros.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Missing Unix Version 7 ms Macros (The GNU Troff Manual)</title>
+
+<meta name="description" content="Missing Unix Version 7 ms Macros (The GNU Troff Manual)">
+<meta name="keywords" content="Missing Unix Version 7 ms Macros (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Differences-from-AT_0026T-ms.html" rel="up" title="Differences from AT&amp;T ms">
+<link href="Differences-from-AT_0026T-ms.html" rel="prev" title="Differences from AT&amp;T ms">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Missing-Unix-Version-7-ms-Macros">
+<div class="nav-panel">
+<p>
+Previous: <a href="Differences-from-AT_0026T-ms.html" accesskey="p" rel="prev">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a>, Up: <a href="Differences-from-AT_0026T-ms.html" accesskey="u" rel="up">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Unix-Version-7-ms-macros-not-implemented-by-groff-ms">4.6.7.1 Unix Version 7 <samp class="file">ms</samp> macros not implemented by <code class="code">groff</code> <samp class="file">ms</samp></h4>
+
+<p>Several macros described in the Unix Version&nbsp;7 <samp class="file">ms</samp>
+documentation are unimplemented by <code class="code">groff</code> <samp class="file">ms</samp> because they
+are specific to the requirements of documents produced internally by
+Bell Laboratories, some of which also require a glyph for the Bell
+System logo that <code class="code">groff</code> does not support. These macros
+implemented several document type formats
+(<code class="code">EG</code>, <code class="code">IM</code>, <code class="code">MF</code>, <code class="code">MR</code>, <code class="code">TM</code>, <code class="code">TR</code>), were meaningful only in conjunction with the use of certain document
+types
+(<code class="code">AT</code>, <code class="code">CS</code>, <code class="code">CT</code>, <code class="code">OK</code>, <code class="code">SG</code>), stored the postal addresses of Bell Labs sites
+(<code class="code">HO</code>, <code class="code">IH</code>, <code class="code">MH</code>, <code class="code">PY</code>, <code class="code">WH</code>), or lacked a stable definition over time
+(<code class="code">UX</code>). To compatibly render historical <samp class="file">ms</samp> documents using these macros,
+we advise your documents to invoke the <code class="code">rm</code> request to remove any
+such macros it uses and then define replacements with an authentically
+typeset original at hand.<a class="footnote" id="DOCF17" href="groff.html_fot.html#FOOT17"><sup>17</sup></a> For
+informal purposes, a simple definition of <code class="code">UX</code> should maintain the
+readability of the document&rsquo;s substance.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.rm UX
+.ds UX Unix\&quot;
+</pre></div>
+</td></tr></table>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Motion-Quanta.html b/doc/groff.html.node/Motion-Quanta.html
new file mode 100644
index 0000000..5df1c72
--- /dev/null
+++ b/doc/groff.html.node/Motion-Quanta.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Motion Quanta (The GNU Troff Manual)</title>
+
+<meta name="description" content="Motion Quanta (The GNU Troff Manual)">
+<meta name="keywords" content="Motion Quanta (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Measurements.html" rel="up" title="Measurements">
+<link href="Default-Units.html" rel="next" title="Default Units">
+<link href="Measurements.html" rel="prev" title="Measurements">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Motion-Quanta">
+<div class="nav-panel">
+<p>
+Next: <a href="Default-Units.html" accesskey="n" rel="next">Default Units</a>, Previous: <a href="Measurements.html" accesskey="p" rel="prev">Measurements</a>, Up: <a href="Measurements.html" accesskey="u" rel="up">Measurements</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Motion-Quanta-1">5.3.1 Motion Quanta</h4>
+<a class="index-entry-id" id="index-motion-quanta"></a>
+<a class="index-entry-id" id="index-quanta_002c-motion"></a>
+
+<p>An output device&rsquo;s basic unit <code class="code">u</code> is not necessarily its smallest
+addressable length; <code class="code">u</code> can be smaller to avoid problems with
+integer roundoff. The minimum distances that a device can work with in
+the horizontal and vertical directions are termed its <em class="dfn">motion
+quanta</em>. Measurements are rounded to applicable motion quanta.
+Half-quantum fractions round toward zero.
+</p>
+<a class="index-entry-id" id="index-horizontal-motion-quantum-register-_0028_002eH_0029"></a>
+<a class="index-entry-id" id="index-motion-quantum_002c-horizontal_002c-register-_0028_002eH_0029"></a>
+<a class="index-entry-id" id="index-horizontal-resolution-register-_0028_002eH_0029"></a>
+<a class="index-entry-id" id="index-resolution_002c-horizontal_002c-register-_0028_002eH_0029"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002eH_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.H]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eH_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eH"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002eV_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.V]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eV_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eV"></a>
+<p>These read-only registers interpolate the horizontal and vertical motion
+quanta, respectively, of the output device in basic units.
+</p></dd></dl>
+
+<p>For example, we might draw short baseline rules on a terminal device as
+follows. See <a class="xref" href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tm \n[.H]
+ error&rarr; 24
+.nf
+\l'36u' 36u
+\l'37u' 37u
+ &rArr; _ 36u
+ &rArr; __ 37u
+</pre></div></div>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Numeric-Expressions.html b/doc/groff.html.node/Numeric-Expressions.html
new file mode 100644
index 0000000..7da6bd3
--- /dev/null
+++ b/doc/groff.html.node/Numeric-Expressions.html
@@ -0,0 +1,395 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Numeric Expressions (The GNU Troff Manual)</title>
+
+<meta name="description" content="Numeric Expressions (The GNU Troff Manual)">
+<meta name="keywords" content="Numeric Expressions (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Identifiers.html" rel="next" title="Identifiers">
+<link href="Measurements.html" rel="prev" title="Measurements">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Numeric-Expressions">
+<div class="nav-panel">
+<p>
+Next: <a href="Identifiers.html" accesskey="n" rel="next">Identifiers</a>, Previous: <a href="Measurements.html" accesskey="p" rel="prev">Measurements</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Numeric-Expressions-1">5.4 Numeric Expressions</h3>
+<a class="index-entry-id" id="index-numeric-expressions"></a>
+<a class="index-entry-id" id="index-expressions_002c-numeric"></a>
+
+<p>A <em class="dfn">numeric expression</em> evaluates to an integer: it can be as
+simple as a literal &lsquo;<samp class="samp">0</samp>&rsquo; or it can be a complex sequence of register
+and string interpolations interleaved with measurements and operators.
+</p>
+<p>GNU <code class="code">troff</code> provides a set of mathematical and logical operators
+familiar to programmers&mdash;as well as some unusual ones&mdash;but supports
+only integer arithmetic.<a class="footnote" id="DOCF35" href="groff.html_fot.html#FOOT35"><sup>35</sup></a> The internal data type
+used for computing results is usually a 32-bit signed integer, which
+suffices to represent magnitudes within a range of ±2
+billion.<a class="footnote" id="DOCF36" href="groff.html_fot.html#FOOT36"><sup>36</sup></a>
+</p>
+<a class="index-entry-id" id="index-arithmetic-operators"></a>
+<a class="index-entry-id" id="index-operators_002c-arithmetic"></a>
+<a class="index-entry-id" id="index-truncating-division"></a>
+<a class="index-entry-id" id="index-addition"></a>
+<a class="index-entry-id" id="index-subtraction"></a>
+<a class="index-entry-id" id="index-multiplication"></a>
+<a class="index-entry-id" id="index-division_002c-truncating"></a>
+<a class="index-entry-id" id="index-modulus"></a>
+<a class="index-entry-id" id="index-_002b"></a>
+<a class="index-entry-id" id="index-_002d"></a>
+<a class="index-entry-id" id="index-_002a"></a>
+<a class="index-entry-id" id="index-_002f"></a>
+<a class="index-entry-id" id="index-_0025"></a>
+<p>Arithmetic infix operators perform a function on the numeric expressions
+to their left and right; they are <code class="code">+</code> (addition), <code class="code">-</code>
+(subtraction), <code class="code">*</code> (multiplication), <code class="code">/</code> (truncating
+division), and <code class="code">%</code> (modulus). <em class="dfn">Truncating division</em> rounds to
+the integer nearer to zero, no matter how large the fractional portion.
+Overflow and division (or modulus) by zero are errors and abort
+evaluation of a numeric expression.
+<a class="index-entry-id" id="index-unary-arithmetic-operators"></a>
+<a class="index-entry-id" id="index-operators_002c-unary-arithmetic"></a>
+<a class="index-entry-id" id="index-negation"></a>
+<a class="index-entry-id" id="index-assertion-_0028arithmetic-operator_0029"></a>
+<a class="index-entry-id" id="index-_002d-1"></a>
+<a class="index-entry-id" id="index-_002b-1"></a>
+<a class="index-entry-id" id="index-if-request_002c-and-the-_0021-operator"></a>
+<a class="index-entry-id" id="index-while-request_002c-and-the-_0021-operator"></a>
+</p>
+<p>Arithmetic unary operators operate on the numeric expression to their
+right; they are <code class="code">-</code> (negation) and <code class="code">+</code> (assertion&mdash;for
+completeness; it does nothing). The unary minus must often be used
+with parentheses to avoid confusion with the decrementation operator,
+discussed below.
+</p>
+<p>Observe the rounding behavior and effect of negative operands on the
+modulus and truncating division operators.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr T 199/100
+.nr U 5/2
+.nr V (-5)/2
+.nr W 5/-2
+.nr X 5%2
+.nr Y (-5)%2
+.nr Z 5%-2
+T=\n[T] U=\n[U] V=\n[V] W=\n[W] X=\n[X] Y=\n[Y] Z=\n[Z]
+ &rArr; T=1 U=2 V=-2 W=-2 X=1 Y=-1 Z=1
+</pre></div></div>
+
+<p>The sign of the modulus of operands of mixed signs is determined by the
+sign of the first. Division and modulus operators satisfy the following
+property: given a dividend&nbsp;<var class="var">a</var> and a divisor&nbsp;<var class="var">b</var>, a
+quotient&nbsp;<var class="var">q</var> formed by &lsquo;<samp class="samp">(a / b)</samp>&rsquo; and a
+remainder&nbsp;<var class="var">r</var> by &lsquo;<samp class="samp">(a % b)</samp>&rsquo;, then <em class="math">qb + r = a</em>.
+</p>
+<a class="index-entry-id" id="index-scaling-operator"></a>
+<a class="index-entry-id" id="index-operator_002c-scaling"></a>
+<a class="index-entry-id" id="index-_003b"></a>
+<p>GNU <code class="code">troff</code>&rsquo;s scaling operator, used with parentheses as
+<code class="code">(<var class="var">c</var>;<var class="var">e</var>)</code>, evaluates a numeric expression&nbsp;<var class="var">e</var>
+using&nbsp;<var class="var">c</var> as the default scaling unit. If <var class="var">c</var> is omitted,
+scaling units are ignored in the evaluation of&nbsp;<var class="var">e</var>. This
+operator can save typing by avoiding the attachment of scaling units to
+every operand out of caution. Your macros can select a sensible default
+unit in case the user neglects to supply one.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; Indent by amount given in first argument; assume ens.
+.de Indent
+. in (n;\\$1)
+..
+</pre></div></div>
+
+<p>Without the scaling operator, the foregoing macro would, if called with
+a unitless argument, cause indentation by the <code class="code">in</code> request&rsquo;s
+default scaling unit (ems). The result would be twice as much
+indentation as expected.
+</p>
+<a class="index-entry-id" id="index-extremum-operators-_0028_003e_003f_002c-_003c_003f_0029"></a>
+<a class="index-entry-id" id="index-operators_002c-extremum-_0028_003e_003f_002c-_003c_003f_0029"></a>
+<a class="index-entry-id" id="index-maximum-operator"></a>
+<a class="index-entry-id" id="index-minimum-operator"></a>
+<a class="index-entry-id" id="index-_003e_003f"></a>
+<a class="index-entry-id" id="index-_003c_003f"></a>
+<p>GNU <code class="code">troff</code> also provides a pair of operators to compute the
+extrema of two operands: <code class="code">&gt;?</code> (maximum) and <code class="code">&lt;?</code> (minimum).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr slots 5
+.nr candidates 3
+.nr salaries (\n[slots] &lt;? \n[candidates])
+Looks like we'll end up paying \n[salaries] salaries.
+ &rArr; Looks like we'll end up paying 3 salaries.
+</pre></div></div>
+
+<a class="index-entry-id" id="index-comparison-operators"></a>
+<a class="index-entry-id" id="index-operators_002c-comparison"></a>
+<a class="index-entry-id" id="index-greater-than-_0028or-equal-to_0029-operator"></a>
+<a class="index-entry-id" id="index-less-than-_0028or-equal-to_0029-operator"></a>
+<a class="index-entry-id" id="index-equality-operator"></a>
+<a class="index-entry-id" id="index-_003c"></a>
+<a class="index-entry-id" id="index-_003e"></a>
+<a class="index-entry-id" id="index-_003e_003d"></a>
+<a class="index-entry-id" id="index-_003c_003d"></a>
+<a class="index-entry-id" id="index-_003d"></a>
+<a class="index-entry-id" id="index-_003d_003d"></a>
+<p>Comparison operators comprise <code class="code">&lt;</code> (less than), <code class="code">&gt;</code> (greater
+than), <code class="code">&lt;=</code> (less than or equal), <code class="code">&gt;=</code> (greater than or
+equal), and <code class="code">=</code> (equal). <code class="code">==</code> is a synonym for <code class="code">=</code>.
+When evaluated, a comparison is replaced with &lsquo;<samp class="samp">0</samp>&rsquo; if it is false
+and &lsquo;<samp class="samp">1</samp>&rsquo; if true. In the <code class="code">roff</code> language, positive values are
+true, others false.
+</p>
+<a class="index-entry-id" id="index-logical-operators"></a>
+<a class="index-entry-id" id="index-operators_002c-logical"></a>
+<a class="index-entry-id" id="index-logical-_0060_0060and_0027_0027-operator"></a>
+<a class="index-entry-id" id="index-logical-conjunction-operator"></a>
+<a class="index-entry-id" id="index-logical-_0060_0060or_0027_0027-operator"></a>
+<a class="index-entry-id" id="index-logical-disjunction-operator"></a>
+<a class="index-entry-id" id="index-_0026"></a>
+<a class="index-entry-id" id="index-_003a"></a>
+<p>We can operate on truth values with the logical operators <code class="code">&amp;</code>
+(logical conjunction or &ldquo;and&rdquo;) and <code class="code">:</code> (logical disjunction or
+&ldquo;or&rdquo;). They evaluate as comparison operators do.
+</p>
+<a class="index-entry-id" id="index-_0021"></a>
+<a class="index-entry-id" id="index-complementation_002c-logical"></a>
+<a class="index-entry-id" id="index-logical-complementation-operator"></a>
+<a class="index-entry-id" id="index-logical-not_002c-limitation-in-expression"></a>
+<a class="index-entry-id" id="index-expression_002c-limitation-of-logical-not-in"></a>
+<p>A logical complementation (&ldquo;not&rdquo;) operator, <code class="code">!</code>, works only
+within <code class="code">if</code>, <code class="code">ie</code>, and <code class="code">while</code> requests.
+Furthermore, <code class="code">!</code> is recognized only at the beginning of a numeric
+expression not contained by another numeric expression. In other words,
+it must be the &ldquo;outermost&rdquo; operator. Including it elsewhere in the
+expression produces a warning in the &lsquo;<samp class="samp">number</samp>&rsquo; category
+(see <a class="pxref" href="Warnings.html">Warnings</a>), and its expression evaluates false. This
+unfortunate limitation maintains compatibility with <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code>. Test a numeric expression for falsity by
+comparing it to a false value.<a class="footnote" id="DOCF37" href="groff.html_fot.html#FOOT37"><sup>37</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr X 1
+.nr Y 0
+.\&quot; This does not work as expected.
+.if (\n[X])&amp;(!\n[Y]) .nop A: X is true, Y is false
+.
+.\&quot; Use this construct instead.
+.if (\n[X])&amp;(\n[Y]&lt;=0) .nop B: X is true, Y is false
+ error&rarr; warning: expected numeric expression, got '!'
+ &rArr; B: X is true, Y is false
+</pre></div></div>
+
+<a class="index-entry-id" id="index-parentheses"></a>
+<a class="index-entry-id" id="index-order-of-evaluation-in-expressions"></a>
+<a class="index-entry-id" id="index-expression_002c-order-of-evaluation"></a>
+<a class="index-entry-id" id="index-_0028"></a>
+<a class="index-entry-id" id="index-_0029"></a>
+<p>The <code class="code">roff</code> language has no operator precedence: expressions are
+evaluated strictly from left to right, in contrast to schoolhouse
+arithmetic. Use parentheses <code class="code">(</code> <code class="code">)</code> to impose a desired
+precedence upon subexpressions.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr X 3+5*4
+.nr Y (3+5)*4
+.nr Z 3+(5*4)
+X=\n[X] Y=\n[Y] Z=\n[Z]
+ &rArr; X=32 Y=32 Z=23
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_002b_002c-and-page-motion"></a>
+<a class="index-entry-id" id="index-_002d_002c-and-page-motion"></a>
+<a class="index-entry-id" id="index-motion-operators"></a>
+<a class="index-entry-id" id="index-operators_002c-motion"></a>
+<a class="index-entry-id" id="index-_002b-_0028unary_0029"></a>
+<a class="index-entry-id" id="index-_002d-_0028unary_0029"></a>
+<p>For many requests and escape sequences that cause motion on the page,
+the unary operators <code class="code">+</code> and <code class="code">-</code> work differently when leading
+a numeric expression. They then indicate a motion relative to the
+drawing position: positive is down in vertical contexts, right in
+horizontal ones.
+</p>
+<a class="index-entry-id" id="index-bp-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-in-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-ll-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-lt-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-nm-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-nr-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-pl-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-pn-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-po-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-ps-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-pvs-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-rt-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-ti-request_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-_005cH_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-_005cR_002c-using-_002b-and-_002d-with"></a>
+<a class="index-entry-id" id="index-_005cs_002c-using-_002b-and-_002d-with"></a>
+<p><code class="code">+</code> and <code class="code">-</code> are also treated differently by the following
+requests and escape sequences: <code class="code">bp</code>, <code class="code">in</code>, <code class="code">ll</code>,
+<code class="code">lt</code>, <code class="code">nm</code>, <code class="code">nr</code>, <code class="code">pl</code>, <code class="code">pn</code>, <code class="code">po</code>,
+<code class="code">ps</code>, <code class="code">pvs</code>, <code class="code">rt</code>, <code class="code">ti</code>, <code class="code">\H</code>, <code class="code">\R</code>, and
+<code class="code">\s</code>. Here, leading plus and minus signs serve as incrementation
+and decrementation operators, respectively. To negate an expression,
+subtract it from zero or include the unary minus in parentheses with its
+argument. See <a class="xref" href="Setting-Registers.html">Setting Registers</a>, for examples.
+</p>
+<a class="index-entry-id" id="index-_007c"></a>
+<a class="index-entry-id" id="index-_007c_002c-and-page-motion"></a>
+<a class="index-entry-id" id="index-absolute-_0028sic_0029-position-operator-_0028_007c_0029"></a>
+<a class="index-entry-id" id="index-position_002c-absolute-_0028sic_0029-operator-_0028_007c_0029"></a>
+<a class="index-entry-id" id="index-boundary_002drelative-motion-operator-_0028_007c_0029"></a>
+<p>A leading <code class="code">|</code> operator indicates a motion relative not to the
+drawing position but to a boundary. For horizontal motions, the
+measurement specifies a distance relative to a drawing position
+corresponding to the beginning of the <em class="emph">input</em> line. By default,
+tab stops reckon movements in this way. Most escape sequences do not;
+<code class="code">|</code> tells them to do so.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Mind the \h'1.2i'gap.
+.br
+Mind the \h'|1.2i'gap.
+.br
+Mind the
+\h'|1.2i'gap.
+ &rArr; Mind the gap.
+ &rArr; Mind the gap.
+ &rArr; Mind the gap.
+</pre></div></div>
+
+<p>One use of this feature is to define macros whose scope is limited to
+the output they format.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; underline word $1 with trailing punctuation $2
+.de Underline
+. nop \\$1\l'|0\[ul]'\\$2
+..
+Typographical emphasis is best used
+.Underline sparingly .
+</pre></div></div>
+
+<p>In the above example, &lsquo;<samp class="samp">|0</samp>&rsquo; specifies a negative motion from the
+current position (at the end of the argument just emitted, <code class="code">\$1</code>)
+to the beginning of the input line. Thus, the <code class="code">\l</code> escape sequence
+in this case draws a line from right to left. A macro call occurs at
+the beginning of an input line;<a class="footnote" id="DOCF38" href="groff.html_fot.html#FOOT38"><sup>38</sup></a> if the <code class="code">|</code>
+operator were omitted, then the underline would be drawn at zero
+distance from the current position, producing device-dependent, and
+likely undesirable, results. On the &lsquo;<samp class="samp">ps</samp>&rsquo; output device, it
+underlines the period.
+</p>
+<p>For vertical motions, the <code class="code">|</code> operator specifies a distance from
+the first text baseline on the page or in the current
+diversion,<a class="footnote" id="DOCF39" href="groff.html_fot.html#FOOT39"><sup>39</sup></a> using the current vertical
+spacing.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">A
+.br
+B \Z'C'\v'|0'D
+ &rArr; A D
+ &rArr; B C
+</pre></div></div>
+
+<p>In the foregoing example, we&rsquo;ve used the <code class="code">\Z</code> escape sequence
+(see <a class="pxref" href="Page-Motions.html">Page Motions</a>) to restore the drawing position after formatting
+&lsquo;<samp class="samp">C</samp>&rsquo;, then moved vertically to the first text baseline on the page.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cB_0027anything_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\B<code class="code">'</code></code><span class="r"><i class="slanted">anything</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cB_0027anything_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cB"></a>
+<a class="index-entry-id" id="index-numeric-expression_002c-valid"></a>
+<a class="index-entry-id" id="index-valid-numeric-expression"></a>
+<p>Interpolate&nbsp;1 if <var class="var">anything</var> is a valid numeric expression,
+and&nbsp;0 otherwise. The delimiter need not be a neutral apostrophe;
+see <a class="ref" href="Delimiters.html">Delimiters</a>.
+</p></dd></dl>
+
+<p>You might use <code class="code">\B</code> along with the <code class="code">if</code> request to filter out
+invalid macro or string arguments. See <a class="xref" href="Conditionals-and-Loops.html">Conditionals and Loops</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; Indent by amount given in first argument; assume ens.
+.de Indent
+. if \B'\\$1' .in (n;\\$1)
+..
+</pre></div></div>
+
+<p>A register interpolated as an operand in a numeric expression must have
+an Arabic format; luckily, this is the default. See <a class="xref" href="Assigning-Register-Formats.html">Assigning Register Formats</a>.
+</p>
+<a class="index-entry-id" id="index-space-characters_002c-in-expressions"></a>
+<a class="index-entry-id" id="index-expressions_002c-and-space-characters"></a>
+<p>Because spaces separate arguments to requests, spaces are not allowed in
+numeric expressions unless the (sub)expression containing them is
+surrounded by parentheses. See <a class="xref" href="Invoking-Requests.html">Invoking Requests</a>, and
+<a class="ref" href="Conditionals-and-Loops.html">Conditionals and Loops</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nf
+.nr a 1+2 + 2+1
+\na
+ error&rarr; expected numeric expression, got a space
+ &rArr; 3
+.nr a 1+(2 + 2)+1
+\na
+ &rArr; 6
+</pre></div></div>
+
+<p>The <code class="code">nr</code> request (see <a class="pxref" href="Setting-Registers.html">Setting Registers</a>) expects its second and
+optional third arguments to be numeric expressions; a bare <code class="code">+</code> does
+not qualify, so our first attempt got a warning.
+</p>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Identifiers.html">Identifiers</a>, Previous: <a href="Measurements.html">Measurements</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Obsolete-Command.html b/doc/groff.html.node/Obsolete-Command.html
new file mode 100644
index 0000000..b656c38
--- /dev/null
+++ b/doc/groff.html.node/Obsolete-Command.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Obsolete Command (The GNU Troff Manual)</title>
+
+<meta name="description" content="Obsolete Command (The GNU Troff Manual)">
+<meta name="keywords" content="Obsolete Command (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Command-Reference.html" rel="up" title="Command Reference">
+<link href="Device-Control-Commands.html" rel="prev" title="Device Control Commands">
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Obsolete-Command">
+<div class="nav-panel">
+<p>
+Previous: <a href="Device-Control-Commands.html" accesskey="p" rel="prev">Device Control Commands</a>, Up: <a href="Command-Reference.html" accesskey="u" rel="up">Command Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Obsolete-Command-1">6.1.2.5 Obsolete Command</h4>
+<p>In <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> output, the writing of a single glyph is
+mostly done by a very strange command that combines a horizontal move
+and a single character giving the glyph name. It doesn&rsquo;t have a command
+code, but is represented by a 3-character argument consisting of exactly
+2&nbsp;digits and a character.
+</p>
+<dl class="table">
+<dt><var class="var">dd</var><var class="var">g</var></dt>
+<dd><p>Move right <var class="var">dd</var> (exactly two decimal digits) basic units &lsquo;<samp class="samp">u</samp>&rsquo;,
+then print glyph&nbsp;<var class="var">g</var> (represented as a single character).
+</p>
+<p>In GNU <code class="code">troff</code>, arbitrary syntactical space around and within this
+command is allowed. Only when a preceding command on the same line ends
+with an argument of variable length is a separating space obligatory.
+In <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, large clusters of these and other
+commands are used, mostly without spaces; this made such output almost
+unreadable.
+</p></dd>
+</dl>
+
+<p>For modern high-resolution devices, this command does not make sense
+because the width of the glyphs can become much larger than two decimal
+digits. In <code class="code">gtroff</code>, this is only used for the devices <code class="code">X75</code>,
+<code class="code">X75-12</code>, <code class="code">X100</code>, and <code class="code">X100-12</code>. For other devices, the
+commands &lsquo;<samp class="samp">t</samp>&rsquo; and &lsquo;<samp class="samp">u</samp>&rsquo; provide a better functionality.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Operator-Index.html b/doc/groff.html.node/Operator-Index.html
new file mode 100644
index 0000000..b70458f
--- /dev/null
+++ b/doc/groff.html.node/Operator-Index.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Operator Index (The GNU Troff Manual)</title>
+
+<meta name="description" content="Operator Index (The GNU Troff Manual)">
+<meta name="keywords" content="Operator Index (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Register-Index.html" rel="next" title="Register Index">
+<link href="Escape-Sequence-Index.html" rel="prev" title="Escape Sequence Index">
+<style type="text/css">
+<!--
+a.summary-letter-printindex {text-decoration: none}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+td.printindex-index-entry {vertical-align: top}
+td.printindex-index-section {vertical-align: top}
+th.entries-header-printindex {text-align:left}
+th.sections-header-printindex {text-align:left}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="appendix-level-extent" id="Operator-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="Register-Index.html" accesskey="n" rel="next">Register Index</a>, Previous: <a href="Escape-Sequence-Index.html" accesskey="p" rel="prev">Escape Sequence Index</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="appendix" id="Operator-Index-1">Appendix D Operator Index</h2>
+
+<div class="printindex op-printindex">
+<table class="op-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Operator-Index_op_symbol-1"><b>!</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-2"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-3"><b>&amp;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-4"><b>(</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-5"><b>)</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-6"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-7"><b>+</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-8"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-9"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-10"><b>:</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-11"><b>;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-12"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-13"><b>=</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-14"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-15"><b>|</b></a>
+</td></tr></table>
+<table class="op-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-1">!</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_0021"><code>!</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-2">%</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_0025"><code>%</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-3">&amp;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_0026"><code>&amp;</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-4">(</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_0028"><code>(</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-5">)</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_0029"><code>)</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-6">*</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_002a"><code>*</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-7">+</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_002b"><code>+</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_002b-1"><code>+</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_002b-_0028unary_0029"><code>+ <span class="r">(unary)</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-8">-</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_002d"><code>-</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_002d-1"><code>-</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_002d-_0028unary_0029"><code>- <span class="r">(unary)</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-9">/</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_002f"><code>/</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-10">:</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_003a"><code>:</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-11">;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_003b"><code>;</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-12">&lt;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_003c"><code>&lt;</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_003c_003d"><code>&lt;=</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_003c_003f"><code>&lt;?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-13">=</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_003d"><code>=</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_003d_003d"><code>==</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-14">&gt;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_003e"><code>&gt;</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_003e_003d"><code>&gt;=</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_003e_003f"><code>&gt;?</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Operator-Index_op_symbol-15">|</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Numeric-Expressions.html#index-_007c"><code>|</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Numeric-Expressions.html">Numeric Expressions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="op-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Operator-Index_op_symbol-1"><b>!</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-2"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-3"><b>&amp;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-4"><b>(</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-5"><b>)</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-6"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-7"><b>+</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-8"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-9"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-10"><b>:</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-11"><b>;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-12"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-13"><b>=</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-14"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Operator-Index_op_symbol-15"><b>|</b></a>
+</td></tr></table>
+</div>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Register-Index.html">Register Index</a>, Previous: <a href="Escape-Sequence-Index.html">Escape Sequence Index</a>, Up: <a href="index.html">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Operators-in-Conditionals.html b/doc/groff.html.node/Operators-in-Conditionals.html
new file mode 100644
index 0000000..a04b761
--- /dev/null
+++ b/doc/groff.html.node/Operators-in-Conditionals.html
@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Operators in Conditionals (The GNU Troff Manual)</title>
+
+<meta name="description" content="Operators in Conditionals (The GNU Troff Manual)">
+<meta name="keywords" content="Operators in Conditionals (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditionals-and-Loops.html" rel="up" title="Conditionals and Loops">
+<link href="if_002dthen.html" rel="next" title="if-then">
+<link href="Conditionals-and-Loops.html" rel="prev" title="Conditionals and Loops">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Operators-in-Conditionals">
+<div class="nav-panel">
+<p>
+Next: <a href="if_002dthen.html" accesskey="n" rel="next">if-then</a>, Previous: <a href="Conditionals-and-Loops.html" accesskey="p" rel="prev">Conditionals and Loops</a>, Up: <a href="Conditionals-and-Loops.html" accesskey="u" rel="up">Conditionals and Loops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Operators-in-Conditionals-1">5.23.1 Operators in Conditionals</h4>
+
+<a class="index-entry-id" id="index-if-request_002c-operators-to-use-with"></a>
+<a class="index-entry-id" id="index-ie-request_002c-operators-to-use-with"></a>
+<a class="index-entry-id" id="index-while-request_002c-operators-to-use-with"></a>
+<a class="index-entry-id" id="index-conditional-expressions"></a>
+<a class="index-entry-id" id="index-expressions_002c-conditional"></a>
+<p>In <code class="code">if</code>, <code class="code">ie</code>, and <code class="code">while</code> requests, in addition to the
+numeric expressions described in <a class="ref" href="Numeric-Expressions.html">Numeric Expressions</a>, several
+Boolean operators are available; the members of this expanded class are
+termed <em class="dfn">conditional expressions</em>.
+</p>
+<dl class="table">
+<dt><code class="code">c <var class="var">glyph</var></code></dt>
+<dd><p>True if <var class="var">glyph</var> is available, where <var class="var">glyph</var> is an ordinary
+character, a special character &lsquo;<samp class="samp">\(<var class="var">xx</var></samp>&rsquo; or &lsquo;<samp class="samp">\[<var class="var">xxx</var>]</samp>&rsquo;,
+&lsquo;<samp class="samp">\N'<var class="var">xxx</var>'</samp>&rsquo;, or has been defined by any of the <code class="code">char</code>,
+<code class="code">fchar</code>, <code class="code">fschar</code>, or <code class="code">schar</code> requests.
+</p>
+</dd>
+<dt><code class="code">d <var class="var">name</var></code></dt>
+<dd><p>True if a string, macro, diversion, or request called <var class="var">name</var> exists.
+</p>
+</dd>
+<dt><code class="code">e</code></dt>
+<dd><p>True if the current page is even-numbered.
+</p>
+</dd>
+<dt><code class="code">F <var class="var">font</var></code></dt>
+<dd><p>True if <var class="var">font</var> exists. <var class="var">font</var> is handled as if it were opened
+with the <code class="code">ft</code> request (that is, font translation and styles are
+applied), without actually mounting it.
+</p>
+</dd>
+<dt><code class="code">m <var class="var">color</var></code></dt>
+<dd><p>True if <var class="var">color</var> is defined.
+</p>
+</dd>
+<dt id='index-conditional-output-for-terminal-_0028TTY_0029'><span><code class="code">n</code><a class="copiable-link" href='#index-conditional-output-for-terminal-_0028TTY_0029'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TTY_002c-conditional-output-for"></a>
+<a class="index-entry-id" id="index-terminal_002c-conditional-output-for"></a>
+<p>True if the document is being processed in <code class="code">nroff</code> mode.
+See <a class="xref" href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>.
+</p>
+</dd>
+<dt><code class="code">o</code></dt>
+<dd><p>True if the current page is odd-numbered.
+</p>
+</dd>
+<dt><code class="code">r <var class="var">register</var></code></dt>
+<dd><p>True if <var class="var">register</var> exists.
+</p>
+</dd>
+<dt><code class="code">S <var class="var">style</var></code></dt>
+<dd><p>True if <var class="var">style</var> is available for the current font family. Font
+translation is applied.
+</p>
+</dd>
+<dt><code class="code">t</code></dt>
+<dd><p>True if the document is being processed in <code class="code">troff</code> mode.
+See <a class="xref" href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a>.
+</p>
+<a class="index-entry-id" id="index-vtroff"></a>
+</dd>
+<dt><code class="code">v</code></dt>
+<dd><p>Always false. This condition is recognized only for compatibility with
+certain other <code class="code">troff</code> implementations.<a class="footnote" id="DOCF88" href="groff.html_fot.html#FOOT88"><sup>88</sup></a>
+</p></dd>
+</dl>
+
+<p>If the first argument to an <code class="code">if</code>, <code class="code">ie</code>, or <code class="code">while</code>
+request begins with a non-alphanumeric character apart from <code class="code">!</code>
+(see below); it performs an <i class="slanted">output comparison test</i>.
+<a class="footnote" id="DOCF89" href="groff.html_fot.html#FOOT89"><sup>89</sup></a>
+</p>
+<a class="index-entry-id" id="index-output-comparison-operator"></a>
+<dl class="table">
+<dt><code class="code"><code class="code">'</code><var class="var">xxx</var><code class="code">'</code><var class="var">yyy</var><code class="code">'</code></code></dt>
+<dd><p>True if formatting the comparands <var class="var">xxx</var> and <var class="var">yyy</var> produces the
+same output commands. The delimiter need not be a neutral apostrophe:
+the output comparison operator accepts the same delimiters as most
+escape sequences; see <a class="ref" href="Delimiters.html">Delimiters</a>. This <em class="dfn">output comparison
+operator</em> formats <var class="var">xxx</var> and <var class="var">yyy</var> in separate environments;
+after the comparison, the resulting data are discarded.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ie &quot;|&quot;\fR|\fP&quot; true
+.el false
+ &rArr; true
+</pre></div></div>
+
+<p>The resulting glyph properties, including font family, style, size, and
+slant, must match, but not necessarily the requests and/or escape
+sequences used to obtain them. In the previous example, &lsquo;<samp class="samp">|</samp>&rsquo; and
+&lsquo;<samp class="samp">\fR|\fP</samp>&rsquo; result in &lsquo;<samp class="samp">|</samp>&rsquo; glyphs in the same typefaces at the
+same positions, so the comparands are equal. If &lsquo;<samp class="samp">.ft&nbsp;I</samp>&rsquo; had
+been added before the &lsquo;<samp class="samp">.ie</samp>&rsquo;, they would differ: the first &lsquo;<samp class="samp">|</samp>&rsquo;
+would produce an italic &lsquo;<samp class="samp">|</samp>&rsquo;, not a roman one. Motions must match
+in orientation and magnitude to within the applicable horizontal and
+vertical motion quanta of the device, after rounding. &lsquo;<samp class="samp">.if
+&quot;\u\d&quot;\v'0'&quot;</samp>&rsquo; is false even though both comparands result in zero net
+motion, because motions are not interpreted or optimized but sent as-is
+to the output.<a class="footnote" id="DOCF90" href="groff.html_fot.html#FOOT90"><sup>90</sup></a> On the other hand, &lsquo;<samp class="samp">.if &quot;\d&quot;\v'0.5m'&quot;</samp>&rsquo; is true, because
+<code class="code">\d</code> is defined as a downward motion of one-half em.<a class="footnote" id="DOCF91" href="groff.html_fot.html#FOOT91"><sup>91</sup></a>
+</p>
+<a class="index-entry-id" id="index-string-comparison"></a>
+<a class="index-entry-id" id="index-comparison-of-strings"></a>
+<p>Surround the comparands with <code class="code">\?</code> to avoid formatting them; this
+causes them to be compared character by character, as with string
+comparisons in other programming languages.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ie &quot;\?|\?&quot;\?\fR|\fP\?&quot; true
+.el false
+ &rArr; false
+</pre></div></div>
+
+<a class="index-entry-id" id="index-_005c_003f_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-_005c_003f"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005c_003f"></a>
+<p>Since comparands protected with <code class="code">\?</code> are read in copy mode
+(see <a class="pxref" href="Copy-Mode.html">Copy Mode</a>), they need not even be valid <code class="code">groff</code> syntax.
+The escape character is still lexically recognized, however, and
+consumes the next character.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds a \[
+.ds b \[
+.if '\?\*a\?'\?\*b\?' a and b equivalent
+.if '\?\\?'\?\\?' backslashes equivalent
+ &rArr; a and b equivalent
+</pre></div></div>
+</dd>
+</dl>
+
+<p>The above operators can&rsquo;t be combined with most others, but a leading
+&lsquo;<samp class="samp">!</samp>&rsquo;, not followed immediately by spaces or tabs, complements an
+expression.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr x 1
+.ie !r x register x is not defined
+.el register x is defined
+ &rArr; register x is defined
+</pre></div></div>
+
+<p>Spaces and tabs are optional immediately after the &lsquo;<samp class="samp">c</samp>&rsquo;, &lsquo;<samp class="samp">d</samp>&rsquo;,
+&lsquo;<samp class="samp">F</samp>&rsquo;, &lsquo;<samp class="samp">m</samp>&rsquo;, &lsquo;<samp class="samp">r</samp>&rsquo;, and &lsquo;<samp class="samp">S</samp>&rsquo; operators, but right after
+&lsquo;<samp class="samp">!</samp>&rsquo;, they end the predicate and the conditional evaluates
+true.<a class="footnote" id="DOCF92" href="groff.html_fot.html#FOOT92"><sup>92</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr x 1
+.ie ! r x register x is not defined
+.el register x is defined
+ &rArr; r x register x is not defined
+</pre></div></div>
+
+<p>The unexpected &lsquo;<samp class="samp">r x</samp>&rsquo; in the output is a clue that our conditional
+was not interpreted as we planned, but matters may not always be so
+obvious.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="if_002dthen.html">if-then</a>, Previous: <a href="Conditionals-and-Loops.html">Conditionals and Loops</a>, Up: <a href="Conditionals-and-Loops.html">Conditionals and Loops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Optional-man-extensions.html b/doc/groff.html.node/Optional-man-extensions.html
new file mode 100644
index 0000000..035f410
--- /dev/null
+++ b/doc/groff.html.node/Optional-man-extensions.html
@@ -0,0 +1,264 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Optional man extensions (The GNU Troff Manual)</title>
+
+<meta name="description" content="Optional man extensions (The GNU Troff Manual)">
+<meta name="keywords" content="Optional man extensions (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="man.html" rel="up" title="man">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Optional-man-extensions">
+<div class="nav-panel">
+<p>
+Up: <a href="man.html" accesskey="u" rel="up"><samp class="file">man</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Optional-man-extensions-1">4.1.1 Optional <samp class="file">man</samp> extensions</h4>
+
+<a class="index-entry-id" id="index-man_002elocal"></a>
+<p>Use the file <samp class="file">man.local</samp> for local extensions to the <code class="code">man</code>
+macros or for style changes.
+</p>
+<ul class="mini-toc">
+<li><a href="#Custom-headers-and-footers" accesskey="1">Custom headers and footers</a></li>
+<li><a href="#Ultrix_002dspecific-man-macros" accesskey="2">Ultrix-specific man macros</a></li>
+<li><a href="#Simple-example" accesskey="3">Simple example</a></li>
+</ul>
+<div class="unnumberedsubsubsec-level-extent" id="Custom-headers-and-footers">
+<h4 class="unnumberedsubsubsec">Custom headers and footers</h4>
+<a class="index-entry-id" id="index-man-macros_002c-custom-headers-and-footers"></a>
+
+<p>In <code class="code">groff</code> versions 1.18.2 and later, you can specify custom
+headers and footers by redefining the following macros in
+<samp class="file">man.local</samp>.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002ePT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PT</code></strong><a class="copiable-link" href='#index-_002ePT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PT-_005bman_005d"></a>
+<p>Control the content of the headers. Normally, the header prints the
+command name and section number on either side, and the optional fifth
+argument to <code class="code">TH</code> in the center.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eBT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.BT</code></strong><a class="copiable-link" href='#index-_002eBT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-BT-_005bman_005d"></a>
+<p>Control the content of the footers. Normally, the footer prints the
+page number and the third and fourth arguments to <code class="code">TH</code>.
+</p>
+<p>Use the <code class="code">FT</code> register to specify the footer position. The default
+is &minus;0.5<span class="dmn">i</span>.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Ultrix_002dspecific-man-macros">
+<h4 class="unnumberedsubsubsec">Ultrix-specific man macros</h4>
+<a class="index-entry-id" id="index-Ultrix_002dspecific-man-macros"></a>
+<a class="index-entry-id" id="index-man-macros_002c-Ultrix_002dspecific"></a>
+
+<a class="index-entry-id" id="index-man_002eultrix"></a>
+<p>The <code class="code">groff</code> source distribution includes a file named
+<samp class="file">man.ultrix</samp>, containing macros compatible with the Ultrix variant
+of <code class="code">man</code>. Copy this file into <samp class="file">man.local</samp> (or use the
+<code class="code">mso</code> request to load it) to enable the following macros.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eCT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.CT</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">key</i></span></var><a class="copiable-link" href='#index-_002eCT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-CT-_005bman_005d"></a>
+<p>Print &lsquo;<samp class="samp">&lt;CTRL/<var class="var">key</var>&gt;</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eCW"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.CW</code></strong><a class="copiable-link" href='#index-_002eCW'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-CW-_005bman_005d"></a>
+<p>Print subsequent text using a &ldquo;constant-width&rdquo; (monospaced) typeface
+(Courier roman).
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDs"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.Ds</code></strong><a class="copiable-link" href='#index-_002eDs'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Ds-_005bman_005d"></a>
+<p>Begin a non-filled display.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDe"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.De</code></strong><a class="copiable-link" href='#index-_002eDe'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-De-_005bman_005d"></a>
+<p>End a non-filled display started with <code class="code">Ds</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eEX"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EX</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">indent</i></span>]</var><a class="copiable-link" href='#index-_002eEX'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EX-_005bman_005d"></a>
+<p>Begin a non-filled display using a monospaced typeface (Courier roman).
+Use the optional <var class="var">indent</var> argument to indent the display.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eEE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EE</code></strong><a class="copiable-link" href='#index-_002eEE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EE-_005bman_005d"></a>
+<p>End a non-filled display started with <code class="code">EX</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eG"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.G</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eG'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-G-_005bman_005d"></a>
+<p>Set <var class="var">text</var> in Helvetica. If no text is present on the line where
+the macro is called, then the text of the next line appears in
+Helvetica.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eGL"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.GL</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eGL'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-GL-_005bman_005d"></a>
+<p>Set <var class="var">text</var> in Helvetica oblique. If no text is present on the line
+where the macro is called, then the text of the next line appears in
+Helvetica Oblique.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eHB"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.HB</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eHB'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-HB-_005bman_005d"></a>
+<p>Set <var class="var">text</var> in Helvetica bold. If no text is present on the line
+where the macro is called, then all text up to the next <code class="code">HB</code>
+appears in Helvetica bold.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eTB"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TB</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eTB'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TB-_005bman_005d"></a>
+<p>Identical to <code class="code">HB</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eMS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.MS</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">title</i></span> <span class="r"><i class="slanted">sect</i></span> [<span class="r"><i class="slanted">punct</i></span>]</var><a class="copiable-link" href='#index-_002eMS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MS-_005bman_005d"></a>
+<p>Set a man page reference in Ultrix format. The <var class="var">title</var> is in
+Courier instead of italic. Optional punctuation follows the section
+number without an intervening space.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eNT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NT</code></strong> <var class="def-var-arguments">[<code class="code">C</code>] [<span class="r"><i class="slanted">title</i></span>]</var><a class="copiable-link" href='#index-_002eNT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-NT-_005bman_005d"></a>
+<p>Begin a note. Print the optional <span class="r"><i class="slanted">title</i></span>, or the word &ldquo;Note&rdquo;,
+centered on the page. Text following the macro makes up the body of the
+note, and is indented on both sides. If the first argument is <code class="code">C</code>,
+the body of the note is printed centered (the second argument replaces
+the word &ldquo;Note&rdquo; if specified).
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eNE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NE</code></strong><a class="copiable-link" href='#index-_002eNE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-NE-_005bman_005d"></a>
+<p>End a note begun with <code class="code">NT</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002ePN"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PN</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">path</i></span> [<span class="r"><i class="slanted">punct</i></span>]</var><a class="copiable-link" href='#index-_002ePN'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PN-_005bman_005d"></a>
+<p>Set the path name in a monospaced typeface (Courier roman), followed by
+optional punctuation.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002ePn"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.Pn</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">punct</i></span>] <span class="r"><i class="slanted">path</i></span> [<span class="r"><i class="slanted">punct</i></span>]</var><a class="copiable-link" href='#index-_002ePn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Pn-_005bman_005d"></a>
+<p>If called with two arguments, identical to <code class="code">PN</code>. If called with
+three arguments, set the second argument in a monospaced typeface
+(Courier roman), bracketed by the first and third arguments in the
+current font.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eR"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.R</code></strong><a class="copiable-link" href='#index-_002eR'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-R-_005bman_005d"></a>
+<p>Switch to roman font and turn off any underlining in effect.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eRN"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RN</code></strong><a class="copiable-link" href='#index-_002eRN'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RN-_005bman_005d"></a>
+<p>Print the string &lsquo;<samp class="samp">&lt;RETURN&gt;</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eVS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.VS</code></strong> <var class="def-var-arguments">[<code class="code">4</code>]</var><a class="copiable-link" href='#index-_002eVS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-VS-_005bman_005d"></a>
+<p>Start printing a change bar in the margin if the number&nbsp;<code class="code">4</code> is
+specified. Otherwise, this macro does nothing.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eVE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.VE</code></strong><a class="copiable-link" href='#index-_002eVE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-VE-_005bman_005d"></a>
+<p>End printing the change bar begun by <code class="code">VS</code>.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Simple-example">
+<h4 class="unnumberedsubsubsec">Simple example</h4>
+
+<p>The following example <samp class="file">man.local</samp> file alters the <code class="code">SH</code> macro
+to add some extra vertical space before printing the heading. Headings
+are printed in Helvetica bold.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; Make the heading fonts Helvetica
+.ds HF HB
+.
+.\&quot; Put more space in front of headings.
+.rn SH SH-orig
+.de SH
+. if t .sp (u;\\n[PD]*2)
+. SH-orig \\$*
+..
+</pre></div></div>
+
+
+
+</div>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Up: <a href="man.html"><samp class="file">man</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Other-Differences.html b/doc/groff.html.node/Other-Differences.html
new file mode 100644
index 0000000..6a92cad
--- /dev/null
+++ b/doc/groff.html.node/Other-Differences.html
@@ -0,0 +1,248 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Other Differences (The GNU Troff Manual)</title>
+
+<meta name="description" content="Other Differences (The GNU Troff Manual)">
+<meta name="keywords" content="Other Differences (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Implementation-Differences.html" rel="up" title="Implementation Differences">
+<link href="Compatibility-Mode.html" rel="prev" title="Compatibility Mode">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Other-Differences">
+<div class="nav-panel">
+<p>
+Previous: <a href="Compatibility-Mode.html" accesskey="p" rel="prev">Compatibility Mode</a>, Up: <a href="Implementation-Differences.html" accesskey="u" rel="up">Implementation Differences</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Other-Differences-1">5.38.3 Other Differences</h4>
+
+<p><code class="code">groff</code> request names unrecognized by other <code class="code">troff</code>
+implementations will likely be ignored by them; escape sequences that
+are <code class="code">groff</code> extensions are liable to be interpreted as if the
+escape character were not present.
+<a class="index-entry-id" id="index-_005c_007e_002c-incompatibilities-with-AT_0026T-troff"></a>
+For example, the adjustable, non-breaking escape sequence <code class="code">\~</code>
+is also supported by Heirloom Doctools <code class="code">troff</code> 050915 (September
+2005), <code class="code">mandoc</code> 1.9.5 (2009-09-21), <code class="code">neatroff</code> (commit
+1c6ab0f6e, 2016-09-13), and Plan&nbsp;9 from User Space <code class="code">troff</code>
+(commit 93f8143600, 2022-08-12), but not by Solaris or Documenter&rsquo;s
+Workbench <code class="code">troff</code>s.
+See <a class="xref" href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a>.
+</p>
+<a class="index-entry-id" id="index-_005cA_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_007c_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_005e_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_0026_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_007b_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_007d_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005cSP_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_0027_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_0060_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_002d_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_005f_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_0021_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_0025_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005cc_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>GNU <code class="code">troff</code> does not allow the use of the escape sequences
+<code class="code">\|</code>, <code class="code">\^</code>, <code class="code">\&amp;</code>, <code class="code">\{</code>, <code class="code">\}</code>,
+<code class="code">\<kbd class="key">SP</kbd></code>, <code class="code">\'</code>, <code class="code">\`</code>, <code class="code">\-</code>, <code class="code">\_</code>, <code class="code">\!</code>,
+<code class="code">\%</code>, and <code class="code">\c</code> in identifiers; <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>
+does. The <code class="code">\A</code> escape sequence (see <a class="pxref" href="Identifiers.html">Identifiers</a>) may be
+helpful in avoiding use of these escape sequences in names.
+</p>
+<a class="index-entry-id" id="index-adjustment-to-both-margins_002c-difference-from-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-rivers"></a>
+<p>When adjusting to both margins, <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> at first
+adjusts spaces starting from the right; GNU <code class="code">troff</code> begins from
+the left. Both implementations adjust spaces from opposite ends on
+alternating output lines in this adjustment mode to prevent &ldquo;rivers&rdquo;
+in the text.
+</p>
+<a class="index-entry-id" id="index-hyphenation_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>GNU <code class="code">troff</code> does not always hyphenate words as <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> does. The <abbr class="acronym">AT&amp;T</abbr> implementation uses a set of
+hard-coded rules specific to English, while GNU <code class="code">troff</code> uses
+language-specific hyphenation pattern files derived from TeX.
+Furthermore, in old versions of <code class="code">troff</code> there was a limited amount
+of space to store hyphenation exceptions (arguments to the <code class="code">hw</code>
+request); GNU <code class="code">troff</code> has no such restriction.
+</p>
+<a class="index-entry-id" id="index-output-device-name-string-_0028_002eT_0029_002c-in-other-implementations"></a>
+<p>GNU <code class="code">troff</code> predefines a string <code class="code">.T</code> containing the argument
+given to the <samp class="option">-T</samp> command-line option, namely the current output
+device (for example, &lsquo;<samp class="samp">pdf</samp>&rsquo; or &lsquo;<samp class="samp">utf8</samp>&rsquo;). The existence of this
+string is a common feature of post-CSTR&nbsp;#54
+<code class="code">troff</code>s<a class="footnote" id="DOCF121" href="groff.html_fot.html#FOOT121"><sup>121</sup></a> but valid values are specific
+to each implementation.
+</p>
+<a class="index-entry-id" id="index-removal-of-read_002donly-registers_002c-incompatibility-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-register_002c-read_002donly_002c-removal_002c-incompatibility-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-read_002donly-register-removal_002c-incompatibility-with-AT_0026T-troff"></a>
+<p><abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> ignored attempts to remove read-only
+registers; GNU <code class="code">troff</code> honors such requests. See <a class="xref" href="Built_002din-Registers.html">Built-in Registers</a>.
+</p>
+<a class="index-entry-id" id="index-output-device-usage-register-_0028_002eT_0029_002c-incompatibility-with-AT_0026T-troff"></a>
+<p>The (read-only) register <code class="code">.T</code> interpolates&nbsp;1 if GNU
+<code class="code">troff</code> is called with the <samp class="option">-T</samp> command-line option, and
+0&nbsp;otherwise. This behavior differs from AT&amp;T <code class="code">troff</code>, which
+interpolated&nbsp;1 only if <code class="code">nroff</code> was the formatter and was
+called with <samp class="option">-T</samp>.
+</p>
+<a class="index-entry-id" id="index-lf-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p><abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> and other implementations handle the
+<code class="code">lf</code> request differently. For them, its <var class="var">line</var> argument
+changes the line number of the <em class="emph">current</em> line.
+</p>
+<a class="index-entry-id" id="index-environment-availability-and-naming_002c-incompatibilities-with"></a>
+<p><abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> had only environments named &lsquo;<samp class="samp">0</samp>&rsquo;,
+&lsquo;<samp class="samp">1</samp>&rsquo;, and &lsquo;<samp class="samp">2</samp>&rsquo;. In GNU <code class="code">troff</code>, any number of environments
+may exist, using any valid identifiers for their names
+(see <a class="pxref" href="Identifiers.html">Identifiers</a>.)
+</p>
+<a class="index-entry-id" id="index-fractional-point-sizes-1"></a>
+<a class="index-entry-id" id="index-fractional-type-sizes-1"></a>
+<a class="index-entry-id" id="index-point-sizes_002c-fractional-1"></a>
+<a class="index-entry-id" id="index-type-sizes_002c-fractional-1"></a>
+<a class="index-entry-id" id="index-sizes_002c-fractional"></a>
+<a class="index-entry-id" id="index-ps-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>Fractional type sizes cause one noteworthy incompatibility. In
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> the <code class="code">ps</code> request ignores scaling units
+and thus &lsquo;<samp class="samp">.ps 10u</samp>&rsquo; sets the type size to 10&nbsp;points, whereas in
+GNU <code class="code">troff</code> it sets the type size to 10&nbsp;<em class="emph">scaled</em> points.
+See <a class="xref" href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a>.
+</p>
+<a class="index-entry-id" id="index-ab-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>The <code class="code">ab</code> request differs from <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>:
+GNU <code class="code">troff</code> writes no message to the standard error stream if no
+arguments are given, and it exits with a failure status instead of a
+successful one.
+</p>
+<a class="index-entry-id" id="index-bp-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>The <code class="code">bp</code> request differs from <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>:
+GNU <code class="code">troff</code> does not accept a scaling unit on the argument, a page
+number; the former (somewhat uselessly) does.
+</p>
+<a class="index-entry-id" id="index-pm-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>The <code class="code">pm</code> request differs from <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>:
+GNU <code class="code">troff</code> reports the sizes of macros, strings, and diversions in
+bytes and ignores an argument to report only the sum of the sizes.
+</p>
+<a class="index-entry-id" id="index-ss-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>Unlike <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, GNU <code class="code">troff</code> does not ignore the
+<code class="code">ss</code> request if the output is a terminal device; instead, the
+values of minimal inter-word and additional inter-sentence space are
+each rounded down to the nearest multiple of&nbsp;12.
+</p>
+<a class="index-entry-id" id="index-bd-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-cs-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-tr-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-fp-request_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-input-characters-and-output-glyphs_002c-compatibility-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-output-glyphs_002c-and-input-characters_002c-compatibility-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-characters_002c-input_002c-and-output-glyphs_002c-compatibility-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-glyphs_002c-output_002c-and-input-characters_002c-compatibility-with-AT_0026T-troff"></a>
+<p>In GNU <code class="code">troff</code> there is a fundamental difference between
+(unformatted) characters and (formatted) glyphs. Everything that
+affects how a glyph is output is stored with the glyph node; once a
+glyph node has been constructed, it is unaffected by any subsequent
+requests that are executed, including <code class="code">bd</code>, <code class="code">cs</code>, <code class="code">tkf</code>,
+<code class="code">tr</code>, or <code class="code">fp</code> requests. Normally, glyphs are constructed from
+characters immediately before the glyph is added to an output line.
+Macros, diversions, and strings are all, in fact, the same type of
+object; they contain a sequence of intermixed character and glyph nodes.
+Special characters transform from one to the other: before being added
+to the output, they behave as characters; afterward, they are glyphs. A
+glyph node does not behave like a character node when it is processed by
+a macro: it does not inherit any of the special properties that the
+character from which it was constructed might have had. For example,
+the input
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.di x
+\\\\
+.br
+.di
+.x
+</pre></div></div>
+
+<p>produces &lsquo;<samp class="samp">\\</samp>&rsquo; in GNU <code class="code">troff</code>. Each pair of backslashes
+becomes one backslash <em class="emph">glyph</em>; the resulting backslashes are thus
+not interpreted as escape <em class="emph">characters</em> when they are reread as the
+diversion is output. <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> <em class="emph">would</em> interpret
+them as escape characters when rereading them and end up printing one
+&lsquo;<samp class="samp">\</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-printing-backslash-_0028_005c_005c_002c-_005ce_002c-_005cE_002c-_005c_005brs_005d_0029"></a>
+<a class="index-entry-id" id="index-backslash_002c-printing-_0028_005c_005c_002c-_005ce_002c-_005cE_002c-_005c_005brs_005d_0029"></a>
+<a class="index-entry-id" id="index-_005ce_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-_005c_0021_002c-incompatibilities-with-AT_0026T-troff-1"></a>
+<a class="index-entry-id" id="index-_005c_003f_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-transparent-output_002c-incompatibilities-with-AT_0026T-troff"></a>
+<a class="index-entry-id" id="index-output_002c-transparent_002c-incompatibilities-with-AT_0026T-troff"></a>
+<p>One correct way to obtain a printable backslash in most documents is to
+use the <code class="code">\e</code> escape sequence; this always prints a single instance
+of the current escape character,<a class="footnote" id="DOCF122" href="groff.html_fot.html#FOOT122"><sup>122</sup></a> regardless of whether or not it is used in a diversion; it
+also works in both GNU <code class="code">troff</code> and <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>.
+</p>
+<p>The other correct way, appropriate in contexts independent of the
+backslash&rsquo;s common use as a <code class="code">troff</code> escape character&mdash;perhaps in
+discussion of character sets or other programming languages&mdash;is
+the character escape <code class="code">\(rs</code> or <code class="code">\[rs]</code>, for &ldquo;reverse
+solidus&rdquo;, from its name in the <abbr class="acronym">ECMA-6</abbr> (<abbr class="acronym">ISO/IEC</abbr> 646)
+standard.<a class="footnote" id="DOCF123" href="groff.html_fot.html#FOOT123"><sup>123</sup></a>
+</p>
+<p>To store an escape sequence in a diversion that is interpreted when the
+diversion is reread, either use the traditional <code class="code">\!</code> transparent
+output facility, or, if this is unsuitable, the new <code class="code">\?</code> escape
+sequence. See <a class="xref" href="Diversions.html">Diversions</a> and <a class="ref" href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a>.
+</p>
+<p>In the somewhat pathological case where a diversion exists containing a
+partially collected line and a partially collected line at the top-level
+diversion has never existed, <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> will output the
+partially collected line at the end of input; GNU <code class="code">troff</code> will not.
+</p>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="Compatibility-Mode.html">Compatibility Mode</a>, Up: <a href="Implementation-Differences.html">Implementation Differences</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Output-Device-Intro.html b/doc/groff.html.node/Output-Device-Intro.html
new file mode 100644
index 0000000..815a509
--- /dev/null
+++ b/doc/groff.html.node/Output-Device-Intro.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Output Device Intro (The GNU Troff Manual)</title>
+
+<meta name="description" content="Output Device Intro (The GNU Troff Manual)">
+<meta name="keywords" content="Output Device Intro (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Introduction.html" rel="up" title="Introduction">
+<link href="Installation.html" rel="next" title="Installation">
+<link href="Preprocessor-Intro.html" rel="prev" title="Preprocessor Intro">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Output-Device-Intro">
+<div class="nav-panel">
+<p>
+Next: <a href="Installation.html" accesskey="n" rel="next">Installation</a>, Previous: <a href="Preprocessor-Intro.html" accesskey="p" rel="prev">Preprocessors</a>, Up: <a href="Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Output-Devices">1.6 Output Devices</h3>
+<a class="index-entry-id" id="index-postprocessors"></a>
+<a class="index-entry-id" id="index-output-devices"></a>
+<a class="index-entry-id" id="index-devices-for-output"></a>
+
+<p>GNU <code class="code">troff</code>&rsquo;s output is in a device-independent page description
+language, which is then read by an <em class="dfn">output driver</em> that translates
+this language into a file format or byte stream that a piece of
+(possibly emulated) hardware understands. <code class="code">groff</code> features output
+drivers for PostScript devices, terminal emulators (and other simple
+typewriter-like machines), X11 (for previewing), TeX DVI, HP
+LaserJet&nbsp;4/PCL5 and Canon LBP printers (which use <abbr class="acronym">CaPSL</abbr>),
+<abbr class="acronym">HTML</abbr>, <abbr class="acronym">XHTML</abbr>, and <abbr class="acronym">PDF</abbr>.
+</p>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Output-Language-Compatibility.html b/doc/groff.html.node/Output-Language-Compatibility.html
new file mode 100644
index 0000000..4ad971f
--- /dev/null
+++ b/doc/groff.html.node/Output-Language-Compatibility.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Output Language Compatibility (The GNU Troff Manual)</title>
+
+<meta name="description" content="Output Language Compatibility (The GNU Troff Manual)">
+<meta name="keywords" content="Output Language Compatibility (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="gtroff-Output.html" rel="up" title="gtroff Output">
+<link href="Intermediate-Output-Examples.html" rel="prev" title="Intermediate Output Examples">
+<style type="text/css">
+<!--
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Output-Language-Compatibility">
+<div class="nav-panel">
+<p>
+Previous: <a href="Intermediate-Output-Examples.html" accesskey="p" rel="prev">Intermediate Output Examples</a>, Up: <a href="gtroff-Output.html" accesskey="u" rel="up"><code class="code">gtroff</code> Output</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Output-Language-Compatibility-1">6.1.4 Output Language Compatibility</h4>
+
+<p>The intermediate output language of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> was
+first documented in <cite class="cite">A Typesetter-independent TROFF</cite>, by Brian
+Kernighan, and by 1992 the <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> manual was
+updated to incorprate a description of it.
+</p>
+<p>The GNU <code class="code">troff</code> intermediate output format is compatible with this
+specification except for the following features.
+</p>
+<ul class="itemize mark-bullet">
+<li>The classical quasi-device independence is not yet implemented.
+
+</li><li>The old hardware was very different from what we use today. So the
+<code class="code">groff</code> devices are also fundamentally different from the ones
+in <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>. For example, the <abbr class="acronym">AT&amp;T</abbr>
+PostScript device is called <code class="code">post</code> and has a resolution of only 720
+units per inch, suitable for printers 20 years ago, while <code class="code">groff</code>&rsquo;s
+<code class="code">ps</code> device has a resolution of 72000 units per inch. Maybe, by
+implementing some rescaling mechanism similar to the classical
+quasi-device independence, <code class="code">groff</code> could emulate <abbr class="acronym">AT&amp;T</abbr>&rsquo;s
+<code class="code">post</code> device.
+
+</li><li>The B-spline command &lsquo;<samp class="samp">D~</samp>&rsquo; is correctly handled by the intermediate
+output parser, but the drawing routines aren&rsquo;t implemented in some of
+the postprocessor programs.
+
+</li><li>The argument of the commands &lsquo;<samp class="samp">s</samp>&rsquo; and &lsquo;<samp class="samp">x&nbsp;H</samp>&rsquo;<!-- /@w --> has the
+implicit unit scaled point &lsquo;<samp class="samp">z</samp>&rsquo; in <code class="code">gtroff</code>, while
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> has point (&lsquo;<samp class="samp">p</samp>&rsquo;). This isn&rsquo;t an
+incompatibility but a compatible extension, for both units coincide for
+all devices without a <code class="code">sizescale</code> parameter in the <samp class="file">DESC</samp>
+file, including all postprocessors from <abbr class="acronym">AT&amp;T</abbr> and
+<code class="code">groff</code>&rsquo;s text devices. The few <code class="code">groff</code> devices with a
+<code class="code">sizescale</code> parameter either do not exist for <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code>, have a different name, or seem to have a different
+resolution. So conflicts are very unlikely.
+
+</li><li>The position changing after the commands &lsquo;<samp class="samp">Dp</samp>&rsquo;, &lsquo;<samp class="samp">DP</samp>&rsquo;, and
+&lsquo;<samp class="samp">Dt</samp>&rsquo; is illogical, but as old versions of <code class="code">gtroff</code> used this
+feature it is kept for compatibility reasons.
+
+
+</li></ul>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="Intermediate-Output-Examples.html">Intermediate Output Examples</a>, Up: <a href="gtroff-Output.html"><code class="code">gtroff</code> Output</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Page-Control.html b/doc/groff.html.node/Page-Control.html
new file mode 100644
index 0000000..da2edc3
--- /dev/null
+++ b/doc/groff.html.node/Page-Control.html
@@ -0,0 +1,218 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Page Control (The GNU Troff Manual)</title>
+
+<meta name="description" content="Page Control (The GNU Troff Manual)">
+<meta name="keywords" content="Page Control (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Using-Fonts.html" rel="next" title="Using Fonts">
+<link href="Page-Layout.html" rel="prev" title="Page Layout">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Page-Control">
+<div class="nav-panel">
+<p>
+Next: <a href="Using-Fonts.html" accesskey="n" rel="next">Using Fonts</a>, Previous: <a href="Page-Layout.html" accesskey="p" rel="prev">Page Layout</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Page-Control-1">5.18 Page Control</h3>
+<a class="index-entry-id" id="index-page-control"></a>
+<a class="index-entry-id" id="index-control_002c-page"></a>
+
+<a class="index-entry-id" id="index-page-break-1"></a>
+<a class="index-entry-id" id="index-break_002c-page-1"></a>
+<a class="index-entry-id" id="index-page-ejection-1"></a>
+<a class="index-entry-id" id="index-ejection_002c-page-1"></a>
+<p>Discretionary page breaks can prevent the unwanted separation of
+content. A new page number takes effect during page ejection; see
+<a class="ref" href="The-Implicit-Page-Trap.html">The Implicit Page Trap</a>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebp"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bp</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">page-number</i></span>]</var><a class="copiable-link" href='#index-_002ebp'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-bp"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ebp-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bp</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">page-number</i></span></var><a class="copiable-link" href='#index-_002ebp-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002ebp-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.bp</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">page-number</i></span></var><a class="copiable-link" href='#index-_002ebp-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_0025_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[%]</code></strong><a class="copiable-link" href='#index-_005cn_005b_0025_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_0025-2"></a>
+<a class="index-entry-id" id="index-new-page-_0028bp_0029"></a>
+<a class="index-entry-id" id="index-page_002c-new-_0028bp_0029"></a>
+<p>Break the page and change (increase or decrease) the next page number
+per the numeric expression <var class="var">page-number</var>. If <var class="var">page-number</var> is
+invalid, GNU <code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">number</samp>&rsquo; and
+ignores the argument. This request causes a break. A page break
+advances the vertical drawing position to the bottom of the page,
+springing traps. See <a class="xref" href="Page-Location-Traps.html">Page Location Traps</a>.
+<a class="index-entry-id" id="index-bp-request_002c-and-top_002dlevel-diversion"></a>
+<a class="index-entry-id" id="index-top_002dlevel-diversion_002c-and-bp"></a>
+<a class="index-entry-id" id="index-diversion_002c-top_002dlevel_002c-and-bp"></a>
+<code class="code">bp</code> has effect only if invoked within the top-level
+diversion.<a class="footnote" id="DOCF71" href="groff.html_fot.html#FOOT71"><sup>71</sup></a>
+<a class="index-entry-id" id="index-CSTR-_002354-errata-2"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-bp-request"></a>
+This request is incorrectly documented in the <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> manual as having a default scaling unit of &lsquo;<samp class="samp">v</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-page-number-register-_0028_0025_0029"></a>
+<a class="index-entry-id" id="index-current-page-number-_0028_0025_0029"></a>
+<p>The register <code class="code">%</code> interpolates the current page number.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de BP
+' bp \&quot; schedule page break once current line is output
+..
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ene"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ne</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">space</i></span>]</var><a class="copiable-link" href='#index-_002ene'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ne"></a>
+<a class="index-entry-id" id="index-orphan-lines_002c-preventing-with-ne"></a>
+<a class="index-entry-id" id="index-conditional-page-break-_0028ne_0029"></a>
+<a class="index-entry-id" id="index-page-break_002c-conditional-_0028ne_0029"></a>
+<p>Force a page break if insufficient vertical space is available (assert
+&ldquo;needed&rdquo; space). <code class="code">ne</code> tests the distance to the next page
+location trap; see <a class="ref" href="Page-Location-Traps.html">Page Location Traps</a>, and breaks the page if
+that amount is less than <var class="var">space</var>. The default scaling unit is
+&lsquo;<samp class="samp">v</samp>&rsquo;. If <var class="var">space</var> is invalid, GNU <code class="code">troff</code> emits a warning
+in category &lsquo;<samp class="samp">number</samp>&rsquo; and ignores the argument. If <var class="var">space</var> is
+not specified, &lsquo;<samp class="samp">1v</samp>&rsquo; is assumed.
+</p>
+<a class="index-entry-id" id="index-widow"></a>
+<p>We can require space for at least the first two output lines of a
+paragraph, preventing its first line from being <i class="slanted">widowed</i> at the
+page bottom.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ne 2v
+Considering how common illness is,
+how tremendous the spiritual change that it brings,
+how astonishing,
+when the lights of health go down,
+the undiscovered countries that are then disclosed,
+what wastes and deserts of the soul a slight attack
+of influenza brings to view,
+</pre></div></div>
+
+<p>This method is reliable only if no output line is pending when <code class="code">ne</code>
+is invoked. When macro packages are used, this is often not the case:
+their paragraphing macros perform the break. You may need to experiment
+with placing the <code class="code">ne</code> after the paragraphing macro, or <code class="code">br</code>
+and <code class="code">ne</code> before it.
+</p>
+<a class="index-entry-id" id="index-orphan"></a>
+<a class="index-entry-id" id="index-widow-1"></a>
+<p><code class="code">ne</code> is also useful to force grouping of section headings with
+their subsequent paragraphs, or tables with their captions and/or
+explanations. Macro packages often use <code class="code">ne</code> with diversions to
+implement keeps and displays; see <a class="ref" href="Diversions.html">Diversions</a>. They may also offer
+parameters for widow and orphan management.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002esv"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.sv</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">space</i></span>]</var><a class="copiable-link" href='#index-_002esv'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-sv"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eos"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.os</code></strong><a class="copiable-link" href='#index-_002eos'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-os"></a>
+<a class="index-entry-id" id="index-ne-request_002c-comparison-with-sv"></a>
+<p>Require vertical space as <code class="code">ne</code> does, but also <i class="slanted">save</i> it for
+later output by the <code class="code">os</code> request. If <var class="var">space</var> is available
+before the next page location trap, it is output immediately. Both
+requests ignore a partially collected line, taking effect at the next
+break.
+<a class="index-entry-id" id="index-sv-request_002c-and-no_002dspace-mode"></a>
+<a class="index-entry-id" id="index-os-request_002c-and-no_002dspace-mode"></a>
+<code class="code">sv</code> and <code class="code">os</code> ignore no-space mode (recall <a class="ref" href="Manipulating-Spacing.html">Manipulating Spacing</a>). While the <code class="code">sv</code> request allows negative values for
+<var class="var">space</var>, <code class="code">os</code> ignores them. The default scaling unit is
+&lsquo;<samp class="samp">v</samp>&rsquo;. If <var class="var">space</var> is not specified, &lsquo;<samp class="samp">1v</samp>&rsquo; is assumed.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bnl_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[nl]</code></strong><a class="copiable-link" href='#index-_005cn_005bnl_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nl"></a>
+<a class="index-entry-id" id="index-vertical-drawing-position-_0028nl_0029"></a>
+<a class="index-entry-id" id="index-vertical-position_002c-drawing-_0028nl_0029"></a>
+<a class="index-entry-id" id="index-drawing-position_002c-vertical-_0028nl_0029"></a>
+<p><code class="code">nl</code> interpolates or sets the vertical drawing position. When the
+formatter starts, the first page transition hasn&rsquo;t happened yet, and
+<code class="code">nl</code> is negative. If a header trap has been planted on the page
+(typically at vertical position <code class="code">0</code>), you can assign a negative
+value to <code class="code">nl</code> to spring it if that page has already started
+(see <a class="pxref" href="Page-Location-Traps.html">Page Location Traps</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de HD
+. sp
+. tl ''Goldbach Solution''
+. sp
+..
+.
+First page.
+.bp
+.wh 0 HD \&quot; plant header trap at top of page
+.nr nl (-1)
+Second page.
+ &rArr; First page.
+ &rArr;
+ &rArr; <span class="r"><i class="i">(blank lines elided)</i></span>
+ &rArr;
+ &rArr; Goldbach Solution
+ &rArr;
+ &rArr; <span class="r"><i class="i">(blank lines elided)</i></span>
+ &rArr;
+ &rArr; Second page.
+</pre></div></div>
+
+<p>Without resetting <code class="code">nl</code> to a negative value, the trap just planted
+would be active beginning with the <em class="emph">next</em> page, not the current
+one.
+</p>
+<p>See <a class="xref" href="Diversions.html">Diversions</a>, for a comparison of <code class="code">nl</code> with the <code class="code">.h</code> and
+<code class="code">.d</code> registers.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Using-Fonts.html">Using Fonts</a>, Previous: <a href="Page-Layout.html">Page Layout</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Page-Geometry.html b/doc/groff.html.node/Page-Geometry.html
new file mode 100644
index 0000000..1486533
--- /dev/null
+++ b/doc/groff.html.node/Page-Geometry.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Page Geometry (The GNU Troff Manual)</title>
+
+<meta name="description" content="Page Geometry (The GNU Troff Manual)">
+<meta name="keywords" content="Page Geometry (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Measurements.html" rel="next" title="Measurements">
+<link href="Text.html" rel="prev" title="Text">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Page-Geometry">
+<div class="nav-panel">
+<p>
+Next: <a href="Measurements.html" accesskey="n" rel="next">Measurements</a>, Previous: <a href="Text.html" accesskey="p" rel="prev">Text</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Page-Geometry-1">5.2 Page Geometry</h3>
+<a class="index-entry-id" id="index-page_002c-geometry-of"></a>
+<a class="index-entry-id" id="index-geometry_002c-page"></a>
+
+<p><code class="code">roff</code> systems format text under certain assumptions about the size
+of the output medium, or page. For the formatter to correctly break a
+line it is filling, it must know the line length, which it derives from
+the page width (see <a class="pxref" href="Line-Layout.html">Line Layout</a>). For it to decide whether to write
+an output line to the current page or wait until the next one, it must
+know the page length (see <a class="pxref" href="Page-Layout.html">Page Layout</a>).
+</p>
+<a class="index-entry-id" id="index-device-resolution"></a>
+<a class="index-entry-id" id="index-resolution_002c-device"></a>
+<a class="index-entry-id" id="index-basic-units"></a>
+<a class="index-entry-id" id="index-units_002c-basic"></a>
+<a class="index-entry-id" id="index-machine-units"></a>
+<a class="index-entry-id" id="index-units_002c-machine"></a>
+<p>A device&rsquo;s <em class="dfn">resolution</em> converts practical units like inches or
+centimeters to <em class="dfn">basic units</em>, a convenient length measure for the
+output device or file format. The formatter and output driver use basic
+units to reckon page measurements. The device description file defines
+its resolution and page dimensions (see <a class="pxref" href="DESC-File-Format.html"><samp class="file">DESC</samp> File Format</a>).
+</p>
+<a class="index-entry-id" id="index-page"></a>
+<p>A <em class="dfn">page</em> is a two-dimensional structure upon which a <code class="code">roff</code>
+system imposes a rectangular coordinate system with its upper left
+corner as the origin. Coordinate values are in basic units and increase
+down and to the right. Useful ones are therefore always positive and
+within numeric ranges corresponding to the page boundaries.
+</p>
+<a class="index-entry-id" id="index-drawing-position"></a>
+<a class="index-entry-id" id="index-position_002c-drawing"></a>
+<p>While the formatter (and, later, output driver) is processing a page, it
+keeps track of its <em class="dfn">drawing position</em>, which is the location at
+which the next glyph will be written, from which the next motion will be
+measured, or where a geometric object will commence rendering.
+<a class="index-entry-id" id="index-text-baseline"></a>
+<a class="index-entry-id" id="index-baseline_002c-text"></a>
+Notionally, glyphs are drawn from the text baseline upward and to the
+right.<a class="footnote" id="DOCF33" href="groff.html_fot.html#FOOT33"><sup>33</sup></a> The <em class="dfn">text baseline</em> is a (usually invisible) line upon
+which the glyphs of a typeface are aligned. A glyph therefore
+&ldquo;starts&rdquo; at its bottom-left corner. If drawn at the origin, a typical
+letter glyph would lie partially or wholly off the page, depending on
+whether, like &ldquo;g&rdquo;, it features a descender below the baseline.
+</p>
+<a class="index-entry-id" id="index-page-offset"></a>
+<a class="index-entry-id" id="index-offset_002c-page"></a>
+<p>Such a situation is nearly always undesirable. It is furthermore
+conventional not to write or draw at the extreme edges of the page.
+Therefore the initial drawing position of a <code class="code">roff</code> formatter is not
+at the origin, but below and to the right of it. This rightward shift
+from the left edge is known as the <em class="dfn">page
+offset</em>.<a class="footnote" id="DOCF34" href="groff.html_fot.html#FOOT34"><sup>34</sup></a> The downward shift leaves room for a text output
+line.
+</p>
+<p>Text is arranged on a one-dimensional lattice of text baselines from the
+top to the bottom of the page.
+<a class="index-entry-id" id="index-vertical-spacing"></a>
+<a class="index-entry-id" id="index-spacing_002c-vertical"></a>
+<a class="index-entry-id" id="index-vee"></a>
+<em class="dfn">Vertical spacing</em> is the distance between adjacent text baselines.
+Typographic tradition sets this quantity to 120% of the type size. The
+initial drawing position is one unit of vertical spacing below the page
+top. Typographers term this unit a <i class="slanted">vee</i>.
+</p>
+<a class="index-entry-id" id="index-page-break"></a>
+<a class="index-entry-id" id="index-break_002c-page"></a>
+<a class="index-entry-id" id="index-page-ejection"></a>
+<a class="index-entry-id" id="index-ejection_002c-page"></a>
+<p>Vertical spacing has an impact on page-breaking decisions. Generally,
+when a break occurs, the formatter moves the drawing position to the
+next text baseline automatically. If the formatter were already writing
+to the last line that would fit on the page, advancing by one vee would
+place the next text baseline off the page. Rather than let that happen,
+<code class="code">roff</code> formatters instruct the output driver to eject the page,
+start a new one, and again set the drawing position to one vee below the
+page top; this is a <em class="dfn">page break</em>.
+</p>
+<p>When the last line of input text corresponds to the last output line
+that fits on the page, the break caused by the end of input will also
+break the page, producing a useless blank one. Macro packages keep
+users from having to confront this difficulty by setting &ldquo;traps&rdquo;
+(see <a class="pxref" href="Traps.html">Traps</a>); moreover, all but the simplest page layouts tend to
+have headers and footers, or at least bear vertical margins larger than
+one vee.
+</p>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Measurements.html">Measurements</a>, Previous: <a href="Text.html">Text</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Page-Layout-Adjustment.html b/doc/groff.html.node/Page-Layout-Adjustment.html
new file mode 100644
index 0000000..7570214
--- /dev/null
+++ b/doc/groff.html.node/Page-Layout-Adjustment.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Page Layout Adjustment (The GNU Troff Manual)</title>
+
+<meta name="description" content="Page Layout Adjustment (The GNU Troff Manual)">
+<meta name="keywords" content="Page Layout Adjustment (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Displays-and-Keeps.html" rel="next" title="Displays and Keeps">
+<link href="Headers-and-Footers.html" rel="prev" title="Headers and Footers">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Page-Layout-Adjustment">
+<div class="nav-panel">
+<p>
+Next: <a href="Displays-and-Keeps.html" accesskey="n" rel="next">Displays and Keeps</a>, Previous: <a href="Headers-and-Footers.html" accesskey="p" rel="prev">Headers and Footers</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Page-Layout-1">3.2.4 Page Layout</h4>
+
+<p>Most macro packages let the user specify the size of the page margins.
+The top and bottom margins are typically handled differently than the
+left and right margins; the latter two are derived from the
+<i class="slanted">page offset</i>, <i class="slanted">indentation</i>, and <i class="slanted">line length</i>.
+See <a class="xref" href="Line-Layout.html">Line Layout</a>. Commonly, packages support registers to tune these
+values.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Page-Layout.html b/doc/groff.html.node/Page-Layout.html
new file mode 100644
index 0000000..8a6a4ad
--- /dev/null
+++ b/doc/groff.html.node/Page-Layout.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Page Layout (The GNU Troff Manual)</title>
+
+<meta name="description" content="Page Layout (The GNU Troff Manual)">
+<meta name="keywords" content="Page Layout (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Page-Control.html" rel="next" title="Page Control">
+<link href="Line-Continuation.html" rel="prev" title="Line Continuation">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Page-Layout">
+<div class="nav-panel">
+<p>
+Next: <a href="Page-Control.html" accesskey="n" rel="next">Page Control</a>, Previous: <a href="Line-Continuation.html" accesskey="p" rel="prev">Line Continuation</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Page-Layout-2">5.17 Page Layout</h3>
+<a class="index-entry-id" id="index-page-layout"></a>
+<a class="index-entry-id" id="index-layout_002c-page"></a>
+
+<p>The formatter permits configuration of the page length and page number.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epl"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pl</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">length</i></span>]</var><a class="copiable-link" href='#index-_002epl'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pl"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002epl-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pl</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002epl-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002epl-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pl</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002epl-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ep_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.p]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ep_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ep"></a>
+<a class="index-entry-id" id="index-page-length_002c-configuring-_0028pl_0029"></a>
+<a class="index-entry-id" id="index-length-of-the-page_002c-configuring-_0028pl_0029"></a>
+<a class="index-entry-id" id="index-configuring-the-page-length-_0028pl_0029"></a>
+<a class="index-entry-id" id="index-setting-the-page-length-_0028pl_0029"></a>
+<p>Change (increase or decrease) the page length per the numeric expression
+<var class="var">length</var>. The default scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. A negative
+<var class="var">length</var> is valid, but an uncommon application: it prevents page
+location traps from being sprung,<a class="footnote" id="DOCF70" href="groff.html_fot.html#FOOT70"><sup>70</sup></a> and each
+output line is placed on a new page. If <var class="var">length</var> is invalid, GNU
+<code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">number</samp>&rsquo;. If <var class="var">length</var>
+is absent or invalid, &lsquo;<samp class="samp">11i</samp>&rsquo; is assumed.
+</p>
+<a class="index-entry-id" id="index-page-length-register-_0028_002ep_0029"></a>
+<p>The read-only register &lsquo;<samp class="samp">.p</samp>&rsquo; interpolates the current page length.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pn</code></strong> <var class="def-var-arguments">num</var><a class="copiable-link" href='#index-_002epn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pn"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002epn-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pn</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">num</i></span></var><a class="copiable-link" href='#index-_002epn-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002epn-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pn</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">num</i></span></var><a class="copiable-link" href='#index-_002epn-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002epn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.pn]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002epn_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002epn-3"></a>
+<a class="index-entry-id" id="index-page-number_002c-configuring-next-_0028pn_0029"></a>
+<a class="index-entry-id" id="index-next-page-number_002c-configuring-_0028pn_0029"></a>
+<a class="index-entry-id" id="index-number_002c-page_002c-next_002c-configuring-_0028pn_0029"></a>
+<p>Change (increase or decrease) the page number of the <em class="emph">next</em> page
+per the numeric expression <var class="var">num</var>. If <var class="var">num</var> is invalid, GNU
+<code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">number</samp>&rsquo; and ignores the
+request. Without an argument, <code class="code">pn</code> is ignored.
+</p>
+<a class="index-entry-id" id="index-next-page-number-register-_0028_002epn_0029"></a>
+<a class="index-entry-id" id="index-page-number_002c-next_002c-register-_0028_002epn_0029"></a>
+<p>The read-only register <code class="code">.pn</code> interpolates <var class="var">num</var> if set by
+<code class="code">pn</code> on the current page, or the current page number plus&nbsp;1.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-headers"></a>
+<a class="index-entry-id" id="index-footers"></a>
+<a class="index-entry-id" id="index-titles"></a>
+<p>The formatter offers special support for typesetting headers and
+footers, collectively termed <em class="dfn">titles</em>. Titles have an independent
+line length, and their placement on the page is not restricted.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etl"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tl</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002etl'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tl"></a>
+<a class="index-entry-id" id="index-title-line_002c-formatting-_0028tl_0029"></a>
+<a class="index-entry-id" id="index-formatting-a-title-line-_0028tl_0029"></a>
+<a class="index-entry-id" id="index-three_002dpart-title-_0028tl_0029"></a>
+<a class="index-entry-id" id="index-page-number-character-_0028_0025_0029"></a>
+<p>Format an output line as a title consisting of <var class="var">left</var>, <var class="var">center</var>,
+and <var class="var">right</var>, each aligned accordingly. The delimiter need not be a
+neutral apostrophe: <code class="code">tl</code> accepts the same delimiters as most escape
+sequences; see <a class="ref" href="Delimiters.html">Delimiters</a>. If not used as the delimiter, any
+<em class="dfn">page number character</em> character is replaced with the current page
+number; the default is &lsquo;<samp class="samp">%</samp>&rsquo;; see the the <code class="code">pc</code> request below.
+Without an argument, <code class="code">tl</code> is ignored. <code class="code">tl</code> writes the title
+line immediately, ignoring any partially collected line.
+</p>
+<p>It is not an error to omit delimiters after the first. For example,
+&lsquo;<samp class="samp">.tl&nbsp;/Thesis</samp>&rsquo;<!-- /@w --> is interpreted as &lsquo;<samp class="samp">.tl&nbsp;/Thesis///</samp>&rsquo;<!-- /@w -->: it
+sets a title line comprising only the left-aligned word &lsquo;<samp class="samp">Thesis</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elt"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lt</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">length</i></span>]</var><a class="copiable-link" href='#index-_002elt'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-lt"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002elt-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lt</code></strong> <var class="def-var-arguments"><code class="t">+</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002elt-1'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_002elt-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.lt</code></strong> <var class="def-var-arguments"><code class="t">-</code><span class="r"><i class="slanted">length</i></span></var><a class="copiable-link" href='#index-_002elt-2'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002elt_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.lt]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002elt_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002elt-3"></a>
+<a class="index-entry-id" id="index-length-of-title-line_002c-configuring-_0028lt_0029"></a>
+<a class="index-entry-id" id="index-title-length_002c-configuring-_0028lt_0029"></a>
+<p>Change (increase or decrease) the line length used by titles per the
+numeric expression <var class="var">length</var>. The default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;.
+If <var class="var">length</var> is negative, GNU emits a warning in category
+&lsquo;<samp class="samp">range</samp>&rsquo; and treats <var class="var">length</var> as &lsquo;<samp class="samp">0</samp>&rsquo;. If <var class="var">length</var> is
+invalid, GNU <code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">number</samp>&rsquo; and
+ignores the request. The formatter&rsquo;s default title length is
+&lsquo;<samp class="samp">6.5i</samp>&rsquo;. With no argument, the title length is restored to the
+previous value. The title length is is associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<a class="index-entry-id" id="index-title-line-length-register-_0028_002elt_0029"></a>
+<p>The read-only register &lsquo;<samp class="samp">.lt</samp>&rsquo; interpolates the title line length.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002epc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.pc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">char</i></span>]</var><a class="copiable-link" href='#index-_002epc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-pc"></a>
+<a class="index-entry-id" id="index-changing-the-page-number-character-_0028pc_0029"></a>
+<a class="index-entry-id" id="index-page-number-character_002c-changing-_0028pc_0029"></a>
+<a class="index-entry-id" id="index-_0025-1"></a>
+<p>Set the page number character to <var class="var">char</var>. With no argument, the page
+number character is disabled. <code class="code">pc</code> does not affect the
+register&nbsp;<code class="code">%</code>.
+</p></dd></dl>
+
+<p>The following example exercises title features.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.lt 50n
+This is my partially collected
+.tl 'Isomers 2023'%'Dextrose Edition'
+line.
+ &rArr; Isomers 2023 1 Dextrose Edition
+ &rArr; This is my partially collected line.
+</pre></div></div>
+
+<p>We most often see titles used in page header and footer traps.
+See <a class="xref" href="Traps.html">Traps</a>.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Page-Control.html">Page Control</a>, Previous: <a href="Line-Continuation.html">Line Continuation</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Page-Location-Traps.html b/doc/groff.html.node/Page-Location-Traps.html
new file mode 100644
index 0000000..3d388bf
--- /dev/null
+++ b/doc/groff.html.node/Page-Location-Traps.html
@@ -0,0 +1,326 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Page Location Traps (The GNU Troff Manual)</title>
+
+<meta name="description" content="Page Location Traps (The GNU Troff Manual)">
+<meta name="keywords" content="Page Location Traps (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Vertical-Position-Traps.html" rel="up" title="Vertical Position Traps">
+<link href="The-Implicit-Page-Trap.html" rel="next" title="The Implicit Page Trap">
+<link href="Vertical-Position-Traps.html" rel="prev" title="Vertical Position Traps">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Page-Location-Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="The-Implicit-Page-Trap.html" accesskey="n" rel="next">The Implicit Page Trap</a>, Previous: <a href="Vertical-Position-Traps.html" accesskey="p" rel="prev">Vertical Position Traps</a>, Up: <a href="Vertical-Position-Traps.html" accesskey="u" rel="up">Vertical Position Traps</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Page-Location-Traps-1">5.28.1.1 Page Location Traps</h4>
+<a class="index-entry-id" id="index-page-location-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-page-location"></a>
+
+<p>A <em class="dfn">page location trap</em> is a vertical position trap that applies to
+the page; that is, to undiverted output. Many can be present; manage
+them with the <code class="code">wh</code> and <code class="code">ch</code> requests.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewh"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.wh</code></strong> <var class="def-var-arguments">dist [<span class="r"><i class="slanted">name</i></span>]</var><a class="copiable-link" href='#index-_002ewh'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-wh"></a>
+<p>Plant macro <var class="var">name</var> as page location trap at <var class="var">dist</var>. The default
+scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. Non-negative values for <var class="var">dist</var> set the
+trap relative to the top of the page; negative values set the trap
+relative to the bottom of the page. It is not possible to plant a trap
+less than one basic unit from the page bottom: a <var class="var">dist</var> of <code class="code">-0</code>
+is interpreted as <code class="code">0</code>, the top of the page.<a class="footnote" id="DOCF106" href="groff.html_fot.html#FOOT106"><sup>106</sup></a> An existing <em class="emph">visible</em> trap (see below) at
+<var class="var">dist</var> is removed; this is <code class="code">wh</code>&rsquo;s sole function if <var class="var">name</var>
+is missing.
+</p>
+<p>A trap is sprung only if it is <em class="dfn">visible</em>, meaning that its location
+is reachable on the page<a class="footnote" id="DOCF107" href="groff.html_fot.html#FOOT107"><sup>107</sup></a> and it
+is not hidden by another trap at the same location already planted
+there.
+</p>
+<a class="index-entry-id" id="index-page-headers"></a>
+<a class="index-entry-id" id="index-page-footers"></a>
+<a class="index-entry-id" id="index-headers-1"></a>
+<a class="index-entry-id" id="index-footers-1"></a>
+<a class="index-entry-id" id="index-top-margin"></a>
+<a class="index-entry-id" id="index-margin_002c-top"></a>
+<a class="index-entry-id" id="index-bottom-margin"></a>
+<a class="index-entry-id" id="index-margin_002c-bottom"></a>
+<p>A macro package might set headers and footers as follows; this example
+configures vertical margins of one inch to the body text, and one
+half-inch to the titles. Observe the use of the no-break control
+character with <code class="code">sp</code> request to position our text baselines,
+and the page number character &lsquo;<samp class="samp">%</samp>&rsquo; used with the <code class="code">tl</code> request.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; hdfo.roff
+.de hd \&quot; page header
+' sp .5i
+' tl '\\*(Ti''\\*(Da' \&quot; title and date strings
+' sp .5i
+..
+.de fo \&quot; page footer
+' sp .5i
+. tl ''%''
+. bp
+..
+.wh 0 hd \&quot; trap at top of the page
+.wh -1i fo \&quot; trap 1 inch from bottom
+</pre></div></div>
+
+<p>To use these traps, copy the above (or load it from a file with the
+<code class="code">so</code> or <code class="code">mso</code> requests), then set up the strings it uses.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.so hdfo.roff
+.ds Ti Final Report\&quot;
+.ds Da 21 May 2023\&quot;
+.ti
+On 5 August of last year,
+this committee tasked me with the investigation of the
+CFIT (controlled flight into terrain) incident of
+.\&quot; <i class="i">...and so on...</i>
+</pre></div></div>
+
+<p>A trap above the top or at or below the bottom of the page can be made
+visible by either moving it into the page area or increasing the page
+length so that the trap is on the page. Negative trap values always use
+the <em class="emph">current</em> page length; they are not converted to an absolute
+vertical position.
+<a class="index-entry-id" id="index-page-location-traps_002c-debugging"></a>
+<a class="index-entry-id" id="index-debugging-page-location-traps"></a>
+We can use the <code class="code">ptr</code> request to dump our page location traps to the
+standard error stream (see <a class="pxref" href="Debugging.html">Debugging</a>). Their positions are reported
+in basic units; an <code class="code">nroff</code> device example follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.pl 5i
+.wh -1i xx
+.ptr
+ error&rarr; xx -240
+.pl 100i
+.ptr
+ error&rarr; xx -240
+</pre></div></div>
+
+<p>It is possible to have more than one trap at the same location (although
+only one at a time can be visible); to achieve this, the traps must be
+defined at different locations, then moved to the same place with the
+<code class="code">ch</code> request. In the following example, the many empty lines
+caused by the <code class="code">bp</code> request are not shown in the output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de a
+. nop a
+..
+.de b
+. nop b
+..
+.de c
+. nop c
+..
+.
+.wh 1i a
+.wh 2i b
+.wh 3i c
+.bp
+ &rArr; a b c
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ch b 1i
+.ch c 1i
+.bp
+ &rArr; a
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ch a 0.5i
+.bp
+ &rArr; a b
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002et_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.t]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002et_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002et"></a>
+<a class="index-entry-id" id="index-distance-to-next-vertical-position-trap-register-_0028_002et_0029"></a>
+<a class="index-entry-id" id="index-trap_002c-distance-to-next-vertical-position_002c-register-_0028_002et_0029"></a>
+<p>The read-only register <code class="code">.t</code> holds the distance to the next vertical
+position trap. If there are no traps between the current position and
+the bottom of the page, it contains the distance to the page bottom.
+Within a diversion, in the absence of a diversion trap, this distance is
+the largest representable integer in basic units&mdash;effectively infinite.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ech"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ch</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">dist</i></span>]</var><a class="copiable-link" href='#index-_002ech'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ch"></a>
+<a class="index-entry-id" id="index-changing-trap-location-_0028ch_0029"></a>
+<a class="index-entry-id" id="index-trap_002c-changing-location-_0028ch_0029"></a>
+<p>Change the location of a trap by moving macro <var class="var">name</var> to new location
+<var class="var">dist</var>, or by unplanting it altogether if <var class="var">dist</var> is absent. The
+default scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. Parameters to <code class="code">ch</code> are specified
+in the opposite order from <code class="code">wh</code>. If <var class="var">name</var> is the earliest
+planted macro of multiple traps at the same location, (re)moving it from
+that location exposes the macro next least recently planted at the same
+place.<a class="footnote" id="DOCF108" href="groff.html_fot.html#FOOT108"><sup>108</sup></a>
+</p>
+<p>Changing a trap&rsquo;s location is useful for building up footnotes in a
+diversion to allow more space at the bottom of the page for them.
+</p>
+
+</dd></dl>
+
+<p>The same macro can be installed simultaneously at multiple locations;
+however, only the earliest-planted instance&mdash;that has not yet been
+deleted with <code class="code">wh</code>&mdash;will be moved by <code class="code">ch</code>. The following
+example (using an <code class="code">nroff</code> device) illustrates this behavior. Blank
+lines have been elided from the output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de T
+Trap sprung at \\n(nlu.
+.br
+..
+.wh 1i T
+.wh 2i T
+foo
+.sp 11i
+.bp
+.ch T 4i
+bar
+.sp 11i
+.bp
+.ch T 5i
+baz
+.sp 11i
+.bp
+.wh 5i
+.ch T 6i
+qux
+.sp 11i
+</pre></div></div>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; foo
+ &rArr; Trap sprung at 240u.
+ &rArr; Trap sprung at 480u.
+ &rArr; bar
+ &rArr; Trap sprung at 480u.
+ &rArr; Trap sprung at 960u.
+ &rArr; baz
+ &rArr; Trap sprung at 480u.
+ &rArr; Trap sprung at 1200u.
+ &rArr; qux
+ &rArr; Trap sprung at 1440u.
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002ene_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ne]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ene_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ene-1"></a>
+<p>The read-only register <code class="code">.ne</code> contains the amount of space that was
+needed in the last <code class="code">ne</code> request that caused a trap to be sprung;
+it is useful in conjunction with the <code class="code">.trunc</code> register. See <a class="xref" href="Page-Control.html">Page Control</a>. Since the <code class="code">.ne</code> register is set only by traps, it
+doesn&rsquo;t make sense to interpolate it outside of macros called by traps.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002etrunc_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.trunc]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002etrunc_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002etrunc"></a>
+<a class="index-entry-id" id="index-ne-request_002c-and-the-_002etrunc-register"></a>
+<a class="index-entry-id" id="index-truncated-vertical-space-register-_0028_002etrunc_0029"></a>
+<p>A read-only register containing the amount of vertical space truncated
+from an <code class="code">sp</code> request by the most recently sprung vertical
+position trap, or, if the trap was sprung by an <code class="code">ne</code> request,
+minus the amount of vertical motion produced by the <code class="code">ne</code>
+request. In other words, at the point a trap is sprung, it
+represents the difference of what the vertical position would have
+been but for the trap, and what the vertical position actually is.
+Since the <code class="code">.trunc</code> register is set only by traps, it doesn&rsquo;t make
+sense to interpolate it outside of macros called by traps.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002epe_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.pe]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002epe_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002epe"></a>
+<a class="index-entry-id" id="index-bp-request_002c-and-traps-_0028_002epe_0029"></a>
+<a class="index-entry-id" id="index-traps_002c-sprung-by-bp-request-_0028_002epe_0029"></a>
+<a class="index-entry-id" id="index-page-ejection-status-register-_0028_002epe_0029"></a>
+<p>This Boolean-valued, read-only register interpolates&nbsp;1 while a page
+is being ejected, and 0&nbsp;otherwise.
+</p>
+<p>In the following example, we plant the same trap at the top and the
+bottom of the page. We also make the trap report its name and the
+vertical drawing position.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de T
+.tm \\$0: page \\n%, nl=\\n[nl] .pe=\\n[.pe]
+..
+.ll 46n
+.wh 0 T
+.wh -1v T
+Those who can make you believe absurdities can make you
+commit atrocities. \[em] Voltaire
+ error&rarr; T: page 1, nl=0 .pe=0
+ error&rarr; T: page 1, nl=2600 .pe=1
+ &rArr; Those who can make you believe absurdities can
+ &rArr; make you commit atrocities. -- Voltaire
+</pre></div></div>
+</dd></dl>
+
+<a class="index-entry-id" id="index-diversions_002c-and-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-and-diversions"></a>
+<p>When designing macros, keep in mind that diversions and traps do
+normally interact. For example, if a trap calls a header macro (while
+outputting a diversion) that tries to change the font on the current
+page, the effect is not visible before the diversion has completely been
+printed (except for input protected with <code class="code">\!</code> or <code class="code">\?</code>) since
+the data in the diversion is already formatted. In most cases, this is
+not the expected behaviour.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="The-Implicit-Page-Trap.html">The Implicit Page Trap</a>, Previous: <a href="Vertical-Position-Traps.html">Vertical Position Traps</a>, Up: <a href="Vertical-Position-Traps.html">Vertical Position Traps</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Page-Motions.html b/doc/groff.html.node/Page-Motions.html
new file mode 100644
index 0000000..bb94bdb
--- /dev/null
+++ b/doc/groff.html.node/Page-Motions.html
@@ -0,0 +1,454 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Page Motions (The GNU Troff Manual)</title>
+
+<meta name="description" content="Page Motions (The GNU Troff Manual)">
+<meta name="keywords" content="Page Motions (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Drawing-Geometric-Objects.html" rel="next" title="Drawing Geometric Objects">
+<link href="Writing-Macros.html" rel="prev" title="Writing Macros">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Page-Motions">
+<div class="nav-panel">
+<p>
+Next: <a href="Drawing-Geometric-Objects.html" accesskey="n" rel="next">Drawing Geometric Objects</a>, Previous: <a href="Writing-Macros.html" accesskey="p" rel="prev">Writing Macros</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Page-Motions-1">5.25 Page Motions</h3>
+<a class="index-entry-id" id="index-page-motions"></a>
+<a class="index-entry-id" id="index-motions_002c-page"></a>
+
+<p>See <a class="xref" href="Manipulating-Spacing.html">Manipulating Spacing</a>, for a discussion of the most commonly used
+request for vertical motion, <code class="code">sp</code>, which spaces downward by one
+vee.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002emk"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.mk</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">reg</i></span>]</var><a class="copiable-link" href='#index-_002emk'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-mk"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002ert"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rt</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">dist</i></span>]</var><a class="copiable-link" href='#index-_002ert'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rt"></a>
+<a class="index-entry-id" id="index-marking-vertical-page-location-_0028mk_0029"></a>
+<a class="index-entry-id" id="index-page-location_002c-vertical_002c-marking-_0028mk_0029"></a>
+<a class="index-entry-id" id="index-location_002c-vertical_002c-page_002c-marking-_0028mk_0029"></a>
+<a class="index-entry-id" id="index-vertical-page-location_002c-marking-_0028mk_0029"></a>
+<a class="index-entry-id" id="index-returning-to-marked-vertical-page-location-_0028rt_0029"></a>
+<a class="index-entry-id" id="index-page-location_002c-vertical_002c-returning-to-marked-_0028rt_0029"></a>
+<a class="index-entry-id" id="index-location_002c-vertical_002c-page_002c-returning-to-marked-_0028rt_0029"></a>
+<a class="index-entry-id" id="index-vertical-page-location_002c-returning-to-marked-_0028rt_0029"></a>
+<p>You can <em class="dfn">mark</em> a location on a page for subsequent <em class="dfn">return</em>.
+<code class="code">mk</code> takes an argument, a register name in which to store the
+current page location. If given no argument, it stores the location in
+an internal register. This location can be used later by the <code class="code">rt</code>
+or the <code class="code">sp</code> requests (or the <code class="code">\v</code> escape).
+</p>
+<p>The <code class="code">rt</code> request returns <em class="emph">upward</em> to the location marked with
+the last <code class="code">mk</code> request. If used with an argument, it returns to a
+vertical position&nbsp;<var class="var">dist</var> from the top of the page (no previous
+call to <code class="code">mk</code> is necessary in this case). The default scaling
+unit is &lsquo;<samp class="samp">v</samp>&rsquo;.
+</p>
+<p>If a page break occurs between a <code class="code">mk</code> request and its matching
+<code class="code">rt</code> request, the <code class="code">rt</code> request is silently ignored.
+</p>
+<p>A simple implementation of a macro to set text in two columns follows.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr column-length 1.5i
+.nr column-gap 4m
+.nr bottom-margin 1m
+.
+.de 2c
+. br
+. mk
+. ll \\n[column-length]u
+. wh -\\n[bottom-margin]u 2c-trap
+. nr right-side 0
+..
+.
+.de 2c-trap
+. ie \\n[right-side] \{\
+. nr right-side 0
+. po -(\\n[column-length]u + \\n[column-gap]u)
+. \&quot; remove trap
+. wh -\\n[bottom-margin]u
+. \}
+. el \{\
+. \&quot; switch to right side
+. nr right-side 1
+. po +(\\n[column-length]u + \\n[column-gap]u)
+. rt
+. \}
+..
+</pre></div></div>
+
+<p>Now let us apply our two-column macro.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.pl 1.5i
+.ll 4i
+This is a small test that shows how the
+rt request works in combination with mk.
+
+.2c
+Starting here, text is typeset in two columns.
+Note that this implementation isn't robust
+and thus not suited for a real two-column
+macro.
+ &rArr; This is a small test that shows how the
+ &rArr; rt request works in combination with mk.
+ &rArr;
+ &rArr; Starting here, isn't robust
+ &rArr; text is typeset and thus not
+ &rArr; in two columns. suited for a
+ &rArr; Note that this real two-column
+ &rArr; implementation macro.
+</pre></div></div>
+</dd></dl>
+
+<p>Several escape sequences enable fine control of movement about the page.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cv_0027expr_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\v<code class="code">'</code></code><span class="r"><i class="slanted">expr</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cv_0027expr_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cv"></a>
+<a class="index-entry-id" id="index-vertical-motion-_0028_005cv_0029"></a>
+<a class="index-entry-id" id="index-motion_002c-vertical-_0028_005cv_0029"></a>
+<p>Vertically move the drawing position. <var class="var">expr</var> indicates the
+magnitude of motion: positive is downward and and negative upward. The
+default scaling unit is &lsquo;<samp class="samp">v</samp>&rsquo;. The motion is relative to the current
+drawing position unless <var class="var">expr</var> begins with the boundary-relative
+motion operator &lsquo;<samp class="samp">|</samp>&rsquo;. See <a class="xref" href="Numeric-Expressions.html">Numeric Expressions</a>.
+</p>
+<p>Text processing continues at the new drawing position; usually, vertical
+motions should be in balanced pairs to avoid a confusing page layout.
+</p>
+<p><code class="code">\v</code> will not spring a vertical position trap. This can be useful;
+for example, consider a page bottom trap macro that prints a marker in
+the margin to indicate continuation of a footnote. See <a class="xref" href="Traps.html">Traps</a>.
+</p></dd></dl>
+
+<p>A few escape sequences that produce vertical motion are unusual. They
+are thought to originate early in AT&amp;T <code class="code">nroff</code> history to achieve
+super- and subscripting by half-line motions on line printers and
+teletypewriters before the phototypesetter made more precise positioning
+available. They are reckoned in ems&mdash;not vees&mdash;to maintain continuity
+with their original purpose of moving relative to the size of the type
+rather than the distance between text baselines (vees).<a class="footnote" id="DOCF103" href="groff.html_fot.html#FOOT103"><sup>103</sup></a>
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cr-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\r</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cr-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cr"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cu-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\u</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cu-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cu"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cd-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\d</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cd-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cd"></a>
+<p>Move upward&nbsp;1<span class="dmn">m</span>, upward&nbsp;.5<span class="dmn">m</span>, and
+downward&nbsp;.5<span class="dmn">m</span>, respectively.
+</p></dd></dl>
+
+<p>Let us see these escape sequences in use.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Obtain 100 cm\u3\d of \ka\d\092\h'|\nau'\r233\dU.
+</pre></div></div>
+
+<p>In the foregoing we have paired <code class="code">\u</code> and <code class="code">\d</code> to typeset a
+superscript, and later a full em negative (&ldquo;reverse&rdquo;) motion to place
+a superscript above a subscript. A numeral-width horizontal motion
+escape sequence aligns the proton and nucleon numbers, while <code class="code">\k</code>
+marks a horizontal position to which <code class="code">\h</code> returns so that we could
+stack them. (We shall discuss these horizontal motion escape sequences
+presently.) In serious applications, we often want to alter the type
+size of the -scripts and to fine-tune the vertical motions, as the
+<code class="code">groff</code> <samp class="file">ms</samp> package does with its super- and subscripting
+string definitions.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005ch_0027expr_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\h<code class="code">'</code></code><span class="r"><i class="slanted">expr</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005ch_0027expr_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005ch"></a>
+<a class="index-entry-id" id="index-inserting-horizontal-space-_0028_005ch_0029"></a>
+<a class="index-entry-id" id="index-horizontal-space-_0028_005ch_0029"></a>
+<a class="index-entry-id" id="index-space_002c-horizontal-_0028_005ch_0029"></a>
+<a class="index-entry-id" id="index-horizontal-motion-_0028_005ch_0029"></a>
+<a class="index-entry-id" id="index-motion_002c-horizontal-_0028_005ch_0029"></a>
+<p>Horizontally move the drawing position. <var class="var">expr</var> indicates the
+magnitude of motion: positive is rightward and negative leftward. The
+default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;. The motion is relative to the current
+drawing position unless <var class="var">expr</var> begins with the boundary-relative
+motion operator &lsquo;<samp class="samp">|</samp>&rsquo;. See <a class="xref" href="Numeric-Expressions.html">Numeric Expressions</a>.
+</p></dd></dl>
+
+<p>The following string definition sets the TeX
+logo.<a class="footnote" id="DOCF104" href="groff.html_fot.html#FOOT104"><sup>104</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds TeX T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X\&quot;
+</pre></div></div>
+
+<p>There are a number of special-case escape sequences for horizontal
+motion.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cSP-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\<kbd class="key">SP</kbd></code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cSP-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cSP"></a>
+<a class="index-entry-id" id="index-space_002c-unbreakable-and-unadjustable-_0028_005cSP_0029"></a>
+<a class="index-entry-id" id="index-unbreakable-and-unadjustable-space-_0028_005cSP_0029"></a>
+<a class="index-entry-id" id="index-unadjustable-and-unbreakable-space-_0028_005cSP_0029"></a>
+<a class="index-entry-id" id="index-_005cspace"></a>
+<p>Move right one word space. (The input is a backslash followed by a
+space.) This escape sequence can be thought of as a non-adjustable,
+unbreakable space. Usually you want <code class="code">\~</code> instead; see
+<a class="ref" href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a>.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-thin-space-_0028_005c_007c_0029"></a>
+<a class="index-entry-id" id="index-space_002c-thin-_0028_005c_007c_0029"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_007c-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\|</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_007c-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_007c"></a>
+<p>Move one-sixth <span class="dmn">em</span> to the right on typesetting output devices. If
+a glyph named &lsquo;<samp class="samp">\|</samp>&rsquo; is defined in the current font, its width is
+used instead, even on terminal output devices.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-hair-space-_0028_005c_005e_0029"></a>
+<a class="index-entry-id" id="index-space_002c-hair-_0028_005c_005e_0029"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_005e-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\^</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_005e-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_005e"></a>
+<p>Move one-twelfth <span class="dmn">em</span> to the right on typesetting output devices.
+If a glyph named &lsquo;<samp class="samp">\^</samp>&rsquo; is defined in the current font, its width is
+used instead, even on terminal output devices.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c0-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\0</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c0-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c0"></a>
+<a class="index-entry-id" id="index-space_002c-width-of-a-digit-_0028numeral_0029-_0028_005c0_0029"></a>
+<a class="index-entry-id" id="index-digit_002dwidth-space-_0028_005c0_0029"></a>
+<a class="index-entry-id" id="index-figure-space-_0028_005c0_0029"></a>
+<a class="index-entry-id" id="index-numeral_002dwidth-space-_0028_005c0_0029"></a>
+<p>Move right by the width of a numeral in the current font.
+</p></dd></dl>
+
+<p>Horizontal motions are not discarded at the end of an output line as
+word spaces are. See <a class="xref" href="Breaking.html">Breaking</a>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cw_0027anything_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\w<code class="code">'</code></code><span class="r"><i class="slanted">anything</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cw_0027anything_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cw"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bst_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[st]</code></strong><a class="copiable-link" href='#index-_005cn_005bst_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-st"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bsb_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[sb]</code></strong><a class="copiable-link" href='#index-_005cn_005bsb_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-sb"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005brst_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[rst]</code></strong><a class="copiable-link" href='#index-_005cn_005brst_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rst"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005brsb_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[rsb]</code></strong><a class="copiable-link" href='#index-_005cn_005brsb_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rsb"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bct_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[ct]</code></strong><a class="copiable-link" href='#index-_005cn_005bct_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ct"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bssc_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[ssc]</code></strong><a class="copiable-link" href='#index-_005cn_005bssc_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ssc"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005bskw_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[skw]</code></strong><a class="copiable-link" href='#index-_005cn_005bskw_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-skw"></a>
+<a class="index-entry-id" id="index-width-escape-_0028_005cw_0029"></a>
+<p>Interpolate the width of <var class="var">anything</var> in basic units. This escape
+sequence allows several properties of formatted output to be measured
+without writing it out.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">The length of the string 'abc' is \w'abc'u.
+ &rArr; The length of the string 'abc' is 72u.
+</pre></div></div>
+
+<a class="index-entry-id" id="index-dummy-environment_002c-used-by-_005cw-escape-sequence"></a>
+<a class="index-entry-id" id="index-environment_002c-dummy_002c-used-by-_005cw-escape-sequence"></a>
+<p><var class="var">anything</var> is processed in a dummy environment: this means that
+font and type size changes, for example, may occur within it without
+affecting subsequent output.
+</p>
+<p>After each use, <code class="code">\w</code> sets several registers.
+</p>
+<a class="index-entry-id" id="index-CSTR-_002354-errata-5"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-sb-register"></a>
+<a class="index-entry-id" id="index-CSTR-_002354-erratum_002c-st-register"></a>
+<dl class="table">
+<dt><code class="code">st</code></dt>
+<dt><code class="code">sb</code></dt>
+<dd><p>The maximum vertical displacements of the text baseline above and below,
+respectively. The sign convention is opposite that of relative vertical
+motions; that is, depth below the (original) baseline is negative.
+These registers are incorrectly documented in the <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> manual as &ldquo;the highest and lowest extent of [the argument
+to <code class="code">\w</code>] relative to the baseline&rdquo;.
+</p>
+</dd>
+<dt><code class="code">rst</code></dt>
+<dt><code class="code">rsb</code></dt>
+<dd><p>Like <code class="code">st</code> and <code class="code">sb</code>, but taking account of the heights and
+depths of glyphs. In other words, these registers store the highest and
+lowest vertical positions attained by <var class="var">anything</var>, doing what
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> documented <code class="code">st</code> and <code class="code">sb</code> as doing.
+</p>
+</dd>
+<dt><code class="code">ct</code></dt>
+<dd><p>Characterizes the geometry of glyphs occurring in <var class="var">anything</var>.
+</p>
+<dl class="table">
+<dt>0</dt>
+<dd><p>only short glyphs, no descenders or tall glyphs
+</p>
+</dd>
+<dt>1</dt>
+<dd><p>at least one descender
+</p>
+</dd>
+<dt>2</dt>
+<dd><p>at least one tall glyph
+</p>
+</dd>
+<dt>3</dt>
+<dd><p>at least one each of a descender and a tall glyph
+</p></dd>
+</dl>
+
+</dd>
+<dt><code class="code">ssc</code></dt>
+<dd><p>The amount of horizontal space (possibly negative) that should be added
+to the last glyph before a subscript.
+</p>
+</dd>
+<dt><code class="code">skw</code></dt>
+<dd><p>How far to right of the center of the last glyph in the <code class="code">\w</code>
+argument, the center of an accent from a roman font should be placed
+over that glyph.
+</p></dd>
+</dl>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005ckp"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\k</code><span class="r"><i class="slanted">p</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ckp'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005ck"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005ck_0028ps"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\k(</code><span class="r"><i class="slanted">ps</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ck_0028ps'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005ck_005bposition_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\k[</code><span class="r"><i class="slanted">position</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005ck_005bposition_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-saving-horizontal-input-line-position-_0028_005ck_0029"></a>
+<a class="index-entry-id" id="index-horizontal-input-line-position_002c-saving-_0028_005ck_0029"></a>
+<a class="index-entry-id" id="index-input-line-position_002c-horizontal_002c-saving-_0028_005ck_0029"></a>
+<a class="index-entry-id" id="index-position_002c-horizontal-input-line_002c-saving-_0028_005ck_0029"></a>
+<a class="index-entry-id" id="index-line_002c-input_002c-horizontal-position_002c-saving-_0028_005ck_0029"></a>
+<p>Store the current horizontal position in the <em class="emph">input</em> line in a
+register with the name <var class="var">position</var> (one-character name&nbsp;<var class="var">p</var>,
+two-character name <var class="var">ps</var>). Use this, for example, to return to the
+beginning of a string for highlighting or other decoration.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bhp_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[hp]</code></strong><a class="copiable-link" href='#index-_005cn_005bhp_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hp"></a>
+<a class="index-entry-id" id="index-horizontal-input-line-position-register-_0028hp_0029"></a>
+<a class="index-entry-id" id="index-input-line_002c-horizontal-position_002c-register-_0028hp_0029"></a>
+<a class="index-entry-id" id="index-position_002c-horizontal_002c-in-input-line_002c-register-_0028hp_0029"></a>
+<a class="index-entry-id" id="index-line_002c-input_002c-horizontal-position_002c-register-_0028hp_0029"></a>
+<p>The current horizontal position at the input line.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002ek_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.k]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ek_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ek"></a>
+<a class="index-entry-id" id="index-horizontal-output-line-position-register-_0028_002ek_0029"></a>
+<a class="index-entry-id" id="index-output-line_002c-horizontal-position_002c-register-_0028_002ek_0029"></a>
+<a class="index-entry-id" id="index-position_002c-horizontal_002c-in-output-line_002c-register-_0028_002ek_0029"></a>
+<a class="index-entry-id" id="index-line_002c-output_002c-horizontal-position_002c-register-_0028_002ek_0029"></a>
+<p>A read-only register containing the current horizontal output position
+(relative to the current indentation).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005co_0027abc_2026_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\o<code class="code">'</code></code><span class="r"><i class="slanted">abc&hellip;</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005co_0027abc_2026_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005co"></a>
+<a class="index-entry-id" id="index-overstriking-glyphs-_0028_005co_0029"></a>
+<a class="index-entry-id" id="index-glyphs_002c-overstriking-_0028_005co_0029"></a>
+<p>Overstrike the glyphs of characters <var class="var">a</var>, <var class="var">b</var>, <var class="var">c</var>, &hellip;;
+the glyphs are centered, written, and the drawing position advanced by
+the widest of the glyphs.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005czc"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\z</code><span class="r"><i class="slanted">c</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005czc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cz"></a>
+<a class="index-entry-id" id="index-zero_002dwidth-printing-_0028_005cz_002c-_005cZ_0029"></a>
+<a class="index-entry-id" id="index-printing_002c-zero_002dwidth-_0028_005cz_002c-_005cZ_0029"></a>
+<p>Format the character <var class="var">c</var> with zero width; that is, without advancing
+the drawing position. Use <code class="code">\z</code> to overstrike glyphs aligned to
+their left edges, in contrast to <code class="code">\o</code>&rsquo;s centering.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cZ_0027anything_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\Z<code class="code">'</code></code><span class="r"><i class="slanted">anything</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cZ_0027anything_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cZ"></a>
+<a class="index-entry-id" id="index-zero_002dwidth-printing-_0028_005cz_002c-_005cZ_0029-1"></a>
+<a class="index-entry-id" id="index-printing_002c-zero_002dwidth-_0028_005cz_002c-_005cZ_0029-1"></a>
+<p>Save the drawing position, format <var class="var">anything</var>, then restore it. Tabs
+and leaders in the argument are ignored with an error diagnostic.
+</p>
+<p>We might implement a strike-through macro thus.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de ST
+.nr width \w'\\$1'
+\Z@\v'-.25m'\l'\\n[width]u'@\\$1
+..
+.
+This is
+.ST &quot;a test&quot;
+an actual emergency!
+</pre></div></div>
+</dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a>, Previous: <a href="Writing-Macros.html">Writing Macros</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Paper-Format.html b/doc/groff.html.node/Paper-Format.html
new file mode 100644
index 0000000..f6f9e72
--- /dev/null
+++ b/doc/groff.html.node/Paper-Format.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Paper Format (The GNU Troff Manual)</title>
+
+<meta name="description" content="Paper Format (The GNU Troff Manual)">
+<meta name="keywords" content="Paper Format (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Invoking-groff.html" rel="up" title="Invoking groff">
+<link href="Invocation-Examples.html" rel="next" title="Invocation Examples">
+<link href="Font-Directories.html" rel="prev" title="Font Directories">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Paper-Format">
+<div class="nav-panel">
+<p>
+Next: <a href="Invocation-Examples.html" accesskey="n" rel="next">Invocation Examples</a>, Previous: <a href="Font-Directories.html" accesskey="p" rel="prev">Font Directories</a>, Up: <a href="Invoking-groff.html" accesskey="u" rel="up">Invoking <code class="code">groff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Paper-Format-1">2.5 Paper Format</h3>
+<a class="index-entry-id" id="index-paper-format"></a>
+<a class="index-entry-id" id="index-format_002c-paper"></a>
+<a class="index-entry-id" id="index-paper-size"></a>
+<a class="index-entry-id" id="index-size_002c-paper"></a>
+<a class="index-entry-id" id="index-landscape-page-orientation"></a>
+<a class="index-entry-id" id="index-orientation_002c-landscape"></a>
+<a class="index-entry-id" id="index-page-orientation_002c-landscape"></a>
+
+<p>In <code class="code">groff</code>, the page dimensions for the formatter GNU <code class="code">troff</code>
+and for output devices are handled separately. See <a class="xref" href="Page-Layout.html">Page Layout</a>, for
+vertical manipulation of the page size, and See <a class="xref" href="Line-Layout.html">Line Layout</a>, for
+horizontal changes.
+<a class="index-entry-id" id="index-papersize_002etmac"></a>
+<a class="index-entry-id" id="index-troffrc-1"></a>
+The <samp class="file">papersize</samp> macro package, normally loaded by <samp class="file">troffrc</samp> at
+startup, provides an interface for configuring page dimensions by
+convenient names, like &lsquo;<samp class="samp">letter</samp>&rsquo; or &lsquo;<samp class="samp">a4</samp>&rsquo;; see
+<cite class="cite">groff_tmac<span class="r">(5)</span></cite>. The default used by the formatter depends on
+its build configuration, but is usually one of the foregoing, as
+geographically appropriate.
+</p>
+<p>It is up to each macro package to respect the page dimensions configured
+in this way.
+</p>
+<p>For each output device, the size of the output medium can be set in its
+<samp class="file">DESC</samp> file. Most output drivers also recognize a command-line
+option <samp class="option">-p</samp> to override the default dimensions and an option
+<samp class="option">-l</samp> to use landscape orientation. See <a class="xref" href="DESC-File-Format.html"><samp class="file">DESC</samp> File Format</a>, for
+a description of the <code class="code">papersize</code> keyword, which takes an argument
+of the same form as <samp class="option">-p</samp>. The output driver&rsquo;s man page, such as
+<cite class="cite">grops<span class="r">(1)</span></cite>, may also be helpful.
+</p>
+<p><code class="code">groff</code> uses the command-line option <samp class="option">-P</samp> to pass options to
+postprocessors; for example, use the following for PostScript output on
+A4 paper in landscape orientation.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms &gt; foo.ps
+</pre></div></div>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Invocation-Examples.html">Invocation Examples</a>, Previous: <a href="Font-Directories.html">Font Directories</a>, Up: <a href="Invoking-groff.html">Invoking <code class="code">groff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Paragraphs-in-ms.html b/doc/groff.html.node/Paragraphs-in-ms.html
new file mode 100644
index 0000000..e6c3a28
--- /dev/null
+++ b/doc/groff.html.node/Paragraphs-in-ms.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Paragraphs in ms (The GNU Troff Manual)</title>
+
+<meta name="description" content="Paragraphs in ms (The GNU Troff Manual)">
+<meta name="keywords" content="Paragraphs in ms (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Body-Text.html" rel="up" title="ms Body Text">
+<link href="Headings-in-ms.html" rel="next" title="Headings in ms">
+<link href="Typographical-symbols-in-ms.html" rel="prev" title="Typographical symbols in ms">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Paragraphs-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="Headings-in-ms.html" accesskey="n" rel="next">Headings</a>, Previous: <a href="Typographical-symbols-in-ms.html" accesskey="p" rel="prev">Typographical symbols</a>, Up: <a href="ms-Body-Text.html" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Paragraphs-2">4.6.5.3 Paragraphs</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-paragraph-handling"></a>
+
+<p>Paragraphing macros <em class="dfn">break</em>, or terminate, any pending output line
+so that a new paragraph can begin. Several paragraph types are
+available, differing in how indentation applies to them: to left, right,
+or both margins; to the first output line of the paragraph, all output
+lines, or all but the first. All paragraphing macro calls cause the
+insertion of vertical space in the amount stored in the <code class="code">PD</code>
+register, except at page or column breaks. Alternatively, a blank input
+line breaks the output line and vertically spaces by one vee.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eLP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.LP</code></strong><a class="copiable-link" href='#index-_002eLP'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LP-_005bms_005d"></a>
+<p>Set a paragraph without any (additional) indentation.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002ePP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PP</code></strong><a class="copiable-link" href='#index-_002ePP'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PP-_005bms_005d"></a>
+<p>Set a paragraph with a first-line left indentation in the amount stored
+in the <code class="code">PI</code> register.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eIP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.IP</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">marker</i></span> [<span class="r"><i class="slanted">width</i></span>]]</var><a class="copiable-link" href='#index-_002eIP'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-IP-_005bms_005d"></a>
+<p>Set a paragraph with a left indentation. The optional <var class="var">marker</var> is
+not indented and is empty by default. It has several applications;
+see <a class="ref" href="Lists-in-ms.html">Lists</a>. <var class="var">width</var> overrides the indentation amount
+stored in the <code class="code">PI</code> register; its default unit is &lsquo;<samp class="samp">n</samp>&rsquo;. Once
+specified, <var class="var">width</var> applies to further <code class="code">IP</code> calls until
+specified again or a heading or different paragraphing macro is called.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eQP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.QP</code></strong><a class="copiable-link" href='#index-_002eQP'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-QP-_005bms_005d"></a>
+<p>Set a paragraph indented from both left and right margins by the amount
+stored in the <code class="code">QI</code> register.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eQS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.QS</code></strong><a class="copiable-link" href='#index-_002eQS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-QS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eQE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.QE</code></strong><a class="copiable-link" href='#index-_002eQE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-QE-_005bms_005d"></a>
+<p>Begin (<code class="code">QS</code>) and end (<code class="code">QE</code>) a region where each paragraph is
+indented from both margins by the amount stored in the <code class="code">QI</code>
+register. The text between <code class="code">QS</code> and <code class="code">QE</code> can be structured
+further by use of other paragraphing macros.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eXP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XP</code></strong><a class="copiable-link" href='#index-_002eXP'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XP-_005bms_005d"></a>
+<p>Set an &ldquo;exdented&rdquo; paragraph&mdash;one with a left indentation in the
+amount stored in the <code class="code">PI</code> register on every line <em class="emph">except</em> the
+first (also known as a hanging indent). This is a Berkeley extension.
+</p></dd></dl>
+
+<p>The following example illustrates the use of paragraphing macros.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.NH 2
+Cases used in the 2001 study
+.LP
+Two software releases were considered for this report.
+.PP
+The first is commercial software;
+the second is free.
+.IP \[bu]
+Microsoft Word for Windows,
+starting with version 1.0 through the current version
+(Word 2000).
+.IP \[bu]
+GNU Emacs,
+from its first appearance as a standalone editor through
+the current version (v20).
+See [Bloggs 2002] for details.
+.QP
+Franklin's Law applied to software:
+software expands to outgrow both RAM and disk space over
+time.
+.SH
+Bibliography
+.XP
+Bloggs, Joseph R.,
+.I &quot;Everyone's a Critic&quot; ,
+Underground Press, March 2002.
+A definitive work that answers all questions and
+criticisms about the quality and usability of free
+software.
+</pre></div>
+</td></tr></table>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Headings-in-ms.html">Headings</a>, Previous: <a href="Typographical-symbols-in-ms.html">Typographical symbols</a>, Up: <a href="ms-Body-Text.html">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Paragraphs.html b/doc/groff.html.node/Paragraphs.html
new file mode 100644
index 0000000..a230bcd
--- /dev/null
+++ b/doc/groff.html.node/Paragraphs.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Paragraphs (The GNU Troff Manual)</title>
+
+<meta name="description" content="Paragraphs (The GNU Troff Manual)">
+<meta name="keywords" content="Paragraphs (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Sections-and-Chapters.html" rel="next" title="Sections and Chapters">
+<link href="Common-Features.html" rel="prev" title="Common Features">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Paragraphs">
+<div class="nav-panel">
+<p>
+Next: <a href="Sections-and-Chapters.html" accesskey="n" rel="next">Sections and Chapters</a>, Previous: <a href="Common-Features.html" accesskey="p" rel="prev">Common Features</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Paragraphs-1">3.2.1 Paragraphs</h4>
+<a class="index-entry-id" id="index-paragraphs"></a>
+
+<p>Paragraphs can be separated and indented in various ways. Some start
+with a blank line and have a first-line indentation, like most of the
+ones in this manual. Block paragraphs omit the indentation.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; Some men look at constitutions with sanctimonious
+ &rArr; reverence, and deem them like the ark of the
+ &rArr; covenant, too sacred to be touched.
+</pre></div></div>
+
+<a class="index-entry-id" id="index-tags_002c-paragraph"></a>
+<a class="index-entry-id" id="index-tagged-paragraphs"></a>
+<a class="index-entry-id" id="index-lists"></a>
+<p>We also frequently encounter <i class="slanted">tagged</i> paragraphs, which begin
+with a tag or label at the left margin and indent the remaining text.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; one This is the first paragraph. Notice how the
+ &rArr; first line of the resulting paragraph lines
+ &rArr; up with the other lines in the paragraph.
+</pre></div></div>
+
+<p>If the tag is too wide for the indentation, the line is broken.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; longlabel
+ &rArr; The label does not align with the subsequent
+ &rArr; lines, but they align with each other.
+</pre></div></div>
+
+<p>A variation of the tagged paragraph is the itemized or enumerated
+paragraph, which might use punctuation or a digit for a tag,
+respectively. These are frequently used to construct lists.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; o This list item starts with a bullet. When
+ &rArr; producing output for a device using the ASCII
+ &rArr; character set, an 'o' is formatted instead.
+</pre></div></div>
+
+<p>Often, use of the same macro without a tag continues such a discussion.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted"> &rArr; -xyz This option is recognized but ignored.
+ &rArr;
+ &rArr; It had a security hole that we don't discuss.
+</pre></div></div>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Sections-and-Chapters.html">Sections and Chapters</a>, Previous: <a href="Common-Features.html">Common Features</a>, Up: <a href="Common-Features.html">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Parameters.html b/doc/groff.html.node/Parameters.html
new file mode 100644
index 0000000..ddf31cf
--- /dev/null
+++ b/doc/groff.html.node/Parameters.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Parameters (The GNU Troff Manual)</title>
+
+<meta name="description" content="Parameters (The GNU Troff Manual)">
+<meta name="keywords" content="Parameters (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Writing-Macros.html" rel="up" title="Writing Macros">
+<link href="Copy-Mode.html" rel="next" title="Copy Mode">
+<link href="Writing-Macros.html" rel="prev" title="Writing Macros">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Parameters">
+<div class="nav-panel">
+<p>
+Next: <a href="Copy-Mode.html" accesskey="n" rel="next">Copy Mode</a>, Previous: <a href="Writing-Macros.html" accesskey="p" rel="prev">Writing Macros</a>, Up: <a href="Writing-Macros.html" accesskey="u" rel="up">Writing Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Parameters-1">5.24.1 Parameters</h4>
+<a class="index-entry-id" id="index-parameters"></a>
+
+<p>Macro calls and string interpolations optionally accept a list of
+arguments; recall <a class="ref" href="Calling-Macros.html">Calling Macros</a>. At the time such an
+interpolation takes place, these <em class="dfn">parameters</em> can be examined using
+a register and a variety of escape sequences starting with &lsquo;<samp class="samp">\$</samp>&rsquo;.
+All such escape sequences are interpreted even in copy mode, a fact we
+shall motivate and explain below (see <a class="pxref" href="Copy-Mode.html">Copy Mode</a>).
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002e_0024_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.$]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002e_0024_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002e_0024"></a>
+<a class="index-entry-id" id="index-parameter-count-register-_0028_002e_0024_0029"></a>
+<p>The count of parameters available to a macro or string is kept in this
+read-only register. The <code class="code">shift</code> request can change its value.
+</p></dd></dl>
+
+<p>Any individual parameter can be accessed by its position in the list of
+arguments to the macro call, numbered from left to right starting at 1,
+with one of the following escape sequences.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0024n"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$</code><span class="r"><i class="slanted">n</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024n'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0024"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_0024_0028nn"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$(</code><span class="r"><i class="slanted">nn</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024_0028nn'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005c_0024_005bnnn_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$[</code><span class="r"><i class="slanted">nnn</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005c_0024_005bnnn_005d'> &para;</a></span></dt>
+<dd><p>Interpolate the <var class="var">n</var>th, <var class="var">nn</var>th, or <var class="var">nnn</var>th parameter. The
+first form expects only a single digit (1&le;<var class="var">n</var>&le;9)), the
+second two digits (01&le;<var class="var">nn</var>&le;99)), and the third any
+positive integer <var class="var">nnn</var>. Macros and strings accept an unlimited
+number of parameters.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eshift"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.shift</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">n</i></span>]</var><a class="copiable-link" href='#index-_002eshift'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-shift"></a>
+<p>Shift the parameters <var class="var">n</var> places (1&nbsp;by default). This is a
+&ldquo;left shift&rdquo;: what was parameter&nbsp;<var class="var">i</var> becomes parameter
+<em class="math"><var class="var">i</var>-<var class="var">n</var></em>. The parameters formerly in positions 1
+to&nbsp;<var class="var">n</var> are no longer available. Shifting by a non-positive
+amount performs no operation. The register <code class="code">.$</code> is adjusted
+accordingly.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-copy-mode_002c-and-macro-parameters"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-macro-parameters"></a>
+<a class="index-entry-id" id="index-macro_002c-parameters-_0028_005c_0024_0029"></a>
+<a class="index-entry-id" id="index-parameters_002c-macro-_0028_005c_0024_0029"></a>
+<p>In practice, parameter interpolations are usually seen prefixed with an
+extra escape character. This is because the <code class="code">\$</code> family of escape
+sequences is interpreted even in copy mode.<a class="footnote" id="DOCF100" href="groff.html_fot.html#FOOT100"><sup>100</sup></a>
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0024_002a-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$*</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024_002a-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0024_002a"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_0024_0040-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$@</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024_0040-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0024_0040"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_0024_005e-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$^</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0024_005e-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0024_005e"></a>
+<p>In some cases it is convenient to interpolate all of the parameters at
+once (to pass them to a request, for instance). The <code class="code">\$*</code> escape
+concatenates the parameters, separating them with spaces. <code class="code">\$@</code>
+is similar, concatenating the parameters, surrounding each with double
+quotes and separating them with spaces. If not in compatibility mode,
+the interpolation depth of double quotes is preserved (see <a class="pxref" href="Calling-Macros.html">Calling Macros</a>). <code class="code">\$^</code> interpolates all parameters as if they were
+arguments to the <code class="code">ds</code> request.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de foo
+. tm $1='\\$1'
+. tm $2='\\$2'
+. tm $*='\\$*'
+. tm $@='\\$@'
+. tm $^='\\$^'
+..
+.foo &quot; This is a &quot;test&quot;
+ error&rarr; $1=' This is a '
+ error&rarr; $2='test&quot;'
+ error&rarr; $*=' This is a test&quot;'
+ error&rarr; $@='&quot; This is a &quot; &quot;test&quot;&quot;'
+ error&rarr; $^='&quot; This is a &quot;test&quot;'
+</pre></div></div>
+
+<p><code class="code">\$*</code> is useful when writing a macro that doesn&rsquo;t need to
+distinguish its arguments, or even to not interpret them; examples
+include macros that produce diagnostic messages by wrapping the
+<code class="code">tm</code> or <code class="code">ab</code> requests. Use <code class="code">\$@</code> when writing a macro
+that may need to shift its parameters and/or wrap a macro or request
+that finds the count significant. If in doubt, prefer <code class="code">\$@</code> to
+<code class="code">\$*</code>. An application of <code class="code">\$^</code> is seen in <samp class="file">trace.tmac</samp>,
+which redefines some requests and macros for debugging purposes.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_00240-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\$0</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_00240-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_00240"></a>
+<a class="index-entry-id" id="index-macro-name-register-_0028_005c_00240_0029"></a>
+<a class="index-entry-id" id="index-als-request_002c-and-_005c_00240"></a>
+<p>Interpolate the name by which the macro being interpreted was called.
+The <code class="code">als</code> request can cause a macro to have more than one name.
+Applying string interpolation to a macro does not change this name.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de foo
+. tm \\$0
+..
+.als bar foo
+.
+.de aaa
+. foo
+..
+.de bbb
+. bar
+..
+.de ccc
+\\*[foo]\\
+..
+.de ddd
+\\*[bar]\\
+..
+.
+.aaa
+ error&rarr; foo
+.bbb
+ error&rarr; bar
+.ccc
+ error&rarr; ccc
+.ddd
+ error&rarr; ddd
+</pre></div></div>
+</dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Copy-Mode.html">Copy Mode</a>, Previous: <a href="Writing-Macros.html">Writing Macros</a>, Up: <a href="Writing-Macros.html">Writing Macros</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Postprocessor-Access.html b/doc/groff.html.node/Postprocessor-Access.html
new file mode 100644
index 0000000..3b06a80
--- /dev/null
+++ b/doc/groff.html.node/Postprocessor-Access.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Postprocessor Access (The GNU Troff Manual)</title>
+
+<meta name="description" content="Postprocessor Access (The GNU Troff Manual)">
+<meta name="keywords" content="Postprocessor Access (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Miscellaneous.html" rel="next" title="Miscellaneous">
+<link href="I_002fO.html" rel="prev" title="I/O">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+kbd.key {font-style: normal}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Postprocessor-Access">
+<div class="nav-panel">
+<p>
+Next: <a href="Miscellaneous.html" accesskey="n" rel="next">Miscellaneous</a>, Previous: <a href="I_002fO.html" accesskey="p" rel="prev">I/O</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Postprocessor-Access-1">5.34 Postprocessor Access</h3>
+<a class="index-entry-id" id="index-postprocessor-access"></a>
+<a class="index-entry-id" id="index-access-to-postprocessor"></a>
+
+<p>Two escape sequences and two requests enable documents to pass
+information directly to a postprocessor. These are useful for
+exercising device-specific capabilities that the <code class="code">groff</code> language
+does not abstract or generalize; examples include the embedding of
+hyperlinks and image files. Device-specific functions are documented in
+each output driver&rsquo;s man page, such as <cite class="cite">gropdf<span class="r">(1)</span></cite>,
+<cite class="cite">grops<span class="r">(1)</span></cite>, or <cite class="cite">grotty<span class="r">(1)</span></cite>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edevice"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.device</code></strong> <var class="def-var-arguments">xxx <span class="r">&hellip;</span></var><a class="copiable-link" href='#index-_002edevice'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-device"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cX_0027xxx-_2026_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\X<code class="code">'</code></code><span class="r"><i class="slanted">xxx <span class="r">&hellip;</span></i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cX_0027xxx-_2026_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cX"></a>
+<p>Embed all <var class="var">xxx</var> arguments into GNU <code class="code">troff</code> output as parameters
+to a device control command &lsquo;<samp class="samp">x&nbsp;X</samp>&rsquo;<!-- /@w -->. The meaning and
+interpretation of such parameters is determined by the output driver or
+other postprocessor.
+</p>
+<a class="index-entry-id" id="index-device-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-device-request"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-device-request"></a>
+<p>The <code class="code">device</code> request processes its arguments in copy mode
+(see <a class="pxref" href="Copy-Mode.html">Copy Mode</a>). An initial neutral double quote in <var class="var">contents</var>
+is stripped to allow embedding of leading spaces.
+<a class="index-entry-id" id="index-_005c_0026_002c-in-_005cX"></a>
+<a class="index-entry-id" id="index-_005c_0029_002c-in-_005cX"></a>
+<a class="index-entry-id" id="index-_005c_0025_002c-in-_005cX"></a>
+<a class="index-entry-id" id="index-_005c_003a_002c-in-_005cX"></a>
+By contrast, within <code class="code">\X</code> arguments, the escape sequences <code class="code">\&amp;</code>,
+<code class="code">\)</code>, <code class="code">\%</code>, and <code class="code">\:</code> are ignored; <code class="code">\<kbd class="key">SP</kbd></code> and
+<code class="code">\~</code> are converted to single space characters; and <code class="code">\\</code> has
+its escape character stripped. So that the basic Latin subset of the
+Unicode character set<a class="footnote" id="DOCF115" href="groff.html_fot.html#FOOT115"><sup>115</sup></a> can be reliably encoded in device control
+commands, seven special character escape sequences (&lsquo;<samp class="samp">\-</samp>&rsquo;,
+&lsquo;<samp class="samp">\[aq]</samp>&rsquo;, &lsquo;<samp class="samp">\[dq]</samp>&rsquo;, &lsquo;<samp class="samp">\[ga]</samp>&rsquo;, &lsquo;<samp class="samp">\[ha]</samp>&rsquo;, &lsquo;<samp class="samp">\[rs]</samp>&rsquo;,
+and &lsquo;<samp class="samp">\[ti]</samp>&rsquo;,) are mapped to basic Latin characters; see the
+<cite class="cite">groff_char<span class="r">(7)</span></cite> man page. For this transformation, character
+translations and special character definitions are
+ignored.<a class="footnote" id="DOCF116" href="groff.html_fot.html#FOOT116"><sup>116</sup></a> The use of any
+other escape sequence in <code class="code">\X</code> parameters is normally an error.
+</p>
+<a class="index-entry-id" id="index-use_005fcharnames_005fin_005fspecial"></a>
+<a class="index-entry-id" id="index-DESC-file_002c-and-use_005fcharnames_005fin_005fspecial-keyword"></a>
+<a class="index-entry-id" id="index-_005cX_002c-and-special-characters"></a>
+<p>If the <code class="code">use_charnames_in_special</code> directive appears in the output
+device&rsquo;s <samp class="file">DESC</samp> file, the use of special character escape sequences
+is <em class="emph">not</em> an error; they are simply output verbatim (with the
+exception of the seven mapped to Unicode basic Latin characters,
+discussed above). <code class="code">use_charnames_in_special</code> is currently employed
+only by <code class="code">grohtml</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edevicem"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.devicem</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002edevicem'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-devicem"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cYn"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\Y</code><span class="r"><i class="slanted">n</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cYn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cY"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cY_0028nm"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\Y(</code><span class="r"><i class="slanted">nm</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cY_0028nm'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cY_005bname_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\Y[</code><span class="r"><i class="slanted">name</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cY_005bname_005d'> &para;</a></span></dt>
+<dd><p>This is approximately equivalent to &lsquo;<samp class="samp">\X'\*[<var class="var">name</var>]'</samp>&rsquo;
+(one-character name&nbsp;<var class="var">n</var>, two-character name <var class="var">nm</var>).
+However, the contents of the string or macro <var class="var">name</var> are not
+interpreted; also it is permitted for <var class="var">name</var> to have been defined as
+a macro and thus contain newlines (it is not permitted for the argument
+to <code class="code">\X</code> to contain newlines). The inclusion of newlines requires
+an extension to the <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> output format, and
+confuses drivers that do not know about this extension (see <a class="pxref" href="Device-Control-Commands.html">Device Control Commands</a>).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etag"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tag</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002etag'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tag"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002etaga"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.taga</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002etaga'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-taga"></a>
+<p>Reserved for internal use.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Miscellaneous.html">Miscellaneous</a>, Previous: <a href="I_002fO.html">I/O</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Predefined-Text.html b/doc/groff.html.node/Predefined-Text.html
new file mode 100644
index 0000000..8b03b1f
--- /dev/null
+++ b/doc/groff.html.node/Predefined-Text.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Predefined Text (The GNU Troff Manual)</title>
+
+<meta name="description" content="Predefined Text (The GNU Troff Manual)">
+<meta name="keywords" content="Predefined Text (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Preprocessor-Support.html" rel="next" title="Preprocessor Support">
+<link href="Font-and-Size-Changes.html" rel="prev" title="Font and Size Changes">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Predefined-Text">
+<div class="nav-panel">
+<p>
+Next: <a href="Preprocessor-Support.html" accesskey="n" rel="next">Preprocessor Support</a>, Previous: <a href="Font-and-Size-Changes.html" accesskey="p" rel="prev">Font and Size Changes</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Predefined-Text-1">3.2.12 Predefined Text</h4>
+
+<p>Most macro packages supply predefined strings to set prepared text like
+the date, or to perform operations like super- and subscripting.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Preprocessor-Intro.html b/doc/groff.html.node/Preprocessor-Intro.html
new file mode 100644
index 0000000..7bb43a7
--- /dev/null
+++ b/doc/groff.html.node/Preprocessor-Intro.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Preprocessor Intro (The GNU Troff Manual)</title>
+
+<meta name="description" content="Preprocessor Intro (The GNU Troff Manual)">
+<meta name="keywords" content="Preprocessor Intro (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Introduction.html" rel="up" title="Introduction">
+<link href="Output-Device-Intro.html" rel="next" title="Output Device Intro">
+<link href="Macro-Package-Intro.html" rel="prev" title="Macro Package Intro">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Preprocessor-Intro">
+<div class="nav-panel">
+<p>
+Next: <a href="Output-Device-Intro.html" accesskey="n" rel="next">Output Devices</a>, Previous: <a href="Macro-Package-Intro.html" accesskey="p" rel="prev">Macro Packages</a>, Up: <a href="Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Preprocessors">1.5 Preprocessors</h3>
+<a class="index-entry-id" id="index-preprocessors"></a>
+
+<p>An alternative approach to complexity management, particularly when
+constructing tables, setting mathematics, or drawing diagrams, lies in
+preprocessing. A <em class="dfn">preprocessor</em> employs a domian-specific language
+to ease the generation of tables, equations, and so forth in terms that
+are convenient for human entry. Each preprocessor reads a document and
+translates the parts of it that apply to it into GNU <code class="code">troff</code> input.
+Command-line options to <code class="command">groff</code> tell it which preprocessors to
+use.
+</p>
+<p><code class="code">groff</code> provides preprocessors for laying out tables
+(<code class="command">gtbl</code>), typesetting equations (<code class="command">geqn</code>), drawing
+diagrams (<code class="command">gpic</code> and <code class="command">ggrn</code>), inserting bibliographic
+references (<code class="command">grefer</code>), and drawing chemical structures
+(<code class="command">gchem</code>). An associated program that is useful when dealing
+with preprocessors is <code class="command">gsoelim</code>.<a class="footnote" id="DOCF1" href="groff.html_fot.html#FOOT1"><sup>1</sup></a>
+</p>
+<p><code class="code">groff</code> also supports <code class="code">grap</code>, a preprocessor for drawing
+graphs. A free implementation of it can be obtained separately.
+</p>
+<p>Unique to <code class="code">groff</code> is the <code class="code">preconv</code> preprocessor that enables
+<code class="code">groff</code> to handle documents in a variety of input encodings.
+</p>
+<p>Other preprocessors exist, but no free implementations
+are known. An example is <code class="command">ideal</code>, which draws diagrams using a
+mathematical constraint language.
+</p>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Preprocessor-Support.html b/doc/groff.html.node/Preprocessor-Support.html
new file mode 100644
index 0000000..43e961c
--- /dev/null
+++ b/doc/groff.html.node/Preprocessor-Support.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Preprocessor Support (The GNU Troff Manual)</title>
+
+<meta name="description" content="Preprocessor Support (The GNU Troff Manual)">
+<meta name="keywords" content="Preprocessor Support (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Configuration-and-Customization.html" rel="next" title="Configuration and Customization">
+<link href="Predefined-Text.html" rel="prev" title="Predefined Text">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Preprocessor-Support">
+<div class="nav-panel">
+<p>
+Next: <a href="Configuration-and-Customization.html" accesskey="n" rel="next">Configuration and Customization</a>, Previous: <a href="Predefined-Text.html" accesskey="p" rel="prev">Predefined Text</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Preprocessor-Support-1">3.2.13 Preprocessor Support</h4>
+
+<p>All macro packages provide support for various preprocessors and may
+extend their functionality by defining macros to set their contents in
+displays. Examples include <code class="code">TS</code> and <code class="code">TE</code> for <code class="command">gtbl</code>,
+<code class="code">EQ</code> and <code class="code">EN</code> for <code class="command">geqn</code>, and <code class="code">PS</code> and <code class="code">PE</code>
+for <code class="command">gpic</code>.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Program-and-File-Index.html b/doc/groff.html.node/Program-and-File-Index.html
new file mode 100644
index 0000000..ecc30ec
--- /dev/null
+++ b/doc/groff.html.node/Program-and-File-Index.html
@@ -0,0 +1,239 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Program and File Index (The GNU Troff Manual)</title>
+
+<meta name="description" content="Program and File Index (The GNU Troff Manual)">
+<meta name="keywords" content="Program and File Index (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Concept-Index.html" rel="next" title="Concept Index">
+<link href="File-Keyword-Index.html" rel="prev" title="File Keyword Index">
+<style type="text/css">
+<!--
+a.summary-letter-printindex {text-decoration: none}
+td.printindex-index-entry {vertical-align: top}
+td.printindex-index-section {vertical-align: top}
+th.entries-header-printindex {text-align:left}
+th.sections-header-printindex {text-align:left}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="appendix-level-extent" id="Program-and-File-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="Concept-Index.html" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="File-Keyword-Index.html" accesskey="p" rel="prev">File Keyword Index</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="appendix" id="Program-and-File-Index-1">Appendix I Program and File Index</h2>
+
+<div class="printindex pg-printindex">
+<table class="pg-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-J"><b>J</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-Z"><b>Z</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="pg-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="man.html#index-an_002etmac"><code>an.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="man.html">man</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-changebar"><code>changebar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-composite_002etmac"><code>composite.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-cp1047_002etmac"><code>cp1047.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-cs_002etmac"><code>cs.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-de_002etmac"><code>de.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-DESC"><code>DESC</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-DESC-1"><code>DESC</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-DESC-2"><code>DESC</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-DESC-3"><code>DESC</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Special-Fonts.html#index-DESC-4"><code>DESC</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Special-Fonts.html">Special Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-diffmk"><code>diffmk</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-E">E</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-ec_002etmac"><code>ec.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-en_002etmac"><code>en.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-eqn"><code>eqn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-fr_002etmac"><code>fr.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-freeeuro_002epfa"><code>freeeuro.pfa</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-G">G</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-gchem"><code>gchem</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-gdiffmk"><code>gdiffmk</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-geqn"><code>geqn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-ggrn"><code>ggrn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-gpic"><code>gpic</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-grap"><code>grap</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-grefer"><code>grefer</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-groff"><code>groff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-gsoelim"><code>gsoelim</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-gtbl"><code>gtbl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-gtroff"><code>gtroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-I">I</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-it_002etmac"><code>it.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-J">J</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-ja_002etmac"><code>ja.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-latin1_002etmac"><code>latin1.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-latin2_002etmac"><code>latin2.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-latin5_002etmac"><code>latin5.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Encodings.html#index-latin9_002etmac"><code>latin9.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Encodings.html">Input Encodings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Indexing.html#index-makeindex"><code>makeindex</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Indexing.html">Indexing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-man_002elocal"><code>man.local</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="man.html#index-man_002etmac"><code>man.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="man.html">man</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Optional-man-extensions.html#index-man_002eultrix"><code>man.ultrix</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Optional-man-extensions.html">Optional man extensions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-nrchbar"><code>nrchbar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paper-Format.html#index-papersize_002etmac"><code>papersize.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paper-Format.html">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-perl"><code>perl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-pic"><code>pic</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-post_002dgrohtml"><code>post-grohtml</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-pre_002dgrohtml"><code>pre-grohtml</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-preconv"><code>preconv</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-refer"><code>refer</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-soelim"><code>soelim</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-sv_002etmac"><code>sv.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Insertions.html#index-tbl"><code>tbl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Insertions.html">ms Insertions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-trace_002etmac"><code>trace.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-troffrc"><code>troffrc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Paper-Format.html#index-troffrc-1"><code>troffrc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Paper-Format.html">Paper Format</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-troffrc-2"><code>troffrc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-troffrc-3"><code>troffrc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="troff-and-nroff-Modes.html#index-troffrc-4"><code>troffrc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Groff-Options.html#index-troffrc_002dend"><code>troffrc-end</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Groff-Options.html">Groff Options</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-troffrc_002dend-1"><code>troffrc-end</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="troff-and-nroff-Modes.html#index-troffrc_002dend-2"><code>troffrc-end</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="troff-and-nroff-Modes.html#index-tty_002etmac"><code>tty.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-tty_002etmac-1"><code>tty.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Operators-in-Conditionals.html#index-vtroff"><code>vtroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Operators-in-Conditionals.html">Operators in Conditionals</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Program-and-File-Index_pg_letter-Z">Z</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-zh_002etmac"><code>zh.tmac</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="pg-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-J"><b>J</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Program-and-File-Index_pg_letter-Z"><b>Z</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Concept-Index.html">Concept Index</a>, Previous: <a href="File-Keyword-Index.html">File Keyword Index</a>, Up: <a href="index.html">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Punning-Names.html b/doc/groff.html.node/Punning-Names.html
new file mode 100644
index 0000000..dde1a20
--- /dev/null
+++ b/doc/groff.html.node/Punning-Names.html
@@ -0,0 +1,190 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Punning Names (The GNU Troff Manual)</title>
+
+<meta name="description" content="Punning Names (The GNU Troff Manual)">
+<meta name="keywords" content="Punning Names (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Environments.html" rel="next" title="Environments">
+<link href="Diversions.html" rel="prev" title="Diversions">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Punning-Names">
+<div class="nav-panel">
+<p>
+Next: <a href="Environments.html" accesskey="n" rel="next">Environments</a>, Previous: <a href="Diversions.html" accesskey="p" rel="prev">Diversions</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Punning-Names-1">5.30 Punning Names</h3>
+<a class="index-entry-id" id="index-diversions-1"></a>
+
+<p>Macros, strings, and diversions share a name space; recall
+<a class="ref" href="Identifiers.html">Identifiers</a>. Internally, the same mechanism is used to store
+them. You can thus call a macro with string interpolation syntax and
+vice versa.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de subject
+Typesetting
+..
+.de predicate
+rewards attention to detail
+..
+\*[subject] \*[predicate].
+Truly.
+ &rArr; Typesetting
+ &rArr; rewards attention to detail Truly.
+</pre></div></div>
+
+<p>What went wrong? Strings don&rsquo;t contain newlines, but macros do. String
+interpolation placed a newline at the end of &lsquo;<samp class="samp">\*[subject]</samp>&rsquo;, and the
+next thing on the input was a space. Then when &lsquo;<samp class="samp">\*[predicate]</samp>&rsquo; was
+interpolated, it was followed by the empty request &lsquo;<samp class="samp">.</samp>&rsquo; on a line by
+itself. If we want to use macros as strings, we must take interpolation
+behavior into account.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de subject
+Typesetting\\
+..
+.de predicate
+rewards attention to detail\\
+..
+\*[subject] \*[predicate].
+Truly.
+ &rArr; Typesetting rewards attention to detail. Truly.
+</pre></div></div>
+
+<p>By ending each text line of the macros with an escaped
+<code class="code">\<kbd class="key">RET</kbd></code>, we get the desired effect (see <a class="pxref" href="Line-Continuation.html">Line Continuation</a>).<a class="footnote" id="DOCF114" href="groff.html_fot.html#FOOT114"><sup>114</sup></a>
+What would have happened if we had used only one backslash at a time
+instead?
+</p>
+<p>Interpolating a string does not hide existing macro arguments. We can
+also place the escaped newline outside the string interpolation instead
+of within the string definition. Thus, in a macro, a more efficient way
+of doing
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.xx \\$@
+</pre></div></div>
+
+<p>is
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">\\*[xx]\\
+</pre></div></div>
+
+<p>The latter calling syntax doesn&rsquo;t change the value of <code class="code">\$0</code>, which
+is then inherited from the calling macro (see <a class="pxref" href="Parameters.html">Parameters</a>).
+</p>
+<p>Diversions can be also called with string syntax. It is sometimes
+convenient to copy one-line diversions to a string.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.di xx
+the
+.ft I
+interpolation system
+.ft
+.br
+.di
+.ds yy This is a test of \*(xx\c
+\*(yy.
+ &rArr; This is a test of the <i class="i">interpolation system</i>.
+</pre></div></div>
+
+<p>As the previous example shows, it is possible to store formatted output
+in strings. The <code class="code">\c</code> escape sequence prevents the subsequent
+newline from being interpreted as a break (again,
+see <a class="pxref" href="Line-Continuation.html">Line Continuation</a>).
+</p>
+<p>Copying multi-output line diversions produces unexpected results.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.di xxx
+a funny
+.br
+test
+.br
+.di
+.ds yyy This is \*[xxx]\c
+\*[yyy].
+ &rArr; test This is a funny.
+</pre></div></div>
+
+<p>Usually, it is not predictable whether a diversion contains one or more
+output lines, so this mechanism should be avoided. With <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code>, this was the only solution to strip off a final newline
+from a diversion. Another disadvantage is that the spaces in the copied
+string are already formatted, preventing their adjustment. This can
+cause ugly results.
+</p>
+<a class="index-entry-id" id="index-stripping-final-newline-in-diversions"></a>
+<a class="index-entry-id" id="index-diversion_002c-stripping-final-newline"></a>
+<a class="index-entry-id" id="index-final-newline_002c-stripping-in-diversions"></a>
+<a class="index-entry-id" id="index-newline_002c-final_002c-stripping-in-diversions"></a>
+<a class="index-entry-id" id="index-horizontal-space_002c-unformatting"></a>
+<a class="index-entry-id" id="index-space_002c-horizontal_002c-unformatting"></a>
+<a class="index-entry-id" id="index-unformatting-horizontal-space"></a>
+<p>A clean solution to this problem is available in GNU <code class="code">troff</code>, using
+the requests <code class="code">chop</code> to remove the final newline of a diversion, and
+<code class="code">unformat</code> to make the horizontal spaces adjustable again.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.box xxx
+a funny
+.br
+test
+.br
+.box
+.chop xxx
+.unformat xxx
+This is \*[xxx].
+ &rArr; This is a funny test.
+</pre></div></div>
+
+<p>See <a class="xref" href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a>.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Environments.html">Environments</a>, Previous: <a href="Diversions.html">Diversions</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Register-Index.html b/doc/groff.html.node/Register-Index.html
new file mode 100644
index 0000000..979a346
--- /dev/null
+++ b/doc/groff.html.node/Register-Index.html
@@ -0,0 +1,349 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Register Index (The GNU Troff Manual)</title>
+
+<meta name="description" content="Register Index (The GNU Troff Manual)">
+<meta name="keywords" content="Register Index (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Macro-Index.html" rel="next" title="Macro Index">
+<link href="Operator-Index.html" rel="prev" title="Operator Index">
+<style type="text/css">
+<!--
+a.summary-letter-printindex {text-decoration: none}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+td.printindex-index-entry {vertical-align: top}
+td.printindex-index-section {vertical-align: top}
+th.entries-header-printindex {text-align:left}
+th.sections-header-printindex {text-align:left}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="appendix-level-extent" id="Register-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="Macro-Index.html" accesskey="n" rel="next">Macro Index</a>, Previous: <a href="Operator-Index.html" accesskey="p" rel="prev">Operator Index</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="appendix" id="Register-Index-1">Appendix E Register Index</h2>
+
+<p>The macro package or program a specific register belongs to is appended
+in brackets.
+</p>
+<p>A register name&nbsp;<code class="code">x</code> consisting of exactly one character can be
+accessed as &lsquo;<samp class="samp">\nx</samp>&rsquo;. A register name <code class="code">xx</code> consisting of exactly
+two characters can be accessed as &lsquo;<samp class="samp">\n(xx</samp>&rsquo;. Register names
+<code class="code">xxx</code> of any length can be accessed as &lsquo;<samp class="samp">\n[xxx]</samp>&rsquo;.
+</p>
+<div class="printindex vr-printindex">
+<table class="vr-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Register-Index_vr_symbol-1"><b>$</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_symbol-2"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_symbol-3"><b>.</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-Y"><b>Y</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="vr-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_symbol-1">$</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-_0024_0024"><code>$$</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_symbol-2">%</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-_0025-1"><code>%</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-_0025-2"><code>%</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_symbol-3">.</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-_002e_0024"><code>.$</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-_002eA"><code>.A</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-_002ea"><code>.a</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-_002eb"><code>.b</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-_002ebr-1"><code>.br</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-_002ec"><code>.c</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-_002eC"><code>.C</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-_002ecdp"><code>.cdp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-_002ece-1"><code>.ce</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-_002echt"><code>.cht</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-_002ecolor-1"><code>.color</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-_002ecp-1"><code>.cp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-_002ecsk"><code>.csk</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-_002ed"><code>.d</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-_002eev-1"><code>.ev</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-_002eF"><code>.F</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Positions.html#index-_002ef"><code>.f</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Positions.html">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-_002efam-1"><code>.fam</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-_002efn"><code>.fn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Positions.html#index-_002efp-1"><code>.fp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Positions.html">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-_002eg"><code>.g</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Motion-Quanta.html#index-_002eH"><code>.H</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Motion-Quanta.html">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-_002eh"><code>.h</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-_002eheight"><code>.height</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-_002ehla-1"><code>.hla</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-_002ehlc"><code>.hlc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-_002ehlm-1"><code>.hlm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-_002ehy-1"><code>.hy</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-_002ehym-1"><code>.hym</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-_002ehys-1"><code>.hys</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-_002ei"><code>.i</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-_002ein-3"><code>.in</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Continuation.html#index-_002eint"><code>.int</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Continuation.html">Line Continuation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-_002ej"><code>.j</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-_002ek"><code>.k</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-_002ekern-1"><code>.kern</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-_002eL"><code>.L</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-_002el"><code>.l</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-_002elg-1"><code>.lg</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-_002elinetabs-1"><code>.linetabs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-_002ell-3"><code>.ll</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-_002elt-3"><code>.lt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-_002em"><code>.m</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-_002eM"><code>.M</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-_002en"><code>.n</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-_002ene-1"><code>.ne</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-_002enm-1"><code>.nm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-_002enn-1"><code>.nn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-_002ens-1"><code>.ns</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-_002eo"><code>.o</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Suppressing-Output.html#index-_002eO"><code>.O</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Suppressing-Output.html">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-_002eP"><code>.P</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-_002ep"><code>.p</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-_002epe"><code>.pe</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-_002epn-3"><code>.pn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-_002eps-3"><code>.ps</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-_002epsr"><code>.psr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-_002epvs-3"><code>.pvs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-_002eR-2"><code>.R</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-_002erj-1"><code>.rj</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Type-Size.html#index-_002es"><code>.s</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Type-Size.html">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-_002eslant"><code>.slant</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Fractional-Type-Sizes.html#index-_002esr"><code>.sr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Fractional-Type-Sizes.html">Using Fractional Type Sizes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-_002ess-1"><code>.ss</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-_002esss"><code>.sss</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-_002esty-1"><code>.sty</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-_002eT-2"><code>.T</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-_002et"><code>.t</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-_002etabs"><code>.tabs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-_002etrunc"><code>.trunc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-_002eU"><code>.U</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-_002eu"><code>.u</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Motion-Quanta.html#index-_002eV"><code>.V</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Motion-Quanta.html">Motion Quanta</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-_002ev"><code>.v</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Vertical-Position-Traps.html#index-_002evpt-1"><code>.vpt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Vertical-Position-Traps.html">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-_002ew"><code>.w</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-_002ewarn-1"><code>.warn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-_002ex"><code>.x</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-_002ey"><code>.y</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-_002eY"><code>.Y</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-_002ez"><code>.z</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-_002ezoom"><code>.zoom</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-c_002e"><code>c.</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-ct"><code>ct</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-DD-_005bms_005d"><code>DD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-DI-_005bms_005d"><code>DI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-dl"><code>dl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-dn"><code>dn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-dw"><code>dw</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-dy"><code>dy</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-FF-_005bms_005d"><code>FF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-FI-_005bms_005d"><code>FI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-FM-_005bms_005d"><code>FM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-FPD-_005bms_005d"><code>FPD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-FPS-_005bms_005d"><code>FPS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-FVS-_005bms_005d"><code>FVS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-G">G</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-GROWPS-_005bms_005d"><code>GROWPS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Differences-from-AT_0026T-ms.html#index-GS-_005bms_005d"><code>GS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Differences-from-AT_0026T-ms.html">Differences from AT&amp;T ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-H">H</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-HM-_005bms_005d"><code>HM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-HORPHANS-_005bms_005d"><code>HORPHANS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-hours"><code>hours</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-hp"><code>hp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-HY-_005bms_005d"><code>HY <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-LL-_005bms_005d"><code>LL <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-llx"><code>llx</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-lly"><code>lly</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-ln"><code>ln</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leading-Space-Traps.html#index-lsn"><code>lsn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leading-Space-Traps.html">Leading Space Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leading-Space-Traps.html#index-lss"><code>lss</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leading-Space-Traps.html">Leading Space Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-LT-_005bms_005d"><code>LT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-MINGW-_005bms_005d"><code>MINGW <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-minutes"><code>minutes</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-mo"><code>mo</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-nl"><code>nl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-O">O</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Suppressing-Output.html#index-opmaxx"><code>opmaxx</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Suppressing-Output.html">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Suppressing-Output.html#index-opmaxy"><code>opmaxy</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Suppressing-Output.html">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Suppressing-Output.html#index-opminx"><code>opminx</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Suppressing-Output.html">Suppressing Output</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Suppressing-Output.html#index-opminy"><code>opminy</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Suppressing-Output.html">Suppressing Output</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-PD-_005bms_005d"><code>PD <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-PI-_005bms_005d"><code>PI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-PO-_005bms_005d"><code>PO <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-PORPHANS-_005bms_005d"><code>PORPHANS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-PS-_005bms_005d-1"><code>PS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-PSINCR-_005bms_005d"><code>PSINCR <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-Q">Q</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-QI-_005bms_005d"><code>QI <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-rsb"><code>rsb</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-rst"><code>rst</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-sb"><code>sb</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-seconds"><code>seconds</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-skw"><code>skw</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-slimit"><code>slimit</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-ssc"><code>ssc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-st"><code>st</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-systat"><code>systat</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-TC_002dMARGIN-_005bms_005d"><code>TC-MARGIN <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-urx"><code>urx</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-ury"><code>ury</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-VS-_005bms_005d"><code>VS <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Register-Index_vr_letter-Y">Y</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-year"><code>year</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Built_002din-Registers.html#index-yr"><code>yr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Built_002din-Registers.html">Built-in Registers</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="vr-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Register-Index_vr_symbol-1"><b>$</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_symbol-2"><b>%</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_symbol-3"><b>.</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Register-Index_vr_letter-Y"><b>Y</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Macro-Index.html">Macro Index</a>, Previous: <a href="Operator-Index.html">Operator Index</a>, Up: <a href="index.html">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Registers.html b/doc/groff.html.node/Registers.html
new file mode 100644
index 0000000..6f33d51
--- /dev/null
+++ b/doc/groff.html.node/Registers.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Registers (The GNU Troff Manual)</title>
+
+<meta name="description" content="Registers (The GNU Troff Manual)">
+<meta name="keywords" content="Registers (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Manipulating-Filling-and-Adjustment.html" rel="next" title="Manipulating Filling and Adjustment">
+<link href="Formatter-Instructions.html" rel="prev" title="Formatter Instructions">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Registers">
+<div class="nav-panel">
+<p>
+Next: <a href="Manipulating-Filling-and-Adjustment.html" accesskey="n" rel="next">Manipulating Filling and Adjustment</a>, Previous: <a href="Formatter-Instructions.html" accesskey="p" rel="prev">Formatter Instructions</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Registers-1">5.8 Registers</h3>
+<a class="index-entry-id" id="index-registers"></a>
+
+<p>In the <code class="code">roff</code> language, numbers can be stored in <em class="dfn">registers</em>.
+Many built-in registers exist, supplying anything from the date to
+details of formatting parameters. You can also define your own.
+See <a class="xref" href="Identifiers.html">Identifiers</a>, for information on constructing a valid name for a
+register.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="Setting-Registers.html" accesskey="1">Setting Registers</a></li>
+<li><a href="Interpolating-Registers.html" accesskey="2">Interpolating Registers</a></li>
+<li><a href="Auto_002dincrement.html" accesskey="3">Auto-increment</a></li>
+<li><a href="Assigning-Register-Formats.html" accesskey="4">Assigning Register Formats</a></li>
+<li><a href="Built_002din-Registers.html" accesskey="5">Built-in Registers</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Request-Index.html b/doc/groff.html.node/Request-Index.html
new file mode 100644
index 0000000..dc328f2
--- /dev/null
+++ b/doc/groff.html.node/Request-Index.html
@@ -0,0 +1,394 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Request Index (The GNU Troff Manual)</title>
+
+<meta name="description" content="Request Index (The GNU Troff Manual)">
+<meta name="keywords" content="Request Index (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="#Request-Index" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Escape-Sequence-Index.html" rel="next" title="Escape Sequence Index">
+<link href="Copying-This-Manual.html" rel="prev" title="Copying This Manual">
+<style type="text/css">
+<!--
+a.summary-letter-printindex {text-decoration: none}
+td.printindex-index-entry {vertical-align: top}
+td.printindex-index-section {vertical-align: top}
+th.entries-header-printindex {text-align:left}
+th.sections-header-printindex {text-align:left}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="appendix-level-extent" id="Request-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="Escape-Sequence-Index.html" accesskey="n" rel="next">Escape Sequence Index</a>, Previous: <a href="Copying-This-Manual.html" accesskey="p" rel="prev">Copying This Manual</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="appendix" id="Request-Index-1">Appendix B Request Index</h2>
+
+<p>Request names appear without a leading control character; the defaults
+are <code class="code">.</code> for the regular control character and <code class="code">'</code> for the
+no-break control character.
+</p>
+<div class="printindex rq-printindex">
+<table class="rq-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Request-Index_rq_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-W"><b>W</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="rq-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-ab"><code>ab</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-ad"><code>ad</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Assigning-Register-Formats.html#index-af"><code>af</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Assigning-Register-Formats.html">Assigning Register Formats</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-aln"><code>aln</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-als"><code>als</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-am"><code>am</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-am1"><code>am1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-ami"><code>ami</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-ami1"><code>ami1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-as"><code>as</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-as1"><code>as1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-asciify"><code>asciify</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-B">B</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-backtrace"><code>backtrace</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-bd"><code>bd</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Blank-Line-Traps.html#index-blm"><code>blm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Blank-Line-Traps.html">Blank Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-box"><code>box</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-boxa"><code>boxa</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-bp"><code>bp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-br"><code>br</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="while.html#index-break-2"><code>break</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="while.html">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-brp"><code>brp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-c2"><code>c2</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Control-Characters.html#index-cc"><code>cc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Control-Characters.html">Control Characters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-ce"><code>ce</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-cf"><code>cf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-cflags"><code>cflags</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-ch"><code>ch</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-char"><code>char</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-chop"><code>chop</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Classes.html#index-class"><code>class</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Classes.html">Character Classes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-close"><code>close</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-color"><code>color</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-composite"><code>composite</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="while.html#index-continue"><code>continue</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="while.html">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-cp"><code>cp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-cs"><code>cs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-cu"><code>cu</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-da"><code>da</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-de"><code>de</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-de1"><code>de1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-defcolor"><code>defcolor</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-dei"><code>dei</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-dei1"><code>dei1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-device"><code>device</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-devicem"><code>devicem</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-di"><code>di</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Compatibility-Mode.html#index-do"><code>do</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Compatibility-Mode.html">Compatibility Mode</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-ds"><code>ds</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-ds-1"><code>ds</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-ds1"><code>ds1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversion-Traps.html#index-dt"><code>dt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversion-Traps.html">Diversion Traps</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-E">E</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-ec"><code>ec</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-ecr"><code>ecr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-ecs"><code>ecs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="if_002delse.html#index-el"><code>el</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="if_002delse.html">if-else</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="End_002dof_002dinput-Traps.html#index-em"><code>em</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="End_002dof_002dinput-Traps.html">End-of-input Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Escape-Sequences.html#index-eo"><code>eo</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Escape-Sequences.html">Using Escape Sequences</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-ev"><code>ev</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Environments.html#index-evc"><code>evc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Environments.html">Environments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-ex"><code>ex</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-fam"><code>fam</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Fields.html#index-fc"><code>fc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Fields.html">Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-fchar"><code>fchar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-fcolor"><code>fcolor</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-fi"><code>fi</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-fl"><code>fl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Positions.html#index-fp"><code>fp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Positions.html">Font Positions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-fschar"><code>fschar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Special-Fonts.html#index-fspecial"><code>fspecial</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Special-Fonts.html">Special Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-ft"><code>ft</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-ftr"><code>ftr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Selecting-Fonts.html#index-fzoom"><code>fzoom</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Selecting-Fonts.html">Selecting Fonts</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-G">G</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Colors.html#index-gcolor"><code>gcolor</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Colors.html">Colors</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-H">H</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hc"><code>hc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hcode"><code>hcode</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hla"><code>hla</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hlm"><code>hlm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hpf"><code>hpf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hpfa"><code>hpfa</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hpfcode"><code>hpfcode</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hw"><code>hw</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hy"><code>hy</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hym"><code>hym</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-hys"><code>hys</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-I">I</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="if_002delse.html#index-ie"><code>ie</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="if_002delse.html">if-else</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="if_002dthen.html#index-if"><code>if</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="if_002dthen.html">if-then</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Comments.html#index-ig"><code>ig</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Comments.html">Comments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-in-1"><code>in</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-it"><code>it</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Input-Line-Traps.html#index-itc"><code>itc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Input-Line-Traps.html">Input Line Traps</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-K">K</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-kern"><code>kern</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leaders.html#index-lc"><code>lc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leaders.html">Leaders</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-length"><code>length</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-lf"><code>lf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-lg"><code>lg</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-linetabs"><code>linetabs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-ll-1"><code>ll</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-ls"><code>ls</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Leading-Space-Traps.html#index-lsm"><code>lsm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Leading-Space-Traps.html">Leading Space Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-lt"><code>lt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-mc"><code>mc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-mk"><code>mk</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-mso"><code>mso</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-msoquiet"><code>msoquiet</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-N">N</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-na"><code>na</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-ne"><code>ne</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-nf"><code>nf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-nh"><code>nh</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-nm"><code>nm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-nn"><code>nn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="if_002dthen.html#index-nop"><code>nop</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="if_002dthen.html">if-then</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-nr"><code>nr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-nr-1"><code>nr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-nr-2"><code>nr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Auto_002dincrement.html#index-nr-3"><code>nr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Auto_002dincrement.html">Auto-increment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="troff-and-nroff-Modes.html#index-nroff"><code>nroff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-ns"><code>ns</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-nx"><code>nx</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-O">O</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-open"><code>open</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-opena"><code>opena</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-os"><code>os</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-output"><code>output</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-P">P</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-pc"><code>pc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-pev"><code>pev</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-pi"><code>pi</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-pl"><code>pl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-pm"><code>pm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-pn"><code>pn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-pnr"><code>pnr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-po-1"><code>po</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Type-Size.html#index-ps"><code>ps</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Type-Size.html">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Miscellaneous.html#index-psbb"><code>psbb</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Miscellaneous.html">Miscellaneous</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-pso"><code>pso</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-ptr"><code>ptr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-pvs"><code>pvs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-rchar"><code>rchar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-rd"><code>rd</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Writing-Macros.html#index-return"><code>return</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Writing-Macros.html">Writing Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-rfschar"><code>rfschar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-rj"><code>rj</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-rm"><code>rm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-rn"><code>rn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-rnn"><code>rnn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Setting-Registers.html#index-rr"><code>rr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Setting-Registers.html">Setting Registers</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-rs"><code>rs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Motions.html#index-rt"><code>rt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Motions.html">Page Motions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Using-Symbols.html#index-schar"><code>schar</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Using-Symbols.html">Using Symbols</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Hyphenation.html#index-shc"><code>shc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Hyphenation.html">Manipulating Hyphenation</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Parameters.html#index-shift"><code>shift</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Parameters.html">Parameters</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Type-Size.html#index-sizes-1"><code>sizes</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Type-Size.html">Changing the Type Size</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-so"><code>so</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-soquiet"><code>soquiet</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Spacing.html#index-sp"><code>sp</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Spacing.html">Manipulating Spacing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Special-Fonts.html#index-special-2"><code>special</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Special-Fonts.html">Special Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-spreadwarn"><code>spreadwarn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Manipulating-Filling-and-Adjustment.html#index-ss"><code>ss</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-stringdown"><code>stringdown</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-stringup"><code>stringup</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Font-Families.html#index-sty"><code>sty</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Font-Families.html">Font Families</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-substring"><code>substring</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Control.html#index-sv"><code>sv</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Control.html">Page Control</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-sy"><code>sy</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-ta"><code>ta</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-tag"><code>tag</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Postprocessor-Access.html#index-taga"><code>taga</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Postprocessor-Access.html">Postprocessor Access</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Tabs-and-Fields.html#index-tc"><code>tc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Tabs-and-Fields.html">Tabs and Fields</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Line-Layout.html#index-ti"><code>ti</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Line-Layout.html">Line Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Ligatures-and-Kerning.html#index-tkf"><code>tkf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Ligatures-and-Kerning.html">Ligatures and Kerning</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Layout.html#index-tl"><code>tl</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Layout.html">Page Layout</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-tm"><code>tm</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-tm1"><code>tm1</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-tmc"><code>tmc</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-tr"><code>tr</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-trf"><code>trf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-trin"><code>trin</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Character-Translations.html#index-trnt"><code>trnt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Character-Translations.html">Character Translations</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="troff-and-nroff-Modes.html#index-troff"><code>troff</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="troff-and-nroff-Modes.html"><code class="code">troff</code> and <code class="code">nroff</code> Modes</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-uf"><code>uf</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Artificial-Fonts.html#index-ul"><code>ul</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Artificial-Fonts.html">Artificial Fonts</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Diversions.html#index-unformat"><code>unformat</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Diversions.html">Diversions</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Vertical-Position-Traps.html#index-vpt"><code>vpt</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Vertical-Position-Traps.html">Vertical Position Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Changing-the-Vertical-Spacing.html#index-vs"><code>vs</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Changing-the-Vertical-Spacing.html">Changing the Vertical Spacing</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Request-Index_rq_letter-W">W</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-warn"><code>warn</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Debugging.html#index-warnscale"><code>warnscale</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Debugging.html">Debugging</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Page-Location-Traps.html#index-wh"><code>wh</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Page-Location-Traps.html">Page Location Traps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="while.html#index-while-1"><code>while</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="while.html">while</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-write"><code>write</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-writec"><code>writec</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="I_002fO.html#index-writem"><code>writem</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="I_002fO.html">I/O</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="rq-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Request-Index_rq_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-B"><b>B</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-E"><b>E</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-G"><b>G</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-H"><b>H</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-I"><b>I</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-K"><b>K</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-N"><b>N</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-P"><b>P</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-V"><b>V</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#Request-Index_rq_letter-W"><b>W</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Escape-Sequence-Index.html">Escape Sequence Index</a>, Previous: <a href="Copying-This-Manual.html">Copying This Manual</a>, Up: <a href="index.html">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Request-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Requests-and-Macros.html b/doc/groff.html.node/Requests-and-Macros.html
new file mode 100644
index 0000000..8a009b3
--- /dev/null
+++ b/doc/groff.html.node/Requests-and-Macros.html
@@ -0,0 +1,221 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Requests and Macros (The GNU Troff Manual)</title>
+
+<meta name="description" content="Requests and Macros (The GNU Troff Manual)">
+<meta name="keywords" content="Requests and Macros (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Text.html" rel="up" title="Text">
+<link href="Macro-Packages.html" rel="next" title="Macro Packages">
+<link href="Tabs-and-Leaders.html" rel="prev" title="Tabs and Leaders">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Requests-and-Macros">
+<div class="nav-panel">
+<p>
+Next: <a href="Macro-Packages.html" accesskey="n" rel="next">Macro Packages</a>, Previous: <a href="Tabs-and-Leaders.html" accesskey="p" rel="prev">Tabs and Leaders</a>, Up: <a href="Text.html" accesskey="u" rel="up">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Requests-and-Macros-1">5.1.7 Requests and Macros</h4>
+
+<p>We have now encountered almost all of the syntax there is in the
+<code class="code">roff</code> language, with an exception already noted in passing.
+<a class="index-entry-id" id="index-request"></a>
+<a class="index-entry-id" id="index-control-character-_0028_002e_0029"></a>
+<a class="index-entry-id" id="index-character_002c-control-_0028_002e_0029"></a>
+<a class="index-entry-id" id="index-no_002dbreak-control-character-_0028_0027_0029"></a>
+<a class="index-entry-id" id="index-character_002c-no_002dbreak-control-_0028_0027_0029"></a>
+<a class="index-entry-id" id="index-control-character_002c-no_002dbreak-_0028_0027_0029"></a>
+A <em class="dfn">request</em> is an instruction to the formatter that occurs after a
+<em class="dfn">control character</em>, which is recognized at the beginning of an
+input line. The regular control character is a dot (<code class="code">.</code>). Its
+counterpart, the <em class="dfn">no-break control character</em>, a neutral apostrophe
+(<code class="code">'</code>), suppresses the break that is implied by some requests.
+These characters were chosen because it is uncommon for lines of text in
+natural languages to begin with them.
+<a class="index-entry-id" id="index-dummy-character-_0028_005c_0026_0029_002c-as-control-character-suppressor"></a>
+<a class="index-entry-id" id="index-character_002c-dummy-_0028_005c_0026_0029_002c-as-control-character-suppressor"></a>
+If you require a formatted period or apostrophe (closing single
+quotation mark) where GNU <code class="code">troff</code> is expecting a control character,
+prefix the dot or neutral apostrophe with the dummy character escape
+sequence, &lsquo;<samp class="samp">\&amp;</samp>&rsquo;.
+</p>
+<a class="index-entry-id" id="index-control-line"></a>
+<p>An input line beginning with a control character is called a
+<em class="dfn">control line</em>.
+<a class="index-entry-id" id="index-text-line"></a>
+Every line of input that is not a control line is a <em class="dfn">text
+line</em>.<a class="footnote" id="DOCF25" href="groff.html_fot.html#FOOT25"><sup>25</sup></a>
+</p>
+<a class="index-entry-id" id="index-argument"></a>
+<p>Requests often take <em class="dfn">arguments</em>, words (separated from the request
+name and each other by spaces) that specify details of the action GNU
+<code class="code">troff</code> is expected to perform. If a request is meaningless
+without arguments, it is typically ignored.
+</p>
+<p>GNU <code class="code">troff</code>&rsquo;s requests and escape sequences comprise the control
+language of the formatter. Of key importance are the requests that
+define macros. Macros are invoked like requests, enabling the request
+repertoire to be extended or overridden.<a class="footnote" id="DOCF26" href="groff.html_fot.html#FOOT26"><sup>26</sup></a>
+</p>
+<a class="index-entry-id" id="index-macro"></a>
+<a class="index-entry-id" id="index-calling-a-macro"></a>
+<a class="index-entry-id" id="index-interpolation"></a>
+<p>A <em class="dfn">macro</em> can be thought of as an abbreviation you can define for a
+collection of control and text lines. When the macro is <em class="dfn">called</em> by
+giving its name after a control character, it is replaced with what it
+stands for. The process of textual replacement is known as
+<em class="dfn">interpolation</em>.<a class="footnote" id="DOCF27" href="groff.html_fot.html#FOOT27"><sup>27</sup></a> Interpolations are handled as soon as they are
+recognized, and once performed, a <code class="code">roff</code> formatter scans the
+replacement for further requests, macro calls, and escape sequences.
+</p>
+<p>In <code class="code">roff</code> systems, the <code class="code">de</code> request defines a
+macro.<a class="footnote" id="DOCF28" href="groff.html_fot.html#FOOT28"><sup>28</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de DATE
+2020-11-14
+..
+</pre></div></div>
+
+<p>The foregoing input produces no output by itself; all we have done is
+store some information. Observe the pair of dots that ends the macro
+definition. This is a default; you can specify your own terminator for
+the macro definition as the second argument to the <code class="code">de</code> request.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de NAME ENDNAME
+Heywood Jabuzzoff
+.ENDNAME
+</pre></div></div>
+
+<p>In fact, the ending marker is itself the name of a macro to be
+called, or a request to be invoked, if it is defined at the time its
+control line is read.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de END
+Big Rip
+..
+.de START END
+Big Bang
+.END
+.START
+ &rArr; Big Rip Big Bang
+</pre></div></div>
+
+<p>In the foregoing example, &ldquo;Big Rip&rdquo; printed before &ldquo;Big Bang&rdquo;
+because its macro was <em class="emph">called</em> first. Consider what would happen
+if we dropped <code class="code">END</code> from the &lsquo;<samp class="samp">.de START</samp>&rsquo; line and added
+<code class="code">..</code> after <code class="code">.END</code>. Would the order change?
+</p>
+<p>Let us consider a more elaborate example.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de DATE
+2020-10-05
+..
+.
+.de BOSS
+D.\&amp; Kruger,
+J.\&amp; Peterman
+..
+.
+.de NOTICE
+Approved:
+.DATE
+by
+.BOSS
+..
+.
+Insert tedious regulatory compliance paragraph here.
+
+.NOTICE
+
+Insert tedious liability disclaimer paragraph here.
+
+.NOTICE
+ &rArr; Insert tedious regulatory compliance paragraph here.
+ &rArr;
+ &rArr; Approved: 2020-10-05 by D. Kruger, J. Peterman
+ &rArr;
+ &rArr; Insert tedious liability disclaimer paragraph here.
+ &rArr;
+ &rArr; Approved: 2020-10-05 by D. Kruger, J. Peterman
+</pre></div></div>
+
+<p>The above document started with a series of control lines. Three macros
+were defined, with a <code class="code">de</code> request declaring each macro&rsquo;s name, and
+the &ldquo;body&rdquo; of the macro starting on the next line and continuing until
+a line with two dots &lsquo;<samp class="samp"><code class="code">..</code></samp>&rsquo; marked its end. The text proper
+began only after the macros were defined; this is a common pattern.
+Only the <code class="code">NOTICE</code> macro was called &ldquo;directly&rdquo; by the document;
+<code class="code">DATE</code> and <code class="code">BOSS</code> were called only by <code class="code">NOTICE</code> itself.
+Escape sequences were used in <code class="code">BOSS</code>, two levels of macro
+interpolation deep.
+</p>
+<p>The advantage in typing and maintenance economy may not be obvious from
+such a short example, but imagine a much longer document with dozens of
+such paragraphs, each requiring a notice of managerial approval.
+Consider what must happen if you are in charge of generating a new
+version of such a document with a different date, for a different boss.
+With well-chosen macros, you only have to change each datum in one
+place.
+</p>
+<p>In practice, we would probably use strings (see <a class="pxref" href="Strings.html">Strings</a>) instead of
+macros for such simple interpolations; what is important here is to
+glimpse the potential of macros and the power of recursive
+interpolation.
+</p>
+<p>We could have defined <code class="code">DATE</code> and <code class="code">BOSS</code> in the opposite order;
+perhaps less obviously, we could also have defined them <em class="emph">after</em>
+<code class="code">NOTICE</code>. &ldquo;Forward references&rdquo; like this are acceptable because
+the body of a macro definition is not (completely) interpreted, but
+stored instead (see <a class="pxref" href="Copy-Mode.html">Copy Mode</a>). While a macro is being defined (or
+appended to), requests are not interpreted and macros not interpolated,
+whereas some commonly used escape sequences <em class="emph">are</em> interpreted.
+<code class="code">roff</code> systems also support recursive macro calls, as long as you
+have a way to break the recursion (see <a class="pxref" href="Conditionals-and-Loops.html">Conditionals and Loops</a>).
+Maintainable <code class="code">roff</code> documents tend to arrange macro definitions to
+minimize forward references.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Macro-Packages.html">Macro Packages</a>, Previous: <a href="Tabs-and-Leaders.html">Tabs and Leaders</a>, Up: <a href="Text.html">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Safer-Mode.html b/doc/groff.html.node/Safer-Mode.html
new file mode 100644
index 0000000..eca3efd
--- /dev/null
+++ b/doc/groff.html.node/Safer-Mode.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Safer Mode (The GNU Troff Manual)</title>
+
+<meta name="description" content="Safer Mode (The GNU Troff Manual)">
+<meta name="keywords" content="Safer Mode (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Implementation-Differences.html" rel="up" title="Implementation Differences">
+<link href="Compatibility-Mode.html" rel="next" title="Compatibility Mode">
+<link href="Implementation-Differences.html" rel="prev" title="Implementation Differences">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Safer-Mode">
+<div class="nav-panel">
+<p>
+Next: <a href="Compatibility-Mode.html" accesskey="n" rel="next">Compatibility Mode</a>, Previous: <a href="Implementation-Differences.html" accesskey="p" rel="prev">Implementation Differences</a>, Up: <a href="Implementation-Differences.html" accesskey="u" rel="up">Implementation Differences</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Safer-Mode-1">5.38.1 Safer Mode</h4>
+<a class="index-entry-id" id="index-safer-mode-7"></a>
+<a class="index-entry-id" id="index-mode_002c-safer-7"></a>
+
+<a class="index-entry-id" id="index-pi-request_002c-disabled-by-default"></a>
+<a class="index-entry-id" id="index-sy-request_002c-disabled-by-default"></a>
+<p>The formatter operates in &ldquo;safer&rdquo; mode by default; to mitigate risks
+from untrusted input documents, the <code class="code">pi</code> and <code class="code">sy</code> requests are
+disabled. GNU <code class="code">troff</code>&rsquo;s <samp class="option">-U</samp> option enables &ldquo;unsafe
+mode&rdquo;, restoring their function and enabling additional <code class="code">groff</code>
+extension requests, <code class="code">open</code>, <code class="code">opena</code>, and <code class="code">pso</code>.
+See <a class="xref" href="I_002fO.html">I/O</a>.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Sections-and-Chapters.html b/doc/groff.html.node/Sections-and-Chapters.html
new file mode 100644
index 0000000..b94de73
--- /dev/null
+++ b/doc/groff.html.node/Sections-and-Chapters.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Sections and Chapters (The GNU Troff Manual)</title>
+
+<meta name="description" content="Sections and Chapters (The GNU Troff Manual)">
+<meta name="keywords" content="Sections and Chapters (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Headers-and-Footers.html" rel="next" title="Headers and Footers">
+<link href="Paragraphs.html" rel="prev" title="Paragraphs">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Sections-and-Chapters">
+<div class="nav-panel">
+<p>
+Next: <a href="Headers-and-Footers.html" accesskey="n" rel="next">Headers and Footers</a>, Previous: <a href="Paragraphs.html" accesskey="p" rel="prev">Paragraphs</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Sections-and-Chapters-1">3.2.2 Sections and Chapters</h4>
+
+<p>The simplest kind of section heading is unnumbered, set in a bold or
+italic style, and occupies a line by itself. Others possess
+automatically numbered multi-level headings and/or different typeface
+styles or sizes at different levels. More sophisticated macro packages
+supply macros for designating chapters and appendices.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Selecting-Fonts.html b/doc/groff.html.node/Selecting-Fonts.html
new file mode 100644
index 0000000..d6a59e7
--- /dev/null
+++ b/doc/groff.html.node/Selecting-Fonts.html
@@ -0,0 +1,227 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Selecting Fonts (The GNU Troff Manual)</title>
+
+<meta name="description" content="Selecting Fonts (The GNU Troff Manual)">
+<meta name="keywords" content="Selecting Fonts (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Using-Fonts.html" rel="up" title="Using Fonts">
+<link href="Font-Families.html" rel="next" title="Font Families">
+<link href="Using-Fonts.html" rel="prev" title="Using Fonts">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Selecting-Fonts">
+<div class="nav-panel">
+<p>
+Next: <a href="Font-Families.html" accesskey="n" rel="next">Font Families</a>, Previous: <a href="Using-Fonts.html" accesskey="p" rel="prev">Using Fonts</a>, Up: <a href="Using-Fonts.html" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Selecting-Fonts-1">5.19.1 Selecting Fonts</h4>
+<a class="index-entry-id" id="index-font_002c-selection"></a>
+
+<p>We use <em class="dfn">font</em> to refer to any of several means of identifying a
+font: by mounting position (&lsquo;<samp class="samp">3</samp>&rsquo;), by abstract style (&lsquo;<samp class="samp">B</samp>&rsquo;), or
+by its identifier (&lsquo;<samp class="samp">TB</samp>&rsquo;).
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eft"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ft</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">font</i></span>]</var><a class="copiable-link" href='#index-_002eft'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ft"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cff"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\f</code><span class="r"><i class="slanted">f</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cff'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cf"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cf_0028fn"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\f(</code><span class="r"><i class="slanted">fn</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005cf_0028fn'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cf_005bfont_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\f[</code><span class="r"><i class="slanted">font</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cf_005bfont_005d'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002efn_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.fn]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002efn_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002efn"></a>
+<a class="index-entry-id" id="index-changing-fonts-_0028ft_002c-_005cf_0029"></a>
+<a class="index-entry-id" id="index-fonts_002c-changing-_0028ft_002c-_005cf_0029"></a>
+<a class="index-entry-id" id="index-sty-request_002c-and-changing-fonts"></a>
+<a class="index-entry-id" id="index-fam-request_002c-and-changing-fonts"></a>
+<a class="index-entry-id" id="index-_005cF_002c-and-changing-fonts"></a>
+<a class="index-entry-id" id="index-styles"></a>
+<a class="index-entry-id" id="index-family"></a>
+<a class="index-entry-id" id="index-DESC"></a>
+<a class="index-entry-id" id="index-selecting-the-previous-font-_0028ft_0029"></a>
+<a class="index-entry-id" id="index-previous-font_002c-selecting-_0028ft_0029"></a>
+<a class="index-entry-id" id="index-font_002c-previous_002c-slecting-_0028ft_0029"></a>
+<p>The <code class="code">ft</code> request selects the typeface <var class="var">font</var>. If the argument
+is absent or &lsquo;<samp class="samp">P</samp>&rsquo;, it selects the previously chosen font. If
+<var class="var">font</var> is a non-negative integer, it is interpreted as mounting
+position; the font mounted there is selected. If that position refers
+to an abstract style, it is combined with the default family (see
+<code class="code">fam</code> and <code class="code">\F</code> below) to make a resolved font name. If the
+mounting position is not a style and no font is mounted there, GNU
+<code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">font</samp>&rsquo; and ignores the
+request.
+</p>
+<p>If <var class="var">font</var> matches a style name, it is combined with the current
+family to make a resolved font name. Otherwise, <var class="var">font</var> is assumed
+to already be a resolved font name.
+</p>
+<a class="index-entry-id" id="index-automatic-font-mounting"></a>
+<a class="index-entry-id" id="index-font-mounting_002c-automatic"></a>
+<a class="index-entry-id" id="index-mounting_002c-font_002c-automatic"></a>
+<p>The resolved font name is subject to translation (see request <code class="code">ftr</code>
+below). Next, the (possibly translated) font name&rsquo;s mounting position
+is looked up; if not mounted, <var class="var">font</var> is sought on the file system as
+a font description file and, if located, automatically mounted at the
+next available position (see register <code class="code">.fp</code> below). If the font
+was mounted using an identifier different from its font description file
+name (see request <code class="code">fp</code> below), that file name is then looked up.
+If a font description file for the resolved font name is not found, GNU
+<code class="code">troff</code> emits a warning in category &lsquo;<samp class="samp">font</samp>&rsquo; and ignores the
+request.
+</p>
+<p>The <code class="code">\f</code> escape sequence is similar, using one-character name (or
+mounting position) <var class="var">f</var>, two-character name <var class="var">fn</var>, or a name
+<var class="var">font</var> of arbitrary length.
+<a class="index-entry-id" id="index-previous-font_002c-selecting-_0028_005cf_005b_005d_002c-_005cfP_0029"></a>
+<a class="index-entry-id" id="index-font_002c-previous_002c-selecting-_0028_005cf_005b_005d_002c-_005cfP_0029"></a>
+&lsquo;<samp class="samp">\f[]</samp>&rsquo; selects the previous font. The syntax form &lsquo;<samp class="samp">\fP</samp>&rsquo; is
+supported for backward compatibility, and &lsquo;<samp class="samp">\f[P]</samp>&rsquo; for consistency.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">eggs, bacon,
+.ft I
+spam,
+.ft
+and sausage.
+.br
+eggs, bacon, \fIspam,\fP and sausage.
+ &rArr; eggs, bacon, <i class="slanted">spam,</i> and sausage
+ &rArr; eggs, bacon, <i class="slanted">spam,</i> and sausage
+</pre></div></div>
+
+<p>The current and previously selected fonts are properties of the
+environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<p>The read-only string-valued register <code class="code">.fn</code> contains the resolved
+font name of the selected font.
+</p>
+<p><code class="code">\f</code> doesn&rsquo;t produce an input token in GNU <code class="code">troff</code>; it thus
+can be used in requests that expect a single-character argument. We can
+assign a font to a margin character as follows (see <a class="pxref" href="Miscellaneous.html">Miscellaneous</a>).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.mc \f[I]x\f[]
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eftr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ftr</code></strong> <var class="def-var-arguments">f [<span class="r"><i class="slanted">g</i></span>]</var><a class="copiable-link" href='#index-_002eftr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ftr"></a>
+<a class="index-entry-id" id="index-font-translation-_0028ftr_0029"></a>
+<a class="index-entry-id" id="index-ft-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-ul-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-bd-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-_005cf_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-cs-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-tkf-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-special-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-fspecial-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-fp-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-sty-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-if-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-ie-request_002c-and-font-translations"></a>
+<a class="index-entry-id" id="index-while-request_002c-and-font-translations"></a>
+<p>Translate font&nbsp;<var class="var">f</var> to font&nbsp;<var class="var">g</var>. Whenever a font
+named&nbsp;<var class="var">f</var> is referred to in a <code class="code">\f</code> escape sequence, in the
+<code class="code">F</code> and <code class="code">S</code> conditional operators, or in the <code class="code">ft</code>,
+<code class="code">ul</code>, <code class="code">bd</code>, <code class="code">cs</code>, <code class="code">tkf</code>, <code class="code">special</code>,
+<code class="code">fspecial</code>, <code class="code">fp</code>, or <code class="code">sty</code> requests, font&nbsp;<var class="var">g</var> is
+used. If <var class="var">g</var> is missing or equal to&nbsp;<var class="var">f</var> the translation is
+undone.
+</p>
+<p>Font translations cannot be chained.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ftr XXX TR
+.ftr XXX YYY
+.ft XXX
+ error&rarr; warning: can't find font 'XXX'
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002efzoom"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fzoom</code></strong> <var class="def-var-arguments">f [<span class="r"><i class="slanted">zoom</i></span>]</var><a class="copiable-link" href='#index-_002efzoom'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fzoom"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002ezoom_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.zoom]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002ezoom_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002ezoom"></a>
+<a class="index-entry-id" id="index-magnification-of-a-font-_0028fzoom_0029"></a>
+<a class="index-entry-id" id="index-font_002c-magnification-_0028fzoom_0029"></a>
+<a class="index-entry-id" id="index-zoom-factor-of-a-font-_0028fzoom_0029"></a>
+<a class="index-entry-id" id="index-factor_002c-zoom_002c-of-a-font-_0028fzoom_0029"></a>
+<a class="index-entry-id" id="index-font_002c-zoom-factor-_0028fzoom_0029"></a>
+<a class="index-entry-id" id="index-optical-size-of-a-font"></a>
+<a class="index-entry-id" id="index-font_002c-optical-size"></a>
+<a class="index-entry-id" id="index-size_002c-optical_002c-of-a-font"></a>
+<p>Set magnification of font&nbsp;<var class="var">f</var> to factor <var class="var">zoom</var>, which must
+be a non-negative integer multiple of 1/1000th. This request is useful
+to adjust the optical size of a font in relation to the others. In the
+example below, font <code class="code">CR</code> is magnified by 10% (the zoom factor is
+thus 1.1).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.fam P
+.fzoom CR 1100
+.ps 12
+Palatino and \f[CR]Courier\f[]
+</pre></div></div>
+
+<p>A missing or zero value of <var class="var">zoom</var> is the same as a value of 1000,
+which means no magnification. <var class="var">f</var>&nbsp;must be a resolved font
+name, not an abstract style.
+</p>
+<p>The magnification of a font is completely transparent to GNU
+<code class="code">troff</code>; a change of the zoom factor doesn&rsquo;t cause any effect
+except that the dimensions of glyphs, (word) spaces, kerns, etc., of the
+affected font are adjusted accordingly.
+</p>
+<p>The zoom factor of the current font is available in the read-only
+register &lsquo;<samp class="samp">.zoom</samp>&rsquo;, in multiples of 1/1000th. It returns zero if
+there is no magnification.
+</p></dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Font-Families.html">Font Families</a>, Previous: <a href="Using-Fonts.html">Using Fonts</a>, Up: <a href="Using-Fonts.html">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Sentences.html b/doc/groff.html.node/Sentences.html
new file mode 100644
index 0000000..47d7462
--- /dev/null
+++ b/doc/groff.html.node/Sentences.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Sentences (The GNU Troff Manual)</title>
+
+<meta name="description" content="Sentences (The GNU Troff Manual)">
+<meta name="keywords" content="Sentences (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Text.html" rel="up" title="Text">
+<link href="Hyphenation.html" rel="next" title="Hyphenation">
+<link href="Filling.html" rel="prev" title="Filling">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Sentences">
+<div class="nav-panel">
+<p>
+Next: <a href="Hyphenation.html" accesskey="n" rel="next">Hyphenation</a>, Previous: <a href="Filling.html" accesskey="p" rel="prev">Filling</a>, Up: <a href="Text.html" accesskey="u" rel="up">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Sentences-1">5.1.2 Sentences</h4>
+<a class="index-entry-id" id="index-sentences"></a>
+
+<p>A passionate debate has raged for decades among writers of the English
+language over whether more space should appear between adjacent
+sentences than between words within a sentence, and if so, how much, and
+what other circumstances should influence this spacing.<a class="footnote" id="DOCF20" href="groff.html_fot.html#FOOT20"><sup>20</sup></a>
+GNU <code class="code">troff</code> follows the example of <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>;
+it attempts to detect the boundaries between sentences, and supplies
+additional inter-sentence space between them.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">Hello, world!
+Welcome to groff.
+ &rArr; Hello, world! Welcome to groff.
+</pre></div></div>
+
+<a class="index-entry-id" id="index-end_002dof_002dsentence-characters"></a>
+<a class="index-entry-id" id="index-sentence-space"></a>
+<a class="index-entry-id" id="index-space-between-sentences"></a>
+<a class="index-entry-id" id="index-French-spacing"></a>
+<p>GNU <code class="code">troff</code> flags certain characters (normally &lsquo;<samp class="samp">!</samp>&rsquo;, &lsquo;<samp class="samp">?</samp>&rsquo;,
+and &lsquo;<samp class="samp">.</samp>&rsquo;) as potentially ending a sentence. When GNU <code class="code">troff</code>
+encounters one of these <em class="dfn">end-of-sentence characters</em> at the end of
+an input line, or one of them is followed by two (unescaped) spaces on
+the same input line, it appends an inter-word space followed by an
+inter-sentence space in the output.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">R. Harper subscribes to a maxim of P. T. Barnum.
+ &rArr; R. Harper subscribes to a maxim of P. T. Barnum.
+</pre></div></div>
+
+<p>In the above example, inter-sentence space is not added after &lsquo;<samp class="samp">P.</samp>&rsquo;
+or &lsquo;<samp class="samp">T.</samp>&rsquo; because the periods do not occur at the end of an input
+line, nor are they followed by two or more spaces. Let&rsquo;s imagine that
+we&rsquo;ve heard something about defamation from Mr. Harper&rsquo;s attorney,
+recast the sentence, and reflowed it in our text editor.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">I submit that R. Harper subscribes to a maxim of P. T.
+Barnum.
+ &rArr; I submit that R. Harper subscribes to a maxim of
+ &rArr; P. T. Barnum.
+</pre></div></div>
+
+<p>&ldquo;Barnum&rdquo; doesn&rsquo;t begin a sentence! What to do? Let us meet our first
+<em class="dfn">escape sequence</em>, a series of input characters that give
+instructions to GNU <code class="code">troff</code> instead of being used to construct
+output device glyphs.<a class="footnote" id="DOCF21" href="groff.html_fot.html#FOOT21"><sup>21</sup></a> An escape sequence begins with the backslash character <code class="code">\</code>
+by default, an uncommon character in natural language text, and is
+<em class="emph">always</em> followed by at least one other character, hence the term
+&ldquo;sequence&rdquo;.
+</p>
+<a class="index-entry-id" id="index-_005c_0026_002c-at-end-of-sentence"></a>
+<p>The dummy character escape sequence <code class="code">\&amp;</code> can be used after an
+end-of-sentence character to defeat end-of-sentence detection on a
+per-instance basis. We can therefore rewrite our input more
+defensively.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">I submit that R.\&amp; Harper subscribes to a maxim of P.\&amp;
+T.\&amp; Barnum.
+ &rArr; I submit that R. Harper subscribes to a maxim of
+ &rArr; P. T. Barnum.
+</pre></div></div>
+
+<p>Adding text caused our input to wrap; now, we don&rsquo;t need <code class="code">\&amp;</code> after
+&lsquo;<samp class="samp">T.</samp>&rsquo; but we do after &lsquo;<samp class="samp">P.</samp>&rsquo;. Consistent use of the escape
+sequence ensures that potential sentence boundaries are robust to
+editing activities. Further advice along these lines will follow in
+<a class="ref" href="Input-Conventions.html">Input Conventions</a>.
+</p>
+<a class="index-entry-id" id="index-end_002dof_002dsentence-transparent-characters"></a>
+<a class="index-entry-id" id="index-characters_002c-end_002dof_002dsentence-transparent"></a>
+<a class="index-entry-id" id="index-dg-glyph_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-dd-glyph_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-rq-glyph_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-cq-glyph_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-_0022_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-_0027_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-_0029_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-_005d_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-_002a_002c-at-end-of-sentence"></a>
+<a class="index-entry-id" id="index-special-characters"></a>
+<a class="index-entry-id" id="index-characters_002c-special"></a>
+<p>Normally, the occurrence of a visible non-end-of-sentence character (as
+opposed to a space or tab) immediately after an end-of-sentence
+character cancels detection of the end of a sentence. For example, it
+would be incorrect for GNU <code class="code">troff</code> to infer the end of a sentence
+after the dot in &lsquo;<samp class="samp">3.14159</samp>&rsquo;. However, several characters are
+treated <em class="emph">transparently</em> after the occurrence of an end-of-sentence
+character. That is, GNU <code class="code">troff</code> does not cancel end-of-sentence
+detection when it processes them. This is because such characters are
+often used as footnote markers or to close quotations and
+parentheticals. The default set is &lsquo;<samp class="samp">&quot;</samp>&rsquo;, &lsquo;<samp class="samp">'</samp>&rsquo;, &lsquo;<samp class="samp">)</samp>&rsquo;,
+&lsquo;<samp class="samp">]</samp>&rsquo;, &lsquo;<samp class="samp">*</samp>&rsquo;, <code class="code">\[dg]</code>, <code class="code">\[dd]</code>, <code class="code">\[rq]</code>, and
+<code class="code">\[cq]</code>. The last four are examples of <em class="dfn">special characters</em>,
+escape sequences whose purpose is to obtain glyphs that are not easily
+typed at the keyboard, or which have special meaning to GNU <code class="code">troff</code>
+(like <code class="code">\</code> itself).<a class="footnote" id="DOCF22" href="groff.html_fot.html#FOOT22"><sup>22</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">\[lq]The idea that the poor should have leisure has always
+been shocking to the rich.\[rq]
+(Bertrand Russell, 1935)
+ &rArr; &quot;The idea that the poor should have
+ &rArr; leisure has always been shocking to
+ &rArr; the rich.&quot; (Bertrand Russell, 1935)
+</pre></div></div>
+
+<p>The sets of characters that potentially end sentences or are transparent
+to sentence endings are configurable. See the <code class="code">cflags</code> request in
+<a class="ref" href="Using-Symbols.html">Using Symbols</a>. To change the additional inter-sentence space
+amount&mdash;even to remove it entirely&mdash;see <a class="ref" href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a>.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Hyphenation.html">Hyphenation</a>, Previous: <a href="Filling.html">Filling</a>, Up: <a href="Text.html">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Separation.html b/doc/groff.html.node/Separation.html
new file mode 100644
index 0000000..d7dfe3e
--- /dev/null
+++ b/doc/groff.html.node/Separation.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Separation (The GNU Troff Manual)</title>
+
+<meta name="description" content="Separation (The GNU Troff Manual)">
+<meta name="keywords" content="Separation (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Language-Concepts.html" rel="up" title="Language Concepts">
+<link href="Argument-Units.html" rel="next" title="Argument Units">
+<link href="Language-Concepts.html" rel="prev" title="Language Concepts">
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Separation">
+<div class="nav-panel">
+<p>
+Next: <a href="Argument-Units.html" accesskey="n" rel="next">Argument Units</a>, Previous: <a href="Language-Concepts.html" accesskey="p" rel="prev">Language Concepts</a>, Up: <a href="Language-Concepts.html" accesskey="u" rel="up">Language Concepts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Separation-1">6.1.1.1 Separation</h4>
+
+<p><abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> output has strange requirements regarding
+whitespace. The <code class="code">gtroff</code> output parser, however, is more tolerant,
+making whitespace maximally optional. Such characters, i.e., the tab,
+space, and newline, always have a syntactical meaning. They are never
+printable because spacing within the output is always done by
+positioning commands.
+</p>
+<p>Any sequence of space or tab characters is treated as a single
+<em class="dfn">syntactical space</em>. It separates commands and arguments, but is
+only required when there would occur a clashing between the command code
+and the arguments without the space. Most often, this happens when
+variable-length command names, arguments, argument lists, or command
+clusters meet. Commands and arguments with a known, fixed length need
+not be separated by syntactical space.
+</p>
+<p>A line break is a syntactical element, too. Every command argument can
+be followed by whitespace, a comment, or a newline character. Thus a
+<em class="dfn">syntactical line break</em> is defined to consist of optional
+syntactical space that is optionally followed by a comment, and a
+newline character.
+</p>
+<p>The normal commands, those for positioning and text, consist of a single
+letter taking a fixed number of arguments. For historical reasons, the
+parser allows stacking of such commands on the same line, but
+fortunately, in <code class="code">gtroff</code>&rsquo;s intermediate output, every command with
+at least one argument is followed by a line break, thus providing
+excellent readability.
+</p>
+<p>The other commands&mdash;those for drawing and device controlling&mdash;have a
+more complicated structure; some recognize long command names, and some
+take a variable number of arguments. So all &lsquo;<samp class="samp">D</samp>&rsquo; and &lsquo;<samp class="samp">x</samp>&rsquo;
+commands were designed to request a syntactical line break after their
+last argument. Only one command, &lsquo;<samp class="samp">x&nbsp;X</samp>&rsquo;<!-- /@w -->, has an argument that
+can span several input lines; all other commands must have all of
+their arguments on the same line as the command, i.e., the arguments may
+not be split by a line break.
+</p>
+<p>Empty lines (these are lines containing only space and/or a comment),
+can occur everywhere. They are just ignored.
+</p>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Argument-Units.html">Argument Units</a>, Previous: <a href="Language-Concepts.html">Language Concepts</a>, Up: <a href="Language-Concepts.html">Language Concepts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Setting-Registers.html b/doc/groff.html.node/Setting-Registers.html
new file mode 100644
index 0000000..6fdf746
--- /dev/null
+++ b/doc/groff.html.node/Setting-Registers.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Setting Registers (The GNU Troff Manual)</title>
+
+<meta name="description" content="Setting Registers (The GNU Troff Manual)">
+<meta name="keywords" content="Setting Registers (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Registers.html" rel="up" title="Registers">
+<link href="Interpolating-Registers.html" rel="next" title="Interpolating Registers">
+<link href="Registers.html" rel="prev" title="Registers">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Setting-Registers">
+<div class="nav-panel">
+<p>
+Next: <a href="Interpolating-Registers.html" accesskey="n" rel="next">Interpolating Registers</a>, Previous: <a href="Registers.html" accesskey="p" rel="prev">Registers</a>, Up: <a href="Registers.html" accesskey="u" rel="up">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Setting-Registers-1">5.8.1 Setting Registers</h4>
+<a class="index-entry-id" id="index-setting-registers-_0028nr_002c-_005cR_0029"></a>
+<a class="index-entry-id" id="index-registers_002c-setting-_0028nr_002c-_005cR_0029"></a>
+
+<p>Define registers and update their values with the <code class="code">nr</code> request or
+the <code class="code">\R</code> escape sequence.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enr-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">ident value</var><a class="copiable-link" href='#index-_002enr-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nr-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cR_0027ident-value_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\R<code class="code">'</code></code><span class="r"><i class="slanted">ident value</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cR_0027ident-value_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cR"></a>
+<p>Set register <var class="var">ident</var> to <var class="var">value</var>. If <var class="var">ident</var> doesn&rsquo;t exist,
+GNU <code class="code">troff</code> creates it. In the <code class="code">\R</code> escape sequence, the
+delimiter need not be a neutral apostrophe; see <a class="ref" href="Delimiters.html">Delimiters</a>. It
+also does not produce an input token in GNU <code class="code">troff</code>. See <a class="xref" href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a (((17 + (3 * 4))) % 4)
+\n[a]
+.\R'a (((17 + (3 * 4))) % 4)'
+\n[a]
+ &rArr; 1 1
+</pre></div></div>
+
+<p>(Later, we will discuss additional forms of <code class="code">nr</code> and <code class="code">\R</code> that
+can change a register&rsquo;s value after it is dereferenced but before it is
+interpolated. See <a class="xref" href="Auto_002dincrement.html">Auto-increment</a>.)
+</p>
+<p>The complete transparency of <code class="code">\R</code> can cause surprising effects if
+you use registers like <code class="code">.k</code>, which get evaluated at the time they
+are accessed.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 1.6i
+.
+aaa bbb ccc ddd eee fff ggg hhh\R':k \n[.k]'
+.tm :k == \n[:k]
+ &rArr; :k == 126950
+.
+.br
+.
+aaa bbb ccc ddd eee fff ggg hhh\h'0'\R':k \n[.k]'
+.tm :k == \n[:k]
+ &rArr; :k == 15000
+</pre></div></div>
+
+<p>If you process this with the PostScript device (<code class="code">-Tps</code>), there will
+be a line break eventually after <code class="code">ggg</code> in both input lines.
+However, after processing the space after <code class="code">ggg</code>, the partially
+collected line is not overfull yet, so GNU <code class="code">troff</code> continues to
+collect input until it sees the space (or in this case, the newline)
+after <code class="code">hhh</code>. At this point, the line is longer than the line
+length, and the line gets broken.
+</p>
+<p>In the first input line, since the <code class="code">\R</code> escape sequence leaves no
+traces, the check for the overfull line hasn&rsquo;t been done yet at the
+point where <code class="code">\R</code> gets handled, and you get a value for the
+<code class="code">.k</code> register that is even greater than the current line length.
+</p>
+<p>In the second input line, the insertion of <code class="code">\h'0'</code> to cause a
+zero-width motion forces GNU <code class="code">troff</code> to check the line length,
+which in turn causes the start of a new output line. Now <code class="code">.k</code>
+returns the expected value.
+</p></dd></dl>
+
+<p><code class="code">nr</code> and <code class="code">\R</code> each have two additional special forms to
+increment or decrement a register.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enr-2"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">ident <code class="t">+</code><span class="r"><i class="slanted">value</i></span></var><a class="copiable-link" href='#index-_002enr-2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nr-2"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002enr-3"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">ident <code class="t">-</code><span class="r"><i class="slanted">value</i></span></var><a class="copiable-link" href='#index-_002enr-3'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005cR_0027ident-_002bvalue_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\R<code class="code">'</code></code><span class="r"><i class="slanted">ident <code class="t">+</code>value</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cR_0027ident-_002bvalue_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cR-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cR_0027ident-_002dvalue_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\R<code class="code">'</code></code><span class="r"><i class="slanted">ident <code class="t">-</code>value</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cR_0027ident-_002dvalue_0027'> &para;</a></span></dt>
+<dd><p>Increment (decrement) register <var class="var">ident</var> by <var class="var">value</var>. In the
+<code class="code">\R</code> escape sequence, the delimiter need not be a neutral
+apostrophe; see <a class="ref" href="Delimiters.html">Delimiters</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 1
+.nr a +1
+\na
+ &rArr; 2
+</pre></div></div>
+
+<a class="index-entry-id" id="index-negating-register-values"></a>
+<p>A leading minus sign in <var class="var">value</var> is always interpreted as a
+decrementation operator, not an algebraic sign. To assign a register a
+negative value or the negated value of another register, you can
+force GNU <code class="code">troff</code> to interpret &lsquo;<samp class="samp">-</samp>&rsquo; as a negation or minus,
+rather than decrementation, operator: enclose it with its operand in
+parentheses or subtract it from zero.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 7
+.nr b 3
+.nr a -\nb
+\na
+ &rArr; 4
+.nr a (-\nb)
+\na
+ &rArr; -3
+.nr a 0-\nb
+\na
+ &rArr; -3
+</pre></div></div>
+
+<p>If a register&rsquo;s prior value does not exist (the register was undefined),
+an increment or decrement is applied as if to&nbsp;0.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002err"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rr</code></strong> <var class="def-var-arguments">ident</var><a class="copiable-link" href='#index-_002err'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rr"></a>
+<a class="index-entry-id" id="index-removing-a-register-_0028rr_0029"></a>
+<a class="index-entry-id" id="index-register_002c-removing-_0028rr_0029"></a>
+<p>Remove register <var class="var">ident</var>. If <var class="var">ident</var> doesn&rsquo;t exist, the request
+is ignored. Technically, only the name is removed; the register&rsquo;s
+contents are still accessible under aliases created with <code class="code">aln</code>, if
+any.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ernn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rnn</code></strong> <var class="def-var-arguments">ident1 ident2</var><a class="copiable-link" href='#index-_002ernn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rnn"></a>
+<a class="index-entry-id" id="index-renaming-a-register-_0028rnn_0029"></a>
+<a class="index-entry-id" id="index-register_002c-renaming-_0028rnn_0029"></a>
+<p>Rename register <var class="var">ident1</var> to <var class="var">ident2</var>. If <var class="var">ident1</var> doesn&rsquo;t
+exist, the request is ignored. Renaming a built-in register does not
+otherwise alter its properties.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ealn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.aln</code></strong> <var class="def-var-arguments">new old</var><a class="copiable-link" href='#index-_002ealn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-aln"></a>
+<a class="index-entry-id" id="index-alias_002c-register_002c-creating-_0028aln_0029"></a>
+<a class="index-entry-id" id="index-creating-alias-for-register-_0028aln_0029"></a>
+<a class="index-entry-id" id="index-register_002c-creating-alias-for-_0028aln_0029"></a>
+<p>Create an alias <var class="var">new</var> for an existing register <var class="var">old</var>, causing
+the names to refer to the same stored object. If <var class="var">old</var> is
+undefined, a warning in category &lsquo;<samp class="samp">reg</samp>&rsquo; is produced and the request
+is ignored. See <a class="xref" href="Warnings.html">Warnings</a>, for information about the enablement and
+suppression of warnings.
+</p>
+<a class="index-entry-id" id="index-alias_002c-register_002c-removing-_0028rr_0029"></a>
+<a class="index-entry-id" id="index-removing-alias-for-register-_0028rr_0029"></a>
+<a class="index-entry-id" id="index-register_002c-removing-alias-for-_0028rr_0029"></a>
+<p>To remove a register alias, invoke <code class="code">rr</code> on its name. A register&rsquo;s
+contents do not become inaccessible until it has no more names.
+</p></dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Interpolating-Registers.html">Interpolating Registers</a>, Previous: <a href="Registers.html">Registers</a>, Up: <a href="Registers.html">Registers</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Simple-Commands.html b/doc/groff.html.node/Simple-Commands.html
new file mode 100644
index 0000000..b76b0a6
--- /dev/null
+++ b/doc/groff.html.node/Simple-Commands.html
@@ -0,0 +1,207 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Simple Commands (The GNU Troff Manual)</title>
+
+<meta name="description" content="Simple Commands (The GNU Troff Manual)">
+<meta name="keywords" content="Simple Commands (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Command-Reference.html" rel="up" title="Command Reference">
+<link href="Graphics-Commands.html" rel="next" title="Graphics Commands">
+<link href="Comment-Command.html" rel="prev" title="Comment Command">
+<style type="text/css">
+<!--
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Simple-Commands">
+<div class="nav-panel">
+<p>
+Next: <a href="Graphics-Commands.html" accesskey="n" rel="next">Graphics Commands</a>, Previous: <a href="Comment-Command.html" accesskey="p" rel="prev">Comment Command</a>, Up: <a href="Command-Reference.html" accesskey="u" rel="up">Command Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Simple-Commands-1">6.1.2.2 Simple Commands</h4>
+
+<p>The commands in this subsection have a command code consisting of a
+single character, taking a fixed number of arguments. Most of them are
+commands for positioning and text writing. These commands are tolerant
+of whitespace. Optionally, syntactical space can be inserted before,
+after, and between the command letter and its arguments. All of these
+commands are stackable; i.e., they can be preceded by other simple
+commands or followed by arbitrary other commands on the same line. A
+separating syntactical space is necessary only when two integer
+arguments would clash or if the preceding argument ends with a string
+argument.
+</p>
+<dl class="table">
+<dt><code class="code">C <var class="var">id</var>&lsaquo;<span class="r">whitespace</span>&rsaquo;</code></dt>
+<dd><p>Typeset the glyph of the special character <var class="var">id</var>. Trailing
+syntactical space is necessary to allow special character names of
+arbitrary length. The drawing position is not advanced.
+</p>
+</dd>
+<dt><code class="code">c <var class="var">g</var></code></dt>
+<dd><p>Typeset the glyph of the ordinary character&nbsp;<var class="var">c</var>. The drawing
+position is not advanced.
+</p>
+</dd>
+<dt><code class="code">f <var class="var">n</var></code></dt>
+<dd><p>Select the font mounted at position&nbsp;<var class="var">n</var>. <var class="var">n</var>&nbsp;cannot
+be negative.
+</p>
+</dd>
+<dt><code class="code">H <var class="var">n</var></code></dt>
+<dd><p>Horizontally move the drawing position to <var class="var">n</var>&nbsp;basic units from
+the left edge of the page. <var class="var">n</var>&nbsp;cannot be negative.
+</p>
+</dd>
+<dt><code class="code">h <var class="var">n</var></code></dt>
+<dd><p>Move the drawing position right <var class="var">n</var> basic units. <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> allowed negative <var class="var">n</var>; GNU <code class="code">troff</code> does not produce
+such values, but <code class="code">groff</code>&rsquo;s output driver library handles them.
+</p>
+</dd>
+<dt><code class="code">m <var class="var">color-scheme</var> <span class="r">[</span><var class="var">component</var> &hellip;<span class="r">]</span></code></dt>
+<dd><p>Select the stroke color using the <var class="var">component</var>s in the color space
+<var class="var">scheme</var>. Each <var class="var">component</var> is an integer between 0 and 65535.
+The quantity of components and their meanings vary with each
+<var class="var">scheme</var>. This command is a <code class="code">groff</code> extension.
+</p>
+<dl class="table">
+<dt><code class="code">mc <var class="var">cyan</var> <var class="var">magenta</var> <var class="var">yellow</var></code></dt>
+<dd><p>Use the CMY color scheme with components cyan, magenta, and yellow.
+</p>
+</dd>
+<dt><code class="code">md</code></dt>
+<dd><p>Use the default color (no components; black in most cases).
+</p>
+</dd>
+<dt><code class="code">mg <var class="var">gray</var></code></dt>
+<dd><p>Use a grayscale color scheme with a component ranging between 0 (black)
+and 65535 (white).
+</p>
+</dd>
+<dt><code class="code">mk <var class="var">cyan</var> <var class="var">magenta</var> <var class="var">yellow</var> <var class="var">black</var></code></dt>
+<dd><p>Use the CMYK color scheme with components cyan, magenta, yellow, and
+black.
+</p>
+</dd>
+<dt><code class="code">mr <var class="var">red</var> <var class="var">green</var> <var class="var">blue</var></code></dt>
+<dd><p>Use the RGB color scheme with components red, green, and blue.
+</p></dd>
+</dl>
+
+</dd>
+<dt><code class="code">N <var class="var">n</var></code></dt>
+<dd><p>Typeset the glyph with index&nbsp;<var class="var">n</var> in the current font.
+<var class="var">n</var>&nbsp;is normally a non-negative integer. The drawing position
+is not advanced. The <code class="code">html</code> and <code class="code">xhtml</code> devices use this
+command with negative&nbsp;<var class="var">n</var> to produce unbreakable space; the
+absolute value of <var class="var">n</var> is taken and interpreted in basic units.
+</p>
+</dd>
+<dt><code class="code">n <var class="var">b</var> <var class="var">a</var></code></dt>
+<dd><p>Indicate a break. No action is performed; the command is present to
+make the output more easily parsed. The integers <var class="var">b</var>
+and&nbsp;<var class="var">a</var> describe the vertical space amounts before and after
+the break, respectively. GNU <code class="code">troff</code> issues this command but
+<code class="code">groff</code>&rsquo;s output driver library ignores it. See <code class="code">v</code> and
+<code class="code">V</code> below.
+</p>
+</dd>
+<dt><code class="code">p <var class="var">n</var></code></dt>
+<dd><p>Begin a new page, setting its number to&nbsp;<var class="var">n</var>. Each page is
+independent, even from those using the same number. The vertical
+drawing position is set to&nbsp;0. All positioning, writing, and
+drawing commands are interpreted in the context of a page, so a
+<code class="code">p</code>&nbsp;command must precede them.
+</p>
+</dd>
+<dt><code class="code">s <var class="var">n</var></code></dt>
+<dd><p>Set type size to <var class="var">n</var> scaled points (unit&nbsp;<code class="code">z</code> in GNU
+<code class="code">troff</code>.
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> used unscaled points <code class="code">p</code> instead;
+see <a class="ref" href="Output-Language-Compatibility.html">Output Language Compatibility</a>.
+</p>
+</dd>
+<dt><code class="code">t <var class="var">xyz</var>&lsaquo;<span class="r">whitespace</span>&rsaquo;</code></dt>
+<dt><code class="code">t <var class="var">xyz</var> <var class="var">dummy-arg</var>&lsaquo;<span class="r">whitespace</span>&rsaquo;</code></dt>
+<dd><p>Typeset a word <var class="var">xyz</var>; that is, set a sequence of ordinary glyphs
+named <var class="var">x</var>, <var class="var">y</var>, <var class="var">z</var>, &hellip;, terminated by a space
+character or a line break; an optional second integer argument is
+ignored (this allows the formatter to generate an even number of
+arguments). Each glyph is set at the current drawing position, and the position is
+then advanced horizontally by the glyph&rsquo;s width. A glyph&rsquo;s width is
+read from its metrics in the font description file, scaled to the
+current type size, and rounded to a multiple of the horizontal motion
+quantum. Use the <code class="code">C</code> command to emplace glyphs of special
+characters. The <code class="code">t</code>&nbsp;command is a <code class="code">groff</code> extension and
+is output only for devices whose <samp class="file">DESC</samp> file contains the
+<code class="code">tcommand</code> directive; see <a class="ref" href="DESC-File-Format.html"><samp class="file">DESC</samp> File Format</a>.
+</p>
+</dd>
+<dt><code class="code">u <var class="var">n</var> <var class="var">xyz</var>&lsaquo;<span class="r">whitespace</span>&rsaquo;</code></dt>
+<dd><p>Typeset word <var class="var">xyz</var> with track kerning. As <code class="code">t</code>, but after
+placing each glyph, the drawing position is further advanced
+horizontally by&nbsp;<var class="var">n</var> basic units (<code class="code">u</code>). The
+<code class="code">u</code>&nbsp;command is a <code class="code">groff</code> extension and is output only for
+devices whose <samp class="file">DESC</samp> file contains the <code class="code">tcommand</code> directive;
+see <a class="ref" href="DESC-File-Format.html"><samp class="file">DESC</samp> File Format</a>.
+</p>
+</dd>
+<dt><code class="code">V <var class="var">n</var></code></dt>
+<dd><p>Vertically move the drawing position to <var class="var">n</var>&nbsp;basic units from
+the top edge of the page. <var class="var">n</var>&nbsp;cannot be negative.
+</p>
+</dd>
+<dt><code class="code">v <var class="var">n</var></code></dt>
+<dd><p>Move the drawing position down <var class="var">n</var> basic units. <abbr class="acronym">AT&amp;T</abbr>
+<code class="code">troff</code> allowed negative <var class="var">n</var>; GNU <code class="code">troff</code> does not produce
+such values, but <code class="code">groff</code>&rsquo;s output driver library handles them.
+</p>
+</dd>
+<dt><code class="code">w</code></dt>
+<dd><p>Indicate an inter-word space. No action is performed; the command is
+present to make the output more easily parsed. Only adjustable,
+breakable inter-word spaces are thus described; those resulting from
+<code class="code">\~</code> or horizontal motion escape sequences are not. GNU
+<code class="code">troff</code> issues this command but <code class="code">groff</code>&rsquo;s output driver
+library ignores it. See <code class="code">h</code> and <code class="code">H</code> above.
+</p></dd>
+</dl>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Graphics-Commands.html">Graphics Commands</a>, Previous: <a href="Comment-Command.html">Comment Command</a>, Up: <a href="Command-Reference.html">Command Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Special-Fonts.html b/doc/groff.html.node/Special-Fonts.html
new file mode 100644
index 0000000..214c74e
--- /dev/null
+++ b/doc/groff.html.node/Special-Fonts.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Special Fonts (The GNU Troff Manual)</title>
+
+<meta name="description" content="Special Fonts (The GNU Troff Manual)">
+<meta name="keywords" content="Special Fonts (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Using-Fonts.html" rel="up" title="Using Fonts">
+<link href="Artificial-Fonts.html" rel="next" title="Artificial Fonts">
+<link href="Character-Classes.html" rel="prev" title="Character Classes">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Special-Fonts">
+<div class="nav-panel">
+<p>
+Next: <a href="Artificial-Fonts.html" accesskey="n" rel="next">Artificial Fonts</a>, Previous: <a href="Character-Classes.html" accesskey="p" rel="prev">Character Classes</a>, Up: <a href="Using-Fonts.html" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Special-Fonts-1">5.19.6 Special Fonts</h4>
+<a class="index-entry-id" id="index-special-fonts-1"></a>
+<a class="index-entry-id" id="index-fonts_002c-special"></a>
+
+<p>Special fonts are those that <code class="code">gtroff</code> searches when it cannot find
+the requested glyph in the current font. The Symbol font is usually a
+special font.
+</p>
+<p><code class="code">gtroff</code> provides the following two requests to add more special
+fonts. See <a class="xref" href="Using-Symbols.html">Using Symbols</a>, for a detailed description of the glyph
+searching mechanism in <code class="code">gtroff</code>.
+</p>
+<p>Usually, only non-TTY devices have special fonts.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002especial"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.special</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">s1</i></span> <span class="r"><i class="slanted">s2</i></span> &hellip;]</var><a class="copiable-link" href='#index-_002especial'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-special-2"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002efspecial"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fspecial</code></strong> <var class="def-var-arguments">f [<span class="r"><i class="slanted">s1</i></span> <span class="r"><i class="slanted">s2</i></span> &hellip;]</var><a class="copiable-link" href='#index-_002efspecial'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fspecial"></a>
+<a class="index-entry-id" id="index-fonts-1"></a>
+<a class="index-entry-id" id="index-DESC-4"></a>
+<p>Use the <code class="code">special</code> request to define special fonts. Initially, this
+list is empty.
+</p>
+<p>Use the <code class="code">fspecial</code> request to designate special fonts only when
+font&nbsp;<var class="var">f</var> is active. Initially, this list is empty.
+</p>
+<p>Previous calls to <code class="code">special</code> or <code class="code">fspecial</code> are overwritten;
+without arguments, the particular list of special fonts is set to empty.
+Special fonts are searched in the order they appear as arguments.
+</p>
+<p>All fonts that appear in a call to <code class="code">special</code> or <code class="code">fspecial</code>
+are loaded.
+</p>
+<p>See <a class="xref" href="Using-Symbols.html">Using Symbols</a>, for the exact search order of glyphs.
+</p></dd></dl>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/String-Index.html b/doc/groff.html.node/String-Index.html
new file mode 100644
index 0000000..335d2b8
--- /dev/null
+++ b/doc/groff.html.node/String-Index.html
@@ -0,0 +1,344 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>String Index (The GNU Troff Manual)</title>
+
+<meta name="description" content="String Index (The GNU Troff Manual)">
+<meta name="keywords" content="String Index (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="File-Keyword-Index.html" rel="next" title="File Keyword Index">
+<link href="Macro-Index.html" rel="prev" title="Macro Index">
+<style type="text/css">
+<!--
+a.summary-letter-printindex {text-decoration: none}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+td.printindex-index-entry {vertical-align: top}
+td.printindex-index-section {vertical-align: top}
+th.entries-header-printindex {text-align:left}
+th.sections-header-printindex {text-align:left}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="appendix-level-extent" id="String-Index">
+<div class="nav-panel">
+<p>
+Next: <a href="File-Keyword-Index.html" accesskey="n" rel="next">File Keyword Index</a>, Previous: <a href="Macro-Index.html" accesskey="p" rel="prev">Macro Index</a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="appendix" id="String-Index-1">Appendix G String Index</h2>
+
+<p>The macro package or program a that defines or uses each string is
+appended in brackets. (Only one string, <code class="code">.T</code>, is defined by the
+<code class="code">troff</code> formatter itself.) See <a class="xref" href="Strings.html">Strings</a>.
+</p>
+
+<div class="printindex st-printindex">
+<table class="st-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#String-Index_st_symbol-1"><b>!</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-2"><b>'</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-3"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-4"><b>,</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-5"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-6"><b>.</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-7"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-8"><b>3</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-9"><b>8</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-10"><b>:</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-11"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-12"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-13"><b>?</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-14"><b>^</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-15"><b>_</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-16"><b>`</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-17"><b>{</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-18"><b>}</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-19"><b>~</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#String-Index_st_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-V"><b>V</b></a>
+ &nbsp;
+</td></tr></table>
+<table class="st-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><td>&nbsp;</td><th class="sections-header-printindex"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-1">!</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_0021-_005bms_005d"><code>! <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-2">'</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_0027-_005bms_005d"><code><code class="code">'</code> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_0027-_005bms_005d-1"><code><code class="code">'</code> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-3">*</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Footnotes.html#index-_002a-_005bms_005d"><code>* <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Footnotes.html">ms Footnotes</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-4">,</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_002c-_005bms_005d"><code>, <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_002c-_005bms_005d-1"><code>, <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-5">-</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typographical-symbols-in-ms.html#index-_002d-_005bms_005d"><code>- <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typographical-symbols-in-ms.html">Typographical symbols in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-6">.</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_002e-_005bms_005d"><code>. <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-_002eT"><code>.T</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Strings.html#index-_002eT-1"><code>.T</code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Strings.html">Strings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-7">/</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_002f-_005bms_005d"><code>/ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-8">3</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-3-_005bms_005d"><code>3 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-9">8</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-8-_005bms_005d"><code>8 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-10">:</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_003a-_005bms_005d"><code>: <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_003a-_005bms_005d-1"><code>: <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-11">&lt;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-_003c-_005bms_005d"><code>&lt; <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-12">&gt;</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-_003e-_005bms_005d"><code>&gt; <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-13">?</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_003f-_005bms_005d"><code>? <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-14">^</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_005e-_005bms_005d"><code>^ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_005e-_005bms_005d-1"><code>^ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-15">_</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_005f-_005bms_005d"><code>_ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-16">`</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_0060-_005bms_005d"><code><code class="code">`</code> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_0060-_005bms_005d-1"><code><code class="code">`</code> <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-17">{</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-_007b-_005bms_005d"><code>{ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-18">}</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typeface-and-decoration.html#index-_007d-_005bms_005d"><code>} <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typeface-and-decoration.html">Typeface and decoration</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_symbol-19">~</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_007e-_005bms_005d"><code>~ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-_007e-_005bms_005d-1"><code>~ <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-ABSTRACT-_005bms_005d"><code>ABSTRACT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-ae-_005bms_005d"><code>ae <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-Ae-_005bms_005d"><code>Ae <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-C">C</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-C-_005bms_005d"><code>C <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-CF-_005bms_005d"><code>CF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-CH-_005bms_005d"><code>CH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-d_002d-_005bms_005d"><code>d- <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-D_002d-_005bms_005d"><code>D- <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-FAM-_005bms_005d"><code>FAM <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-FR-_005bms_005d"><code>FR <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-LF-_005bms_005d"><code>LF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-LH-_005bms_005d"><code>LH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-MONTH1-_005bms_005d"><code>MONTH1 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-MONTH10-_005bms_005d"><code>MONTH10 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-MONTH11-_005bms_005d"><code>MONTH11 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-MONTH12-_005bms_005d"><code>MONTH12 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-MONTH2-_005bms_005d"><code>MONTH2 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-MONTH3-_005bms_005d"><code>MONTH3 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-MONTH4-_005bms_005d"><code>MONTH4 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-MONTH5-_005bms_005d"><code>MONTH5 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-MONTH6-_005bms_005d"><code>MONTH6 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-MONTH7-_005bms_005d"><code>MONTH7 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-MONTH8-_005bms_005d"><code>MONTH8 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-MONTH9-_005bms_005d"><code>MONTH9 <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-O">O</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-o-_005bms_005d"><code>o <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-oe-_005bms_005d"><code>oe <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-OE-_005bms_005d"><code>OE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-Q">Q</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typographical-symbols-in-ms.html#index-Q-_005bms_005d"><code>Q <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typographical-symbols-in-ms.html">Typographical symbols in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-q-_005bms_005d"><code>q <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-REFERENCES-_005bms_005d"><code>REFERENCES <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-RF-_005bms_005d"><code>RF <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-RH-_005bms_005d"><code>RH <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Headings-in-ms.html#index-SN-_005bms_005d"><code>SN <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Headings-in-ms.html">Headings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Headings-in-ms.html#index-SN_002dDOT-_005bms_005d"><code>SN-DOT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Headings-in-ms.html">Headings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Headings-in-ms.html#index-SN_002dNO_002dDOT-_005bms_005d"><code>SN-NO-DOT <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Headings-in-ms.html">Headings in ms</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Document-Control-Settings.html#index-SN_002dSTYLE-_005bms_005d"><code>SN-STYLE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Document-Control-Settings.html">ms Document Control Settings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Headings-in-ms.html#index-SN_002dSTYLE-_005bms_005d-1"><code>SN-STYLE <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Headings-in-ms.html">Headings in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-th-_005bms_005d"><code>th <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-Th-_005bms_005d"><code>Th <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-language-and-localization.html#index-TOC-_005bms_005d"><code>TOC <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-language-and-localization.html">ms language and localization</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-U">U</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="Typographical-symbols-in-ms.html#index-U-_005bms_005d"><code>U <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="Typographical-symbols-in-ms.html">Typographical symbols in ms</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="String-Index_st_letter-V">V</th><td></td><td></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="ms-Legacy-Features.html#index-v-_005bms_005d"><code>v <span class="r">[</span>ms<span class="r">]</span></code></a>:</td><td>&nbsp;</td><td class="printindex-index-section"><a href="ms-Legacy-Features.html">ms Legacy Features</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table class="st-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#String-Index_st_symbol-1"><b>!</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-2"><b>'</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-3"><b>*</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-4"><b>,</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-5"><b>-</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-6"><b>.</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-7"><b>/</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-8"><b>3</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-9"><b>8</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-10"><b>:</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-11"><b>&lt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-12"><b>&gt;</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-13"><b>?</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-14"><b>^</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-15"><b>_</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-16"><b>`</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-17"><b>{</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-18"><b>}</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_symbol-19"><b>~</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter-printindex" href="#String-Index_st_letter-A"><b>A</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-C"><b>C</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-D"><b>D</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-F"><b>F</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-L"><b>L</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-M"><b>M</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-O"><b>O</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-Q"><b>Q</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-R"><b>R</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-S"><b>S</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-T"><b>T</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-U"><b>U</b></a>
+ &nbsp;
+<a class="summary-letter-printindex" href="#String-Index_st_letter-V"><b>V</b></a>
+ &nbsp;
+</td></tr></table>
+</div>
+
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="File-Keyword-Index.html">File Keyword Index</a>, Previous: <a href="Macro-Index.html">Macro Index</a>, Up: <a href="index.html">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Strings.html b/doc/groff.html.node/Strings.html
new file mode 100644
index 0000000..726e0b0
--- /dev/null
+++ b/doc/groff.html.node/Strings.html
@@ -0,0 +1,429 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Strings (The GNU Troff Manual)</title>
+
+<meta name="description" content="Strings (The GNU Troff Manual)">
+<meta name="keywords" content="Strings (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Conditionals-and-Loops.html" rel="next" title="Conditionals and Loops">
+<link href="Colors.html" rel="prev" title="Colors">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Strings">
+<div class="nav-panel">
+<p>
+Next: <a href="Conditionals-and-Loops.html" accesskey="n" rel="next">Conditionals and Loops</a>, Previous: <a href="Colors.html" accesskey="p" rel="prev">Colors</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Strings-1">5.22 Strings</h3>
+<a class="index-entry-id" id="index-strings"></a>
+
+<p>GNU <code class="code">troff</code> supports strings primarily for user convenience.
+Conventionally, if one would define a macro only to interpolate a small
+amount of text, without invoking requests or calling any other macros,
+one defines a string instead. Only one string is predefined by the
+language.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002eT_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[.T]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002eT_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eT"></a>
+<a class="index-entry-id" id="index-_002eT-1"></a>
+<a class="index-entry-id" id="index-output-device-name-string-_0028_002eT_0029-1"></a>
+<p>Contains the name of the output device (for example, &lsquo;<samp class="samp">utf8</samp>&rsquo; or
+&lsquo;<samp class="samp">pdf</samp>&rsquo;).
+</p></dd></dl>
+
+<p>The <code class="code">ds</code> request creates a string with a specified name and
+contents and the <code class="code">\*</code> escape sequence dereferences its name,
+interpolating its contents. If the string named by the <code class="code">\*</code> escape
+sequence does not exist, it is defined as empty, nothing is
+interpolated, and a warning in category &lsquo;<samp class="samp">mac</samp>&rsquo; is emitted.
+See <a class="xref" href="Warnings.html">Warnings</a>, for information about the enablement and suppression of
+warnings.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eds-1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ds</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eds-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ds-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eds1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ds1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eds1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ds1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002an"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\*</code><span class="r"><i class="slanted">n</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002an'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_002a"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_0028nm"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\*(</code><span class="r"><i class="slanted">nm</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002a_0028nm'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bname-_005barg1-arg2-_2026_005d_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\*[</code><span class="r"><i class="slanted">name <span class="sansserif">[</span>arg1 arg2 &hellip;<span class="sansserif">]</span></i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bname-_005barg1-arg2-_2026_005d_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-string-interpolation-_0028_005c_002a_0029"></a>
+<a class="index-entry-id" id="index-string-expansion-_0028_005c_002a_0029"></a>
+<a class="index-entry-id" id="index-interpolation-of-strings-_0028_005c_002a_0029"></a>
+<a class="index-entry-id" id="index-expansion-of-strings-_0028_005c_002a_0029"></a>
+<a class="index-entry-id" id="index-string-arguments"></a>
+<a class="index-entry-id" id="index-arguments_002c-to-strings"></a>
+<p>Define a string called <var class="var">name</var> with contents <var class="var">contents</var>. If
+<var class="var">name</var> already exists as an alias, the target of the alias is
+redefined; see <code class="code">als</code> and <code class="code">rm</code> below. If <code class="code">ds</code> is called
+with only one argument, <var class="var">name</var> is defined as an empty string.
+Otherwise, GNU <code class="code">troff</code> stores <var class="var">contents</var> in copy
+mode.<a class="footnote" id="DOCF87" href="groff.html_fot.html#FOOT87"><sup>87</sup></a>
+</p>
+<p>The <code class="code">\*</code> escape sequence interpolates a previously defined string
+variable <var class="var">name</var> (one-character name&nbsp;<var class="var">n</var>, two-character name
+<var class="var">nm</var>). The bracketed interpolation form accepts arguments that are
+handled as macro arguments are; recall <a class="ref" href="Calling-Macros.html">Calling Macros</a>. In
+contrast to macro calls, however, if a closing bracket &lsquo;<samp class="samp">]</samp>&rsquo; occurs
+in a string argument, that argument must be enclosed in double quotes.
+<code class="code">\*</code> is interpreted even in copy mode. When defining strings,
+argument interpolations must be escaped if they are to reference
+parameters from the calling context; See <a class="xref" href="Parameters.html">Parameters</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds cite (\\$1, \\$2)
+Gray codes are explored in \*[cite Morgan 1998].
+ &rArr; Gray codes are explored in (Morgan, 1998).
+</pre></div></div>
+
+
+<a class="index-entry-id" id="index-trailing-spaces-in-string-definitions-and-appendments"></a>
+<a class="index-entry-id" id="index-comments_002c-with-ds"></a>
+<a class="index-entry-id" id="index-ds-request_002c-and-comments"></a>
+<p><strong class="strong">Caution:</strong> Unlike other requests, the second argument to the
+<code class="code">ds</code> request consumes the remainder of the input line, including
+trailing spaces. This means that comments on a line with such a request
+can introduce unwanted space into a string when they are set off from
+the material they annotate, as is conventional.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds H2O H\v'+.3m'\s'-2'2\v'-.3m'\s0O \&quot; water
+</pre></div></div>
+
+<p>Instead, place the comment on another line or put the comment escape
+sequence immediately adjacent to the last character of the string.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds H2O H\v'+.3m'\s'-2'2\v'-.3m'\s0O\&quot; water
+</pre></div></div>
+
+<p>Ending string definitions (and appendments) with a comment, even an
+empty one, prevents unwanted space from creeping into them during source
+document maintenance.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds author Alice Pleasance Liddell\&quot;
+.ds empty \&quot; might be appended to later with .as
+</pre></div></div>
+
+<a class="index-entry-id" id="index-trailing-double-quotes-in-strings"></a>
+<a class="index-entry-id" id="index-double-quotes_002c-trailing_002c-in-strings"></a>
+<a class="index-entry-id" id="index-ds-request_002c-and-double-quotes"></a>
+<a class="index-entry-id" id="index-leading-spaces-with-ds"></a>
+<a class="index-entry-id" id="index-spaces-with-ds"></a>
+<a class="index-entry-id" id="index-ds-request_002c-and-leading-spaces"></a>
+<p>An initial neutral double quote <code class="code">&quot;</code> in <var class="var">contents</var> is stripped
+to allow embedding of leading spaces. Any other <code class="code">&quot;</code> is interpreted
+literally, but it is wise to use the special character escape sequence
+<code class="code">\[dq]</code> instead if the string might be interpolated as part of a
+macro argument; see <a class="ref" href="Calling-Macros.html">Calling Macros</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds salutation &quot; Yours in a white wine sauce,\&quot;
+.ds c-var-defn &quot; char mydate[]=\[dq]2020-07-29\[dq];\&quot;
+</pre></div></div>
+
+<a class="index-entry-id" id="index-multi_002dline-strings"></a>
+<a class="index-entry-id" id="index-strings_002c-multi_002dline"></a>
+<a class="index-entry-id" id="index-newline-character_002c-in-strings_002c-escaping"></a>
+<a class="index-entry-id" id="index-escaping-newline-characters_002c-in-strings"></a>
+<p>Strings are not limited to a single input line of text.
+<code class="code">\<kbd class="key">RET</kbd></code> works just as it does elsewhere. The resulting string
+is stored <em class="emph">without</em> the newlines. Care is therefore required when
+interpolating strings while filling is disabled.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds foo This string contains \
+text on multiple lines \
+of input.
+</pre></div></div>
+
+<p>It is not possible to embed a newline in a string that will be
+interpreted as such when the string is interpolated. To achieve that
+effect, use <code class="code">\*</code> to interpolate a macro instead; see <a class="ref" href="Punning-Names.html">Punning Names</a>.
+</p>
+<p>Because strings are similar to macros, they too can be defined so as to
+suppress AT&amp;T <code class="code">troff</code> compatibility mode when used; see
+<a class="ref" href="Writing-Macros.html">Writing Macros</a> and <a class="ref" href="Compatibility-Mode.html">Compatibility Mode</a>. The <code class="code">ds1</code>
+request defines a string such that compatibility mode is off when the
+string is later interpolated. To be more precise, a <em class="dfn">compatibility
+save</em> input token is inserted at the beginning of the string, and a
+<em class="dfn">compatibility restore</em> input token at the end.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr xxx 12345
+.ds aa The value of xxx is \\n[xxx].
+.ds1 bb The value of xxx is \\n[xxx].
+.
+.cp 1
+.
+\*(aa
+ error&rarr; warning: register '[' not defined
+ &rArr; The value of xxx is 0xxx].
+\*(bb
+ &rArr; The value of xxx is 12345.
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eas"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.as</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eas'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-as"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eas1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.as1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eas1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-as1"></a>
+<a class="index-entry-id" id="index-appending-to-a-string-_0028as_0029"></a>
+<a class="index-entry-id" id="index-string_002c-appending-_0028as_0029"></a>
+<p>The <code class="code">as</code> request is similar to <code class="code">ds</code> but appends <var class="var">contents</var>
+to the string stored as <var class="var">name</var> instead of redefining it. If
+<var class="var">name</var> doesn&rsquo;t exist yet, it is created. If <code class="code">as</code> is called
+with only one argument, no operation is performed (beyond dereferencing
+the string).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.as salutation &quot; with shallots, onions and garlic,\&quot;
+</pre></div></div>
+
+<p>The <code class="code">as1</code> request is similar to <code class="code">as</code>, but compatibility mode
+is switched off when the appended portion of the string is later
+interpolated. To be more precise, a <em class="dfn">compatibility save</em> input
+token is inserted at the beginning of the appended string, and a
+<em class="dfn">compatibility restore</em> input token at the end.
+</p></dd></dl>
+
+<p>Several requests exist to perform rudimentary string operations.
+Strings can be queried (<code class="code">length</code>) and modified (<code class="code">chop</code>,
+<code class="code">substring</code>, <code class="code">stringup</code>, <code class="code">stringdown</code>), and their names
+can be manipulated through renaming, removal, and aliasing (<code class="code">rn</code>,
+<code class="code">rm</code>, <code class="code">als</code>).
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elength"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.length</code></strong> <var class="def-var-arguments">reg anything</var><a class="copiable-link" href='#index-_002elength'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-length"></a>
+<a class="index-entry-id" id="index-length-of-a-string-_0028length_0029"></a>
+<a class="index-entry-id" id="index-string_002c-length-of-_0028length_0029"></a>
+<a class="index-entry-id" id="index-length-request_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-length-request"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-length-request"></a>
+<p>Compute the number of characters of <var class="var">anything</var> and store the count
+in the register <var class="var">reg</var>. If <var class="var">reg</var> doesn&rsquo;t exist, it is created.
+<var class="var">anything</var> is read in copy mode.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds xxx abcd\h'3i'efgh
+.length yyy \*[xxx]
+\n[yyy]
+ &rArr; 14
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002echop"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.chop</code></strong> <var class="def-var-arguments">object</var><a class="copiable-link" href='#index-_002echop'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-chop"></a>
+<p>Remove the last character from the macro, string, or diversion named
+<var class="var">object</var>. This is useful for removing the newline from the end of a
+diversion that is to be interpolated as a string. This request can be
+used repeatedly on the same <var class="var">object</var>; see <a class="ref" href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a>,
+for details on nodes inserted additionally by GNU <code class="code">troff</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002esubstring"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.substring</code></strong> <var class="def-var-arguments">str start [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002esubstring'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-substring"></a>
+<a class="index-entry-id" id="index-substring-_0028substring_0029"></a>
+<p>Replace the string named <var class="var">str</var> with its substring bounded by the
+indices <var class="var">start</var> and <var class="var">end</var>, inclusively. The first character in
+the string has index&nbsp;0. If <var class="var">end</var> is omitted, it is implicitly
+set to the largest valid value (the string length minus one). Negative
+indices count backward from the end of the string: the last character
+has index&nbsp;&minus;1, the character before the last has
+index&nbsp;&minus;2, and so on.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds xxx abcdefgh
+.substring xxx 1 -4
+\*[xxx]
+ &rArr; bcde
+.substring xxx 2
+\*[xxx]
+ &rArr; de
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002estringdown"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.stringdown</code></strong> <var class="def-var-arguments">str</var><a class="copiable-link" href='#index-_002estringdown'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-stringdown"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002estringup"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.stringup</code></strong> <var class="def-var-arguments">str</var><a class="copiable-link" href='#index-_002estringup'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-stringup"></a>
+<a class="index-entry-id" id="index-case_002dtransforming-a-string-_0028stringdown_002c-stringup_0029"></a>
+<a class="index-entry-id" id="index-uppercasing-a-string-_0028stringup_0029"></a>
+<a class="index-entry-id" id="index-lowercasing-a-string-_0028stringdown_0029"></a>
+<a class="index-entry-id" id="index-up_002dcasing-a-string-_0028stringup_0029"></a>
+<a class="index-entry-id" id="index-down_002dcasing-a-string-_0028stringdown_0029"></a>
+<p>Alter the string named <var class="var">str</var> by replacing each of its bytes with its
+lowercase (<code class="code">stringdown</code>) or uppercase (<code class="code">stringup</code>) version (if
+one exists). Special characters in the string will often transform in
+the expected way due to the regular naming convention for accented
+characters. When they do not, use substrings and/or catenation.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds resume R\['e]sum\['e]
+\*[resume]
+.stringdown resume
+\*[resume]
+.stringup resume
+\*[resume]
+ &rArr; Résumé résumé RÉSUMÉ
+</pre></div></div>
+</dd></dl>
+
+<p>(In practice, we would end the <code class="code">ds</code> request with a comment escape
+<code class="code">\&quot;</code> to prevent space from creeping into the definition during
+source document maintenance.)
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ern"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rn</code></strong> <var class="def-var-arguments">old new</var><a class="copiable-link" href='#index-_002ern'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rn"></a>
+<a class="index-entry-id" id="index-renaming-request-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-request_002c-renaming-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-renaming-macro-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-macro_002c-renaming-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-renaming-string-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-string_002c-renaming-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-renaming-diversion-_0028rn_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-renaming-_0028rn_0029"></a>
+<p>Rename the request, macro, diversion, or string <var class="var">old</var> to <var class="var">new</var>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002erm"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rm</code></strong> <var class="def-var-arguments">name</var><a class="copiable-link" href='#index-_002erm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rm"></a>
+<a class="index-entry-id" id="index-removing-request-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-request_002c-removing-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-removing-macro-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-macro_002c-removing-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-removing-string-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-string_002c-removing-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-removing-diversion-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-removing-_0028rm_0029"></a>
+<p>Remove the request, macro, diversion, or string <var class="var">name</var>. GNU
+<code class="code">troff</code> treats subsequent invocations as if the name had never
+been defined.
+</p></dd></dl>
+
+<a class="anchor" id="als"></a><dl class="first-deffn">
+<dt class="deffn" id="index-_002eals"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.als</code></strong> <var class="def-var-arguments">new old</var><a class="copiable-link" href='#index-_002eals'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-als"></a>
+<a class="index-entry-id" id="index-alias_002c-string_002c-creating-_0028als_0029"></a>
+<a class="index-entry-id" id="index-alias_002c-macro_002c-creating-_0028als_0029"></a>
+<a class="index-entry-id" id="index-alias_002c-diversion_002c-creating-_0028als_0029"></a>
+<a class="index-entry-id" id="index-creating-alias_002c-for-string-_0028als_0029"></a>
+<a class="index-entry-id" id="index-creating-alias_002c-for-macro-_0028als_0029"></a>
+<a class="index-entry-id" id="index-creating-alias_002c-for-diversion-_0028als_0029"></a>
+<a class="index-entry-id" id="index-string_002c-creating-alias-for-_0028als_0029"></a>
+<a class="index-entry-id" id="index-macro_002c-creating-alias-for-_0028als_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-creating-alias-for-_0028als_0029"></a>
+<p>Create an alias <var class="var">new</var> for the existing request, string, macro, or
+diversion object named <var class="var">old</var>, causing the names to refer to the same
+stored object. If <var class="var">old</var> is undefined, a warning in category
+&lsquo;<samp class="samp">mac</samp>&rsquo; is produced, and the request is ignored. See <a class="xref" href="Warnings.html">Warnings</a>,
+for information about the enablement and suppression of warnings.
+</p>
+<p>To understand how the <code class="code">als</code> request works, consider two different
+storage pools: one for objects (macros, strings, etc.), and another
+for names. As soon as an object is defined, GNU <code class="code">troff</code> adds it to
+the object pool, adds its name to the name pool, and creates a link
+between them. When <code class="code">als</code> creates an alias, it adds a new name to
+the name pool that gets linked to the same object as the old name.
+</p>
+<p>Now consider this example.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de foo
+..
+.
+.als bar foo
+.
+.de bar
+. foo
+..
+.
+.bar
+ error&rarr; input stack limit exceeded (probable infinite
+ error&rarr; loop)
+</pre></div></div>
+
+<p>In the above, <code class="code">bar</code> remains an <em class="emph">alias</em>&mdash;another name
+for&mdash;the object referred to by <code class="code">foo</code>, which the second <code class="code">de</code>
+request replaces. Alternatively, imagine that the <code class="code">de</code> request
+<em class="emph">dereferences</em> its argument before replacing it. Either way, the
+result of calling <code class="code">bar</code> is a recursive loop that finally leads to
+an error. See <a class="xref" href="Writing-Macros.html">Writing Macros</a>.
+</p>
+<a class="index-entry-id" id="index-alias_002c-string_002c-removing-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-alias_002c-macro_002c-removing-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-alias_002c-diversion_002c-removing-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-removing-alias_002c-for-string-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-removing-alias_002c-for-macro-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-removing-alias_002c-for-diversion-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-string_002c-removing-alias-for-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-macro_002c-removing-alias-for-_0028rm_0029"></a>
+<a class="index-entry-id" id="index-diversion_002c-removing-alias-for-_0028rm_0029"></a>
+<p>To remove an alias, call <code class="code">rm</code> on its name. The object itself is
+not destroyed until it has no more names.
+</p>
+<p>When a request, macro, string, or diversion is aliased, redefinitions
+and appendments &ldquo;write through&rdquo; alias names. To replace an alias with
+a separately defined object, you must use the <code class="code">rm</code> request on its
+name first.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Conditionals-and-Loops.html">Conditionals and Loops</a>, Previous: <a href="Colors.html">Colors</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Suppressing-Output.html b/doc/groff.html.node/Suppressing-Output.html
new file mode 100644
index 0000000..bd32161
--- /dev/null
+++ b/doc/groff.html.node/Suppressing-Output.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Suppressing Output (The GNU Troff Manual)</title>
+
+<meta name="description" content="Suppressing Output (The GNU Troff Manual)">
+<meta name="keywords" content="Suppressing Output (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Colors.html" rel="next" title="Colors">
+<link href="Environments.html" rel="prev" title="Environments">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Suppressing-Output">
+<div class="nav-panel">
+<p>
+Next: <a href="Colors.html" accesskey="n" rel="next">Colors</a>, Previous: <a href="Environments.html" accesskey="p" rel="prev">Environments</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Suppressing-Output-1">5.32 Suppressing Output</h3>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cO_005bnum_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\O[</code><span class="r"><i class="slanted">num</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005cO_005bnum_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cO"></a>
+<a class="index-entry-id" id="index-suppressing-output-_0028_005cO_0029"></a>
+<a class="index-entry-id" id="index-output_002c-suppressing-_0028_005cO_0029"></a>
+<p>Suppress GNU <code class="code">troff</code> output of glyphs and geometric objects. The
+sequences <code class="code">\O2</code>, <code class="code">\O3</code>, <code class="code">\O4</code>, and <code class="code">\O5</code> are
+intended for internal use by <code class="code">grohtml</code>.
+</p>
+<dl class="table">
+<dt>&lsquo;<samp class="samp">\O0</samp>&rsquo;</dt>
+<dd><p>Disable the emission of glyphs and geometric objects to the output
+driver, provided that this sequence occurs at the outermost suppression
+level (see <code class="code">\O3</code> and <code class="code">\04</code> below). Horizontal motions
+corresponding to non-overstruck glyph widths still occur.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">\O1</samp>&rsquo;</dt>
+<dd><p>Enable the emission of glyphs and geometric objects to the output
+driver, provided that this sequence occurs at the outermost suppression
+level.
+</p></dd>
+</dl>
+
+<a class="index-entry-id" id="index-opminx"></a>
+<a class="index-entry-id" id="index-opminy"></a>
+<a class="index-entry-id" id="index-opmaxx"></a>
+<a class="index-entry-id" id="index-opmaxy"></a>
+<p><code class="code">\O0</code> and <code class="code">\O1</code> also reset the four registers <code class="code">opminx</code>,
+<code class="code">opminy</code>, <code class="code">opmaxx</code>, and <code class="code">opmaxy</code> to &minus;1. These
+four registers mark the top left and bottom right hand corners of a box
+encompassing all written or drawn output.
+</p>
+<dl class="table">
+<dt>&lsquo;<samp class="samp">\O2</samp>&rsquo;</dt>
+<dd><p>At the outermost suppression level, enable emission of glyphs and
+geometric objects, and write to the standard error stream the page
+number and values of the four aforementioned registers encompassing
+glyphs written since the last interpolation of a <code class="code">\O</code> sequence, as
+well as the page offset, line length, image file name (if any),
+horizontal and vertical device motion quanta, and input file name.
+Numeric values are in basic units.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">\O3</samp>&rsquo;</dt>
+<dd><p>Begin a nested suppression level. <code class="command">grohtml</code> uses this mechanism
+to create images of output preprocessed with <code class="command">gpic</code>,
+<code class="command">geqn</code>, and <code class="command">gtbl</code>. At startup, GNU <code class="code">troff</code> is at
+the outermost suppression level. <code class="command">pre-grohtml</code> generates these
+sequences when processing the document, using GNU <code class="command">troff</code> with
+the <code class="code">ps</code> output device, Ghostscript, and the PNM tools to produce
+images in PNG format. They start a new page if the device is not
+<code class="code">html</code> or <code class="code">xhtml</code>, to reduce the number of images crossing a
+page boundary.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">\O4</samp>&rsquo;</dt>
+<dd><p>End a nested suppression level.
+</p></dd>
+</dl>
+
+<dl class="table">
+<dt>&lsquo;<samp class="samp">\O[5<var class="var">P</var><var class="var">file</var>]</samp>&rsquo;</dt>
+<dd><p>At the outermost suppression level, write the name <code class="code">file</code> to the
+standard error stream at position <var class="var">P</var>, which must be one of
+<code class="code">l</code>, <code class="code">r</code>, <code class="code">c</code>, or&nbsp;<code class="code">i</code>, corresponding to left,
+right, centered, and inline alignments within the document,
+respectively. <var class="var">file</var> is a name associated with the production of
+the next image.
+</p></dd>
+</dl>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002eO_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.O]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eO_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eO"></a>
+<a class="index-entry-id" id="index-suppression-nesting-level-register"></a>
+<a class="index-entry-id" id="index-nesting-level_002c-suppression_002c-register"></a>
+<a class="index-entry-id" id="index-level_002c-suppression-nesting_002c-register"></a>
+<p>Output suppression nesting level applied by <code class="code">\O3</code> and <code class="code">\O4</code>
+escape sequences.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Colors.html">Colors</a>, Previous: <a href="Environments.html">Environments</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Tab-Stops-in-ms.html b/doc/groff.html.node/Tab-Stops-in-ms.html
new file mode 100644
index 0000000..3302ce5
--- /dev/null
+++ b/doc/groff.html.node/Tab-Stops-in-ms.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Tab Stops in ms (The GNU Troff Manual)</title>
+
+<meta name="description" content="Tab Stops in ms (The GNU Troff Manual)">
+<meta name="keywords" content="Tab Stops in ms (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Page-Layout.html" rel="up" title="ms Page Layout">
+<link href="ms-Margins.html" rel="next" title="ms Margins">
+<link href="ms-Headers-and-Footers.html" rel="prev" title="ms Headers and Footers">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Tab-Stops-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Margins.html" accesskey="n" rel="next">Margins</a>, Previous: <a href="ms-Headers-and-Footers.html" accesskey="p" rel="prev">Headers and footers</a>, Up: <a href="ms-Page-Layout.html" accesskey="u" rel="up">Page layout</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Tab-stops">4.6.6.2 Tab stops</h4>
+
+<p>Use the <code class="code">ta</code> request to define tab stops as needed. See <a class="xref" href="Tabs-and-Fields.html">Tabs and Fields</a>.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eTA"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TA</code></strong><a class="copiable-link" href='#index-_002eTA'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TA-_005bms_005d"></a>
+<p>Reset the tab stops to the <samp class="file">ms</samp> default (every 5 ens).
+Redefine this macro to create a different set of default tab stops.
+</p></dd></dl>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Table-of-Contents.html b/doc/groff.html.node/Table-of-Contents.html
new file mode 100644
index 0000000..4d169cd
--- /dev/null
+++ b/doc/groff.html.node/Table-of-Contents.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Table of Contents (The GNU Troff Manual)</title>
+
+<meta name="description" content="Table of Contents (The GNU Troff Manual)">
+<meta name="keywords" content="Table of Contents (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Common-Features.html" rel="up" title="Common Features">
+<link href="Indexing.html" rel="next" title="Indexing">
+<link href="Footnotes-and-Endnotes.html" rel="prev" title="Footnotes and Endnotes">
+<style type="text/css">
+<!--
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Table-of-Contents">
+<div class="nav-panel">
+<p>
+Next: <a href="Indexing.html" accesskey="n" rel="next">Indexing</a>, Previous: <a href="Footnotes-and-Endnotes.html" accesskey="p" rel="prev">Footnotes and Endnotes</a>, Up: <a href="Common-Features.html" accesskey="u" rel="up">Common Features</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Table-of-Contents-1">3.2.7 Table of Contents</h4>
+<a class="index-entry-id" id="index-table-of-contents"></a>
+<a class="index-entry-id" id="index-contents_002c-table-of"></a>
+
+<p>A package may handle a <i class="slanted">table of contents</i> by directing section
+heading macros to save section heading text and the page number where it
+occurs for use in a later <i class="slanted">entry</i> for a table of contents. It
+writes the collected entries at the end of the document, once all are
+known, upon request. A row of dots (a <i class="slanted">leader</i>) bridges the
+text on the left with its location on the right. Other collections
+might work in this manner, providing lists of figures or tables.
+</p>
+<p>A table of contents is often found at the end of a GNU <code class="code">troff</code>
+document because the formatter processes the document in a single pass.
+The <code class="command">gropdf</code> output driver supports a PDF feature that relocates
+pages at the time the document is rendered; see the <cite class="cite">gropdf<span class="r">(1)</span></cite>
+man page. Type &lsquo;<samp class="samp">man gropdf</samp>&rsquo; at the command line to view it.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Tabs-and-Fields.html b/doc/groff.html.node/Tabs-and-Fields.html
new file mode 100644
index 0000000..83c156e
--- /dev/null
+++ b/doc/groff.html.node/Tabs-and-Fields.html
@@ -0,0 +1,276 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Tabs and Fields (The GNU Troff Manual)</title>
+
+<meta name="description" content="Tabs and Fields (The GNU Troff Manual)">
+<meta name="keywords" content="Tabs and Fields (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Character-Translations.html" rel="next" title="Character Translations">
+<link href="Manipulating-Spacing.html" rel="prev" title="Manipulating Spacing">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Tabs-and-Fields">
+<div class="nav-panel">
+<p>
+Next: <a href="Character-Translations.html" accesskey="n" rel="next">Character Translations</a>, Previous: <a href="Manipulating-Spacing.html" accesskey="p" rel="prev">Manipulating Spacing</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Tabs-and-Fields-1">5.12 Tabs and Fields</h3>
+<a class="index-entry-id" id="index-tabs_002c-and-fields"></a>
+<a class="index-entry-id" id="index-fields_002c-and-tabs"></a>
+
+<a class="index-entry-id" id="index-tab-character-encoding"></a>
+<p>A tab character (<abbr class="acronym">ISO</abbr> code point&nbsp;9, <abbr class="acronym">EBCDIC</abbr>
+code point&nbsp;5) causes a horizontal movement to the next tab stop, if
+any.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005ct-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\t</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ct-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005ct"></a>
+<a class="index-entry-id" id="index-tab-character_002c-non_002dinterpreted-_0028_005ct_0029"></a>
+<a class="index-entry-id" id="index-character_002c-tab_002c-non_002dinterpreted-_0028_005ct_0029"></a>
+<a class="index-entry-id" id="index-_005ct_002c-and-copy-mode"></a>
+<a class="index-entry-id" id="index-copy-mode_002c-and-_005ct"></a>
+<a class="index-entry-id" id="index-mode_002c-copy_002c-and-_005ct"></a>
+<p>Interpolate a tab in copy mode; see <a class="ref" href="Copy-Mode.html">Copy Mode</a>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eta"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ta</code></strong> <var class="def-var-arguments">[[<span class="r"><i class="slanted">n1</i></span> <span class="r"><i class="slanted">n2</i></span> &hellip; <span class="r"><i class="slanted">nn</i></span> ]<code class="t">T</code> <span class="r"><i class="slanted">r1</i></span> <span class="r"><i class="slanted">r2</i></span> &hellip; <span class="r"><i class="slanted">rn</i></span>]</var><a class="copiable-link" href='#index-_002eta'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ta"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002etabs_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.tabs]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002etabs_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002etabs"></a>
+<p>Change tab stop positions. This request takes a series of tab
+specifiers as arguments (optionally divided into two groups with the
+letter &lsquo;<samp class="samp">T</samp>&rsquo;) that indicate where each tab stop is to be, overriding
+any previous settings. The default scaling unit is &lsquo;<samp class="samp">m</samp>&rsquo;. Invoking
+<code class="code">ta</code> without an argument removes all tab stops.
+<a class="index-entry-id" id="index-default-tab-stops"></a>
+<a class="index-entry-id" id="index-tab-stops_002c-default"></a>
+GNU <code class="code">troff</code>&rsquo;s startup value is &lsquo;<samp class="samp">T&nbsp;0.5i</samp>&rsquo;<!-- /@w -->.
+</p>
+<p>Tab stops can be specified absolutely&mdash;as distances from the left
+margin. The following example sets six tab stops, one every inch.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ta 1i 2i 3i 4i 5i 6i
+</pre></div></div>
+
+<p>Tab stops can also be specified using a leading &lsquo;<samp class="samp">+</samp>&rsquo;, which means
+that the specified tab stop is set relative to the previous tab stop.
+For example, the following is equivalent to the previous example.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ta 1i +1i +1i +1i +1i +1i
+</pre></div></div>
+
+<p>GNU <code class="code">troff</code> supports an extended syntax to specify repeating tab
+stops. These stops appear after a &lsquo;<samp class="samp">T</samp>&rsquo; argument. Their values are
+always taken as distances relative to the previous tab stop. This is
+the idiomatic way to specify tab stops at equal intervals in
+<code class="code">groff</code>. The following is, yet again, the same as the previous
+examples. It does more, in fact, since it defines an infinite number of
+tab stops at one-inch intervals.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ta T 1i
+</pre></div></div>
+
+<p>Now we are ready to interpret the full syntax given above. The
+<code class="code">ta</code> request sets tabs at positions <var class="var">n1</var>, <var class="var">n2</var>, &hellip;,
+<var class="var">nn</var>, then at <var class="var">nn</var>+<var class="var">r1</var>, <var class="var">nn</var>+<var class="var">r2</var>, &hellip;,
+<var class="var">nn</var>+<var class="var">rn</var>, then at <var class="var">nn</var>+<var class="var">rn</var>+<var class="var">r1</var>,
+<var class="var">nn</var>+<var class="var">rn</var>+<var class="var">r2</var>, &hellip;, <var class="var">nn</var>+<var class="var">rn</var>+<var class="var">rn</var>, and so
+on.
+</p>
+<p>For example, &lsquo;<samp class="samp">4c +6c T 3c 5c 2c</samp>&rsquo; is equivalent to &lsquo;<samp class="samp">4c 10c 13c
+18c 20c 23c 28c 30c &hellip;</samp>&rsquo;.
+</p>
+<p>Text written to a tab column (i.e., between two tab stops, or between a
+tab stop and an output line boundary) may be aligned to the right or
+left, or centered in the column. This alignment is determined by
+appending &lsquo;<samp class="samp">R</samp>&rsquo;, &lsquo;<samp class="samp">L</samp>&rsquo;, or &lsquo;<samp class="samp">C</samp>&rsquo; to the tab specifier. The
+default is &lsquo;<samp class="samp">L</samp>&rsquo;.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ta 1i 2iC 3iR
+</pre></div></div>
+
+<p>The beginning of an output line is not a tab stop; the text that begins
+an output line is placed according to the configured alignment and
+indentation; see <a class="ref" href="Manipulating-Filling-and-Adjustment.html">Manipulating Filling and Adjustment</a> and <a class="ref" href="Line-Layout.html">Line Layout</a>.
+</p>
+<p>A tab stop is converted into a non-breakable horizontal movement that
+cannot be adjusted.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 2i
+.ds foo a\tb\tc
+.ta T 1i
+\*[foo]
+ error&rarr; warning: cannot break line
+ &rArr; a b c
+</pre></div></div>
+
+<p>The above creates a single output line that is a bit longer than two
+inches (we use a string to show exactly where the tab stops are).
+Now consider the following.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ll 2i
+.ds bar a\tb c\td
+.ta T 1i
+\*[bar]
+ error&rarr; warning: cannot adjust line
+ &rArr; a b
+ &rArr; c d
+</pre></div></div>
+
+<p>GNU <code class="code">troff</code> first converts the line&rsquo;s tab stops into unbreakable
+horizontal movements, then breaks after &lsquo;<samp class="samp">b</samp>&rsquo;. This usually isn&rsquo;t
+what you want.
+</p>
+<p>Superfluous tab characters&mdash;those that do not correspond to a tab
+stop&mdash;are ignored except for the first, which delimits the characters
+belonging to the last tab stop for right-alignment or centering.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds Z foo\tbar\tbaz
+.ds ZZ foo\tbar\tbazqux
+.ds ZZZ foo\tbar\tbaz\tqux
+.ta 2i 4iR
+\*[Z]
+.br
+\*[ZZ]
+.br
+\*[ZZZ]
+.br
+ &rArr; foo bar baz
+ &rArr; foo bar bazqux
+ &rArr; foo bar bazqux
+</pre></div></div>
+
+<p>The first line right-aligns &ldquo;baz&rdquo; within the second tab stop. The
+second line right-aligns &ldquo;bazqux&rdquo; within it. The third line
+right-aligns only &ldquo;baz&rdquo; because of the additional tab character, which
+marks the end of the text occupying the last tab stop defined.
+</p>
+<p>Tab stops are associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<a class="index-entry-id" id="index-tab-stop-settings-register-_0028_002etabs_0029"></a>
+<a class="index-entry-id" id="index-_002eS-register_002c-Plan-9-alias-for-_002etabs"></a>
+<a class="index-entry-id" id="index-_002etabs-register_002c-Plan-9-alias-_0028_002eS_0029"></a>
+<p>The read-only register <code class="code">.tabs</code> contains a string
+representation of the current tab settings suitable for use as an
+argument to the <code class="code">ta</code> request.<a class="footnote" id="DOCF66" href="groff.html_fot.html#FOOT66"><sup>66</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds tab-string \n[.tabs]
+\*[tab-string]
+ &rArr; T120u
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etc"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.tc</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">c</i></span>]</var><a class="copiable-link" href='#index-_002etc'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-tc"></a>
+<a class="index-entry-id" id="index-tab-repetition-character-_0028tc_0029"></a>
+<a class="index-entry-id" id="index-character_002c-tab-repetition-_0028tc_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-tab-repetition-_0028tc_0029"></a>
+<p>Set the tab repetition character to the ordinary or special character
+<var class="var">c</var>; normally, no glyph is written when moving to a tab stop (and
+some output devices may output space characters to achieve this motion).
+A <em class="dfn">tab repetition character</em> causes the formatter to write as many
+instances of <var class="var">c</var> as are necessary to occupy the interval from the
+horizontal drawing position to the next tab stop. With no argument, GNU
+<code class="code">troff</code> reverts to the default behavior. The tab repetition
+character is associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+Only a single character of <var class="var">c</var> is recognized; any excess is ignored.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002elinetabs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.linetabs</code></strong> <var class="def-var-arguments">n</var><a class="copiable-link" href='#index-_002elinetabs'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-linetabs"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002elinetabs_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.linetabs]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002elinetabs_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002elinetabs-1"></a>
+<a class="index-entry-id" id="index-tab_002c-line_002dtabs-mode"></a>
+<a class="index-entry-id" id="index-line_002dtabs-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-line_002dtabs"></a>
+<p>If <var class="var">n</var> is missing or non-zero, activate <em class="dfn">line-tabs</em>; deactivate
+it otherwise (the default). Active line-tabs cause GNU <code class="code">troff</code>
+to compute tab distances relative to the start of the output line
+instead of the input line.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de Tabs
+. ds x a\t\c
+. ds y b\t\c
+. ds z c
+. ta 1i 3i
+\\*x
+\\*y
+\\*z
+..
+.Tabs
+.br
+.linetabs
+.Tabs
+ &rArr; a b c
+ &rArr; a b c
+</pre></div></div>
+
+<p>Line-tabs activation is associated with the environment
+(see <a class="pxref" href="Environments.html">Environments</a>). The read-only register <code class="code">.linetabs</code>
+interpolates&nbsp;1 if line-tabs are active, and 0 otherwise.
+</p></dd></dl>
+
+
+
+<ul class="mini-toc">
+<li><a href="Leaders.html" accesskey="1">Leaders</a></li>
+<li><a href="Fields.html" accesskey="2">Fields</a></li>
+</ul>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Character-Translations.html">Character Translations</a>, Previous: <a href="Manipulating-Spacing.html">Manipulating Spacing</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Tabs-and-Leaders.html b/doc/groff.html.node/Tabs-and-Leaders.html
new file mode 100644
index 0000000..c8298a1
--- /dev/null
+++ b/doc/groff.html.node/Tabs-and-Leaders.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Tabs and Leaders (The GNU Troff Manual)</title>
+
+<meta name="description" content="Tabs and Leaders (The GNU Troff Manual)">
+<meta name="keywords" content="Tabs and Leaders (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Text.html" rel="up" title="Text">
+<link href="Input-Conventions.html" rel="next" title="Input Conventions">
+<link href="Adjustment.html" rel="prev" title="Adjustment">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Tabs-and-Leaders">
+<div class="nav-panel">
+<p>
+Next: <a href="Input-Conventions.html" accesskey="n" rel="next">Input Conventions</a>, Previous: <a href="Adjustment.html" accesskey="p" rel="prev">Adjustment</a>, Up: <a href="Text.html" accesskey="u" rel="up">Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Tabs-and-Leaders-1">5.1.6 Tabs and Leaders</h4>
+
+<a class="index-entry-id" id="index-horizontal-tab-character"></a>
+<a class="index-entry-id" id="index-tab-character"></a>
+<a class="index-entry-id" id="index-character_002c-horizontal-tab"></a>
+<a class="index-entry-id" id="index-leader-character"></a>
+<a class="index-entry-id" id="index-character_002c-leader"></a>
+<a class="index-entry-id" id="index-tab-stops"></a>
+<a class="index-entry-id" id="index-stops_002c-tab"></a>
+<p>GNU <code class="code">troff</code> translates input horizontal tab characters (&ldquo;tabs&rdquo;)
+and <kbd class="key">Control+A</kbd> characters (&ldquo;leaders&rdquo;) into movements to the next
+tab stop. Tabs simply move to the next tab stop; leaders place enough
+periods to fill the space. Tab stops are by default located every half
+inch measured from the drawing position corresponding to the beginning
+of the input line; see <a class="ref" href="Page-Geometry.html">Page Geometry</a>. Tabs and leaders do not
+cause breaks and therefore do not interrupt filling. Below, we use
+arrows &rarr; and bullets &bull; to indicate input tabs and
+leaders, respectively.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">1
+&rarr; 2 &rarr; 3 &bull; 4
+&rarr; &bull; 5
+&rArr; 1 2 3.......4 ........5
+</pre></div></div>
+
+<p>Tabs and leaders lend themselves to table construction.<a class="footnote" id="DOCF24" href="groff.html_fot.html#FOOT24"><sup>24</sup></a> The tab and leader glyphs can be
+configured, and further facilities for sophisticated table composition
+are available; see <a class="ref" href="Tabs-and-Fields.html">Tabs and Fields</a>. There are many details to
+track when using such low-level features, so most users turn to the
+<cite class="cite">tbl<span class="r">(1)</span></cite> preprocessor to lay out tables.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Text-settings-in-ms.html b/doc/groff.html.node/Text-settings-in-ms.html
new file mode 100644
index 0000000..f13be1e
--- /dev/null
+++ b/doc/groff.html.node/Text-settings-in-ms.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Text settings in ms (The GNU Troff Manual)</title>
+
+<meta name="description" content="Text settings in ms (The GNU Troff Manual)">
+<meta name="keywords" content="Text settings in ms (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Body-Text.html" rel="up" title="ms Body Text">
+<link href="Typographical-symbols-in-ms.html" rel="next" title="Typographical symbols in ms">
+<link href="ms-Body-Text.html" rel="prev" title="ms Body Text">
+<style type="text/css">
+<!--
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Text-settings-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="Typographical-symbols-in-ms.html" accesskey="n" rel="next">Typographical symbols</a>, Previous: <a href="ms-Body-Text.html" accesskey="p" rel="prev">Body Text</a>, Up: <a href="ms-Body-Text.html" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Text-settings-1">4.6.5.1 Text settings</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-text-settings"></a>
+
+<p>The <code class="code">FAM</code> string, a GNU extension, sets the font family for body
+text; the default is &lsquo;<samp class="samp">T</samp>&rsquo;. The <code class="code">PS</code> and <code class="code">VS</code> registers
+set the type size and vertical spacing (distance between text
+baselines), respectively. The font family and type size are ignored on
+terminal devices. Setting these parameters before the first call of a
+heading, paragraphing, or (non-date) document description macro also
+applies them to headers, footers, and (for <code class="code">FAM</code>) footnotes.
+</p>
+<p>Which font families are available depends on the output device; as a
+convention, <code class="code">T</code> selects a serif family (&ldquo;Times&rdquo;), <code class="code">H</code> a
+sans-serif family (&ldquo;Helvetica&rdquo;), and <code class="code">C</code> a monospaced family
+(&ldquo;Courier&rdquo;). The man page for the output driver documents its font
+repertoire. Consult the <cite class="cite">groff<span class="r">(1)</span></cite> man page for lists of
+available output devices and their drivers.
+</p>
+<p>The hyphenation mode (as used by the <code class="code">hy</code> request) is set from the
+<code class="code">HY</code> register. Setting <code class="code">HY</code> to &lsquo;<samp class="samp">0</samp>&rsquo; is equivalent to
+using the <code class="code">nh</code> request. This is a Tenth Edition Research Unix
+extension.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Text.html b/doc/groff.html.node/Text.html
new file mode 100644
index 0000000..16a1d83
--- /dev/null
+++ b/doc/groff.html.node/Text.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Text (The GNU Troff Manual)</title>
+
+<meta name="description" content="Text (The GNU Troff Manual)">
+<meta name="keywords" content="Text (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Measurements.html" rel="next" title="Measurements">
+<link href="GNU-troff-Reference.html" rel="prev" title="GNU troff Reference">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Text">
+<div class="nav-panel">
+<p>
+Next: <a href="Measurements.html" accesskey="n" rel="next">Measurements</a>, Previous: <a href="GNU-troff-Reference.html" accesskey="p" rel="prev">GNU <code class="code">troff</code> Reference</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Text-1">5.1 Text</h3>
+<a class="index-entry-id" id="index-text_002c-GNU-troff-processing"></a>
+
+<p><abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> was designed to take input as it would be
+composed on a typewriter, including the teletypewriters used as early
+computer terminals, and relieve the user drafting a document of concern
+with details like line length, hyphenation breaking, and the achievement
+of straight margins. Early in its development, the program gained the
+ability to prepare output for a phototypesetter; a document could then
+be prepared for output to either a teletypewriter, a phototypesetter, or
+both. GNU <code class="code">troff</code> continues this tradition of permitting an author
+to compose a single master version of a document which can then be
+rendered for a variety of output formats or devices.
+</p>
+<p><code class="code">roff</code> input files contain text interspersed with instructions to
+control the formatter. Even in the absence of such instructions, GNU
+<code class="code">troff</code> still processes its input in several ways, by filling,
+hyphenating, breaking, and adjusting it, and supplementing it with
+inter-sentence space.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="Filling.html" accesskey="1">Filling</a></li>
+<li><a href="Sentences.html" accesskey="2">Sentences</a></li>
+<li><a href="Hyphenation.html" accesskey="3">Hyphenation</a></li>
+<li><a href="Breaking.html" accesskey="4">Breaking</a></li>
+<li><a href="Adjustment.html" accesskey="5">Adjustment</a></li>
+<li><a href="Tabs-and-Leaders.html" accesskey="6">Tabs and Leaders</a></li>
+<li><a href="Requests-and-Macros.html" accesskey="7">Requests and Macros</a></li>
+<li><a href="Macro-Packages.html" accesskey="8">Macro Packages</a></li>
+<li><a href="Input-Encodings.html" accesskey="9">Input Encodings</a></li>
+<li><a href="Input-Conventions.html">Input Conventions</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/The-Implicit-Page-Trap.html b/doc/groff.html.node/The-Implicit-Page-Trap.html
new file mode 100644
index 0000000..82d1a6b
--- /dev/null
+++ b/doc/groff.html.node/The-Implicit-Page-Trap.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>The Implicit Page Trap (The GNU Troff Manual)</title>
+
+<meta name="description" content="The Implicit Page Trap (The GNU Troff Manual)">
+<meta name="keywords" content="The Implicit Page Trap (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Vertical-Position-Traps.html" rel="up" title="Vertical Position Traps">
+<link href="Diversion-Traps.html" rel="next" title="Diversion Traps">
+<link href="Page-Location-Traps.html" rel="prev" title="Page Location Traps">
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="The-Implicit-Page-Trap">
+<div class="nav-panel">
+<p>
+Next: <a href="Diversion-Traps.html" accesskey="n" rel="next">Diversion Traps</a>, Previous: <a href="Page-Location-Traps.html" accesskey="p" rel="prev">Page Location Traps</a>, Up: <a href="Vertical-Position-Traps.html" accesskey="u" rel="up">Vertical Position Traps</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="The-Implicit-Page-Trap-1">5.28.1.2 The Implicit Page Trap</h4>
+<a class="index-entry-id" id="index-implicit-trap"></a>
+<a class="index-entry-id" id="index-trap_002c-implicit"></a>
+
+<a class="index-entry-id" id="index-page-break-2"></a>
+<a class="index-entry-id" id="index-break_002c-page-2"></a>
+<a class="index-entry-id" id="index-page-ejection-2"></a>
+<a class="index-entry-id" id="index-ejection_002c-page-2"></a>
+<p>If, after starting GNU <code class="code">troff</code> without loading a macro package, you
+use the <code class="code">ptr</code> request to dump a list of the active traps to the
+standard error stream,<a class="footnote" id="DOCF109" href="groff.html_fot.html#FOOT109"><sup>109</sup></a> nothing is reported.
+Yet the <code class="code">.t</code> register will report a steadily decreasing value with
+every output line your document produces, and once the value of
+<code class="code">.t</code> gets to within <code class="code">.V</code> of zero, you will notice that
+something trap-like happens&mdash;the page is ejected, a new one begins, and
+the value of <code class="code">.t</code> becomes large once more.
+</p>
+<p>This <em class="dfn">implicit page trap</em> always exists in the top-level
+diversion;<a class="footnote" id="DOCF110" href="groff.html_fot.html#FOOT110"><sup>110</sup></a> it works like a trap in some
+ways but not others. Its purpose is to eject the current page and start
+the next one. It has no name, so it cannot be moved or deleted with
+<code class="code">wh</code> or <code class="code">ch</code> requests. You cannot hide it by placing another
+trap at its location, and can move it only by redefining the page length
+with <code class="code">pl</code>. Its operation is suppressed when vertical page traps
+are disabled with GNU <code class="code">troff</code>&rsquo;s <code class="code">vpt</code> request.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Traps.html b/doc/groff.html.node/Traps.html
new file mode 100644
index 0000000..3386bdb
--- /dev/null
+++ b/doc/groff.html.node/Traps.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Traps (The GNU Troff Manual)</title>
+
+<meta name="description" content="Traps (The GNU Troff Manual)">
+<meta name="keywords" content="Traps (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Diversions.html" rel="next" title="Diversions">
+<link href="Deferring-Output.html" rel="prev" title="Deferring Output">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="Diversions.html" accesskey="n" rel="next">Diversions</a>, Previous: <a href="Deferring-Output.html" accesskey="p" rel="prev">Deferring Output</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Traps-1">5.28 Traps</h3>
+<a class="index-entry-id" id="index-traps"></a>
+
+<p><em class="dfn">Traps</em> are locations in the output or conditions on the input that,
+when reached or fulfilled, call a specified macro. These traps can
+occur at a given location on the page, at a given location in the
+current diversion (together, these are known as <i class="slanted">vertical
+position traps</i>), at a blank line, at a line with leading space
+characters, after a quantity of input lines, or at the end of input.
+Macros called by traps are passed no arguments.
+<a class="index-entry-id" id="index-planting-a-trap"></a>
+<a class="index-entry-id" id="index-trap_002c-planting"></a>
+Setting a trap is also called <em class="dfn">planting</em> one.
+<a class="index-entry-id" id="index-trap_002c-springing"></a>
+<a class="index-entry-id" id="index-springing-a-trap"></a>
+It is said that a trap is <em class="dfn">sprung</em> if its condition is fulfilled.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="Vertical-Position-Traps.html" accesskey="1">Vertical Position Traps</a></li>
+<li><a href="Input-Line-Traps.html" accesskey="2">Input Line Traps</a></li>
+<li><a href="Blank-Line-Traps.html" accesskey="3">Blank Line Traps</a></li>
+<li><a href="Leading-Space-Traps.html" accesskey="4">Leading Space Traps</a></li>
+<li><a href="End_002dof_002dinput-Traps.html" accesskey="5">End-of-input Traps</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Tutorial-for-Macro-Users.html b/doc/groff.html.node/Tutorial-for-Macro-Users.html
new file mode 100644
index 0000000..3fc9bce
--- /dev/null
+++ b/doc/groff.html.node/Tutorial-for-Macro-Users.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Tutorial for Macro Users (The GNU Troff Manual)</title>
+
+<meta name="description" content="Tutorial for Macro Users (The GNU Troff Manual)">
+<meta name="keywords" content="Tutorial for Macro Users (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="index.html" rel="up" title="Top">
+<link href="Major-Macro-Packages.html" rel="next" title="Major Macro Packages">
+<link href="Invoking-groff.html" rel="prev" title="Invoking groff">
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="Tutorial-for-Macro-Users">
+<div class="nav-panel">
+<p>
+Next: <a href="Major-Macro-Packages.html" accesskey="n" rel="next">Macro Packages</a>, Previous: <a href="Invoking-groff.html" accesskey="p" rel="prev">Invoking <code class="code">groff</code></a>, Up: <a href="index.html" accesskey="u" rel="up">GNU <code class="code">troff</code></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h2 class="chapter" id="Tutorial-for-Macro-Users-1">3 Tutorial for Macro Users</h2>
+<a class="index-entry-id" id="index-tutorial-for-macro-users"></a>
+<a class="index-entry-id" id="index-macros_002c-tutorial-for-users"></a>
+<a class="index-entry-id" id="index-user_0027s-tutorial-for-macros"></a>
+<a class="index-entry-id" id="index-user_0027s-macro-tutorial"></a>
+
+<p>Most users of the <code class="code">roff</code> language employ a macro package to format
+their documents. Successful macro packages ease the composition
+process; their users need not have mastered the full formatting
+language, nor understand features like diversions, traps, and
+environments. This chapter aims to familiarize you with basic concepts
+and mechanisms common to many macro packages (like &ldquo;displays&rdquo;). If
+you prefer a meticulous and comprehensive presentation, try <a class="ref" href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> instead.
+</p>
+
+
+
+<ul class="mini-toc">
+<li><a href="Basics.html" accesskey="1">Basics</a></li>
+<li><a href="Common-Features.html" accesskey="2">Common Features</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Typeface-and-decoration.html b/doc/groff.html.node/Typeface-and-decoration.html
new file mode 100644
index 0000000..759a761
--- /dev/null
+++ b/doc/groff.html.node/Typeface-and-decoration.html
@@ -0,0 +1,212 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Typeface and decoration (The GNU Troff Manual)</title>
+
+<meta name="description" content="Typeface and decoration (The GNU Troff Manual)">
+<meta name="keywords" content="Typeface and decoration (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Body-Text.html" rel="up" title="ms Body Text">
+<link href="Lists-in-ms.html" rel="next" title="Lists in ms">
+<link href="Headings-in-ms.html" rel="prev" title="Headings in ms">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+kbd.key {font-style: normal}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Typeface-and-decoration">
+<div class="nav-panel">
+<p>
+Next: <a href="Lists-in-ms.html" accesskey="n" rel="next">Lists</a>, Previous: <a href="Headings-in-ms.html" accesskey="p" rel="prev">Headings</a>, Up: <a href="ms-Body-Text.html" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Typeface-and-decoration-1">4.6.5.5 Typeface and decoration</h4>
+
+<p>The <samp class="file">ms</samp> macros provide a variety of ways to style text.
+Attend closely to the ordering of arguments labeled <var class="var">pre</var> and
+<var class="var">post</var>, which is not intuitive. Support for <var class="var">pre</var>
+arguments is a GNU extension.<a class="footnote" id="DOCF10" href="groff.html_fot.html#FOOT10"><sup>10</sup></a>
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eB"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.B</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eB'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-B-_005bms_005d"></a>
+<p>Style <var class="var">text</var> in <b class="b">bold</b>, followed by <var class="var">post</var> in the previous
+font style without intervening space, and preceded by <var class="var">pre</var>
+similarly. Without arguments, <samp class="file">ms</samp> styles subsequent text in bold
+until the next paragraphing, heading, or no-argument typeface macro
+call.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eR-1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.R</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eR-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-R-_005bms_005d"></a>
+<p>As <code class="code">B</code>, but use the roman style (upright text of normal weight)
+instead of bold. Argument recognition is a GNU extension.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eI"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.I</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eI'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-I-_005bms_005d"></a>
+<p>As <code class="code">B</code>, but use an <i class="i">italic</i> or oblique style instead of bold.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eBI"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.BI</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eBI'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-BI-_005bms_005d"></a>
+<p>As <code class="code">B</code>, but use a bold italic or bold oblique style instead of
+upright bold. This is a Tenth Edition Research Unix extension.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eCW-1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.CW</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span> [<span class="r"><i class="slanted">pre</i></span>]]]</var><a class="copiable-link" href='#index-_002eCW-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-CW-_005bms_005d"></a>
+<p>As <code class="code">B</code>, but use a <code class="t">constant-width</code> (monospaced) roman typeface
+instead of bold. This is a Tenth Edition Research Unix extension.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eBX"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.BX</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span>]</var><a class="copiable-link" href='#index-_002eBX'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-BX-_005bms_005d"></a>
+<p>Typeset <var class="var">text</var> and draw a box around it. On terminal devices,
+reverse video is used instead. If you want <var class="var">text</var> to contain space,
+use unbreakable space or horizontal motion escape sequences (<code class="code">\~</code>,
+<code class="code">\<kbd class="key">SP</kbd></code>, <code class="code">\^</code>, <code class="code">\|</code>, <code class="code">\0</code> or <code class="code">\h</code>).
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eUL"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.UL</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">text</i></span> [<span class="r"><i class="slanted">post</i></span>]]</var><a class="copiable-link" href='#index-_002eUL'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-UL-_005bms_005d"></a>
+<p>Typeset <var class="var">text</var> with an underline. <var class="var">post</var>, if present, is set
+after <var class="var">text</var> with no intervening space.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eLG"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.LG</code></strong><a class="copiable-link" href='#index-_002eLG'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LG-_005bms_005d"></a>
+<p>Set subsequent text in larger type (two points larger than the
+current size) until the next type size, paragraphing, or heading macro
+call. You can specify this macro multiple times to enlarge the type
+size as needed.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eSM"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.SM</code></strong><a class="copiable-link" href='#index-_002eSM'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SM-_005bms_005d"></a>
+<p>Set subsequent text in smaller type (two points smaller than the current
+size) until the next type size, paragraphing, or heading macro call.
+You can specify this macro multiple times to reduce the type size as
+needed.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eNL"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.NL</code></strong><a class="copiable-link" href='#index-_002eNL'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-NL-_005bms_005d"></a>
+<p>Set subsequent text at the normal type size (the amount in the <code class="code">PS</code>
+register).
+</p></dd></dl>
+
+<p><var class="var">pre</var> and <var class="var">post</var> arguments are typically used to simplify the
+attachment of punctuation to styled words. When <var class="var">pre</var> is used,
+a hyphenation control escape sequence <code class="code">\%</code> that would ordinarily
+start <var class="var">text</var> must start <var class="var">pre</var> instead to have the desired
+effect.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">The CS course's students found one C language keyword
+.CW static ) \%(
+most troublesome.
+</pre></div>
+</td></tr></table>
+
+<p>The foregoing example produces output as follows.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted"><span class="r">The CS course&rsquo;s students found one C language keyword (<code class="t">static</code>)
+most troublesome.</span>
+</pre></div>
+</td></tr></table>
+
+<p>You can use the output line continuation escape sequence <code class="code">\c</code> to
+achieve the same result (see <a class="pxref" href="Line-Continuation.html">Line Continuation</a>). It is also
+portable to older <samp class="file">ms</samp> implementations.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">The CS course's students found one C language keyword
+\%(\c
+.CW \%static )
+most troublesome.
+</pre></div>
+</td></tr></table>
+
+<p><code class="code">groff</code> <samp class="file">ms</samp> also offers strings to begin and end super- and
+subscripting. These are GNU extensions.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_007b_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[{]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_007b_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_007b-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005b_007d_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[}]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_007d_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_007d-_005bms_005d"></a>
+<p>Begin and end superscripting, respectively.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_003c_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[&lt;]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003c_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_003c-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005b_003e_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[&gt;]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003e_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_003e-_005bms_005d"></a>
+<p>Begin and end subscripting, respectively.
+</p></dd></dl>
+
+<p>Rather than calling the <code class="code">CW</code> macro, in <code class="code">groff</code> <samp class="file">ms</samp> you
+might prefer to change the font family to Courier by setting the
+<code class="code">FAM</code> string to &lsquo;<samp class="samp">C</samp>&rsquo;. You can then use all four style macros
+above, returning to the default family (Times) with &lsquo;<samp class="samp">.ds FAM T</samp>&rsquo;.
+Because changes to <code class="code">FAM</code> take effect only at the next paragraph,
+<code class="code">CW</code> remains useful to &ldquo;inline&rdquo; a change to the font family,
+similarly to the practice of this document in noting syntactical
+elements of <samp class="file">ms</samp> and <code class="code">groff</code>.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Lists-in-ms.html">Lists</a>, Previous: <a href="Headings-in-ms.html">Headings</a>, Up: <a href="ms-Body-Text.html">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Typographical-symbols-in-ms.html b/doc/groff.html.node/Typographical-symbols-in-ms.html
new file mode 100644
index 0000000..3323bcd
--- /dev/null
+++ b/doc/groff.html.node/Typographical-symbols-in-ms.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Typographical symbols in ms (The GNU Troff Manual)</title>
+
+<meta name="description" content="Typographical symbols in ms (The GNU Troff Manual)">
+<meta name="keywords" content="Typographical symbols in ms (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Body-Text.html" rel="up" title="ms Body Text">
+<link href="Paragraphs-in-ms.html" rel="next" title="Paragraphs in ms">
+<link href="Text-settings-in-ms.html" rel="prev" title="Text settings in ms">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="Typographical-symbols-in-ms">
+<div class="nav-panel">
+<p>
+Next: <a href="Paragraphs-in-ms.html" accesskey="n" rel="next">Paragraphs</a>, Previous: <a href="Text-settings-in-ms.html" accesskey="p" rel="prev">Text settings</a>, Up: <a href="ms-Body-Text.html" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Typographical-symbols">4.6.5.2 Typographical symbols</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-obtaining-typographical-symbols"></a>
+
+<p><samp class="file">ms</samp> provides a few strings to obtain typographical symbols not
+easily entered with the keyboard. These and many others are available
+as special character escape sequences&mdash;see the <cite class="cite">groff_char<span class="r">(7)</span></cite>
+man page.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002d_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[-]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002d_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002d-_005bms_005d"></a>
+<p>Interpolate an em dash.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bQ_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[Q]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bQ_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Q-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bU_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[U]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bU_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-U-_005bms_005d"></a>
+<p>Interpolate typographer&rsquo;s quotation marks where available, and neutral
+double quotes otherwise. <code class="code">\*Q</code> is the left quote and <code class="code">\*U</code>
+the right.
+</p></dd></dl>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Using-Escape-Sequences.html b/doc/groff.html.node/Using-Escape-Sequences.html
new file mode 100644
index 0000000..9eabad1
--- /dev/null
+++ b/doc/groff.html.node/Using-Escape-Sequences.html
@@ -0,0 +1,206 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Using Escape Sequences (The GNU Troff Manual)</title>
+
+<meta name="description" content="Using Escape Sequences (The GNU Troff Manual)">
+<meta name="keywords" content="Using Escape Sequences (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Formatter-Instructions.html" rel="up" title="Formatter Instructions">
+<link href="Delimiters.html" rel="next" title="Delimiters">
+<link href="Calling-Macros.html" rel="prev" title="Calling Macros">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Using-Escape-Sequences">
+<div class="nav-panel">
+<p>
+Next: <a href="Delimiters.html" accesskey="n" rel="next">Delimiters</a>, Previous: <a href="Calling-Macros.html" accesskey="p" rel="prev">Calling Macros</a>, Up: <a href="Formatter-Instructions.html" accesskey="u" rel="up">Formatter Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Using-Escape-Sequences-1">5.6.4 Using Escape Sequences</h4>
+<a class="index-entry-id" id="index-using-escape-sequences"></a>
+<a class="index-entry-id" id="index-escape-sequences"></a>
+
+<p>Whereas requests must occur on control lines, escape sequences can occur
+intermixed with text and may appear in arguments to requests, macros,
+and other escape sequences.
+<a class="index-entry-id" id="index-_005c"></a>
+An escape sequence is introduced by the escape character, a backslash
+<code class="code">\</code> (but see the <code class="code">ec</code> request below). The next character
+selects the escape&rsquo;s function.
+</p>
+<p>Escape sequences vary in length. Some take an argument, and of those,
+some have different syntactical forms for a one-character,
+two-character, or arbitrary-length argument. Others accept <em class="emph">only</em>
+an arbitrary-length argument. In the former scheme, a one-character
+argument follows the function character immediately, an opening
+parenthesis &lsquo;<samp class="samp">(</samp>&rsquo; introduces a two-character argument (no closing
+parenthesis is used), and an argument of arbitrary length is enclosed in
+brackets &lsquo;<samp class="samp">[]</samp>&rsquo;. In the latter scheme, the user selects a delimiter
+character. A few escape sequences are idiosyncratic, and support both
+of the foregoing conventions (<code class="code">\s</code>), designate their own
+termination sequence (<code class="code">\?</code>), consume input until the next newline
+(<code class="code">\!</code>, <code class="code">\&quot;</code>, <code class="code">\#</code>), or support an additional modifier
+character (<code class="code">\s</code> again, and <code class="code">\n</code>). As with requests, use of
+some escape sequences in source documents may interact poorly with a
+macro package you use; consult its documentation to learn of &ldquo;safe&rdquo;
+sequences or alternative facilities it provides to achieve the desired
+result.
+</p>
+<p>If an escape character is followed by a character that does not
+identify a defined operation, the escape character is ignored (producing
+a diagnostic of the &lsquo;<samp class="samp">escape</samp>&rsquo; warning category, which is not enabled
+by default) and the following character is processed normally.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">$ groff -Tps -ww
+.nr N 12
+.ds co white
+.ds animal elephant
+I have \fI\nN \*(co \*[animal]s,\f[]
+said \P.\&amp;\~Pseudo Pachyderm.
+ error&rarr; warning: escape character ignored before 'P'
+ &rArr; I have <i class="slanted">12 white elephants,</i> said P. Pseudo Pachyderm.
+</pre></div></div>
+
+<p>Escape sequence interpolation is of higher precedence than escape
+sequence argument interpretation. This rule affords flexibility in
+using escape sequences to construct parameters to other escape
+sequences.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds family C\&quot; Courier
+.ds style I\&quot; oblique
+Choice a typeface \f(\*[family]\*[style]wisely.
+ &rArr; Choose a typeface <i class="slanted">wisely.</i>
+</pre></div></div>
+
+<p>In the above, the syntax form &lsquo;<samp class="samp">\f(</samp>&rsquo; accepts only two characters for
+an argument; the example works because the subsequent escape sequences
+are interpolated before the selection escape sequence argument is
+processed, and strings <code class="code">family</code> and <code class="code">style</code> interpolate one
+character each.<a class="footnote" id="DOCF46" href="groff.html_fot.html#FOOT46"><sup>46</sup></a>
+</p>
+<p>The escape character is nearly always interpreted when encountered; it
+is therefore desirable to have a way to interpolate it, disable it, or
+change it.
+</p>
+<a class="index-entry-id" id="index-formatting-the-escape-character-_0028_005ce_0029"></a>
+<a class="index-entry-id" id="index-escape-character_002c-formatting-_0028_005ce_0029"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005ce-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\e</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005ce-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005ce"></a>
+<p>Interpolate the escape character.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-formatting-a-backslash-glyph-_0028_005c_005brs_005d_0029"></a>
+<a class="index-entry-id" id="index-backslash-glyph_002c-formatting-_0028_005c_005brs_005d_0029"></a>
+<p>The <code class="code">\[rs]</code> special character escape sequence formats a backslash
+glyph. In macro and string definitions, the input sequences <code class="code">\\</code>
+and <code class="code">\E</code> defer interpretation of escape sequences. See <a class="xref" href="Copy-Mode.html">Copy Mode</a>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eeo"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.eo</code></strong><a class="copiable-link" href='#index-_002eeo'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-eo"></a>
+<a class="index-entry-id" id="index-disabling-_005c-_0028eo_0029"></a>
+<a class="index-entry-id" id="index-_005c_002c-disabling-_0028eo_0029"></a>
+<p>Disable the escape mechanism except in copy mode. Once this request is
+invoked, no input character is recognized as starting an escape
+sequence in interpretation mode.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eec"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ec</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">o</i></span>]</var><a class="copiable-link" href='#index-_002eec'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ec"></a>
+<a class="index-entry-id" id="index-escape-character_002c-changing-_0028ec_0029"></a>
+<a class="index-entry-id" id="index-character_002c-escape_002c-changing-_0028ec_0029"></a>
+<p>Recognize the ordinary character&nbsp;<var class="var">o</var> as the escape character.
+If&nbsp;<var class="var">o</var> is absent or invalid, the default escape character
+&lsquo;<samp class="samp">\</samp>&rsquo; is selected.
+</p></dd></dl>
+
+<p>Switching escape sequence interpretation off to define a macro and back
+on afterward can obviate the need to double the escape character within
+the definition. See <a class="xref" href="Writing-Macros.html">Writing Macros</a>. This technique is not available
+if your macro needs to interpolate values at the time it is
+<em class="emph">defined</em>&mdash;but many do not.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.\&quot; simplified `BR` macro from the man(7) macro package
+.eo
+.de BR
+. ds result \&amp;
+. while (\n[.$] &gt;= 2) \{\
+. as result \fB\$1\fR\$2\&quot;
+. shift 2
+. \}
+. if \n[.$] .as result \fB\$1\&quot;
+\*[result]
+. rm result
+. ft R
+..
+.ec
+</pre></div></div>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eecs"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ecs</code></strong><a class="copiable-link" href='#index-_002eecs'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ecs"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eecr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ecr</code></strong><a class="copiable-link" href='#index-_002eecr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ecr"></a>
+<p>The <code class="code">ecs</code> request stores the escape character for recall with
+<code class="code">ecr</code>. <code class="code">ecr</code> sets the escape character to &lsquo;<samp class="samp">\</samp>&rsquo; if none
+has been saved.
+</p>
+<p>Use these requests together to temporarily change the escape character.
+</p></dd></dl>
+
+<p>Using a different escape character, or disabling it, when calling macros
+not under your control will likely cause errors, since GNU <code class="code">troff</code>
+has no mechanism to &ldquo;intern&rdquo; macros&mdash;that is, to convert a macro
+definition into a form independent of its
+representation.<a class="footnote" id="DOCF47" href="groff.html_fot.html#FOOT47"><sup>47</sup></a> When a
+macro is called, its contents are interpreted literally.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Delimiters.html">Delimiters</a>, Previous: <a href="Calling-Macros.html">Calling Macros</a>, Up: <a href="Formatter-Instructions.html">Formatter Instructions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Using-Fonts.html b/doc/groff.html.node/Using-Fonts.html
new file mode 100644
index 0000000..81f48e6
--- /dev/null
+++ b/doc/groff.html.node/Using-Fonts.html
@@ -0,0 +1,148 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Using Fonts (The GNU Troff Manual)</title>
+
+<meta name="description" content="Using Fonts (The GNU Troff Manual)">
+<meta name="keywords" content="Using Fonts (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Manipulating-Type-Size-and-Vertical-Spacing.html" rel="next" title="Manipulating Type Size and Vertical Spacing">
+<link href="Page-Control.html" rel="prev" title="Page Control">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Using-Fonts">
+<div class="nav-panel">
+<p>
+Next: <a href="Manipulating-Type-Size-and-Vertical-Spacing.html" accesskey="n" rel="next">Manipulating Type Size and Vertical Spacing</a>, Previous: <a href="Page-Control.html" accesskey="p" rel="prev">Page Control</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Using-Fonts-1">5.19 Using Fonts</h3>
+<a class="index-entry-id" id="index-font"></a>
+
+<a class="index-entry-id" id="index-typeface"></a>
+<a class="index-entry-id" id="index-font-family"></a>
+<a class="index-entry-id" id="index-font-style"></a>
+<a class="index-entry-id" id="index-style_002c-font"></a>
+<a class="index-entry-id" id="index-family_002c-font"></a>
+<a class="index-entry-id" id="index-text-font"></a>
+<a class="index-entry-id" id="index-special-font"></a>
+<a class="index-entry-id" id="index-unstyled-font"></a>
+<a class="index-entry-id" id="index-font_002c-text"></a>
+<a class="index-entry-id" id="index-font_002c-special"></a>
+<a class="index-entry-id" id="index-font_002c-unstyled"></a>
+<p>In digital typography, a <em class="dfn">font</em> is a collection of characters in a
+specific typeface that a device can render as glyphs at a desired
+size.<a class="footnote" id="DOCF72" href="groff.html_fot.html#FOOT72"><sup>72</sup></a> A <code class="code">roff</code> formatter can change typefaces at any
+point in the text. The basic faces are a set of <em class="dfn">styles</em> combining
+upright and slanted shapes with normal and heavy stroke weights:
+&lsquo;<samp class="samp">R</samp>&rsquo;, &lsquo;<samp class="samp">I</samp>&rsquo;, &lsquo;<samp class="samp">B</samp>&rsquo;, and &lsquo;<samp class="samp">BI</samp>&rsquo;&mdash;these stand for
+<i class="slanted">roman</i>, <i class="slanted">italic</i>, <i class="slanted">bold</i>, and
+<i class="slanted">bold-italic</i>. For linguistic text, GNU <code class="code">troff</code> groups
+typefaces into <em class="dfn">families</em> containing each of these
+styles.<a class="footnote" id="DOCF73" href="groff.html_fot.html#FOOT73"><sup>73</sup></a> A <em class="dfn">text font</em> is thus often a family
+combined with a style, but it need not be: consider the <code class="code">ps</code> and
+<code class="code">pdf</code> devices&rsquo; <code class="code">ZCMI</code> (Zapf Chancery Medium italic)&mdash;often,
+no other style of Zapf Chancery Medium is provided. On typesetting
+devices, at least one <em class="dfn">special font</em> is available, comprising
+<em class="dfn">unstyled</em> glyphs for mathematical operators and other purposes.
+</p>
+<a class="index-entry-id" id="index-font-description-file"></a>
+<a class="index-entry-id" id="index-description-file_002c-font"></a>
+<a class="index-entry-id" id="index-file_002c-font-description"></a>
+<a class="index-entry-id" id="index-font-metrics"></a>
+<a class="index-entry-id" id="index-metrics_002c-font"></a>
+<a class="index-entry-id" id="index-mounting-position"></a>
+<a class="index-entry-id" id="index-mounting-position-1"></a>
+<a class="index-entry-id" id="index-position_002c-mounting"></a>
+<p>Like <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, GNU <code class="code">troff</code> does not itself load
+or manipulate a digital font file;<a class="footnote" id="DOCF74" href="groff.html_fot.html#FOOT74"><sup>74</sup></a> instead it
+works with a <em class="dfn">font description file</em> that characterizes it,
+including its glyph repertoire and the <em class="dfn">metrics</em> (dimensions) of
+each glyph.<a class="footnote" id="DOCF75" href="groff.html_fot.html#FOOT75"><sup>75</sup></a> This
+information permits the formatter to accurately place glyphs with
+respect to each other. Before using a font description, the formatter
+associates it with a <em class="dfn">mounting position</em>, a place in an ordered list
+of available typefaces.
+<a class="index-entry-id" id="index-abstract-font-style"></a>
+<a class="index-entry-id" id="index-font-style_002c-abstract"></a>
+<a class="index-entry-id" id="index-style_002c-font_002c-abstract"></a>
+So that a document need not be strongly coupled to a specific font
+family, in GNU <code class="code">troff</code> an output device can associate a style in
+the abstract sense with a mounting position. Thus the default family
+can be combined with a style dynamically, producing a <em class="dfn">resolved font
+name</em>.
+</p>
+<p>Fonts often have trademarked names, and even Free Software fonts can
+require renaming upon modification. <code class="code">groff</code> maintains a
+convention that a device&rsquo;s serif font family is given the name &lsquo;<samp class="samp">T</samp>&rsquo;
+(&ldquo;Times&rdquo;), its sans-serif family &lsquo;<samp class="samp">H</samp>&rsquo; (&ldquo;Helvetica&rdquo;), and its
+monospaced family &lsquo;<samp class="samp">C</samp>&rsquo; (&ldquo;Courier&rdquo;). Historical inertia has driven
+<code class="code">groff</code>&rsquo;s font identifiers to short uppercase abbreviations of font
+names, as with &lsquo;<samp class="samp">TR</samp>&rsquo;, &lsquo;<samp class="samp">TI</samp>&rsquo;, &lsquo;<samp class="samp">TB</samp>&rsquo;, &lsquo;<samp class="samp">TBI</samp>&rsquo;, and a
+special font &lsquo;<samp class="samp">S</samp>&rsquo;.
+</p>
+<p>The default family used with abstract styles can be changed at any time;
+initially, it is &lsquo;<samp class="samp">T</samp>&rsquo;. Typically, abstract styles are arranged in
+the first four mounting positions in the order shown above. The default
+mounting position, and therefore style, is always &lsquo;<samp class="samp">1</samp>&rsquo; (&lsquo;<samp class="samp">R</samp>&rsquo;).
+By issuing appropriate formatter instructions, you can override these
+defaults before your document writes its first glyph.
+</p>
+<a class="index-entry-id" id="index-graphic-renditions"></a>
+<a class="index-entry-id" id="index-renditions_002c-graphic"></a>
+<a class="index-entry-id" id="index-character-cell-attributes"></a>
+<a class="index-entry-id" id="index-attributes_002c-character-cell"></a>
+<a class="index-entry-id" id="index-cell_002c-character_002c-attributes"></a>
+<p>Terminal output devices cannot change font families and lack special
+fonts. They support style changes by overstriking, or by altering
+ISO&nbsp;6429/ECMA-48 <em class="dfn">graphic renditions</em> (character cell
+attributes).
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="Selecting-Fonts.html" accesskey="1">Selecting Fonts</a></li>
+<li><a href="Font-Families.html" accesskey="2">Font Families</a></li>
+<li><a href="Font-Positions.html" accesskey="3">Font Positions</a></li>
+<li><a href="Using-Symbols.html" accesskey="4">Using Symbols</a></li>
+<li><a href="Character-Classes.html" accesskey="5">Character Classes</a></li>
+<li><a href="Special-Fonts.html" accesskey="6">Special Fonts</a></li>
+<li><a href="Artificial-Fonts.html" accesskey="7">Artificial Fonts</a></li>
+<li><a href="Ligatures-and-Kerning.html" accesskey="8">Ligatures and Kerning</a></li>
+<li><a href="Italic-Corrections.html" accesskey="9">Italic Corrections</a></li>
+<li><a href="Dummy-Characters.html">Dummy Characters</a></li>
+</ul>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a>, Previous: <a href="Page-Control.html">Page Control</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Using-Fractional-Type-Sizes.html b/doc/groff.html.node/Using-Fractional-Type-Sizes.html
new file mode 100644
index 0000000..7445fc5
--- /dev/null
+++ b/doc/groff.html.node/Using-Fractional-Type-Sizes.html
@@ -0,0 +1,172 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Using Fractional Type Sizes (The GNU Troff Manual)</title>
+
+<meta name="description" content="Using Fractional Type Sizes (The GNU Troff Manual)">
+<meta name="keywords" content="Using Fractional Type Sizes (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Manipulating-Type-Size-and-Vertical-Spacing.html" rel="up" title="Manipulating Type Size and Vertical Spacing">
+<link href="Changing-the-Type-Size.html" rel="prev" title="Changing the Type Size">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Using-Fractional-Type-Sizes">
+<div class="nav-panel">
+<p>
+Previous: <a href="Changing-the-Type-Size.html" accesskey="p" rel="prev">Changing the Type Size</a>, Up: <a href="Manipulating-Type-Size-and-Vertical-Spacing.html" accesskey="u" rel="up">Manipulating Type Size and Vertical Spacing</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Using-Fractional-Type-Sizes-1">5.20.3 Using Fractional Type Sizes</h4>
+<a class="index-entry-id" id="index-fractional-type-sizes"></a>
+<a class="index-entry-id" id="index-fractional-point-sizes"></a>
+<a class="index-entry-id" id="index-type-sizes_002c-fractional"></a>
+<a class="index-entry-id" id="index-point-sizes_002c-fractional"></a>
+<a class="index-entry-id" id="index-sizes_002c-fractional-type"></a>
+
+<p>AT&amp;T <code class="code">troff</code> interpreted all type size measurements in points.
+Combined with integer arithmetic, this design choice made it impossible
+to support, for instance, ten and a half-point type. In GNU
+<code class="code">troff</code>, an output device can select a scaling factor that
+subdivides a point into &ldquo;scaled points&rdquo;. A type size expressed in
+scaled points can thus represent a non-integral type size.
+</p>
+<a class="index-entry-id" id="index-s-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-s"></a>
+<a class="index-entry-id" id="index-scaling-unit-s"></a>
+<a class="index-entry-id" id="index-z-scaling-unit"></a>
+<a class="index-entry-id" id="index-unit_002c-scaling_002c-z"></a>
+<a class="index-entry-id" id="index-scaling-unit-z"></a>
+<a class="index-entry-id" id="index-ps-request_002c-with-fractional-type-sizes"></a>
+<a class="index-entry-id" id="index-cs-request_002c-with-fractional-type-sizes"></a>
+<a class="index-entry-id" id="index-tkf-request_002c-with-fractional-type-sizes"></a>
+<a class="index-entry-id" id="index-_005cH_002c-with-fractional-type-sizes"></a>
+<a class="index-entry-id" id="index-_005cs_002c-with-fractional-type-sizes"></a>
+<p>A <em class="dfn">scaled point</em> is equal to <em class="math">1/<var class="var">sizescale</var></em> points, where
+<var class="var">sizescale</var> is specified in the device description file <samp class="file">DESC</samp>,
+and defaults to&nbsp;1.<a class="footnote" id="DOCF85" href="groff.html_fot.html#FOOT85"><sup>85</sup></a> Requests and escape sequences in GNU <code class="code">troff</code> interpret
+arguments that represent a type size in scaled points, which the
+formatter multiplies by <var class="var">sizescale</var> and converts to an integer.
+Arguments treated in this way comprise those to the escape sequences
+<code class="code">\H</code> and <code class="code">\s</code>, to the request <code class="code">ps</code>, the third argument to
+the <code class="code">cs</code> request, and the second and fourth arguments to the
+<code class="code">tkf</code> request. Scaled points may be specified explicitly with the
+<code class="code">z</code> scaling unit.
+</p>
+<p>For example, if <var class="var">sizescale</var> is&nbsp;1000, then a scaled point is one
+thousandth of a point. The request &lsquo;<samp class="samp">.ps 10.5</samp>&rsquo; is synonymous with
+&lsquo;<samp class="samp">.ps 10.5z</samp>&rsquo; and sets the type size to 10,500&nbsp;scaled points, or
+10.5&nbsp;points. Consequently, in GNU <code class="code">troff</code>, the register
+<code class="code">.s</code> can interpolate a non-integral type size.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002eps_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.ps]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002eps_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002eps-3"></a>
+<p>This read-only register interpolates the type size in scaled points; it
+is associated with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p></dd></dl>
+
+<p>It makes no sense to use the &lsquo;<samp class="samp">z</samp>&rsquo; scaling unit in a numeric
+expression whose default scaling unit is neither &lsquo;<samp class="samp">u</samp>&rsquo; nor &lsquo;<samp class="samp">z</samp>&rsquo;,
+so GNU <code class="code">troff</code> disallows this. Similarly, it is nonsensical to use
+a scaling unit other than &lsquo;<samp class="samp">z</samp>&rsquo; or &lsquo;<samp class="samp">u</samp>&rsquo; in a numeric expression
+whose default scaling unit is &lsquo;<samp class="samp">z</samp>&rsquo;, and so GNU <code class="code">troff</code>
+disallows this as well.
+</p>
+<p>Another GNU <code class="code">troff</code> scaling unit, &lsquo;<samp class="samp">s</samp>&rsquo;, multiplies by the
+number of basic units in a scaled point. Thus, &lsquo;<samp class="samp">\n[.ps]s</samp>&rsquo; is equal
+to &lsquo;<samp class="samp">1m</samp>&rsquo; by definition. Do not confuse the &lsquo;<samp class="samp">s</samp>&rsquo; and &lsquo;<samp class="samp">z</samp>&rsquo;
+scaling units.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005b_002epsr_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.psr]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002epsr_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002epsr"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002esr_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.sr]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002esr_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002esr"></a>
+<a class="index-entry-id" id="index-last_002drequested-type-size-registers-_0028_002epsr_002c-_002esr_0029"></a>
+<a class="index-entry-id" id="index-type-size-registers_002c-last_002drequested-_0028_002epsr_002c-_002esr_0029"></a>
+<a class="index-entry-id" id="index-last_002drequested-point-size-registers-_0028_002epsr_002c-_002esr_0029"></a>
+<a class="index-entry-id" id="index-point-size-registers_002c-last_002drequested-_0028_002epsr_002c-_002esr_0029"></a>
+<a class="index-entry-id" id="index-_002eps-register_002c-in-comparison-with-_002epsr"></a>
+<a class="index-entry-id" id="index-_002es-register_002c-in-comparison-with-_002esr"></a>
+<p>Output devices may be limited in the type sizes they can employ. The
+<code class="code">.s</code> and <code class="code">.ps</code> registers represent the type size selected by
+the output driver as it understands a device&rsquo;s capability. The last
+<em class="emph">requested</em> type size is interpolated in scaled points by the
+read-only register <code class="code">.psr</code> and in points as a decimal fraction by
+the read-only string-valued register <code class="code">.sr</code>. Both are associated
+with the environment (see <a class="pxref" href="Environments.html">Environments</a>).
+</p>
+<p>For example, if a type size of 10.95 points is requested, and the
+nearest size permitted by a <code class="code">sizes</code> request (or by the <code class="code">sizes</code>
+or <code class="code">sizescale</code> directives in the device&rsquo;s <samp class="file">DESC</samp> file) is 11
+points, the output driver uses the latter value.
+</p></dd></dl>
+
+<p>The <code class="code">\s</code> escape sequence offers the following syntax forms that
+work with fractional type sizes and accept scaling units. You may of
+course give them integral arguments. The delimited forms need not use
+the neutral apostrophe; see <a class="ref" href="Delimiters.html">Delimiters</a>.
+</p>
+<dl class="table">
+<dt><code class="code">\s[<var class="var">n</var>]</code></dt>
+<dt><code class="code">\s'<var class="var">n</var>'</code></dt>
+<dd><p>Set the type size to <var class="var">n</var>&nbsp;scaled points; <var class="var">n</var>&nbsp;is a
+numeric expression with a default scaling unit of &lsquo;<samp class="samp">z</samp>&rsquo;.
+</p>
+</dd>
+<dt><code class="code">\s[+<var class="var">n</var>]</code></dt>
+<dt><code class="code">\s[-<var class="var">n</var>]</code></dt>
+<dt><code class="code">\s+[<var class="var">n</var>]</code></dt>
+<dt><code class="code">\s-[<var class="var">n</var>]</code></dt>
+<dt><code class="code">\s'+<var class="var">n</var>'</code></dt>
+<dt><code class="code">\s'-<var class="var">n</var>'</code></dt>
+<dt><code class="code">\s+'<var class="var">n</var>'</code></dt>
+<dt><code class="code">\s-'<var class="var">n</var>'</code></dt>
+<dd><p>Increase or decrease the type size by <var class="var">n</var>&nbsp;scaled points;
+<var class="var">n</var>&nbsp;is a numeric expression (which may start with a minus sign)
+with a default scaling unit of &lsquo;<samp class="samp">z</samp>&rsquo;.
+</p></dd>
+</dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="Changing-the-Type-Size.html">Changing the Type Size</a>, Up: <a href="Manipulating-Type-Size-and-Vertical-Spacing.html">Manipulating Type Size and Vertical Spacing</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Using-Symbols.html b/doc/groff.html.node/Using-Symbols.html
new file mode 100644
index 0000000..af4a7cf
--- /dev/null
+++ b/doc/groff.html.node/Using-Symbols.html
@@ -0,0 +1,632 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Using Symbols (The GNU Troff Manual)</title>
+
+<meta name="description" content="Using Symbols (The GNU Troff Manual)">
+<meta name="keywords" content="Using Symbols (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Using-Fonts.html" rel="up" title="Using Fonts">
+<link href="Character-Classes.html" rel="next" title="Character Classes">
+<link href="Font-Positions.html" rel="prev" title="Font Positions">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+pre.display-preformatted {font-family: inherit}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Using-Symbols">
+<div class="nav-panel">
+<p>
+Next: <a href="Character-Classes.html" accesskey="n" rel="next">Character Classes</a>, Previous: <a href="Font-Positions.html" accesskey="p" rel="prev">Font Positions</a>, Up: <a href="Using-Fonts.html" accesskey="u" rel="up">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Using-Symbols-1">5.19.4 Using Symbols</h4>
+<a class="index-entry-id" id="index-using-symbols"></a>
+<a class="index-entry-id" id="index-symbols_002c-using"></a>
+
+<a class="index-entry-id" id="index-glyph"></a>
+<a class="index-entry-id" id="index-character"></a>
+<a class="index-entry-id" id="index-glyph_002c-distinguished-from-character"></a>
+<a class="index-entry-id" id="index-character_002c-distinguished-from-glyph"></a>
+<a class="index-entry-id" id="index-ligature"></a>
+<p>A <em class="dfn">glyph</em> is a graphical representation of a <em class="dfn">character</em>. While
+a character is an abstraction of semantic information, a glyph is
+something that can be seen on screen or paper. A character has many
+possible representation forms (for example, the character &lsquo;A&rsquo; can be
+written in an upright or slanted typeface, producing distinct
+glyphs). Sometimes, a sequence of characters map to a single glyph:
+this is a <em class="dfn">ligature</em>&mdash;the most common is &lsquo;fi&rsquo;.
+</p>
+<p>Space characters never become glyphs in GNU <code class="code">troff</code>. If not
+discarded (as when trailing on text lines), they are represented by
+horizontal motions in the output.
+</p>
+<a class="index-entry-id" id="index-symbol"></a>
+<a class="index-entry-id" id="index-special-fonts"></a>
+<a class="index-entry-id" id="index-fonts"></a>
+<a class="index-entry-id" id="index-DESC-2"></a>
+<a class="index-entry-id" id="index-special-request_002c-and-glyph-search-order"></a>
+<a class="index-entry-id" id="index-fspecial-request_002c-and-glyph-search-order"></a>
+<p>A <em class="dfn">symbol</em> is simply a named glyph. Within <code class="code">gtroff</code>, all glyph
+names of a particular font are defined in its font file. If the user
+requests a glyph not available in this font, <code class="code">gtroff</code> looks up an
+ordered list of <em class="dfn">special fonts</em>. By default, the PostScript output
+device supports the two special fonts &lsquo;<samp class="samp">SS</samp>&rsquo; (slanted symbols) and
+&lsquo;<samp class="samp">S</samp>&rsquo; (symbols) (the former is looked up before the latter). Other
+output devices use different names for special fonts. Fonts mounted
+with the <code class="code">fonts</code> keyword in the <samp class="file">DESC</samp> file are globally
+available. To install additional special fonts locally (i.e., for a
+particular font), use the <code class="code">fspecial</code> request.
+</p>
+<p>Here are the exact rules how <code class="code">gtroff</code> searches a given symbol:
+</p>
+<ul class="itemize mark-bullet">
+<li>If the symbol has been defined with the <code class="code">char</code> request, use it.
+This hides a symbol with the same name in the current font.
+
+</li><li>Check the current font.
+
+</li><li>If the symbol has been defined with the <code class="code">fchar</code> request, use it.
+
+</li><li>Check whether the current font has a font-specific list of special
+fonts; test all fonts in the order of appearance in the last
+<code class="code">fspecial</code> call if appropriate.
+
+</li><li>If the symbol has been defined with the <code class="code">fschar</code> request for the
+current font, use it.
+
+</li><li>Check all fonts in the order of appearance in the last <code class="code">special</code>
+call.
+
+</li><li>If the symbol has been defined with the <code class="code">schar</code> request, use it.
+
+</li><li>As a last resort, consult all fonts loaded up to now for special fonts
+and check them, starting with the lowest font number. This can
+sometimes lead to surprising results since the <code class="code">fonts</code> line in
+the <samp class="file">DESC</samp> file often contains empty positions, which are filled
+later on. For example, consider the following:
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">fonts 3 0 0 FOO
+</pre></div></div>
+
+<p>This mounts font <code class="code">foo</code> at font position&nbsp;3. We assume that
+<code class="code">FOO</code> is a special font, containing glyph <code class="code">foo</code>, and that no
+font has been loaded yet. The line
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.fspecial BAR BAZ
+</pre></div></div>
+
+<p>makes font <code class="code">BAZ</code> special only if font <code class="code">BAR</code> is active. We
+further assume that <code class="code">BAZ</code> is really a special font, i.e., the font
+description file contains the <code class="code">special</code> keyword, and that it also
+contains glyph <code class="code">foo</code> with a special shape fitting to font
+<code class="code">BAR</code>. After executing <code class="code">fspecial</code>, font <code class="code">BAR</code> is loaded
+at font position&nbsp;1, and <code class="code">BAZ</code> at position&nbsp;2.
+</p>
+<p>We now switch to a new font <code class="code">XXX</code>, trying to access glyph
+<code class="code">foo</code> that is assumed to be missing. There are neither
+font-specific special fonts for <code class="code">XXX</code> nor any other fonts made
+special with the <code class="code">special</code> request, so <code class="code">gtroff</code> starts the
+search for special fonts in the list of already mounted fonts, with
+increasing font positions. Consequently, it finds <code class="code">BAZ</code> before
+<code class="code">FOO</code> even for <code class="code">XXX</code>, which is not the intended behaviour.
+</p></li></ul>
+
+<p>See <a class="xref" href="Device-and-Font-Description-Files.html">Device and Font Description Files</a>, and <a class="ref" href="Special-Fonts.html">Special Fonts</a>, for
+more details.
+</p>
+<a class="index-entry-id" id="index-list-of-special-characters-_0028groff_005fchar_00287_0029-man-page_0029"></a>
+<a class="index-entry-id" id="index-special-characters_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029"></a>
+<a class="index-entry-id" id="index-characters_002c-special_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029"></a>
+<a class="index-entry-id" id="index-available-glyphs_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029"></a>
+<a class="index-entry-id" id="index-glyphs_002c-available_002c-list-of-_0028groff_005fchar_00287_0029-man-page_0029"></a>
+<p>The <cite class="cite">groff_char<span class="r">(7)</span></cite> man page houses a complete list of
+predefined special character names, but the availability of any as a
+glyph is device- and font-dependent. For example, say
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">man -Tdvi groff_char &gt; groff_char.dvi
+</pre></div></div>
+
+<p>to obtain those available with the DVI device and default font
+configuration.<a class="footnote" id="DOCF77" href="groff.html_fot.html#FOOT77"><sup>77</sup></a> If you want to use an additional macro package to change
+the fonts used, <code class="code">groff</code> (or <code class="code">gtroff</code>) must be run directly.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">groff -Tdvi -mec -man groff_char.7 &gt; groff_char.dvi
+</pre></div></div>
+
+<a class="index-entry-id" id="index-composite-glyph-names"></a>
+<a class="index-entry-id" id="index-glyph-names_002c-composite"></a>
+<a class="index-entry-id" id="index-groff-glyph-list-_0028GGL_0029"></a>
+<a class="index-entry-id" id="index-GGL-_0028groff-glyph-list_0029"></a>
+<a class="index-entry-id" id="index-Adobe-Glyph-List-_0028AGL_0029"></a>
+<p>Special character names not listed in <cite class="cite">groff_char<span class="r">(7)</span></cite> are
+derived algorithmically, using a simplified version of the Adobe Glyph
+List (AGL) algorithm, which is described in
+<a class="uref" href="https://github.com/adobe-type-tools/agl-aglfn">https://github.com/adobe-type-tools/agl-aglfn</a>. The (frozen)
+set of names that can&rsquo;t be derived algorithmically is called the
+<em class="dfn"><code class="code">groff</code> glyph list (GGL)</em>.
+</p>
+<ul class="itemize mark-bullet">
+<li>A glyph for Unicode character U+<var class="var">XXXX</var>[<var class="var">X</var>[<var class="var">X</var>]], which is
+not a composite character is named
+<code class="code">u<var class="var">XXXX</var><span class="r">[</span><var class="var">X</var><span class="r">[</span><var class="var">X</var><span class="r">]]</span></code>. <var class="var">X</var> must be an
+uppercase hexadecimal digit. Examples: <code class="code">u1234</code>, <code class="code">u008E</code>,
+<code class="code">u12DB8</code>. The largest Unicode value is 0x10FFFF. There must be at
+least four <code class="code">X</code> digits; if necessary, add leading zeroes (after the
+&lsquo;<samp class="samp">u</samp>&rsquo;). No zero padding is allowed for character codes greater than
+0xFFFF. Surrogates (i.e., Unicode values greater than 0xFFFF
+represented with character codes from the surrogate area U+D800-U+DFFF)
+are not allowed either.
+
+</li><li>A glyph representing more than a single input character is named
+
+<div class="display">
+<pre class="display-preformatted">&lsquo;<samp class="samp">u</samp>&rsquo; <var class="var">component1</var> &lsquo;<samp class="samp">_</samp>&rsquo; <var class="var">component2</var> &lsquo;<samp class="samp">_</samp>&rsquo; <var class="var">component3</var> &hellip;
+</pre></div>
+
+<p>Example: <code class="code">u0045_0302_0301</code>.
+</p>
+<p>For simplicity, all Unicode characters that are composites must be
+maximally decomposed to NFD;<a class="footnote" id="DOCF78" href="groff.html_fot.html#FOOT78"><sup>78</sup></a> for example,
+<code class="code">u00CA_0301</code> is not a valid glyph name since U+00CA (<small class="sc">LATIN
+CAPITAL LETTER E WITH CIRCUMFLEX</small>) can be further decomposed into U+0045
+(<small class="sc">LATIN CAPITAL LETTER E</small>) and U+0302 (<small class="sc">COMBINING CIRCUMFLEX
+ACCENT</small>). <code class="code">u0045_0302_0301</code> is thus the glyph name for U+1EBE,
+<small class="sc">LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE</small>.
+</p>
+</li><li>groff maintains a table to decompose all algorithmically derived glyph
+names that are composites itself. For example, <code class="code">u0100</code> (<small class="sc">LATIN
+LETTER A WITH MACRON</small>) is automatically decomposed into
+<code class="code">u0041_0304</code>. Additionally, a glyph name of the GGL is preferred
+to an algorithmically derived glyph name; <code class="code">groff</code> also
+automatically does the mapping. Example: The glyph <code class="code">u0045_0302</code> is
+mapped to <code class="code">^E</code>.
+
+</li><li>glyph names of the GGL can&rsquo;t be used in composite glyph names; for
+example, <code class="code">^E_u0301</code> is invalid.
+</li></ul>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0028nm"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\(</code><span class="r"><i class="slanted">nm</i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0028nm'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c-1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_005bname_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\[</code><span class="r"><i class="slanted">name</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005c_005bname_005d'> &para;</a></span></dt>
+<dt class="deffnx def-cmd-deffn" id="index-_005c_005bbase_002dglyph-combining_002dcomponent-_2026_005d"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\[</code><span class="r"><i class="slanted">base-glyph combining-component &hellip;</i></span><code class="t">]</code></strong><a class="copiable-link" href='#index-_005c_005bbase_002dglyph-combining_002dcomponent-_2026_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0028"></a>
+<a class="index-entry-id" id="index-_005c_005b"></a>
+<p>Typeset a special character <var class="var">name</var> (two-character name <var class="var">nm</var>) or
+a composite glyph consisting of <var class="var">base-glyph</var> overlaid with one or
+more <var class="var">combining-component</var>s. For example, &lsquo;<samp class="samp">\[A ho]</samp>&rsquo; is a
+capital letter &ldquo;A&rdquo; with a &ldquo;hook accent&rdquo; (ogonek).
+</p>
+<p>There is no special syntax for one-character names&mdash;the analogous form
+&lsquo;<samp class="samp">\<var class="var">n</var></samp>&rsquo; would collide with other escape sequences. However, the
+four escape sequences <code class="code">\'</code>, <code class="code">\-</code>, <code class="code">\_</code>, and <code class="code">\`</code>,
+are translated on input to the special character escape sequences
+<code class="code">\[aa]</code>, <code class="code">\[-]</code>, <code class="code">\[ul]</code>, and <code class="code">\[ga]</code>, respectively.
+</p>
+<p>A special character name of length one is not the same thing as an
+ordinary character: that is, the character <code class="code">a</code> is not the same as
+<code class="code">\[a]</code>.
+</p>
+<p>If <var class="var">name</var> is undefined, a warning in category &lsquo;<samp class="samp">char</samp>&rsquo; is
+produced and the escape is ignored. See <a class="xref" href="Warnings.html">Warnings</a>, for information
+about the enablement and suppression of warnings.
+</p>
+<p>GNU <code class="code">troff</code> resolves <code class="code">\[<span class="r">&hellip;</span>]</code> with more than a single
+component as follows:
+</p>
+<ul class="itemize mark-bullet">
+<li>Any component that is found in the GGL is converted to the
+<code class="code">u<var class="var">XXXX</var></code> form.
+
+</li><li>Any component <code class="code">u<var class="var">XXXX</var></code> that is found in the list of
+decomposable glyphs is decomposed.
+
+</li><li>The resulting elements are then concatenated with &lsquo;<samp class="samp">_</samp>&rsquo; in between,
+dropping the leading &lsquo;<samp class="samp">u</samp>&rsquo; in all elements but the first.
+</li></ul>
+
+<p>No check for the existence of any component (similar to <code class="code">tr</code>
+request) is done.
+</p>
+<p>Examples:
+</p>
+<dl class="table">
+<dt><code class="code">\[A ho]</code></dt>
+<dd><p>&lsquo;<samp class="samp">A</samp>&rsquo; maps to <code class="code">u0041</code>, &lsquo;<samp class="samp">ho</samp>&rsquo; maps to <code class="code">u02DB</code>, thus the
+final glyph name would be <code class="code">u0041_02DB</code>. This is not the expected
+result: the ogonek glyph &lsquo;<samp class="samp">ho</samp>&rsquo; is a spacing ogonek, but for a
+proper composite a non-spacing ogonek (U+0328) is necessary. Looking
+into the file <samp class="file">composite.tmac</samp>, one can find &lsquo;<samp class="samp">.composite&nbsp;ho&nbsp;u0328</samp>&rsquo;<!-- /@w -->, which changes the mapping of &lsquo;<samp class="samp">ho</samp>&rsquo; while a composite glyph
+name is constructed, causing the final glyph name to be
+<code class="code">u0041_0328</code>.
+</p>
+</dd>
+<dt><code class="code">\[^E u0301]</code></dt>
+<dt><code class="code">\[^E aa]</code></dt>
+<dt><code class="code">\[E a^ aa]</code></dt>
+<dt><code class="code">\[E ^ <code class="code">'</code>]</code></dt>
+<dd><p>&lsquo;<samp class="samp">^E</samp>&rsquo; maps to <code class="code">u0045_0302</code>, thus the final glyph name is
+<code class="code">u0045_0302_0301</code> in all forms (assuming proper calls of the
+<code class="code">composite</code> request).
+</p></dd>
+</dl>
+
+<p>It is not possible to define glyphs with names like &lsquo;<samp class="samp">A&nbsp;ho</samp>&rsquo;<!-- /@w -->
+within a <code class="code">groff</code> font file. This is not really a limitation;
+instead, you have to define <code class="code">u0041_0328</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cC_0027xxx_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\C<code class="code">'</code></code><span class="r"><i class="slanted">xxx</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cC_0027xxx_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cC"></a>
+<a class="index-entry-id" id="index-named-character-_0028_005cC_0029"></a>
+<a class="index-entry-id" id="index-character_002c-named-_0028_005cC_0029"></a>
+<p>Typeset the glyph of the special character <var class="var">xxx</var>. Normally, it is
+more convenient to use <code class="code">\[<var class="var">xxx</var>]</code>, but <code class="code">\C</code> has some
+advantages: it is compatible with <abbr class="acronym">AT&amp;T</abbr> device-independent
+<code class="code">troff</code> (and therefore available in compatibility
+mode<a class="footnote" id="DOCF79" href="groff.html_fot.html#FOOT79"><sup>79</sup></a>) and can interpolate special
+characters with &lsquo;<samp class="samp">]</samp>&rsquo; in their names. The delimiter need not be
+a neutral apostrophe; see <a class="ref" href="Delimiters.html">Delimiters</a>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecomposite"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.composite</code></strong> <var class="def-var-arguments">id1 id2</var><a class="copiable-link" href='#index-_002ecomposite'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-composite"></a>
+<a class="index-entry-id" id="index-composite_002etmac"></a>
+<p>Map special character name <var class="var">id1</var> to <var class="var">id2</var> if <var class="var">id1</var> is used
+in <code class="code">\[...]</code> with more than one component. See above for examples.
+This is a strict rewriting of the special character name; no check is
+performed for the existence of a glyph for either. A set of default
+mappings for many accents can be found in the file
+<samp class="file">composite.tmac</samp>, loaded by the default <samp class="file">troffrc</samp> at startup.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cN_0027n_0027"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\N<code class="code">'</code></code><span class="r"><i class="slanted">n</i></span><code class="t"><code class="code">'</code></code></strong><a class="copiable-link" href='#index-_005cN_0027n_0027'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005cN"></a>
+<a class="index-entry-id" id="index-numbered-glyph-_0028_005cN_0029-1"></a>
+<a class="index-entry-id" id="index-glyph_002c-numbered-_0028_005cN_0029-1"></a>
+<a class="index-entry-id" id="index-char-request_002c-used-with-_005cN"></a>
+<a class="index-entry-id" id="index-Unicode-1"></a>
+<p>Typeset the glyph with code&nbsp;<var class="var">n</var> in the current font
+(<code class="code">n</code>&nbsp;is <em class="emph">not</em> the input character code). The number
+<var class="var">n</var>&nbsp;can be any non-negative decimal integer. Most devices only
+have glyphs with codes between 0 and&nbsp;255; the Unicode output device
+uses codes in the range 0&ndash;65535. If the current font does not contain
+a glyph with that code, special fonts are <em class="emph">not</em> searched. The
+<code class="code">\N</code> escape sequence can be conveniently used in conjunction with
+the <code class="code">char</code> request:
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.char \[phone] \f[ZD]\N'37'
+</pre></div></div>
+
+<a class="index-entry-id" id="index-DESC-3"></a>
+<a class="index-entry-id" id="index-unnamed-glyphs"></a>
+<a class="index-entry-id" id="index-glyphs_002c-unnamed"></a>
+<p>The code of each glyph is given in the fourth column in the font
+description file after the <code class="code">charset</code> command. It is possible to
+include unnamed glyphs in the font description file by using a name of
+&lsquo;<samp class="samp">---</samp>&rsquo;; the <code class="code">\N</code> escape sequence is the only way to use these.
+</p>
+<p>No kerning is applied to glyphs accessed with <code class="code">\N</code>. The delimiter
+need not be a neutral apostrophe; see <a class="ref" href="Delimiters.html">Delimiters</a>.
+</p></dd></dl>
+
+<p>A few escape sequences are also special characters.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0027-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\<code class="code">'</code></code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0027-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0027"></a>
+<p>An escaped neutral apostrophe is a synonym for <code class="code">\[aa]</code> (acute
+accent).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_0060-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\<code class="code">`</code></code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_0060-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_0060"></a>
+<p>An escaped grave accent is a synonym for <code class="code">\[ga]</code> (grave accent).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002d-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\-</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_002d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_002d"></a>
+<p>An escaped hyphen-minus is a synonym for <code class="code">\[-]</code> (minus sign).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_005f-1"><span class="category-def">Escape&nbsp;sequence: </span><span><strong class="def-name"><code class="t">\_</code><span class="r"><i class="slanted"></i></span><code class="t"></code></strong><a class="copiable-link" href='#index-_005c_005f-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005c_005f"></a>
+<p>An escaped underscore (&ldquo;low line&rdquo;) is a synonym for <code class="code">\[ul]</code>
+(underrule). On typesetting devices, the underrule is font-invariant
+and drawn lower than the underscore &lsquo;<samp class="samp">_</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ecflags"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.cflags</code></strong> <var class="def-var-arguments">n c1 c2 &hellip;</var><a class="copiable-link" href='#index-_002ecflags'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-cflags"></a>
+<a class="index-entry-id" id="index-glyph-properties-_0028cflags_0029"></a>
+<a class="index-entry-id" id="index-character-properties-_0028cflags_0029"></a>
+<a class="index-entry-id" id="index-properties-of-glyphs-_0028cflags_0029"></a>
+<a class="index-entry-id" id="index-properties-of-characters-_0028cflags_0029"></a>
+<p>Assign properties encoded by the number <var class="var">n</var> to characters <var class="var">c1</var>,
+<var class="var">c2</var>, and so on.
+</p>
+<p>Input characters, including special characters introduced by an escape,
+have certain properties associated with them.<a class="footnote" id="DOCF80" href="groff.html_fot.html#FOOT80"><sup>80</sup></a>
+These properties can be modified with this request. The first argument
+is the sum of the desired flags and the remaining arguments are the
+characters to be assigned those properties. Spaces between the <var class="var">cn</var>
+arguments are optional. Any argument <var class="var">cn</var> can be a character class
+defined with the <code class="code">class</code> request rather than an individual
+character. See <a class="xref" href="Character-Classes.html">Character Classes</a>.
+</p>
+<p>The non-negative integer <var class="var">n</var> is the sum of any of the following.
+Some combinations are nonsensical, such as &lsquo;<samp class="samp">33</samp>&rsquo; (1 + 32).
+</p>
+<dl class="table">
+<dt id='index-end_002dof_002dsentence-characters-1'><span><code class="code">1</code><a class="copiable-link" href='#index-end_002dof_002dsentence-characters-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-characters_002c-end_002dof_002dsentence"></a>
+<p>Recognize the character as ending a sentence if followed by a newline
+or two spaces. Initially, characters &lsquo;<samp class="samp">.?!</samp>&rsquo; have this property.
+</p>
+</dd>
+<dt id='index-hyphenating-characters'><span><code class="code">2</code><a class="copiable-link" href='#index-hyphenating-characters'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-characters_002c-hyphenation"></a>
+<p>Enable breaks before the character. A line is not broken at a character
+with this property unless the characters on each side both have non-zero
+hyphenation codes. This exception can be overridden by adding 64.
+Initially, no characters have this property.
+</p>
+</dd>
+<dt id='index-_005c_002d-glyph_002c-and-cflags'><span><code class="code">4</code><a class="copiable-link" href='#index-_005c_002d-glyph_002c-and-cflags'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-hy-glyph_002c-and-cflags"></a>
+<a class="index-entry-id" id="index-em-glyph_002c-and-cflags"></a>
+<p>Enable breaks after the character. A line is not broken at a character
+with this property unless the characters on each side both have non-zero
+hyphenation codes. This exception can be overridden by adding 64.
+Initially, characters &lsquo;<samp class="samp">\-\[hy]\[em]</samp>&rsquo; have this property.
+</p>
+</dd>
+<dt id='index-overlapping-characters'><span><code class="code">8</code><a class="copiable-link" href='#index-overlapping-characters'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-characters_002c-overlapping"></a>
+<a class="index-entry-id" id="index-ul-glyph_002c-and-cflags"></a>
+<a class="index-entry-id" id="index-rn-glyph_002c-and-cflags"></a>
+<a class="index-entry-id" id="index-ru-glyph_002c-and-cflags"></a>
+<a class="index-entry-id" id="index-radicalex-glyph_002c-and-cflags"></a>
+<a class="index-entry-id" id="index-sqrtex-glyph_002c-and-cflags"></a>
+<p>Mark the glyph associated with this character as overlapping other
+instances of itself horizontally. Initially, characters
+&lsquo;<samp class="samp">\[ul]\[rn]\[ru]\[radicalex]\[sqrtex]</samp>&rsquo; have this property.
+</p>
+</dd>
+<dt id='index-br-glyph_002c-and-cflags'><span><code class="code">16</code><a class="copiable-link" href='#index-br-glyph_002c-and-cflags'> &para;</a></span></dt>
+<dd><p>Mark the glyph associated with this character as overlapping other
+instances of itself vertically. Initially, the character &lsquo;<samp class="samp">\[br]</samp>&rsquo;
+has this property.
+</p>
+</dd>
+<dt id='index-transparent-characters'><span><code class="code">32</code><a class="copiable-link" href='#index-transparent-characters'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-character_002c-transparent"></a>
+<a class="index-entry-id" id="index-_0022_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-_0027_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-_0029_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-_005d_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-_002a_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-dg-glyph_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-dd-glyph_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-rq-glyph_002c-at-end-of-sentence-1"></a>
+<a class="index-entry-id" id="index-cq-glyph_002c-at-end-of-sentence-1"></a>
+<p>Mark the character as transparent for the purpose of end-of-sentence
+recognition. In other words, an end-of-sentence character followed by
+any number of characters with this property is treated as the end of a
+sentence if followed by a newline or two spaces. This is the same as
+having a zero space factor in TeX. Initially, characters
+&lsquo;<samp class="samp">&quot;')]*\[dg]\[dd]\[rq]\[cq]</samp>&rsquo; have this property.
+</p>
+</dd>
+<dt><code class="code">64</code></dt>
+<dd><p>Ignore hyphenation codes of the surrounding characters. Use this in
+combination with values 2 and&nbsp;4 (initially, no characters have this
+property).
+</p>
+<p>For example, if you need an automatic break point after the en-dash in
+numeric ranges like &ldquo;3000&ndash;5000&rdquo;, insert
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.cflags 68 \[en]
+</pre></div></div>
+
+<p>into your document. However, this practice can lead to bad layout if
+done thoughtlessly; in most situations, a better solution instead of
+changing the <code class="code">cflags</code> value is to insert <code class="code">\:</code> right after the
+hyphen at the places that really need a break point.
+</p></dd>
+</dl>
+
+<p>The remaining values were implemented for East Asian language support;
+those who use alphabetic scripts exclusively can disregard them.
+</p>
+<dl class="table">
+<dt><code class="code">128</code></dt>
+<dd><p>Prohibit a line break before the character, but allow a line break after
+the character. This works only in combination with flags 256 and 512
+and has no effect otherwise. Initially, no characters have this
+property.
+</p>
+</dd>
+<dt><code class="code">256</code></dt>
+<dd><p>Prohibit a line break after the character, but allow a line break before
+the character. This works only in combination with flags 128 and 512
+and has no effect otherwise. Initially, no characters have this
+property.
+</p>
+</dd>
+<dt><code class="code">512</code></dt>
+<dd><p>Allow line break before or after the character. This works only in
+combination with flags 128 and 256 and has no effect otherwise.
+Initially, no characters have this property.
+</p></dd>
+</dl>
+
+<p>In contrast to values 2 and&nbsp;4, the values 128, 256, and 512 work
+pairwise. If, for example, the left character has value 512, and the
+right character 128, no break will be automatically inserted between
+them. If we use value&nbsp;6 instead for the left character, a break
+after the character can&rsquo;t be suppressed since the neighboring character
+on the right doesn&rsquo;t get examined.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002echar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.char</code></strong> <var class="def-var-arguments">c [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002echar'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-char"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002efchar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fchar</code></strong> <var class="def-var-arguments">c [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002efchar'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fchar"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002efschar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.fschar</code></strong> <var class="def-var-arguments">f c [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002efschar'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-fschar"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eschar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.schar</code></strong> <var class="def-var-arguments">c [<span class="r"><i class="slanted">contents</i></span>]</var><a class="copiable-link" href='#index-_002eschar'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-schar"></a>
+<a class="index-entry-id" id="index-defining-character-_0028char_0029"></a>
+<a class="index-entry-id" id="index-defining-fallback-character-_0028fchar_002c-fschar_002c-schar_0029"></a>
+<a class="index-entry-id" id="index-character_002c-defining-_0028char_0029"></a>
+<a class="index-entry-id" id="index-character_002c-defining-fallback-_0028fchar_002c-fschar_002c-schar_0029"></a>
+<a class="index-entry-id" id="index-fallback-character_002c-defining-_0028fchar_002c-fschar_002c-schar_0029"></a>
+<a class="index-entry-id" id="index-creating-new-characters-_0028char_0029"></a>
+<a class="index-entry-id" id="index-defining-symbol-_0028char_0029"></a>
+<a class="index-entry-id" id="index-symbol_002c-defining-_0028char_0029"></a>
+<a class="index-entry-id" id="index-defining-glyph-_0028char_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-defining-_0028char_0029"></a>
+<a class="index-entry-id" id="index-escape-character_002c-while-defining-glyph"></a>
+<a class="index-entry-id" id="index-character_002c-escape_002c-while-defining-glyph"></a>
+<a class="index-entry-id" id="index-tr-request_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-cp-request_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-rc-request_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-lc-request_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-_005cl_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-_005cL_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-_005c_0026_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-_005ce_002c-and-glyph-definitions"></a>
+<a class="index-entry-id" id="index-hcode-request_002c-and-glyph-definitions"></a>
+<p>Define a new character or glyph&nbsp;<var class="var">c</var> to be <var class="var">contents</var>, which
+can be empty. More precisely, <code class="code">char</code> defines a <code class="code">groff</code> object
+(or redefines an existing one) that is accessed with the
+name&nbsp;<var class="var">c</var> on input, and produces <var class="var">contents</var> on output.
+Every time glyph&nbsp;<var class="var">c</var> needs to be printed, <var class="var">contents</var> is
+processed in a temporary environment and the result is wrapped up into a
+single object. Compatibility mode is turned off and the escape
+character is set to&nbsp;<code class="code">\</code> while <var class="var">contents</var> is processed.
+Any emboldening, constant spacing, or track kerning is applied to this
+object rather than to individual glyphs in <var class="var">contents</var>.
+</p>
+<p>An object defined by these requests can be used just like a normal glyph
+provided by the output device. In particular, other characters can be
+translated to it with the <code class="code">tr</code> or <code class="code">trin</code> requests; it can be
+made the leader character with the <code class="code">lc</code> request; repeated patterns
+can be drawn with it using the <code class="code">\l</code> and <code class="code">\L</code> escape sequences;
+and words containing&nbsp;<var class="var">c</var> can be hyphenated correctly if the
+<code class="code">hcode</code> request is used to give the object a hyphenation code.
+</p>
+<p>There is a special anti-recursion feature: use of the object within its
+own definition is handled like a normal character (not
+defined with <code class="code">char</code>).
+</p>
+<p>The <code class="code">tr</code> and <code class="code">trin</code> requests take precedence if <code class="code">char</code>
+accesses the same symbol.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.tr XY
+X
+ &rArr; Y
+.char X Z
+X
+ &rArr; Y
+.tr XX
+X
+ &rArr; Z
+</pre></div></div>
+
+<p>The <code class="code">fchar</code> request defines a fallback glyph: <code class="code">gtroff</code> only
+checks for glyphs defined with <code class="code">fchar</code> if it cannot find the glyph
+in the current font. <code class="code">gtroff</code> carries out this test before
+checking special fonts.
+</p>
+<p><code class="code">fschar</code> defines a fallback glyph for font&nbsp;<var class="var">f</var>:
+<code class="code">gtroff</code> checks for glyphs defined with <code class="code">fschar</code> after the
+list of fonts declared as font-specific special fonts with the
+<code class="code">fspecial</code> request, but before the list of fonts declared as global
+special fonts with the <code class="code">special</code> request.
+</p>
+<p>Finally, the <code class="code">schar</code> request defines a global fallback glyph:
+<code class="code">gtroff</code> checks for glyphs defined with <code class="code">schar</code> after the list
+of fonts declared as global special fonts with the <code class="code">special</code>
+request, but before the already mounted special fonts.
+</p>
+<p>See <a class="xref" href="Character-Classes.html">Character Classes</a>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002erchar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rchar</code></strong> <var class="def-var-arguments">c &hellip;</var><a class="copiable-link" href='#index-_002erchar'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rchar"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002erfschar"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.rfschar</code></strong> <var class="def-var-arguments">f c &hellip;</var><a class="copiable-link" href='#index-_002erfschar'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-rfschar"></a>
+<a class="index-entry-id" id="index-removing-glyph-definition-_0028rchar_002c-rfschar_0029"></a>
+<a class="index-entry-id" id="index-glyph_002c-removing-definition-_0028rchar_002c-rfschar_0029"></a>
+<a class="index-entry-id" id="index-fallback-glyph_002c-removing-definition-_0028rchar_002c-rfschar_0029"></a>
+<p>Remove definition of each ordinary or special character <var class="var">c</var>,
+undoing the effect of a <code class="code">char</code>, <code class="code">fchar</code>, or <code class="code">schar</code>
+request. Those supplied by font description files cannot be removed.
+Spaces and tabs may separate <var class="var">c</var>&nbsp;arguments.
+</p>
+<p>The request <code class="code">rfschar</code> removes glyph definitions defined with
+<code class="code">fschar</code> for font&nbsp;<var class="var">f</var>.
+</p></dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Character-Classes.html">Character Classes</a>, Previous: <a href="Font-Positions.html">Font Positions</a>, Up: <a href="Using-Fonts.html">Using Fonts</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Vertical-Position-Traps.html b/doc/groff.html.node/Vertical-Position-Traps.html
new file mode 100644
index 0000000..d12f564
--- /dev/null
+++ b/doc/groff.html.node/Vertical-Position-Traps.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Vertical Position Traps (The GNU Troff Manual)</title>
+
+<meta name="description" content="Vertical Position Traps (The GNU Troff Manual)">
+<meta name="keywords" content="Vertical Position Traps (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Traps.html" rel="up" title="Traps">
+<link href="Page-Location-Traps.html" rel="next" title="Page Location Traps">
+<link href="Traps.html" rel="prev" title="Traps">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Vertical-Position-Traps">
+<div class="nav-panel">
+<p>
+Next: <a href="Page-Location-Traps.html" accesskey="n" rel="next">Page Location Traps</a>, Previous: <a href="Traps.html" accesskey="p" rel="prev">Traps</a>, Up: <a href="Traps.html" accesskey="u" rel="up">Traps</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Vertical-Position-Traps-1">5.28.1 Vertical Position Traps</h4>
+<a class="index-entry-id" id="index-vertical-position-traps"></a>
+<a class="index-entry-id" id="index-traps_002c-vertical-position"></a>
+
+<p>A <em class="dfn">vertical position trap</em> calls a macro when the formatter&rsquo;s
+vertical drawing position reaches or passes, in the downward direction,
+a certain location on the output page or in a diversion. Its
+applications include setting page headers and footers, body text in
+multiple columns, and footnotes.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002evpt"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.vpt</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">flag</i></span>]</var><a class="copiable-link" href='#index-_002evpt'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-vpt"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005cn_005b_002evpt_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[.vpt]</code></strong><a class="copiable-link" href='#index-_005cn_005b_002evpt_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002evpt-1"></a>
+<a class="index-entry-id" id="index-enabling-vertical-position-traps-_0028vpt_0029"></a>
+<a class="index-entry-id" id="index-vertical-position-traps_002c-enabling-_0028vpt_0029"></a>
+<a class="index-entry-id" id="index-vertical-position-trap-enable-register-_0028_002evpt_0029"></a>
+<p>Enable vertical position traps if <var class="var">flag</var> is non-zero or absent;
+disable them otherwise. Vertical position traps are those set by the
+<code class="code">wh</code> request or by <code class="code">dt</code> within a diversion. The parameter
+that controls whether vertical position traps are enabled is global.
+Initially, vertical position traps are enabled. The current value is
+stored in the <code class="code">.vpt</code> read-only register.
+</p>
+<a class="index-entry-id" id="index-page-break_002c-prevented-by-vpt"></a>
+<a class="index-entry-id" id="index-break_002c-page_002c-prevented-by-vpt"></a>
+<a class="index-entry-id" id="index-page-ejection_002c-prevented-by-vpt"></a>
+<a class="index-entry-id" id="index-ejection_002c-page_002c-prevented-by-vpt"></a>
+<p>A page can&rsquo;t be ejected if <code class="code">vpt</code> is set to zero; see <a class="ref" href="The-Implicit-Page-Trap.html">The Implicit Page Trap</a>.
+</p></dd></dl>
+
+
+
+<ul class="mini-toc">
+<li><a href="Page-Location-Traps.html" accesskey="1">Page Location Traps</a></li>
+<li><a href="The-Implicit-Page-Trap.html" accesskey="2">The Implicit Page Trap</a></li>
+<li><a href="Diversion-Traps.html" accesskey="3">Diversion Traps</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Warnings.html b/doc/groff.html.node/Warnings.html
new file mode 100644
index 0000000..b61ec3a
--- /dev/null
+++ b/doc/groff.html.node/Warnings.html
@@ -0,0 +1,246 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Warnings (The GNU Troff Manual)</title>
+
+<meta name="description" content="Warnings (The GNU Troff Manual)">
+<meta name="keywords" content="Warnings (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Debugging.html" rel="up" title="Debugging">
+<link href="Debugging.html" rel="prev" title="Debugging">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="Warnings">
+<div class="nav-panel">
+<p>
+Previous: <a href="Debugging.html" accesskey="p" rel="prev">Debugging</a>, Up: <a href="Debugging.html" accesskey="u" rel="up">Debugging</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Warnings-1">5.37.1 Warnings</h4>
+<a class="index-entry-id" id="index-warnings-1"></a>
+
+<p>Warning diagnostics emitted by GNU <code class="code">troff</code> are divided into named,
+numbered categories. The name associated with each warning category is
+used by the <samp class="option">-w</samp> and <samp class="option">-W</samp> options. Each category is also
+assigned a power of two; the sum of enabled category values is used by
+the <code class="code">warn</code> request and the <code class="code">.warn</code> register.
+</p>
+<p>Warnings of each category are produced under the following
+circumstances.
+</p>
+<a class="index-entry-id" id="index-categories_002c-warning"></a>
+<a class="index-entry-id" id="index-warning-categories"></a>
+<dl class="table">
+<dt>&lsquo;<samp class="samp">char</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">1</samp>&rsquo;</dt>
+<dd><p>No mounted font defines a glyph for the requested character. This
+category is enabled by default.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">number</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">2</samp>&rsquo;</dt>
+<dd><p>An invalid numeric expression was encountered. This category is enabled
+by default.
+See <a class="xref" href="Numeric-Expressions.html">Numeric Expressions</a>.
+</p>
+</dd>
+<dt id='index-filling_002c-and-break-warnings'><span>&lsquo;<samp class="samp">break</samp>&rsquo;<a class="copiable-link" href='#index-filling_002c-and-break-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">4</samp>&rsquo;</dt>
+<dd><a class="index-entry-id" id="index-mode_002c-fill_002c-and-break-warnings"></a>
+<p>A filled output line could not be broken such that its length was less
+than the output line length &lsquo;<samp class="samp">\n[.l]</samp>&rsquo;. This category is enabled by
+default.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">delim</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">8</samp>&rsquo;</dt>
+<dd><p>The closing delimiter in an escape sequence was missing or mismatched.
+</p>
+</dd>
+<dt id='index-ie-request_002c-and-warnings'><span>&lsquo;<samp class="samp">el</samp>&rsquo;<a class="copiable-link" href='#index-ie-request_002c-and-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">16</samp>&rsquo;</dt>
+<dd><a class="index-entry-id" id="index-el-request_002c-and-warnings"></a>
+<p>The <code class="code">el</code> request was encountered with no prior corresponding
+<code class="code">ie</code> request. See <a class="xref" href="if_002delse.html">if-else</a>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">scale</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">32</samp>&rsquo;</dt>
+<dd><p>A scaling unit inappropriate to its context was used in a numeric
+expression.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">range</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">64</samp>&rsquo;</dt>
+<dd><p>A numeric expression was out of range for its context.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">syntax</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">128</samp>&rsquo;</dt>
+<dd><p>A self-contradictory hyphenation mode was requested; an empty or
+incomplete numeric expression was encountered; an operand to a numeric
+operator was missing; an attempt was made to define a recursive, empty,
+or nonsensical character class; or a <code class="code">groff</code> extension conditional
+expression operator was used while in compatibility mode.
+</p>
+</dd>
+<dt id='index-di-request_002c-and-warnings'><span>&lsquo;<samp class="samp">di</samp>&rsquo;<a class="copiable-link" href='#index-di-request_002c-and-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">256</samp>&rsquo;</dt>
+<dd><a class="index-entry-id" id="index-da-request_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-box-request_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-boxa-request_002c-and-warnings"></a>
+<p>A <code class="code">di</code>, <code class="code">da</code>, <code class="code">box</code>, or <code class="code">boxa</code> request was invoked
+without an argument when there was no current diversion.
+</p>
+</dd>
+<dt id='index-de_002c-de1_002c-dei-requests_002c-and-warnings'><span>&lsquo;<samp class="samp">mac</samp>&rsquo;<a class="copiable-link" href='#index-de_002c-de1_002c-dei-requests_002c-and-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">512</samp>&rsquo;</dt>
+<dd><a class="index-entry-id" id="index-am_002c-am1_002c-ami-requests_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-ds_002c-ds1-requests_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-as_002c-as1-requests_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-di-request_002c-and-warnings-1"></a>
+<a class="index-entry-id" id="index-da-request_002c-and-warnings-1"></a>
+<a class="index-entry-id" id="index-box_002c-boxa-requests_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-_005c_002a_002c-and-warnings"></a>
+<p>An undefined string, macro, or diversion was used. When such an object
+is dereferenced, an empty one of that name is automatically created.
+So, unless it is later deleted, at most one warning is given for each.
+</p>
+<p>This warning is also emitted upon an attempt to move an unplanted trap
+macro (see <a class="pxref" href="Page-Location-Traps.html">Page Location Traps</a>). In such cases, the unplanted macro
+is <em class="emph">not</em> dereferenced, so it is not created if it does not exist.
+</p>
+</dd>
+<dt id='index-nr-request_002c-and-warnings'><span>&lsquo;<samp class="samp">reg</samp>&rsquo;<a class="copiable-link" href='#index-nr-request_002c-and-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">1024</samp>&rsquo;</dt>
+<dd><a class="index-entry-id" id="index-_005cR_002c-and-warnings"></a>
+<a class="index-entry-id" id="index-_005cn_002c-and-warnings"></a>
+<p>An undefined register was used. When an undefined register is
+dereferenced, it is automatically defined with a value of&nbsp;0. So,
+unless it is later deleted, at most one warning is given for each.
+</p>
+</dd>
+<dt id='index-_005ct_002c-and-warnings'><span>&lsquo;<samp class="samp">tab</samp>&rsquo;<a class="copiable-link" href='#index-_005ct_002c-and-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">2048</samp>&rsquo;</dt>
+<dd><p>A tab character was encountered where a number was expected, or appeared
+in an unquoted macro argument.
+</p>
+</dd>
+<dt id='index-_005c_007d_002c-and-warnings'><span>&lsquo;<samp class="samp">right-brace</samp>&rsquo;<a class="copiable-link" href='#index-_005c_007d_002c-and-warnings'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">4096</samp>&rsquo;</dt>
+<dd><p>A right brace escape sequence <code class="code">\}</code> was encountered where a number
+was expected.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">missing</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">8192</samp>&rsquo;</dt>
+<dd><p>A request was invoked with a mandatory argument absent.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">input</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">16384</samp>&rsquo;</dt>
+<dd><p>An invalid character occurred on the input stream.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">escape</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">32768</samp>&rsquo;</dt>
+<dd><p>An unsupported escape sequence was encountered.
+</p>
+</dd>
+<dt id='index-compatibility-mode'><span>&lsquo;<samp class="samp">space</samp>&rsquo;<a class="copiable-link" href='#index-compatibility-mode'> &para;</a></span></dt>
+<dt>&lsquo;<samp class="samp">65536</samp>&rsquo;</dt>
+<dd><p>A space was missing between a request or macro and its argument. This
+warning is produced when an undefined name longer than two characters is
+encountered and the first two characters of the name constitute a
+defined name. No request is invoked, no macro called, and an empty
+macro is not defined. This category is enabled by default. It never
+occurs in compatibility mode.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">font</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">131072</samp>&rsquo;</dt>
+<dd><p>A non-existent font was selected, or the selection was ignored because a
+font selection escape sequence was used after the output line
+continuation escape sequence on an input line. This category is enabled
+by default.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">ig</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">262144</samp>&rsquo;</dt>
+<dd><p>An invalid escape sequence occurred in input ignored using the <code class="code">ig</code>
+request. This warning category diagnoses a condition that is an error
+when it occurs in non-ignored input.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">color</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">524288</samp>&rsquo;</dt>
+<dd><p>An undefined color was selected, an attempt was made to define a color
+using an unrecognized color space, an invalid component in a color
+definition was encountered, or an attempt was made to redefine a default
+color.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">file</samp>&rsquo;</dt>
+<dt>&lsquo;<samp class="samp">1048576</samp>&rsquo;</dt>
+<dd><p>An attempt was made to load a file that does not exist. This category
+is enabled by default.
+</p></dd>
+</dl>
+
+<p>Two warning names group other warning categories for convenience.
+</p>
+<dl class="table">
+<dt>&lsquo;<samp class="samp">all</samp>&rsquo;</dt>
+<dd><p>All warning categories except &lsquo;<samp class="samp">di</samp>&rsquo;, &lsquo;<samp class="samp">mac</samp>&rsquo; and &lsquo;<samp class="samp">reg</samp>&rsquo;.
+This shorthand is intended to produce all warnings that are useful with
+macro packages written for <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> and its
+descendants, which have less fastidious diagnostics than GNU
+<code class="code">troff</code>.
+</p>
+</dd>
+<dt>&lsquo;<samp class="samp">w</samp>&rsquo;</dt>
+<dd><p>All warning categories. Authors of documents and macro packages
+targeting <code class="code">groff</code> are encouraged to use this setting.
+</p></dd>
+</dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="Debugging.html">Debugging</a>, Up: <a href="Debugging.html">Debugging</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/What-Is-groff_003f.html b/doc/groff.html.node/What-Is-groff_003f.html
new file mode 100644
index 0000000..99939ea
--- /dev/null
+++ b/doc/groff.html.node/What-Is-groff_003f.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>What Is groff? (The GNU Troff Manual)</title>
+
+<meta name="description" content="What Is groff? (The GNU Troff Manual)">
+<meta name="keywords" content="What Is groff? (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Introduction.html" rel="up" title="Introduction">
+<link href="groff-Capabilities.html" rel="next" title="groff Capabilities">
+<link href="Introduction.html" rel="prev" title="Introduction">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="What-Is-groff_003f">
+<div class="nav-panel">
+<p>
+Next: <a href="groff-Capabilities.html" accesskey="n" rel="next"><code class="code">groff</code> Capabilities</a>, Previous: <a href="Introduction.html" accesskey="p" rel="prev">Introduction</a>, Up: <a href="Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="What-Is-groff_003f-1">1.2 What Is <code class="code">groff</code>?</h3>
+<a class="index-entry-id" id="index-what-is-groff_003f"></a>
+<a class="index-entry-id" id="index-groff_002d_002d_002dwhat-is-it_003f"></a>
+
+<p><code class="code">groff</code> (GNU <code class="code">roff</code>) is a typesetting system that reads plain
+text input files that include formatting commands to produce output in
+PostScript, PDF, HTML, DVI, or other formats, or for display to a
+terminal. Formatting commands can be low-level typesetting primitives,
+macros from a supplied package, or user-defined macros. All three
+approaches can be combined.
+</p>
+<p>A reimplementation and extension of the typesetter from <abbr class="acronym">AT&amp;T</abbr>
+Unix, <code class="code">groff</code> is present on most <abbr class="acronym">POSIX</abbr> systems owing to
+its long association with Unix manuals (including man pages). It and
+its predecessor are notable for their production of several best-selling
+software engineering texts. <code class="code">groff</code> is capable of producing
+typographically sophisticated documents while consuming minimal system
+resources.
+</p>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/Writing-Macros.html b/doc/groff.html.node/Writing-Macros.html
new file mode 100644
index 0000000..e08b9fa
--- /dev/null
+++ b/doc/groff.html.node/Writing-Macros.html
@@ -0,0 +1,267 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Writing Macros (The GNU Troff Manual)</title>
+
+<meta name="description" content="Writing Macros (The GNU Troff Manual)">
+<meta name="keywords" content="Writing Macros (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Page-Motions.html" rel="next" title="Page Motions">
+<link href="Conditionals-and-Loops.html" rel="prev" title="Conditionals and Loops">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="Writing-Macros">
+<div class="nav-panel">
+<p>
+Next: <a href="Page-Motions.html" accesskey="n" rel="next">Page Motions</a>, Previous: <a href="Conditionals-and-Loops.html" accesskey="p" rel="prev">Conditionals and Loops</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="Writing-Macros-1">5.24 Writing Macros</h3>
+<a class="index-entry-id" id="index-writing-macros"></a>
+<a class="index-entry-id" id="index-macros_002c-writing"></a>
+
+<p>A <em class="dfn">macro</em> is a stored collection of text and control lines that can
+be interpolated multiple times. Use macros to define common operations.
+Macros are called in the same way that requests are invoked. While
+requests exist for the purpose of creating macros, simply calling an
+undefined macro, or interpolating it as a string, will cause it to be
+defined as empty. See <a class="xref" href="Identifiers.html">Identifiers</a>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ede"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.de</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002ede'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-de"></a>
+<p>Define a macro <var class="var">name</var>, replacing the definition of any existing
+request, macro, string, or diversion called <var class="var">name</var>. If
+<var class="var">name</var> already exists as an alias, the target of the alias is
+redefined; recall <a class="ref" href="Strings.html">Strings</a>. GNU <code class="code">troff</code> enters copy
+mode,<a class="footnote" id="DOCF97" href="groff.html_fot.html#FOOT97"><sup>97</sup></a> storing subsequent input lines as the
+macro definition. If the optional second argument is not specified, the
+definition ends with the control line &lsquo;<samp class="samp">..</samp>&rsquo; (two dots).
+Alternatively, <var class="var">end</var> identifies a macro whose call syntax at the
+start of a control line ends the definition of <var class="var">name</var>; <var class="var">end</var> is
+then called normally. A macro definition must end in the same
+conditional block (if any) in which it began (see <a class="pxref" href="Conditional-Blocks.html">Conditional Blocks</a>). Spaces or tabs are permitted after the control character in
+the line containing this ending token (either &lsquo;<samp class="samp">.</samp>&rsquo; or
+&lsquo;<samp class="samp"><var class="var">end</var></samp>&rsquo;), but a tab immediately after the token prevents its
+recognition as the end of a macro definition. The macro <var class="var">end</var> can
+be called with arguments.<a class="footnote" id="DOCF98" href="groff.html_fot.html#FOOT98"><sup>98</sup></a>
+</p>
+<p>Here is a small example macro called &lsquo;<samp class="samp">P</samp>&rsquo; that causes a break and
+inserts some vertical space. It could be used to separate paragraphs.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de P
+. br
+. sp .8v
+..
+</pre></div></div>
+
+<p>We can define one macro within another. Attempting to nest &lsquo;<samp class="samp">..</samp>&rsquo;
+naïvely will end the outer definition because the inner definition
+isn&rsquo;t interpreted as such until the outer macro is later interpolated.
+We can use an end macro instead. Each level of nesting should use a
+unique end macro.
+</p>
+<p>An end macro need not be defined until it is called. This fact enables
+a nested macro definition to begin inside one macro and end inside
+another. Consider the following example.<a class="footnote" id="DOCF99" href="groff.html_fot.html#FOOT99"><sup>99</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de m1
+. de m2 m3
+you
+..
+.de m3
+Hello,
+Joe.
+..
+.de m4
+do
+..
+.m1
+know?
+. m3
+What
+.m4
+.m2
+ &rArr; Hello, Joe. What do you know?
+</pre></div></div>
+
+<p>A nested macro definition <em class="emph">can</em> be terminated with &lsquo;<samp class="samp">..</samp>&rsquo; and
+nested macros <em class="emph">can</em> reuse end macros, but these control lines must
+be escaped multiple times for each level of nesting. The necessity of
+this escaping and the utility of nested macro definitions will become
+clearer when we employ macro parameters and consider the behavior of
+copy mode in detail.
+</p></dd></dl>
+
+<p><code class="code">de</code> defines a macro that inherits the compatibility mode
+enablement status of its context (see <a class="pxref" href="Implementation-Differences.html">Implementation Differences</a>).
+Often it is desirable to make a macro that uses <code class="code">groff</code> features
+callable from contexts where compatibility mode is on; for instance,
+when writing extensions to a historical macro package. To achieve this,
+compatibility mode needs to be switched off while such a macro is
+interpreted&mdash;without disturbing that state when it is finished.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ede1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.de1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002ede1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-de1"></a>
+<p>The <code class="code">de1</code> request defines a macro to be interpreted with
+compatibility mode disabled. When <var class="var">name</var> is called, compatibility
+mode enablement status is saved; it is restored when the call completes.
+Observe the extra backlash before the interpolation of register
+&lsquo;<samp class="samp">xxx</samp>&rsquo;; we&rsquo;ll explore this subject in <a class="ref" href="Copy-Mode.html">Copy Mode</a>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr xxx 12345
+.de aa
+The value of xxx is \\n[xxx].
+. br
+..
+.de1 bb
+The value of xxx is \\n[xxx].
+..
+.cp 1
+.aa
+ error&rarr; warning: register '[' not defined
+ &rArr; The value of xxx is 0xxx].
+.bb
+ &rArr; The value of xxx is 12345.
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002edei"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.dei</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002edei'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-dei"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002edei1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.dei1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002edei1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-dei1"></a>
+<p>The <code class="code">dei</code> request defines a macro with its name and end
+macro indirected through strings. That is, it interpolates strings
+named <var class="var">name</var> and <var class="var">end</var> before performing the definition.
+</p>
+<p>The following examples are equivalent.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds xx aa
+.ds yy bb
+.dei xx yy
+</pre></div></div>
+
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de aa bb
+</pre></div></div>
+
+<p>The <code class="code">dei1</code> request bears the same relationship to <code class="code">dei</code> as
+<code class="code">de1</code> does to <code class="code">de</code>; it temporarily turns compatibility mode
+off when <var class="var">name</var> is called.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eam"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.am</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eam'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-am"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eam1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.am1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eam1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-am1"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eami"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ami</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eami'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ami"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eami1"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ami1</code></strong> <var class="def-var-arguments">name [<span class="r"><i class="slanted">end</i></span>]</var><a class="copiable-link" href='#index-_002eami1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ami1"></a>
+<a class="index-entry-id" id="index-appending-to-a-macro-_0028am_0029"></a>
+<a class="index-entry-id" id="index-macro_002c-appending-to-_0028am_0029"></a>
+<p><code class="code">am</code> appends subsequent input lines to macro <var class="var">name</var>, extending
+its definition, and otherwise working as <code class="code">de</code> does.
+</p>
+<p>To make the previously defined &lsquo;<samp class="samp">P</samp>&rsquo; macro set indented instead of
+block paragraphs, add the necessary code to the existing macro.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.am P
+.ti +5n
+..
+</pre></div></div>
+
+<p>The other requests are analogous to their &lsquo;<samp class="samp">de</samp>&rsquo; counterparts. The
+<code class="code">am1</code> request turns off compatibility mode during interpretation of
+the appendment. The <code class="code">ami</code> request appends indirectly, meaning that
+strings <var class="var">name</var> and <var class="var">end</var> are interpolated with the resulting
+names used before appending. The <code class="code">ami1</code> request is similar to
+<code class="code">ami</code>, disabling compatibility mode during interpretation of the
+appended lines.
+</p></dd></dl>
+
+<a class="index-entry-id" id="index-trace_002etmac"></a>
+<p>Using <samp class="file">trace.tmac</samp>, you can trace calls to <code class="code">de</code>,
+<code class="code">de1</code>, <code class="code">am</code>, and <code class="code">am1</code>. You can also use the
+<code class="code">backtrace</code> request at any point desired to troubleshoot tricky
+spots (see <a class="pxref" href="Debugging.html">Debugging</a>).
+</p>
+<p>See <a class="xref" href="Strings.html">Strings</a>, for the <code class="code">als</code>, <code class="code">rm</code>, and <code class="code">rn</code> requests to
+create an alias of, remove, and rename a macro, respectively.
+</p>
+<a class="index-entry-id" id="index-object-creation"></a>
+<p>Macro identifiers share their name space with requests, strings, and
+diversions; see <a class="ref" href="Identifiers.html">Identifiers</a>. The <code class="code">am</code>, <code class="code">as</code>, <code class="code">da</code>,
+<code class="code">de</code>, <code class="code">di</code>, and <code class="code">ds</code> requests (together with their
+variants) create a new object only if the name of the macro, diversion,
+or string is currently undefined or if it is defined as a request;
+normally, they modify the value of an existing object. See <a class="xref" href="Strings.html#als">the
+description of the <code class="code">als</code> request</a>, for pitfalls when redefining a
+macro that is aliased.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ereturn"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.return</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">anything</i></span>]</var><a class="copiable-link" href='#index-_002ereturn'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-return"></a>
+<p>Exit a macro, immediately returning to the caller. If called with an
+argument <var class="var">anything</var>, exit twice&mdash;the current macro and the macro
+one level higher. This is used to define a wrapper macro for
+<code class="code">return</code> in <samp class="file">trace.tmac</samp>.
+</p></dd></dl>
+
+
+
+<ul class="mini-toc">
+<li><a href="Parameters.html" accesskey="1">Parameters</a></li>
+<li><a href="Copy-Mode.html" accesskey="2">Copy Mode</a></li>
+</ul>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Page-Motions.html">Page Motions</a>, Previous: <a href="Conditionals-and-Loops.html">Conditionals and Loops</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/als.html b/doc/groff.html.node/als.html
new file mode 100644
index 0000000..711bc84
--- /dev/null
+++ b/doc/groff.html.node/als.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>als (The GNU Troff Manual)</title>
+
+<meta name="description" content="als (The GNU Troff Manual)">
+<meta name="keywords" content="als (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+
+<meta http-equiv="Refresh" content="0; url=Strings.html#als">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+</head>
+
+<body lang="en">
+
+<p>The node you are looking for is at <a href="Strings.html#als">als</a>.</p>
+</body>
diff --git a/doc/groff.html.node/groff-Capabilities.html b/doc/groff.html.node/groff-Capabilities.html
new file mode 100644
index 0000000..424779a
--- /dev/null
+++ b/doc/groff.html.node/groff-Capabilities.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>groff Capabilities (The GNU Troff Manual)</title>
+
+<meta name="description" content="groff Capabilities (The GNU Troff Manual)">
+<meta name="keywords" content="groff Capabilities (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Introduction.html" rel="up" title="Introduction">
+<link href="Macro-Package-Intro.html" rel="next" title="Macro Package Intro">
+<link href="What-Is-groff_003f.html" rel="prev" title="What Is groff?">
+<style type="text/css">
+<!--
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="groff-Capabilities">
+<div class="nav-panel">
+<p>
+Next: <a href="Macro-Package-Intro.html" accesskey="n" rel="next">Macro Packages</a>, Previous: <a href="What-Is-groff_003f.html" accesskey="p" rel="prev">What Is <code class="code">groff</code>?</a>, Up: <a href="Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="groff-Capabilities-1">1.3 <code class="code">groff</code> Capabilities</h3>
+<a class="index-entry-id" id="index-groff-capabilities"></a>
+<a class="index-entry-id" id="index-capabilities-of-groff"></a>
+
+<p>GNU <code class="code">troff</code> is a typesetting document formatter; it provides a wide
+range of low-level text and page operations within the framework of a
+programming language. These operations compose to generate footnotes,
+tables of contents, mathematical equations, diagrams, multi-column text,
+and other elements of typeset works. Here is a survey of formatter
+features; all are under precise user control.
+</p>
+<ul class="itemize mark-bullet">
+<li>text filling, breaking, alignment to the left or right margin; centering
+
+</li><li>adjustment of inter-word space size to justify text, and of
+inter-sentence space size to suit local style conventions
+
+</li><li>automatic and manual determination of hyphenation break points
+
+</li><li>pagination
+
+</li><li>selection of any font available to the output device
+
+</li><li>adjustment of type size and vertical spacing (or &ldquo;leading&rdquo;)
+
+</li><li>configuration of line length and indentation amounts; columnation
+
+</li><li>drawing of geometric primitives (lines, arcs, polygons, circles,
+&hellip;)
+
+</li><li>setup of stroke and fill colors (where supported by the output
+device)
+
+</li><li>embedding of hyperlinks, images, document metadata, and other inclusions
+(where supported by the output device)
+</li></ul>
+
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/groff.html_fot.html b/doc/groff.html.node/groff.html_fot.html
new file mode 100644
index 0000000..1230044
--- /dev/null
+++ b/doc/groff.html.node/groff.html_fot.html
@@ -0,0 +1,525 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Footnotes (The GNU Troff Manual)</title>
+
+<meta name="description" content="Footnotes (The GNU Troff Manual)">
+<meta name="keywords" content="Footnotes (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<style type="text/css">
+<!--
+kbd.key {font-style: normal}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="element-footnotes" id="SEC_Footnotes">
+<div class="nav-panel">
+<p>
+ &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h5 class="footnote-body-heading"><a id="FOOT1" href="Preprocessor-Intro.html#DOCF1">(1)</a></h5>
+<p>The &lsquo;<samp class="samp">g</samp>&rsquo; prefix is
+not used on all systems; see <a class="ref" href="Invoking-groff.html">Invoking <code class="code">groff</code></a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT2" href="Conventions-Used-in-This-Manual.html#DOCF2">(2)</a></h5>
+<p>Unix and related operating systems distinguish
+standard output and standard error streams <em class="emph">because</em> of
+<code class="code">troff</code>:
+<a class="uref" href="https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html">https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT3" href="Conventions-Used-in-This-Manual.html#DOCF3">(3)</a></h5>
+<p>See <a class="xref" href="Line-Layout.html">Line Layout</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT4" href="Invoking-groff.html#DOCF4">(4)</a></h5>
+<p>Besides <code class="code">groff</code>, <code class="code">neatroff</code> is an
+exception.</p>
+<h5 class="footnote-body-heading"><a id="FOOT5" href="Macro-Directories.html#DOCF5">(5)</a></h5>
+<p>The
+<code class="code">mso</code> request does not have these limitations. See <a class="xref" href="I_002fO.html">I/O</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT6" href="Basics.html#DOCF6">(6)</a></h5>
+<p>The remainder of this chapter is based on
+<cite class="cite">Writing Papers with nroff using -me</cite> by Eric&nbsp;P. Allman,
+which is distributed with <code class="code">groff</code> as <samp class="file">meintro.me</samp>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT7" href="ms-Introduction.html#DOCF7">(7)</a></h5>
+<p>While manual <em class="emph">pages</em> are older, early ones used
+macros supplanted by the <samp class="file">man</samp> package of Seventh Edition Unix
+(1979). <samp class="file">ms</samp> shipped with Sixth Edition (1975) and was documented
+by Mike Lesk in a Bell Labs internal memorandum.</p>
+<h5 class="footnote-body-heading"><a id="FOOT8" href="ms-Document-Control-Settings.html#DOCF8">(8)</a></h5>
+<p>defined in <a class="ref" href="ms-Footnotes.html">Footnotes</a></p>
+<h5 class="footnote-body-heading"><a id="FOOT9" href="ms-Document-Description-Macros.html#DOCF9">(9)</a></h5>
+<p>Distinguish a
+document title from &ldquo;titles&rdquo;, which are what <code class="code">roff</code> systems call
+headers and footers collectively.</p>
+<h5 class="footnote-body-heading"><a id="FOOT10" href="Typeface-and-decoration.html#DOCF10">(10)</a></h5>
+<p>This idiosyncrasy arose through
+feature accretion; for example, the <code class="code">B</code> macro in Version&nbsp;6
+Unix <samp class="file">ms</samp> (1975) accepted only one argument, the text to be set in
+boldface. By Version&nbsp;7 (1979) it recognized a second argument; in
+1990, <code class="code">groff</code> <samp class="file">ms</samp> added a &ldquo;pre&rdquo; argument, placing it third
+to avoid breaking support for older documents.</p>
+<h5 class="footnote-body-heading"><a id="FOOT11" href="ms-Footnotes.html#DOCF11">(11)</a></h5>
+<p>&ldquo;Portable Document Format Publishing with GNU
+Troff&rdquo;, <samp class="file">pdfmark.ms</samp> in the <code class="code">groff</code> distribution, uses this
+technique.</p>
+<h5 class="footnote-body-heading"><a id="FOOT12" href="ms-Footnotes.html#DOCF12">(12)</a></h5>
+<p>Unix Version&nbsp;7 <samp class="file">ms</samp>, its descendants, and GNU
+<samp class="file">ms</samp> prior to <code class="code">groff</code> version 1.23.0</p>
+<h5 class="footnote-body-heading"><a id="FOOT13" href="ms-Footnotes.html#DOCF13">(13)</a></h5>
+<p>You could reset it
+after each call to <code class="code">.1C</code>, <code class="code">.2C</code>, or <code class="code">.MC</code>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT14" href="Differences-from-AT_0026T-ms.html#DOCF14">(14)</a></h5>
+<p><cite class="cite">Typing Documents on the UNIX System: Using the
+-ms Macros with Troff and Nroff</cite>, M.&nbsp;E. Lesk, Bell Laboratories,
+1978</p>
+<h5 class="footnote-body-heading"><a id="FOOT15" href="Differences-from-AT_0026T-ms.html#DOCF15">(15)</a></h5>
+<p>Register values are converted to and stored as
+basic units. See <a class="xref" href="Measurements.html">Measurements</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT16" href="Differences-from-AT_0026T-ms.html#DOCF16">(16)</a></h5>
+<p>If you redefine the <samp class="file">ms</samp> <code class="code">PT</code> macro
+and desire special treatment of certain page numbers (like &lsquo;<samp class="samp">1</samp>&rsquo;),
+you may need to handle a non-Arabic page number format, as <code class="code">groff</code>
+<samp class="file">ms</samp>&rsquo;s <code class="code">PT</code> does; see the macro package source. <code class="code">groff</code>
+<samp class="file">ms</samp> aliases the <code class="code">PN</code> register to <code class="code">%</code>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT17" href="Missing-Unix-Version-7-ms-Macros.html#DOCF17">(17)</a></h5>
+<p>The removal beforehand is necessary
+because <code class="code">groff</code> <samp class="file">ms</samp> aliases these macros to a diagnostic
+macro, and you want to redefine the aliased name, not its target.</p>
+<h5 class="footnote-body-heading"><a id="FOOT18" href="Filling.html#DOCF18">(18)</a></h5>
+<p>See <a class="xref" href="Device-and-Font-Description-Files.html">Device and Font Description Files</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT19" href="Filling.html#DOCF19">(19)</a></h5>
+<p><i class="slanted">Tabs</i> and <i class="slanted">leaders</i> also separate
+words. <i class="slanted">Escape sequences</i> can function as word characters, word
+separators, or neither&mdash;the last simply have no effect on GNU
+<code class="code">troff</code>&rsquo;s idea of whether an input character is within a word.
+We&rsquo;ll discuss all of these in due course.</p>
+<h5 class="footnote-body-heading"><a id="FOOT20" href="Sentences.html#DOCF20">(20)</a></h5>
+<p>A
+well-researched jeremiad appreciated by <code class="code">groff</code> contributors on
+both sides of the sentence-spacing debate can be found at
+<a class="uref" href="https://web.archive.org/web/20171217060354/http://www.heracliteanriver.com/?p=324">https://web.archive.org/web/20171217060354/http://www.heracliteanriver.com/?p=324</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT21" href="Sentences.html#DOCF21">(21)</a></h5>
+<p>This statement oversimplifies; there are
+escape sequences whose purpose is precisely to produce glyphs on the
+output device, and input characters that <em class="emph">aren&rsquo;t</em> part of escape
+sequences can undergo a great deal of processing before getting to the
+output.</p>
+<h5 class="footnote-body-heading"><a id="FOOT22" href="Sentences.html#DOCF22">(22)</a></h5>
+<p>The mnemonics for the special
+characters shown here are &ldquo;dagger&rdquo;, &ldquo;double dagger&rdquo;, &ldquo;right
+(double) quote&rdquo;, and &ldquo;closing (single) quote&rdquo;. See the
+<cite class="cite">groff_char<span class="r">(7)</span></cite> man page.</p>
+<h5 class="footnote-body-heading"><a id="FOOT23" href="Breaking.html#DOCF23">(23)</a></h5>
+<p>&ldquo;Text lines&rdquo; are defined in <a class="ref" href="Requests-and-Macros.html">Requests and Macros</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT24" href="Tabs-and-Leaders.html#DOCF24">(24)</a></h5>
+<p>&ldquo;Tab&rdquo;
+is short for &ldquo;tabulation&rdquo;, revealing the term&rsquo;s origin as a spacing
+mechanism for table arrangement.</p>
+<h5 class="footnote-body-heading"><a id="FOOT25" href="Requests-and-Macros.html#DOCF25">(25)</a></h5>
+<p>The <code class="code">\<kbd class="key">RET</kbd></code> escape sequence can alter how an
+input line is classified; see <a class="ref" href="Line-Continuation.html">Line Continuation</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT26" href="Requests-and-Macros.html#DOCF26">(26)</a></h5>
+<p>Argument handling in
+macros is more flexible but also more complex. See <a class="xref" href="Calling-Macros.html">Calling Macros</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT27" href="Requests-and-Macros.html#DOCF27">(27)</a></h5>
+<p>Some escape sequences undergo
+interpolation as well.</p>
+<h5 class="footnote-body-heading"><a id="FOOT28" href="Requests-and-Macros.html#DOCF28">(28)</a></h5>
+<p>GNU <code class="code">troff</code> offers additional ones. See <a class="xref" href="Writing-Macros.html">Writing Macros</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT29" href="Macro-Packages.html#DOCF29">(29)</a></h5>
+<p>Macro files and packages
+frequently define registers and strings as well.</p>
+<h5 class="footnote-body-heading"><a id="FOOT30" href="Input-Encodings.html#DOCF30">(30)</a></h5>
+<p>The
+<em class="emph">semantics</em> of certain punctuation code points have gotten stricter
+with the successive standards, a cause of some frustration among man
+page writers; see the <cite class="cite">groff_char<span class="r">(7)</span></cite> man page.</p>
+<h5 class="footnote-body-heading"><a id="FOOT31" href="Input-Encodings.html#DOCF31">(31)</a></h5>
+<p>The
+DVI output device defaults to using the Computer Modern (CM) fonts;
+<samp class="file">ec.tmac</samp> loads the EC fonts instead, which provide Euro
+&lsquo;<samp class="samp">\[Eu]</samp>&rsquo; and per mille &lsquo;<samp class="samp">\[%0]</samp>&rsquo; glyphs.</p>
+<h5 class="footnote-body-heading"><a id="FOOT32" href="Input-Conventions.html#DOCF32">(32)</a></h5>
+<p>Emacs: <code class="code">fill-column: 72</code>; Vim: <code class="code">textwidth=72</code></p>
+<h5 class="footnote-body-heading"><a id="FOOT33" href="Page-Geometry.html#DOCF33">(33)</a></h5>
+<p><code class="code">groff</code> does not yet support right-to-left
+scripts.</p>
+<h5 class="footnote-body-heading"><a id="FOOT34" href="Page-Geometry.html#DOCF34">(34)</a></h5>
+<p><code class="code">groff</code>&rsquo;s terminal output devices have page
+offsets of zero.</p>
+<h5 class="footnote-body-heading"><a id="FOOT35" href="Numeric-Expressions.html#DOCF35">(35)</a></h5>
+<p>Provision is made for interpreting and
+reporting decimal fractions in certain cases.</p>
+<h5 class="footnote-body-heading"><a id="FOOT36" href="Numeric-Expressions.html#DOCF36">(36)</a></h5>
+<p>If that&rsquo;s not enough, see the <cite class="cite">groff_tmac<span class="r">(5)</span></cite>
+man page for the <samp class="file">62bit.tmac</samp> macro package.</p>
+<h5 class="footnote-body-heading"><a id="FOOT37" href="Numeric-Expressions.html#DOCF37">(37)</a></h5>
+<p>See <a class="xref" href="Conditionals-and-Loops.html">Conditionals and Loops</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT38" href="Numeric-Expressions.html#DOCF38">(38)</a></h5>
+<p>Control structure syntax
+creates an exception to this rule, but is designed to remain useful:
+recalling our example, &lsquo;<samp class="samp">.if 1 .Underline this</samp>&rsquo; would underline only
+&ldquo;this&rdquo;, precisely. See <a class="xref" href="Conditionals-and-Loops.html">Conditionals and Loops</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT39" href="Numeric-Expressions.html#DOCF39">(39)</a></h5>
+<p>See <a class="xref" href="Diversions.html">Diversions</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT40" href="Identifiers.html#DOCF40">(40)</a></h5>
+<p>Historically, control characters like
+ASCII STX, ETX, and BEL (<kbd class="key">Control+B</kbd>, <kbd class="key">Control+C</kbd>, and
+<kbd class="key">Control+G</kbd>) have been observed in <code class="code">roff</code> documents,
+particularly in macro packages employing them as delimiters with the
+output comparison operator to try to avoid collisions with the content
+of arbitrary user-supplied parameters (see <a class="pxref" href="Operators-in-Conditionals.html">Operators in Conditionals</a>). We discourage this expedient; in GNU <code class="code">troff</code> it is
+unnecessary (outside of compatibility mode) because delimited arguments
+are parsed at a different input level than the surrounding context.
+See <a class="xref" href="Implementation-Differences.html">Implementation Differences</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT41" href="Identifiers.html#DOCF41">(41)</a></h5>
+<p>Consider what happens when a C1 control
+<code class="code">0x80</code>&ndash;<code class="code">0x9F</code> is necessary as a continuation byte in a UTF-8
+sequence.</p>
+<h5 class="footnote-body-heading"><a id="FOOT42" href="Control-Characters.html#DOCF42">(42)</a></h5>
+<p>Recall <a class="ref" href="Identifiers.html">Identifiers</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT43" href="Invoking-Requests.html#DOCF43">(43)</a></h5>
+<p>In compatibility
+mode, a space is not necessary after a request or macro name of two
+characters&rsquo; length. Also, Plan&nbsp;9 <code class="code">troff</code> allows tabs to
+separate arguments.</p>
+<h5 class="footnote-body-heading"><a id="FOOT44" href="Calling-Macros.html#DOCF44">(44)</a></h5>
+<p><code class="code">\~</code> is fairly
+portable; see <a class="ref" href="Other-Differences.html">Other Differences</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT45" href="Calling-Macros.html#DOCF45">(45)</a></h5>
+<p>Strictly, you can neglect to
+close the last quoted macro argument, relying on the end of the control
+line to do so. We consider this lethargic practice poor style.</p>
+<h5 class="footnote-body-heading"><a id="FOOT46" href="Using-Escape-Sequences.html#DOCF46">(46)</a></h5>
+<p>The omission of spaces before the comment
+escape sequences is necessary; see <a class="ref" href="Strings.html">Strings</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT47" href="Using-Escape-Sequences.html#DOCF47">(47)</a></h5>
+<p>TeX does have such a mechanism.</p>
+<h5 class="footnote-body-heading"><a id="FOOT48" href="Comments.html#DOCF48">(48)</a></h5>
+<p>This claim may be more aspirational than descriptive.</p>
+<h5 class="footnote-body-heading"><a id="FOOT49" href="Comments.html#DOCF49">(49)</a></h5>
+<p>See <a class="xref" href="Conditional-Blocks.html">Conditional Blocks</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT50" href="Comments.html#DOCF50">(50)</a></h5>
+<p>Exception: auto-incrementing registers defined outside
+the ignored region <em class="emph">will</em> be modified if interpolated with
+<code class="code">\n±</code> inside it. See <a class="xref" href="Auto_002dincrement.html">Auto-increment</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT51" href="Auto_002dincrement.html#DOCF51">(51)</a></h5>
+<p>A negative auto-increment can be
+considered an &ldquo;auto-decrement&rdquo;.</p>
+<h5 class="footnote-body-heading"><a id="FOOT52" href="Built_002din-Registers.html#DOCF52">(52)</a></h5>
+<p>GNU <code class="code">troff</code> dynamically allocates memory for
+as many registers as required.</p>
+<h5 class="footnote-body-heading"><a id="FOOT53" href="Manipulating-Filling-and-Adjustment.html#DOCF53">(53)</a></h5>
+<p>unless diverted; see <a class="ref" href="Diversions.html">Diversions</a></p>
+<h5 class="footnote-body-heading"><a id="FOOT54" href="Manipulating-Filling-and-Adjustment.html#DOCF54">(54)</a></h5>
+<p>See <a class="xref" href="Line-Continuation.html">Line Continuation</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT55" href="Manipulating-Filling-and-Adjustment.html#DOCF55">(55)</a></h5>
+<p>Recall <a class="ref" href="Filling.html">Filling</a> and <a class="ref" href="Sentences.html">Sentences</a> for the
+definitions of word and sentence boundaries, respectively.</p>
+<h5 class="footnote-body-heading"><a id="FOOT56" href="Manipulating-Hyphenation.html#DOCF56">(56)</a></h5>
+<p>Whether a perfect algorithm for this application is
+even possible is an unsolved problem in computer science:
+<a class="url" href="https://tug.org/docs/liang/liang-thesis.pdf">https://tug.org/docs/liang/liang-thesis.pdf</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT57" href="Manipulating-Hyphenation.html#DOCF57">(57)</a></h5>
+<p><code class="code">\%</code> itself stops marking
+hyphenation points but still produces no output glyph.</p>
+<h5 class="footnote-body-heading"><a id="FOOT58" href="Manipulating-Hyphenation.html#DOCF58">(58)</a></h5>
+<p>&ldquo;Soft&rdquo; because it appears in output
+only where a hyphenation break is performed; a &ldquo;hard&rdquo; hyphen, as in
+&ldquo;long-term&rdquo;, always appears.</p>
+<h5 class="footnote-body-heading"><a id="FOOT59" href="Manipulating-Hyphenation.html#DOCF59">(59)</a></h5>
+<p>The mode is a vector of Booleans encoded as an integer.
+To a programmer, this fact is easily deduced from the exclusive use of
+powers of two for the configuration parameters; they are computationally
+easy to &ldquo;mask off&rdquo; and compare to zero. To almost everyone else, the
+arrangement seems recondite and unfriendly.</p>
+<h5 class="footnote-body-heading"><a id="FOOT60" href="Manipulating-Hyphenation.html#DOCF60">(60)</a></h5>
+<p>Hyphenation is
+prevented if the next page location trap is closer to the vertical
+drawing position than the next text baseline would be. See <a class="xref" href="Page-Location-Traps.html">Page Location Traps</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT61" href="Manipulating-Hyphenation.html#DOCF61">(61)</a></h5>
+<p>For more on localization, see the
+<cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page.</p>
+<h5 class="footnote-body-heading"><a id="FOOT62" href="Manipulating-Spacing.html#DOCF62">(62)</a></h5>
+<p>See <a class="xref" href="Page-Location-Traps.html">Page Location Traps</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT63" href="Manipulating-Spacing.html#DOCF63">(63)</a></h5>
+<p>See <a class="xref" href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT64" href="Manipulating-Spacing.html#DOCF64">(64)</a></h5>
+<p>or geometric objects; see <a class="ref" href="Drawing-Geometric-Objects.html">Drawing Geometric Objects</a></p>
+<h5 class="footnote-body-heading"><a id="FOOT65" href="Manipulating-Spacing.html#DOCF65">(65)</a></h5>
+<p>to the top-level diversion;
+see <a class="ref" href="Diversions.html">Diversions</a></p>
+<h5 class="footnote-body-heading"><a id="FOOT66" href="Tabs-and-Fields.html#DOCF66">(66)</a></h5>
+<p>Plan&nbsp;9 <code class="code">troff</code>
+uses the register <code class="code">.S</code> for this purpose.</p>
+<h5 class="footnote-body-heading"><a id="FOOT67" href="Leaders.html#DOCF67">(67)</a></h5>
+<p>This is pronounced to rhyme with &ldquo;feeder&rdquo;, and
+refers to how the glyphs &ldquo;lead&rdquo; the eye across the page to the
+corresponding page number or other datum.</p>
+<h5 class="footnote-body-heading"><a id="FOOT68" href="troff-and-nroff-Modes.html#DOCF68">(68)</a></h5>
+<p>A
+GNU <code class="command">nroff</code> program is available for convenience; it calls GNU
+<code class="code">troff</code> to perform the formatting.</p>
+<h5 class="footnote-body-heading"><a id="FOOT69" href="Line-Continuation.html#DOCF69">(69)</a></h5>
+<p>Historically, the <code class="code">\c</code>
+escape sequence has proven challenging to characterize. Some sources
+say it &ldquo;connects the next input text&rdquo; (to the input line on which it
+appears); others describe it as &ldquo;interrupting&rdquo; text, on the grounds
+that a text line is interrupted without breaking, perhaps to inject a
+request invocation or macro call.</p>
+<h5 class="footnote-body-heading"><a id="FOOT70" href="Page-Layout.html#DOCF70">(70)</a></h5>
+<p>See <a class="xref" href="Traps.html">Traps</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT71" href="Page-Control.html#DOCF71">(71)</a></h5>
+<p>See <a class="xref" href="Diversions.html">Diversions</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT72" href="Using-Fonts.html#DOCF72">(72)</a></h5>
+<p>Terminals and some output devices have fonts that render
+at only one or two sizes. As examples of the latter, take the
+<code class="code">groff</code> <code class="code">lj4</code> device&rsquo;s Lineprinter, and <code class="code">lbp</code>&rsquo;s Courier
+and Elite faces.</p>
+<h5 class="footnote-body-heading"><a id="FOOT73" href="Using-Fonts.html#DOCF73">(73)</a></h5>
+<p>Font designers prepare families such that the styles
+share esthetic properties.</p>
+<h5 class="footnote-body-heading"><a id="FOOT74" href="Using-Fonts.html#DOCF74">(74)</a></h5>
+<p>Historically, the fonts
+<code class="code">troff</code>s dealt with were not Free Software or, as with the Graphic
+Systems C/A/T, did not even exist in the digital domain.</p>
+<h5 class="footnote-body-heading"><a id="FOOT75" href="Using-Fonts.html#DOCF75">(75)</a></h5>
+<p>See <a class="xref" href="Font-Description-File-Format.html">Font Description File Format</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT76" href="Font-Families.html#DOCF76">(76)</a></h5>
+<p>See <a class="xref" href="DESC-File-Format.html"><samp class="file">DESC</samp> File Format</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT77" href="Using-Symbols.html#DOCF77">(77)</a></h5>
+<p>Not all versions of the <code class="code">man</code> program
+support the <samp class="option">-T</samp> option; use the subsequent example for an
+alternative.</p>
+<h5 class="footnote-body-heading"><a id="FOOT78" href="Using-Symbols.html#DOCF78">(78)</a></h5>
+<p>This is &ldquo;Normalization Form D&rdquo;
+as documented in Unicode Standard Annex #15
+(<a class="uref" href="https://unicode.org/reports/tr15/">https://unicode.org/reports/tr15/</a>).</p>
+<h5 class="footnote-body-heading"><a id="FOOT79" href="Using-Symbols.html#DOCF79">(79)</a></h5>
+<p>See <a class="xref" href="Compatibility-Mode.html">Compatibility Mode</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT80" href="Using-Symbols.html#DOCF80">(80)</a></h5>
+<p>Output glyphs
+don&rsquo;t&mdash;to GNU <code class="code">troff</code>, a glyph is simply a box with an index into
+a font, a given height above and depth below the baseline, and a width.</p>
+<h5 class="footnote-body-heading"><a id="FOOT81" href="Dummy-Characters.html#DOCF81">(81)</a></h5>
+<p>Opinions of this escape sequence&rsquo;s name abound.
+&ldquo;Zero-width space&rdquo; is a popular misnomer: <code class="code">roff</code> formatters do
+not treat it like a space. Ossanna called it a &ldquo;non-printing,
+zero-width character&rdquo;, but the character causes <em class="emph">output</em> even
+though it does not &ldquo;print&rdquo;. If no output line is pending, the dummy
+character starts one. Contrast an empty input document with one
+containing only <code class="code">\&amp;</code>. The former produces no output; the latter, a
+blank page.</p>
+<h5 class="footnote-body-heading"><a id="FOOT82" href="Manipulating-Type-Size-and-Vertical-Spacing.html#DOCF82">(82)</a></h5>
+<p>In text fonts, the tallest glyphs are typically
+parentheses. Unfortunately, in many cases the actual dimensions of the
+glyphs in a font do not closely match its declared type size! For
+example, in the standard PostScript font families, 10-point Times sets
+better with 9-point Helvetica and 11-point Courier than if all three
+were used at 10&nbsp;points.</p>
+<h5 class="footnote-body-heading"><a id="FOOT83" href="Manipulating-Type-Size-and-Vertical-Spacing.html#DOCF83">(83)</a></h5>
+<p>Rhyme with &ldquo;sledding&rdquo;; mechanical typography
+used lead metal (Latin <em class="emph">plumbum</em>).</p>
+<h5 class="footnote-body-heading"><a id="FOOT84" href="Changing-the-Type-Size.html#DOCF84">(84)</a></h5>
+<p>The claim appears to have been true of Ossanna
+<code class="code">troff</code> for the C/A/T device; Kernighan made device-independent
+<code class="code">troff</code> more flexible.</p>
+<h5 class="footnote-body-heading"><a id="FOOT85" href="Using-Fractional-Type-Sizes.html#DOCF85">(85)</a></h5>
+<p>See <a class="xref" href="Device-and-Font-Description-Files.html">Device and Font Description Files</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT86" href="Colors.html#DOCF86">(86)</a></h5>
+<p>also
+known vulgarly as &ldquo;ANSI colors&rdquo;</p>
+<h5 class="footnote-body-heading"><a id="FOOT87" href="Strings.html#DOCF87">(87)</a></h5>
+<p>See <a class="xref" href="Copy-Mode.html">Copy Mode</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT88" href="Operators-in-Conditionals.html#DOCF88">(88)</a></h5>
+<p>This refers to
+<code class="code">vtroff</code>, a translator that would convert the C/A/T output from
+early-vintage <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> to a form suitable for
+Versatec and Benson-Varian plotters.</p>
+<h5 class="footnote-body-heading"><a id="FOOT89" href="Operators-in-Conditionals.html#DOCF89">(89)</a></h5>
+<p>Strictly, letters not otherwise recognized <em class="emph">are</em> treated
+as output comparison delimiters. For portability, it is wise to avoid
+using letters not in the list above; for example, Plan&nbsp;9
+<code class="code">troff</code> uses &lsquo;<samp class="samp">h</samp>&rsquo; to test a mode it calls <code class="code">htmlroff</code>, and
+GNU <code class="code">troff</code> may provide additional operators in the future.</p>
+<h5 class="footnote-body-heading"><a id="FOOT90" href="Operators-in-Conditionals.html#DOCF90">(90)</a></h5>
+<p>Because formatting of the comparands takes place
+in a dummy environment, vertical motions within them cannot spring
+traps.</p>
+<h5 class="footnote-body-heading"><a id="FOOT91" href="Operators-in-Conditionals.html#DOCF91">(91)</a></h5>
+<p>All
+of this is to say that the lists of output nodes created by formatting
+<var class="var">xxx</var> and <var class="var">yyy</var> must be identical. See <a class="xref" href="Gtroff-Internals.html"><code class="code">gtroff</code> Internals</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT92" href="Operators-in-Conditionals.html#DOCF92">(92)</a></h5>
+<p>This bizarre behavior maintains compatibility with
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT93" href="Conditional-Blocks.html#DOCF93">(93)</a></h5>
+<p>See <a class="xref" href="while.html">while</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT94" href="while.html#DOCF94">(94)</a></h5>
+<p>See <a class="xref" href="Copy-Mode.html">Copy Mode</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT95" href="while.html#DOCF95">(95)</a></h5>
+<p>unless you redefine it</p>
+<h5 class="footnote-body-heading"><a id="FOOT96" href="while.html#DOCF96">(96)</a></h5>
+<p>&ldquo;somewhat less&rdquo; because
+things other than macro calls can be on the input stack</p>
+<h5 class="footnote-body-heading"><a id="FOOT97" href="Writing-Macros.html#DOCF97">(97)</a></h5>
+<p>See <a class="xref" href="Copy-Mode.html">Copy Mode</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT98" href="Writing-Macros.html#DOCF98">(98)</a></h5>
+<p>While it is possible to define and
+call a macro &lsquo;<samp class="samp">.</samp>&rsquo;, you can&rsquo;t use it as an end macro: during a macro
+definition, &lsquo;<samp class="samp">..</samp>&rsquo; is never handled as calling &lsquo;<samp class="samp">.</samp>&rsquo;, even if
+&lsquo;<samp class="samp">.de <var class="var">name</var> .</samp>&rsquo; explicitly precedes it.</p>
+<h5 class="footnote-body-heading"><a id="FOOT99" href="Writing-Macros.html#DOCF99">(99)</a></h5>
+<p>Its structure is
+adapted from, and isomorphic to, part of a solution by Tadziu Hoffman to
+the problem of reflowing text multiple times to find an optimal
+configuration for it.
+<a class="uref" href="https://lists.gnu.org/archive/html/groff/2008-12/msg00006.html">https://lists.gnu.org/archive/html/groff/2008-12/msg00006.html</a></p>
+<h5 class="footnote-body-heading"><a id="FOOT100" href="Parameters.html#DOCF100">(100)</a></h5>
+<p>If they were not,
+parameter interpolations would be similar to command-line
+parameters&mdash;fixed for the entire duration of a <code class="code">roff</code> program&rsquo;s
+run. The advantage of interpolating <code class="code">\$</code> escape sequences even in
+copy mode is that they can interpolate different contents from one call
+to the next, like function parameters in a procedural language. The
+additional escape character is the price of this power.</p>
+<h5 class="footnote-body-heading"><a id="FOOT101" href="Copy-Mode.html#DOCF101">(101)</a></h5>
+<p>Compare this to the <code class="code">\def</code> and <code class="code">\edef</code>
+commands in TeX.</p>
+<h5 class="footnote-body-heading"><a id="FOOT102" href="Copy-Mode.html#DOCF102">(102)</a></h5>
+<p>These are lightly adapted from the <code class="code">groff</code>
+implementation of the <samp class="file">ms</samp> macros.</p>
+<h5 class="footnote-body-heading"><a id="FOOT103" href="Page-Motions.html#DOCF103">(103)</a></h5>
+<p>At the
+<code class="code">grops</code> defaults of 10-point type on 12-point vertical spacing, the
+difference between half a vee and half an em can be subtle: large
+spacings like &lsquo;<samp class="samp">.vs .5i</samp>&rsquo; make it obvious.</p>
+<h5 class="footnote-body-heading"><a id="FOOT104" href="Page-Motions.html#DOCF104">(104)</a></h5>
+<p>See <a class="xref" href="Strings.html">Strings</a>, for an explanation of the trailing
+&lsquo;<samp class="samp">\&quot;</samp>&rsquo;.</p>
+<h5 class="footnote-body-heading"><a id="FOOT105" href="Drawing-Geometric-Objects.html#DOCF105">(105)</a></h5>
+<p>(<var class="var">hc</var>, <var class="var">vc</var>) is adjusted to the point nearest
+the perpendicular bisector of the arc&rsquo;s chord.</p>
+<h5 class="footnote-body-heading"><a id="FOOT106" href="Page-Location-Traps.html#DOCF106">(106)</a></h5>
+<p>See <a class="xref" href="The-Implicit-Page-Trap.html">The Implicit Page Trap</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT107" href="Page-Location-Traps.html#DOCF107">(107)</a></h5>
+<p>A trap planted at &lsquo;<samp class="samp">20i</samp>&rsquo; or
+&lsquo;<samp class="samp">-30i</samp>&rsquo; will not be sprung on a page of length &lsquo;<samp class="samp">11i</samp>&rsquo;.</p>
+<h5 class="footnote-body-heading"><a id="FOOT108" href="Page-Location-Traps.html#DOCF108">(108)</a></h5>
+<p>It may help to think of each trap location as
+maintaining a queue; <code class="code">wh</code> operates on the head of the queue, and
+<code class="code">ch</code> operates on its tail. Only the trap at the head of the queue
+is visible.</p>
+<h5 class="footnote-body-heading"><a id="FOOT109" href="The-Implicit-Page-Trap.html#DOCF109">(109)</a></h5>
+<p>See <a class="xref" href="Debugging.html">Debugging</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT110" href="The-Implicit-Page-Trap.html#DOCF110">(110)</a></h5>
+<p>See <a class="xref" href="Diversions.html">Diversions</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT111" href="End_002dof_002dinput-Traps.html#DOCF111">(111)</a></h5>
+<p>While processing an
+end-of-input macro, the formatter assumes that the next page break must
+be the last; it goes into &ldquo;sudden death overtime&rdquo;.</p>
+<h5 class="footnote-body-heading"><a id="FOOT112" href="End_002dof_002dinput-Traps.html#DOCF112">(112)</a></h5>
+<p>Another, taken by the <code class="code">groff</code> <code class="code">man</code> macros, is
+to intercept <code class="code">ne</code> requests and wrap <code class="code">bp</code> ones.</p>
+<h5 class="footnote-body-heading"><a id="FOOT113" href="Diversions.html#DOCF113">(113)</a></h5>
+<p>Thus, the &ldquo;water&rdquo;
+gets &ldquo;higher&rdquo; proceeding <em class="emph">down</em> the page.</p>
+<h5 class="footnote-body-heading"><a id="FOOT114" href="Punning-Names.html#DOCF114">(114)</a></h5>
+<p>The backslash is doubled. See <a class="xref" href="Copy-Mode.html">Copy Mode</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT115" href="Postprocessor-Access.html#DOCF115">(115)</a></h5>
+<p>that is, ISO&nbsp;646:1991-IRV or,
+popularly, &ldquo;US-ASCII&rdquo;</p>
+<h5 class="footnote-body-heading"><a id="FOOT116" href="Postprocessor-Access.html#DOCF116">(116)</a></h5>
+<p>They are bypassed because these parameters are not
+rendered as glyphs in the output; instead, they remain abstract
+characters&mdash;in a PDF bookmark or a URL, for example.</p>
+<h5 class="footnote-body-heading"><a id="FOOT117" href="Miscellaneous.html#DOCF117">(117)</a></h5>
+<p>Recall <a class="ref" href="Line-Layout.html">Line Layout</a>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT118" href="Miscellaneous.html#DOCF118">(118)</a></h5>
+<p>Historically,
+tools named <code class="command">nrchbar</code> and <code class="command">changebar</code> were developed for
+marking changes with margin characters and could be found in archives of
+the <code class="code">comp.sources.unix</code> <abbr class="acronym">USENET</abbr> group. Some proprietary
+Unices also offer(ed) a <code class="command">diffmk</code> program.</p>
+<h5 class="footnote-body-heading"><a id="FOOT119" href="Gtroff-Internals.html#DOCF119">(119)</a></h5>
+<p>Except the
+escape sequences <code class="code">\f</code>, <code class="code">\F</code>, <code class="code">\H</code>, <code class="code">\m</code>, <code class="code">\M</code>,
+<code class="code">\R</code>, <code class="code">\s</code>, and <code class="code">\S</code>, which are processed immediately if
+not in copy mode.</p>
+<h5 class="footnote-body-heading"><a id="FOOT120" href="Compatibility-Mode.html#DOCF120">(120)</a></h5>
+<p>The
+Graphic Systems C/A/T phototypesetter (the original device target for
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>) supported only a few discrete type sizes
+in the range 6&ndash;36 points, so Ossanna contrived a special case in the
+parser to do what the user must have meant. Kernighan warned of this in
+the 1992 revision of CSTR&nbsp;#54 (§2.3), and more recently, McIlroy
+referred to it as a &ldquo;living fossil&rdquo;.</p>
+<h5 class="footnote-body-heading"><a id="FOOT121" href="Other-Differences.html#DOCF121">(121)</a></h5>
+<p>DWB&nbsp;3.3, Solaris, Heirloom Doctools, and
+Plan&nbsp;9 <code class="code">troff</code> all support it.</p>
+<h5 class="footnote-body-heading"><a id="FOOT122" href="Other-Differences.html#DOCF122">(122)</a></h5>
+<p>Naturally, if you&rsquo;ve changed
+the escape character, you need to prefix the <code class="code">e</code> with whatever it
+is&mdash;and you&rsquo;ll likely get something other than a backslash in the
+output.</p>
+<h5 class="footnote-body-heading"><a id="FOOT123" href="Other-Differences.html#DOCF123">(123)</a></h5>
+<p>The <code class="code">rs</code> special character identifier was not
+defined in <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>&rsquo;s font description files, but is
+in those of its lineal descendant, Heirloom Doctools <code class="code">troff</code>, as of
+the latter&rsquo;s 060716 release (July 2006).</p>
+<h5 class="footnote-body-heading"><a id="FOOT124" href="gtroff-Output.html#DOCF124">(124)</a></h5>
+<p>The parser
+and postprocessor for intermediate output can be found in the file<br>
+<samp class="file"><var class="var">groff-source-dir</var>/src/libs/libdriver/input.cpp</samp>.</p>
+<h5 class="footnote-body-heading"><a id="FOOT125" href="Device-and-Font-Description-Files.html#DOCF125">(125)</a></h5>
+<p>Plan&nbsp;9 <code class="code">troff</code> has also abandoned the binary
+format.</p>
+<h5 class="footnote-body-heading"><a id="FOOT126" href="Font-Description-File-Format.html#DOCF126">(126)</a></h5>
+<p>800-point type
+is not practical for most purposes, but using it enables the quantities
+in the font description files to be expressed as integers.</p>
+<h5 class="footnote-body-heading"><a id="FOOT127" href="Font-Description-File-Format.html#DOCF127">(127)</a></h5>
+<p><code class="code">groff</code> requests and escape sequences
+interpret non-negative font names as mounting positions instead.
+Further, a font named &lsquo;<samp class="samp">0</samp>&rsquo; cannot be automatically mounted by the
+<code class="code">fonts</code> directive of a <samp class="file">DESC</samp> file.</p>
+<h5 class="footnote-body-heading"><a id="FOOT128" href="Font-Description-File-Format.html#DOCF128">(128)</a></h5>
+<p>For typesetter devices, this directive is misnamed
+since it starts a list of glyphs, not characters.</p>
+<h5 class="footnote-body-heading"><a id="FOOT129" href="Font-Description-File-Format.html#DOCF129">(129)</a></h5>
+<p>that is, any integer parsable by the C
+standard library&rsquo;s <cite class="cite">strtol<span class="r">(3)</span></cite> function</p>
+</div><hr>
+<div class="nav-panel">
+<p>
+ &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/gtroff-Output.html b/doc/groff.html.node/gtroff-Output.html
new file mode 100644
index 0000000..cab0daf
--- /dev/null
+++ b/doc/groff.html.node/gtroff-Output.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>gtroff Output (The GNU Troff Manual)</title>
+
+<meta name="description" content="gtroff Output (The GNU Troff Manual)">
+<meta name="keywords" content="gtroff Output (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="File-Formats.html" rel="up" title="File Formats">
+<link href="Device-and-Font-Description-Files.html" rel="next" title="Device and Font Description Files">
+<link href="File-Formats.html" rel="prev" title="File Formats">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="gtroff-Output">
+<div class="nav-panel">
+<p>
+Next: <a href="Device-and-Font-Description-Files.html" accesskey="n" rel="next">Device and Font Description Files</a>, Previous: <a href="File-Formats.html" accesskey="p" rel="prev">File Formats</a>, Up: <a href="File-Formats.html" accesskey="u" rel="up">File Formats</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="gtroff-Output-1">6.1 <code class="code">gtroff</code> Output</h3>
+<a class="index-entry-id" id="index-gtroff_002c-output"></a>
+<a class="index-entry-id" id="index-output_002c-gtroff"></a>
+
+<p>This section describes the <code class="code">groff</code> intermediate output format
+produced by GNU <code class="code">troff</code>.
+</p>
+<p>As <code class="code">groff</code> is a wrapper program around GNU <code class="code">troff</code> and
+automatically calls an output driver (or &ldquo;postprocessor&rdquo;), this output
+does not show up normally. This is why it is called
+<em class="emph">intermediate</em>. <code class="code">groff</code> provides the option <samp class="option">-Z</samp> to
+inhibit postprocessing such that the produced intermediate output is
+sent to standard output just as it is when calling GNU <code class="code">troff</code>
+directly.
+</p>
+<a class="index-entry-id" id="index-troff-output"></a>
+<a class="index-entry-id" id="index-output_002c-troff"></a>
+<a class="index-entry-id" id="index-intermediate-output"></a>
+<a class="index-entry-id" id="index-output_002c-intermediate"></a>
+<p>Here, the term <em class="dfn">troff output</em> describes what is output by
+GNU <code class="code">troff</code>, while <em class="dfn">intermediate output</em> refers to the language
+that is accepted by the parser that prepares this output for the output
+drivers. This parser handles whitespace more flexibly than
+<abbr class="acronym">AT&amp;T</abbr>&rsquo;s implementation and implements obsolete elements for
+compatibility; otherwise, both formats are the same.<a class="footnote" id="DOCF124" href="groff.html_fot.html#FOOT124"><sup>124</sup></a>
+</p>
+<p>The main purpose of the intermediate output concept is to facilitate the
+development of postprocessors by providing a common programming
+interface for all devices. It has a language of its own that is
+completely different from the <code class="code">gtroff</code> language. While the
+<code class="code">gtroff</code> language is a high-level programming language for text
+processing, the intermediate output language is a kind of low-level
+assembler language by specifying all positions on the page for writing
+and drawing.
+</p>
+<p>The intermediate output produced by <code class="code">gtroff</code> is fairly readable,
+while output from <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> is rather hard to
+understand because of strange habits that are still supported, but not
+used any longer by <code class="code">gtroff</code>.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="Language-Concepts.html" accesskey="1">Language Concepts</a></li>
+<li><a href="Command-Reference.html" accesskey="2">Command Reference</a></li>
+<li><a href="Intermediate-Output-Examples.html" accesskey="3">Intermediate Output Examples</a></li>
+<li><a href="Output-Language-Compatibility.html" accesskey="4">Output Language Compatibility</a></li>
+</ul>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Device-and-Font-Description-Files.html">Device and Font Description Files</a>, Previous: <a href="File-Formats.html">File Formats</a>, Up: <a href="File-Formats.html">File Formats</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/if_002delse.html b/doc/groff.html.node/if_002delse.html
new file mode 100644
index 0000000..3c67fa9
--- /dev/null
+++ b/doc/groff.html.node/if_002delse.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>if-else (The GNU Troff Manual)</title>
+
+<meta name="description" content="if-else (The GNU Troff Manual)">
+<meta name="keywords" content="if-else (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditionals-and-Loops.html" rel="up" title="Conditionals and Loops">
+<link href="while.html" rel="next" title="while">
+<link href="Operators-in-Conditionals.html" rel="prev" title="Operators in Conditionals">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="if_002delse">
+<div class="nav-panel">
+<p>
+Next: <a href="while.html" accesskey="n" rel="next">while</a>, Previous: <a href="Operators-in-Conditionals.html" accesskey="p" rel="prev">Operators in Conditionals</a>, Up: <a href="Conditionals-and-Loops.html" accesskey="u" rel="up">Conditionals and Loops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="if_002delse-1">5.23.3 if-else</h4>
+<a class="index-entry-id" id="index-if_002delse"></a>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eie"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ie</code></strong> <var class="def-var-arguments">cond-expr anything</var><a class="copiable-link" href='#index-_002eie'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ie"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_002eel"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.el</code></strong> <var class="def-var-arguments">anything</var><a class="copiable-link" href='#index-_002eel'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-el"></a>
+<p>Use the <code class="code">ie</code> and <code class="code">el</code> requests to write an if-then-else. The
+first request is the &ldquo;if&rdquo; part and the latter is the &ldquo;else&rdquo; part.
+Unusually among programming languages, any number of non-conditional
+requests may be interposed between the <code class="code">ie</code> branch and the
+<code class="code">el</code> branch.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 0
+.ie \na a is non-zero.
+.nr a +1
+.el a was not positive but is now \na.
+ &rArr; a was not positive but is now 1.
+</pre></div></div>
+
+<p>Another way in which <code class="code">el</code> is an ordinary request is that it does
+not lexically &ldquo;bind&rdquo; more tightly to its <code class="code">ie</code> counterpart than it
+does to any other request. This fact can surprise C programmers.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 1
+.nr z 0
+.ie \nz \
+. ie \na a is true
+. el a is false
+.el z is false
+ error&rarr; warning: unbalanced 'el' request
+ &rArr; a is false
+</pre></div></div>
+
+<p>To conveniently nest conditionals, keep reading.
+</p>
+</dd></dl>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/if_002dthen.html b/doc/groff.html.node/if_002dthen.html
new file mode 100644
index 0000000..e2fba2b
--- /dev/null
+++ b/doc/groff.html.node/if_002dthen.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>if-then (The GNU Troff Manual)</title>
+
+<meta name="description" content="if-then (The GNU Troff Manual)">
+<meta name="keywords" content="if-then (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditionals-and-Loops.html" rel="up" title="Conditionals and Loops">
+<link href="if_002delse.html" rel="next" title="if-else">
+<link href="Operators-in-Conditionals.html" rel="prev" title="Operators in Conditionals">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="if_002dthen">
+<div class="nav-panel">
+<p>
+Next: <a href="if_002delse.html" accesskey="n" rel="next">if-else</a>, Previous: <a href="Operators-in-Conditionals.html" accesskey="p" rel="prev">Operators in Conditionals</a>, Up: <a href="Conditionals-and-Loops.html" accesskey="u" rel="up">Conditionals and Loops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="if_002dthen-1">5.23.2 if-then</h4>
+<a class="index-entry-id" id="index-if_002dthen"></a>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eif"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.if</code></strong> <var class="def-var-arguments">cond-expr anything</var><a class="copiable-link" href='#index-_002eif'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-if"></a>
+<p>Evaluate the conditional expression <var class="var">cond-expr</var>, and if it evaluates
+true (or to a positive value), interpret the remainder of the line
+<var class="var">anything</var> as if it were an input line. Recall from <a class="ref" href="Invoking-Requests.html">Invoking Requests</a> that any quantity of spaces between arguments to requests
+serves only to separate them; leading spaces in <var class="var">anything</var> are thus
+not seen. <var class="var">anything</var> effectively <em class="emph">cannot</em> be omitted; if
+<var class="var">cond-expr</var> is true and <var class="var">anything</var> is empty, the newline at the
+end of the control line is interpreted as a blank input line (and
+therefore a blank text line).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">super\c
+tanker
+.nr force-word-break 1
+super\c
+.if ((\n[force-word-break] = 1) &amp; \n[.int])
+tanker
+ &rArr; supertanker super tanker
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enop"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nop</code></strong> <var class="def-var-arguments">anything</var><a class="copiable-link" href='#index-_002enop'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nop"></a>
+<p>Interpret <var class="var">anything</var> as if it were an input line. This is similar
+to &lsquo;<samp class="samp">.if&nbsp;1</samp>&rsquo;. <code class="code">nop</code> is not really &ldquo;no operation&rdquo;; its
+argument <em class="emph">is</em> processed&mdash;unconditionally. It can be used to cause
+text lines to share indentation with surrounding control lines.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.als real-MAC MAC
+.de wrapped-MAC
+. tm MAC: called with arguments \\$@
+. nop \\*[real-MAC]\\
+..
+.als MAC wrapped-MAC
+\# Later...
+.als MAC real-MAC
+</pre></div></div>
+
+<p>In the above, we&rsquo;ve used aliasing, <code class="code">nop</code>, and the interpolation of
+a macro as a string to interpose a wrapper around the macro &lsquo;<samp class="samp">MAC</samp>&rsquo;
+(perhaps to debug it).
+</p></dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="if_002delse.html">if-else</a>, Previous: <a href="Operators-in-Conditionals.html">Operators in Conditionals</a>, Up: <a href="Conditionals-and-Loops.html">Conditionals and Loops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/index.html b/doc/groff.html.node/index.html
new file mode 100644
index 0000000..d1b9973
--- /dev/null
+++ b/doc/groff.html.node/index.html
@@ -0,0 +1,453 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>Top (The GNU Troff Manual)</title>
+
+<meta name="description" content="Top (The GNU Troff Manual)">
+<meta name="keywords" content="Top (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="#Top" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="../dir_html/index.html" rel="up" title="(dir)">
+<link href="Introduction.html" rel="next" title="Introduction">
+<link href="../dir_html/index.html" rel="prev" title="(dir)">
+<style type="text/css">
+<!--
+ul.toc-numbered-mark {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="top-level-extent" id="Top">
+<div class="nav-panel">
+<p>
+Next: <a href="Introduction.html" accesskey="n" rel="next">Introduction</a>, Previous: <a href="../dir_html/index.html" accesskey="p" rel="prev">(dir)</a>, Up: <a href="../dir_html/index.html" accesskey="u" rel="up">(dir)</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h1 class="top" id="GNU-troff">GNU <code class="code">troff</code></h1>
+
+
+<p>This manual documents GNU <code class="code">troff</code> version 1.23.0.
+</p>
+<p>Copyright &copy; 1994&ndash;2023 Free Software Foundation, Inc.
+</p>
+<blockquote class="quotation">
+<p>Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled &ldquo;GNU Free
+Documentation License&rdquo;.
+</p></blockquote>
+
+
+
+
+
+<div class="element-contents" id="SEC_Contents">
+<h2 class="contents-heading">Table of Contents</h2>
+
+<div class="contents">
+
+<ul class="toc-numbered-mark">
+ <li><a id="toc-Introduction-1" href="Introduction.html">1 Introduction</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Background-1" href="Background.html">1.1 Background</a></li>
+ <li><a id="toc-What-Is-groff_003f-1" href="What-Is-groff_003f.html">1.2 What Is <code class="code">groff</code>?</a></li>
+ <li><a id="toc-groff-Capabilities-1" href="groff-Capabilities.html">1.3 <code class="code">groff</code> Capabilities</a></li>
+ <li><a id="toc-Macro-Packages-1" href="Macro-Package-Intro.html">1.4 Macro Packages</a></li>
+ <li><a id="toc-Preprocessors" href="Preprocessor-Intro.html">1.5 Preprocessors</a></li>
+ <li><a id="toc-Output-Devices" href="Output-Device-Intro.html">1.6 Output Devices</a></li>
+ <li><a id="toc-Installation-1" href="Installation.html">1.7 Installation</a></li>
+ <li><a id="toc-Conventions-Used-in-This-Manual-1" href="Conventions-Used-in-This-Manual.html">1.8 Conventions Used in This Manual</a></li>
+ <li><a id="toc-Credits-1" href="Credits.html">1.9 Credits</a></li>
+ </ul></li>
+ <li><a id="toc-Invoking-groff-1" href="Invoking-groff.html">2 Invoking <code class="code">groff</code></a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Options" href="Groff-Options.html">2.1 Options</a></li>
+ <li><a id="toc-Environment-1" href="Environment.html">2.2 Environment</a></li>
+ <li><a id="toc-Macro-Directories-1" href="Macro-Directories.html">2.3 Macro Directories</a></li>
+ <li><a id="toc-Font-Directories-1" href="Font-Directories.html">2.4 Font Directories</a></li>
+ <li><a id="toc-Paper-Format-1" href="Paper-Format.html">2.5 Paper Format</a></li>
+ <li><a id="toc-Invocation-Examples-1" href="Invocation-Examples.html">2.6 Invocation Examples</a></li>
+ </ul></li>
+ <li><a id="toc-Tutorial-for-Macro-Users-1" href="Tutorial-for-Macro-Users.html">3 Tutorial for Macro Users</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Basics-1" href="Basics.html">3.1 Basics</a></li>
+ <li><a id="toc-Common-Features-1" href="Common-Features.html">3.2 Common Features</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Paragraphs-1" href="Paragraphs.html">3.2.1 Paragraphs</a></li>
+ <li><a id="toc-Sections-and-Chapters-1" href="Sections-and-Chapters.html">3.2.2 Sections and Chapters</a></li>
+ <li><a id="toc-Headers-and-Footers-1" href="Headers-and-Footers.html">3.2.3 Headers and Footers</a></li>
+ <li><a id="toc-Page-Layout-1" href="Page-Layout-Adjustment.html">3.2.4 Page Layout</a></li>
+ <li><a id="toc-Displays-and-Keeps-1" href="Displays-and-Keeps.html">3.2.5 Displays and Keeps</a></li>
+ <li><a id="toc-Footnotes-and-Endnotes-1" href="Footnotes-and-Endnotes.html">3.2.6 Footnotes and Endnotes</a></li>
+ <li><a id="toc-Table-of-Contents-1" href="Table-of-Contents.html">3.2.7 Table of Contents</a></li>
+ <li><a id="toc-Indexing-1" href="Indexing.html">3.2.8 Indexing</a></li>
+ <li><a id="toc-Document-Formats-1" href="Document-Formats.html">3.2.9 Document Formats</a></li>
+ <li><a id="toc-Columnation-1" href="Columnation.html">3.2.10 Columnation</a></li>
+ <li><a id="toc-Font-and-Size-Changes-1" href="Font-and-Size-Changes.html">3.2.11 Font and Size Changes</a></li>
+ <li><a id="toc-Predefined-Text-1" href="Predefined-Text.html">3.2.12 Predefined Text</a></li>
+ <li><a id="toc-Preprocessor-Support-1" href="Preprocessor-Support.html">3.2.13 Preprocessor Support</a></li>
+ <li><a id="toc-Configuration-and-Customization-1" href="Configuration-and-Customization.html">3.2.14 Configuration and Customization</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a id="toc-Macro-Packages-2" href="Major-Macro-Packages.html">4 Macro Packages</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-man-1" href="man.html">4.1 <samp class="file">man</samp></a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Optional-man-extensions-1" href="Optional-man-extensions.html">4.1.1 Optional <samp class="file">man</samp> extensions</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Custom-headers-and-footers" href="Optional-man-extensions.html#Custom-headers-and-footers">Custom headers and footers</a></li>
+ <li><a id="toc-Ultrix_002dspecific-man-macros" href="Optional-man-extensions.html#Ultrix_002dspecific-man-macros">Ultrix-specific man macros</a></li>
+ <li><a id="toc-Simple-example" href="Optional-man-extensions.html#Simple-example">Simple example</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a id="toc-mdoc-1" href="mdoc.html">4.2 <samp class="file">mdoc</samp></a></li>
+ <li><a id="toc-me-1" href="me.html">4.3 <samp class="file">me</samp></a></li>
+ <li><a id="toc-mm-1" href="mm.html">4.4 <samp class="file">mm</samp></a></li>
+ <li><a id="toc-mom-1" href="mom.html">4.5 <samp class="file">mom</samp></a></li>
+ <li><a id="toc-ms-1" href="ms.html">4.6 <samp class="file">ms</samp></a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Introduction-2" href="ms-Introduction.html">4.6.1 Introduction</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Basic-information" href="ms-basic-information.html">4.6.1.1 Basic information</a></li>
+ </ul></li>
+ <li><a id="toc-Document-Structure" href="ms-Document-Structure.html">4.6.2 Document Structure</a></li>
+ <li><a id="toc-Document-Control-Settings" href="ms-Document-Control-Settings.html">4.6.3 Document Control Settings</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Margin-settings" href="ms-Document-Control-Settings.html#Margin-settings">Margin settings</a></li>
+ <li><a id="toc-Titles-_0028headers_002c-footers_0029" href="ms-Document-Control-Settings.html#Titles-_0028headers_002c-footers_0029">Titles (headers, footers)</a></li>
+ <li><a id="toc-Text-settings" href="ms-Document-Control-Settings.html#Text-settings">Text settings</a></li>
+ <li><a id="toc-Paragraph-settings" href="ms-Document-Control-Settings.html#Paragraph-settings">Paragraph settings</a></li>
+ <li><a id="toc-Heading-settings" href="ms-Document-Control-Settings.html#Heading-settings">Heading settings</a></li>
+ <li><a id="toc-Footnote-settings" href="ms-Document-Control-Settings.html#Footnote-settings">Footnote settings</a></li>
+ <li><a id="toc-Display-settings" href="ms-Document-Control-Settings.html#Display-settings">Display settings</a></li>
+ <li><a id="toc-Other-settings" href="ms-Document-Control-Settings.html#Other-settings">Other settings</a></li>
+ </ul></li>
+ <li><a id="toc-Document-Description-Macros" href="ms-Document-Description-Macros.html">4.6.4 Document Description Macros</a></li>
+ <li><a id="toc-Body-Text" href="ms-Body-Text.html">4.6.5 Body Text</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Text-settings-1" href="Text-settings-in-ms.html">4.6.5.1 Text settings</a></li>
+ <li><a id="toc-Typographical-symbols" href="Typographical-symbols-in-ms.html">4.6.5.2 Typographical symbols</a></li>
+ <li><a id="toc-Paragraphs-2" href="Paragraphs-in-ms.html">4.6.5.3 Paragraphs</a></li>
+ <li><a id="toc-Headings" href="Headings-in-ms.html">4.6.5.4 Headings</a></li>
+ <li><a id="toc-Typeface-and-decoration-1" href="Typeface-and-decoration.html">4.6.5.5 Typeface and decoration</a></li>
+ <li><a id="toc-Lists" href="Lists-in-ms.html">4.6.5.6 Lists</a></li>
+ <li><a id="toc-Indented-regions" href="Indented-regions-in-ms.html">4.6.5.7 Indented regions</a></li>
+ <li><a id="toc-Keeps_002c-boxed-keeps_002c-and-displays" href="ms-keeps-and-displays.html">4.6.5.8 Keeps, boxed keeps, and displays</a></li>
+ <li><a id="toc-Tables_002c-figures_002c-equations_002c-and-references" href="ms-Insertions.html">4.6.5.9 Tables, figures, equations, and references</a></li>
+ <li><a id="toc-Footnotes" href="ms-Footnotes.html">4.6.5.10 Footnotes</a></li>
+ <li><a id="toc-Language-and-localization" href="ms-language-and-localization.html">4.6.5.11 Language and localization</a></li>
+ </ul></li>
+ <li><a id="toc-Page-layout" href="ms-Page-Layout.html">4.6.6 Page layout</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Headers-and-footers" href="ms-Headers-and-Footers.html">4.6.6.1 Headers and footers</a></li>
+ <li><a id="toc-Tab-stops" href="Tab-Stops-in-ms.html">4.6.6.2 Tab stops</a></li>
+ <li><a id="toc-Margins" href="ms-Margins.html">4.6.6.3 Margins</a></li>
+ <li><a id="toc-Multiple-columns" href="ms-Multiple-Columns.html">4.6.6.4 Multiple columns</a></li>
+ <li><a id="toc-Creating-a-table-of-contents" href="ms-TOC.html">4.6.6.5 Creating a table of contents</a></li>
+ </ul></li>
+ <li><a id="toc-Differences-from-AT_0026T-ms-1" href="Differences-from-AT_0026T-ms.html">4.6.7 Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Unix-Version-7-ms-macros-not-implemented-by-groff-ms" href="Missing-Unix-Version-7-ms-Macros.html">4.6.7.1 Unix Version 7 <samp class="file">ms</samp> macros not implemented by <code class="code">groff</code> <samp class="file">ms</samp></a></li>
+ </ul></li>
+ <li><a id="toc-Legacy-Features" href="ms-Legacy-Features.html">4.6.8 Legacy Features</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-AT_0026T-accent-mark-strings" href="ms-Legacy-Features.html#AT_0026T-accent-mark-strings">AT&amp;T accent mark strings</a></li>
+ <li><a id="toc-Berkeley-accent-mark-and-glyph-strings" href="ms-Legacy-Features.html#Berkeley-accent-mark-and-glyph-strings">Berkeley accent mark and glyph strings</a></li>
+ </ul></li>
+ <li><a id="toc-Naming-Conventions" href="ms-Naming-Conventions.html">4.6.9 Naming Conventions</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a id="toc-GNU-troff-Reference-1" href="GNU-troff-Reference.html">5 GNU <code class="code">troff</code> Reference</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Text-1" href="Text.html">5.1 Text</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Filling-1" href="Filling.html">5.1.1 Filling</a></li>
+ <li><a id="toc-Sentences-1" href="Sentences.html">5.1.2 Sentences</a></li>
+ <li><a id="toc-Hyphenation-1" href="Hyphenation.html">5.1.3 Hyphenation</a></li>
+ <li><a id="toc-Breaking-1" href="Breaking.html">5.1.4 Breaking</a></li>
+ <li><a id="toc-Adjustment-1" href="Adjustment.html">5.1.5 Adjustment</a></li>
+ <li><a id="toc-Tabs-and-Leaders-1" href="Tabs-and-Leaders.html">5.1.6 Tabs and Leaders</a></li>
+ <li><a id="toc-Requests-and-Macros-1" href="Requests-and-Macros.html">5.1.7 Requests and Macros</a></li>
+ <li><a id="toc-Macro-Packages-3" href="Macro-Packages.html">5.1.8 Macro Packages</a></li>
+ <li><a id="toc-Input-Encodings-1" href="Input-Encodings.html">5.1.9 Input Encodings</a></li>
+ <li><a id="toc-Input-Conventions-1" href="Input-Conventions.html">5.1.10 Input Conventions</a></li>
+ </ul></li>
+ <li><a id="toc-Page-Geometry-1" href="Page-Geometry.html">5.2 Page Geometry</a></li>
+ <li><a id="toc-Measurements-1" href="Measurements.html">5.3 Measurements</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Motion-Quanta-1" href="Motion-Quanta.html">5.3.1 Motion Quanta</a></li>
+ <li><a id="toc-Default-Units-1" href="Default-Units.html">5.3.2 Default Units</a></li>
+ </ul></li>
+ <li><a id="toc-Numeric-Expressions-1" href="Numeric-Expressions.html">5.4 Numeric Expressions</a></li>
+ <li><a id="toc-Identifiers-1" href="Identifiers.html">5.5 Identifiers</a></li>
+ <li><a id="toc-Formatter-Instructions-1" href="Formatter-Instructions.html">5.6 Formatter Instructions</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Control-Characters-1" href="Control-Characters.html">5.6.1 Control Characters</a></li>
+ <li><a id="toc-Invoking-Requests-1" href="Invoking-Requests.html">5.6.2 Invoking Requests</a></li>
+ <li><a id="toc-Calling-Macros-1" href="Calling-Macros.html">5.6.3 Calling Macros</a></li>
+ <li><a id="toc-Using-Escape-Sequences-1" href="Using-Escape-Sequences.html">5.6.4 Using Escape Sequences</a></li>
+ <li><a id="toc-Delimiters-1" href="Delimiters.html">5.6.5 Delimiters</a></li>
+ </ul></li>
+ <li><a id="toc-Comments-1" href="Comments.html">5.7 Comments</a></li>
+ <li><a id="toc-Registers-1" href="Registers.html">5.8 Registers</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Setting-Registers-1" href="Setting-Registers.html">5.8.1 Setting Registers</a></li>
+ <li><a id="toc-Interpolating-Registers-1" href="Interpolating-Registers.html">5.8.2 Interpolating Registers</a></li>
+ <li><a id="toc-Auto_002dincrement-1" href="Auto_002dincrement.html">5.8.3 Auto-increment</a></li>
+ <li><a id="toc-Assigning-Register-Formats-1" href="Assigning-Register-Formats.html">5.8.4 Assigning Register Formats</a></li>
+ <li><a id="toc-Built_002din-Registers-1" href="Built_002din-Registers.html">5.8.5 Built-in Registers</a></li>
+ </ul></li>
+ <li><a id="toc-Manipulating-Filling-and-Adjustment-1" href="Manipulating-Filling-and-Adjustment.html">5.9 Manipulating Filling and Adjustment</a></li>
+ <li><a id="toc-Manipulating-Hyphenation-1" href="Manipulating-Hyphenation.html">5.10 Manipulating Hyphenation</a></li>
+ <li><a id="toc-Manipulating-Spacing-1" href="Manipulating-Spacing.html">5.11 Manipulating Spacing</a></li>
+ <li><a id="toc-Tabs-and-Fields-1" href="Tabs-and-Fields.html">5.12 Tabs and Fields</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Leaders-1" href="Leaders.html">5.12.1 Leaders</a></li>
+ <li><a id="toc-Fields-1" href="Fields.html">5.12.2 Fields</a></li>
+ </ul></li>
+ <li><a id="toc-Character-Translations-1" href="Character-Translations.html">5.13 Character Translations</a></li>
+ <li><a id="toc-troff-and-nroff-Modes-1" href="troff-and-nroff-Modes.html">5.14 <code class="code">troff</code> and <code class="code">nroff</code> Modes</a></li>
+ <li><a id="toc-Line-Layout-1" href="Line-Layout.html">5.15 Line Layout</a></li>
+ <li><a id="toc-Line-Continuation-1" href="Line-Continuation.html">5.16 Line Continuation</a></li>
+ <li><a id="toc-Page-Layout-2" href="Page-Layout.html">5.17 Page Layout</a></li>
+ <li><a id="toc-Page-Control-1" href="Page-Control.html">5.18 Page Control</a></li>
+ <li><a id="toc-Using-Fonts-1" href="Using-Fonts.html">5.19 Using Fonts</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Selecting-Fonts-1" href="Selecting-Fonts.html">5.19.1 Selecting Fonts</a></li>
+ <li><a id="toc-Font-Families-1" href="Font-Families.html">5.19.2 Font Families</a></li>
+ <li><a id="toc-Font-Positions-1" href="Font-Positions.html">5.19.3 Font Positions</a></li>
+ <li><a id="toc-Using-Symbols-1" href="Using-Symbols.html">5.19.4 Using Symbols</a></li>
+ <li><a id="toc-Character-Classes-1" href="Character-Classes.html">5.19.5 Character Classes</a></li>
+ <li><a id="toc-Special-Fonts-1" href="Special-Fonts.html">5.19.6 Special Fonts</a></li>
+ <li><a id="toc-Artificial-Fonts-1" href="Artificial-Fonts.html">5.19.7 Artificial Fonts</a></li>
+ <li><a id="toc-Ligatures-and-Kerning-1" href="Ligatures-and-Kerning.html">5.19.8 Ligatures and Kerning</a></li>
+ <li><a id="toc-Italic-Corrections-1" href="Italic-Corrections.html">5.19.9 Italic Corrections</a></li>
+ <li><a id="toc-Dummy-Characters-1" href="Dummy-Characters.html">5.19.10 Dummy Characters</a></li>
+ </ul></li>
+ <li><a id="toc-Manipulating-Type-Size-and-Vertical-Spacing-1" href="Manipulating-Type-Size-and-Vertical-Spacing.html">5.20 Manipulating Type Size and Vertical Spacing</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Changing-the-Type-Size-1" href="Changing-the-Type-Size.html">5.20.1 Changing the Type Size</a></li>
+ <li><a id="toc-Changing-the-Vertical-Spacing-1" href="Changing-the-Vertical-Spacing.html">5.20.2 Changing the Vertical Spacing</a></li>
+ <li><a id="toc-Using-Fractional-Type-Sizes-1" href="Using-Fractional-Type-Sizes.html">5.20.3 Using Fractional Type Sizes</a></li>
+ </ul></li>
+ <li><a id="toc-Colors-1" href="Colors.html">5.21 Colors</a></li>
+ <li><a id="toc-Strings-1" href="Strings.html">5.22 Strings</a></li>
+ <li><a id="toc-Conditionals-and-Loops-1" href="Conditionals-and-Loops.html">5.23 Conditionals and Loops</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Operators-in-Conditionals-1" href="Operators-in-Conditionals.html">5.23.1 Operators in Conditionals</a></li>
+ <li><a id="toc-if_002dthen-1" href="if_002dthen.html">5.23.2 if-then</a></li>
+ <li><a id="toc-if_002delse-1" href="if_002delse.html">5.23.3 if-else</a></li>
+ <li><a id="toc-Conditional-Blocks-1" href="Conditional-Blocks.html">5.23.4 Conditional Blocks</a></li>
+ <li><a id="toc-while-1" href="while.html">5.23.5 while</a></li>
+ </ul></li>
+ <li><a id="toc-Writing-Macros-1" href="Writing-Macros.html">5.24 Writing Macros</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Parameters-1" href="Parameters.html">5.24.1 Parameters</a></li>
+ <li><a id="toc-Copy-Mode-1" href="Copy-Mode.html">5.24.2 Copy Mode</a></li>
+ </ul></li>
+ <li><a id="toc-Page-Motions-1" href="Page-Motions.html">5.25 Page Motions</a></li>
+ <li><a id="toc-Drawing-Geometric-Objects-1" href="Drawing-Geometric-Objects.html">5.26 Drawing Geometric Objects</a></li>
+ <li><a id="toc-Deferring-Output-1" href="Deferring-Output.html">5.27 Deferring Output</a></li>
+ <li><a id="toc-Traps-1" href="Traps.html">5.28 Traps</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Vertical-Position-Traps-1" href="Vertical-Position-Traps.html">5.28.1 Vertical Position Traps</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Page-Location-Traps-1" href="Page-Location-Traps.html">5.28.1.1 Page Location Traps</a></li>
+ <li><a id="toc-The-Implicit-Page-Trap-1" href="The-Implicit-Page-Trap.html">5.28.1.2 The Implicit Page Trap</a></li>
+ <li><a id="toc-Diversion-Traps-1" href="Diversion-Traps.html">5.28.1.3 Diversion Traps</a></li>
+ </ul></li>
+ <li><a id="toc-Input-Line-Traps-1" href="Input-Line-Traps.html">5.28.2 Input Line Traps</a></li>
+ <li><a id="toc-Blank-Line-Traps-1" href="Blank-Line-Traps.html">5.28.3 Blank Line Traps</a></li>
+ <li><a id="toc-Leading-Space-Traps-1" href="Leading-Space-Traps.html">5.28.4 Leading Space Traps</a></li>
+ <li><a id="toc-End_002dof_002dinput-Traps-1" href="End_002dof_002dinput-Traps.html">5.28.5 End-of-input Traps</a></li>
+ </ul></li>
+ <li><a id="toc-Diversions-1" href="Diversions.html">5.29 Diversions</a></li>
+ <li><a id="toc-Punning-Names-1" href="Punning-Names.html">5.30 Punning Names</a></li>
+ <li><a id="toc-Environments-1" href="Environments.html">5.31 Environments</a></li>
+ <li><a id="toc-Suppressing-Output-1" href="Suppressing-Output.html">5.32 Suppressing Output</a></li>
+ <li><a id="toc-I_002fO-1" href="I_002fO.html">5.33 I/O</a></li>
+ <li><a id="toc-Postprocessor-Access-1" href="Postprocessor-Access.html">5.34 Postprocessor Access</a></li>
+ <li><a id="toc-Miscellaneous-1" href="Miscellaneous.html">5.35 Miscellaneous</a></li>
+ <li><a id="toc-gtroff-Internals" href="Gtroff-Internals.html">5.36 <code class="code">gtroff</code> Internals</a></li>
+ <li><a id="toc-Debugging-1" href="Debugging.html">5.37 Debugging</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Warnings-1" href="Warnings.html">5.37.1 Warnings</a></li>
+ </ul></li>
+ <li><a id="toc-Implementation-Differences-1" href="Implementation-Differences.html">5.38 Implementation Differences</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Safer-Mode-1" href="Safer-Mode.html">5.38.1 Safer Mode</a></li>
+ <li><a id="toc-Compatibility-Mode-1" href="Compatibility-Mode.html">5.38.2 Compatibility Mode</a></li>
+ <li><a id="toc-Other-Differences-1" href="Other-Differences.html">5.38.3 Other Differences</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a id="toc-File-Formats-1" href="File-Formats.html">6 File Formats</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-gtroff-Output-1" href="gtroff-Output.html">6.1 <code class="code">gtroff</code> Output</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Language-Concepts-1" href="Language-Concepts.html">6.1.1 Language Concepts</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Separation-1" href="Separation.html">6.1.1.1 Separation</a></li>
+ <li><a id="toc-Argument-Units-1" href="Argument-Units.html">6.1.1.2 Argument Units</a></li>
+ <li><a id="toc-Document-Parts-1" href="Document-Parts.html">6.1.1.3 Document Parts</a></li>
+ </ul></li>
+ <li><a id="toc-Command-Reference-1" href="Command-Reference.html">6.1.2 Command Reference</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-Comment-Command-1" href="Comment-Command.html">6.1.2.1 Comment Command</a></li>
+ <li><a id="toc-Simple-Commands-1" href="Simple-Commands.html">6.1.2.2 Simple Commands</a></li>
+ <li><a id="toc-Graphics-Commands-1" href="Graphics-Commands.html">6.1.2.3 Graphics Commands</a></li>
+ <li><a id="toc-Device-Control-Commands-1" href="Device-Control-Commands.html">6.1.2.4 Device Control Commands</a></li>
+ <li><a id="toc-Obsolete-Command-1" href="Obsolete-Command.html">6.1.2.5 Obsolete Command</a></li>
+ </ul></li>
+ <li><a id="toc-Intermediate-Output-Examples-1" href="Intermediate-Output-Examples.html">6.1.3 Intermediate Output Examples</a></li>
+ <li><a id="toc-Output-Language-Compatibility-1" href="Output-Language-Compatibility.html">6.1.4 Output Language Compatibility</a></li>
+ </ul></li>
+ <li><a id="toc-Device-and-Font-Description-Files-1" href="Device-and-Font-Description-Files.html">6.2 Device and Font Description Files</a>
+ <ul class="toc-numbered-mark">
+ <li><a id="toc-DESC-File-Format-1" href="DESC-File-Format.html">6.2.1 <samp class="file">DESC</samp> File Format</a></li>
+ <li><a id="toc-Font-Description-File-Format-1" href="Font-Description-File-Format.html">6.2.2 Font Description File Format</a></li>
+ </ul></li>
+ </ul></li>
+ <li><a id="toc-Copying-This-Manual-1" href="Copying-This-Manual.html">Appendix A Copying This Manual</a></li>
+ <li><a id="toc-Request-Index-1" href="Request-Index.html" rel="index">Appendix B Request Index</a></li>
+ <li><a id="toc-Escape-Sequence-Index-1" href="Escape-Sequence-Index.html" rel="index">Appendix C Escape Sequence Index</a></li>
+ <li><a id="toc-Operator-Index-1" href="Operator-Index.html" rel="index">Appendix D Operator Index</a></li>
+ <li><a id="toc-Register-Index-1" href="Register-Index.html" rel="index">Appendix E Register Index</a></li>
+ <li><a id="toc-Macro-Index-1" href="Macro-Index.html" rel="index">Appendix F Macro Index</a></li>
+ <li><a id="toc-String-Index-1" href="String-Index.html" rel="index">Appendix G String Index</a></li>
+ <li><a id="toc-File-Keyword-Index-1" href="File-Keyword-Index.html" rel="index">Appendix H File Keyword Index</a></li>
+ <li><a id="toc-Program-and-File-Index-1" href="Program-and-File-Index.html" rel="index">Appendix I Program and File Index</a></li>
+ <li><a id="toc-Concept-Index-1" href="Concept-Index.html" rel="index">Appendix J Concept Index</a></li>
+</ul>
+</div>
+</div>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Introduction.html" accesskey="n" rel="next">Introduction</a>, Previous: <a href="../dir_html/index.html" accesskey="p" rel="prev">(dir)</a>, Up: <a href="../dir_html/index.html" accesskey="u" rel="up">(dir)</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/man.html b/doc/groff.html.node/man.html
new file mode 100644
index 0000000..93ec854
--- /dev/null
+++ b/doc/groff.html.node/man.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>man (The GNU Troff Manual)</title>
+
+<meta name="description" content="man (The GNU Troff Manual)">
+<meta name="keywords" content="man (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Major-Macro-Packages.html" rel="up" title="Major Macro Packages">
+<link href="mdoc.html" rel="next" title="mdoc">
+<link href="Major-Macro-Packages.html" rel="prev" title="Major Macro Packages">
+<style type="text/css">
+<!--
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="man">
+<div class="nav-panel">
+<p>
+Next: <a href="mdoc.html" accesskey="n" rel="next"><samp class="file">mdoc</samp></a>, Previous: <a href="Major-Macro-Packages.html" accesskey="p" rel="prev">Macro Packages</a>, Up: <a href="Major-Macro-Packages.html" accesskey="u" rel="up">Macro Packages</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="man-1">4.1 <samp class="file">man</samp></h3>
+<a class="index-entry-id" id="index-manual-pages"></a>
+<a class="index-entry-id" id="index-man-pages"></a>
+<a class="index-entry-id" id="index-an_002etmac"></a>
+<a class="index-entry-id" id="index-man_002etmac"></a>
+
+<p>The <code class="code">man</code> macro package is the most widely used and probably the
+most important ever developed for <code class="code">troff</code>. It is easy to use, and
+a vast majority of manual pages (&ldquo;man pages&rdquo;) are written in it.
+</p>
+<p><code class="code">groff</code>&rsquo;s implementation is documented in the
+<cite class="cite">groff_man<span class="r">(7)</span></cite> man page. Type &lsquo;<samp class="samp">man groff_man</samp>&rsquo; at the
+command line to view it.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="Optional-man-extensions.html" accesskey="1">Optional <samp class="file">man</samp> extensions</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/mdoc.html b/doc/groff.html.node/mdoc.html
new file mode 100644
index 0000000..d752098
--- /dev/null
+++ b/doc/groff.html.node/mdoc.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>mdoc (The GNU Troff Manual)</title>
+
+<meta name="description" content="mdoc (The GNU Troff Manual)">
+<meta name="keywords" content="mdoc (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Major-Macro-Packages.html" rel="up" title="Major Macro Packages">
+<link href="me.html" rel="next" title="me">
+<link href="man.html" rel="prev" title="man">
+<style type="text/css">
+<!--
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="mdoc">
+<div class="nav-panel">
+<p>
+Next: <a href="me.html" accesskey="n" rel="next"><samp class="file">me</samp></a>, Previous: <a href="man.html" accesskey="p" rel="prev"><samp class="file">man</samp></a>, Up: <a href="Major-Macro-Packages.html" accesskey="u" rel="up">Macro Packages</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="mdoc-1">4.2 <samp class="file">mdoc</samp></h3>
+<a class="index-entry-id" id="index-mdoc-macros"></a>
+
+<p><code class="code">groff</code>&rsquo;s implementation of the BSD <samp class="file">doc</samp> package for man
+pages is documented in the <cite class="cite">groff_mdoc<span class="r">(7)</span></cite> man page. Type
+&lsquo;<samp class="samp">man groff_mdoc</samp>&rsquo; at the command line to view it.
+</p>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/me.html b/doc/groff.html.node/me.html
new file mode 100644
index 0000000..35da9f2
--- /dev/null
+++ b/doc/groff.html.node/me.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>me (The GNU Troff Manual)</title>
+
+<meta name="description" content="me (The GNU Troff Manual)">
+<meta name="keywords" content="me (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Major-Macro-Packages.html" rel="up" title="Major Macro Packages">
+<link href="mm.html" rel="next" title="mm">
+<link href="mdoc.html" rel="prev" title="mdoc">
+<style type="text/css">
+<!--
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="me">
+<div class="nav-panel">
+<p>
+Next: <a href="mm.html" accesskey="n" rel="next"><samp class="file">mm</samp></a>, Previous: <a href="mdoc.html" accesskey="p" rel="prev"><samp class="file">mdoc</samp></a>, Up: <a href="Major-Macro-Packages.html" accesskey="u" rel="up">Macro Packages</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="me-1">4.3 <samp class="file">me</samp></h3>
+<a class="index-entry-id" id="index-me-macro-package"></a>
+
+<p><code class="code">groff</code>&rsquo;s implementation of the BSD <samp class="file">me</samp> macro package is
+documented using itself. A tutorial, <samp class="file">meintro.me</samp>, and reference,
+<samp class="file">meref.me</samp>, are available in <code class="code">groff</code>&rsquo;s documentation
+directory. A <cite class="cite">groff_me<span class="r">(7)</span></cite> man page is also available and
+identifies the installation path for these documents. Type &lsquo;<samp class="samp">man
+groff_me</samp>&rsquo; at the command line to view it.
+</p>
+<p>A French translation of the tutorial is available as
+<samp class="file">meintro_fr.me</samp> and installed parallel to the English version.
+</p>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/mm.html b/doc/groff.html.node/mm.html
new file mode 100644
index 0000000..38dc3b9
--- /dev/null
+++ b/doc/groff.html.node/mm.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>mm (The GNU Troff Manual)</title>
+
+<meta name="description" content="mm (The GNU Troff Manual)">
+<meta name="keywords" content="mm (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Major-Macro-Packages.html" rel="up" title="Major Macro Packages">
+<link href="mom.html" rel="next" title="mom">
+<link href="me.html" rel="prev" title="me">
+<style type="text/css">
+<!--
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="mm">
+<div class="nav-panel">
+<p>
+Next: <a href="mom.html" accesskey="n" rel="next"><samp class="file">mom</samp></a>, Previous: <a href="me.html" accesskey="p" rel="prev"><samp class="file">me</samp></a>, Up: <a href="Major-Macro-Packages.html" accesskey="u" rel="up">Macro Packages</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="mm-1">4.4 <samp class="file">mm</samp></h3>
+<a class="index-entry-id" id="index-mm-macro-package"></a>
+
+<p><code class="code">groff</code>&rsquo;s implementation of the <abbr class="acronym">AT&amp;T</abbr> memorandum macro
+package is documented in the <cite class="cite">groff_mm<span class="r">(7)</span></cite> man page. Type
+&lsquo;<samp class="samp">man groff_mm</samp>&rsquo; at the command line) to view it.
+</p>
+<p>A Swedish localization of <samp class="file">mm</samp> is also available; see
+<cite class="cite">groff_mmse<span class="r">(7)</span></cite>.
+</p>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/mom.html b/doc/groff.html.node/mom.html
new file mode 100644
index 0000000..6d0840d
--- /dev/null
+++ b/doc/groff.html.node/mom.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>mom (The GNU Troff Manual)</title>
+
+<meta name="description" content="mom (The GNU Troff Manual)">
+<meta name="keywords" content="mom (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Major-Macro-Packages.html" rel="up" title="Major Macro Packages">
+<link href="ms.html" rel="next" title="ms">
+<link href="mm.html" rel="prev" title="mm">
+<style type="text/css">
+<!--
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="mom">
+<div class="nav-panel">
+<p>
+Next: <a href="ms.html" accesskey="n" rel="next"><samp class="file">ms</samp></a>, Previous: <a href="mm.html" accesskey="p" rel="prev"><samp class="file">mm</samp></a>, Up: <a href="Major-Macro-Packages.html" accesskey="u" rel="up">Macro Packages</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="mom-1">4.5 <samp class="file">mom</samp></h3>
+<a class="index-entry-id" id="index-mom-macro-package"></a>
+
+<p>The main documentation files for the <samp class="file">mom</samp> macros are in
+<abbr class="acronym">HTML</abbr> format. Additional, useful documentation is in
+<abbr class="acronym">PDF</abbr> format. See the <cite class="cite">groff<span class="r">(1)</span></cite> man page, section
+&ldquo;Installation Directories&rdquo;, for their location.
+</p>
+<ul class="itemize mark-bullet">
+<li><samp class="file">toc.html</samp>
+Entry point to the full mom manual.
+
+</li><li><samp class="file">macrolist.html</samp>
+Hyperlinked index of macros with brief descriptions, arranged by
+category.
+
+</li><li><samp class="file">mom-pdf.pdf</samp>
+<abbr class="acronym">PDF</abbr> features and usage.
+</li></ul>
+
+<p>The mom macros are in active development between <code class="code">groff</code> releases.
+The most recent version, along with up-to-date documentation, is
+available at <a class="uref" href="http://www.schaffter.ca/mom/mom-05.html">http://www.schaffter.ca/mom/mom-05.html</a>.
+</p>
+<p>The <cite class="cite">groff_mom<span class="r">(7)</span></cite> man page (type &lsquo;<samp class="samp">man groff_mom</samp>&rsquo; at
+the command line) contains a partial list of available macros, however
+their usage is best understood by consulting the <abbr class="acronym">HTML</abbr>
+documentation.
+</p>
+
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Body-Text.html b/doc/groff.html.node/ms-Body-Text.html
new file mode 100644
index 0000000..f2d370b
--- /dev/null
+++ b/doc/groff.html.node/ms-Body-Text.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Body Text (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Body Text (The GNU Troff Manual)">
+<meta name="keywords" content="ms Body Text (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms.html" rel="up" title="ms">
+<link href="ms-Page-Layout.html" rel="next" title="ms Page Layout">
+<link href="ms-Document-Description-Macros.html" rel="prev" title="ms Document Description Macros">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="ms-Body-Text">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Page-Layout.html" accesskey="n" rel="next">Page layout</a>, Previous: <a href="ms-Document-Description-Macros.html" accesskey="p" rel="prev">Document Description Macros</a>, Up: <a href="ms.html" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Body-Text">4.6.5 Body Text</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-body-text"></a>
+
+<p>A variety of macros, registers, and strings can be used to structure and
+style the body of your document. They organize your text into
+paragraphs, headings, footnotes, and inclusions of material such as
+tables and figures.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="Text-settings-in-ms.html" accesskey="1">Text settings</a></li>
+<li><a href="Typographical-symbols-in-ms.html" accesskey="2">Typographical symbols</a></li>
+<li><a href="Paragraphs-in-ms.html" accesskey="3">Paragraphs</a></li>
+<li><a href="Headings-in-ms.html" accesskey="4">Headings</a></li>
+<li><a href="Typeface-and-decoration.html" accesskey="5">Typeface and decoration</a></li>
+<li><a href="Lists-in-ms.html" accesskey="6">Lists</a></li>
+<li><a href="Indented-regions-in-ms.html" accesskey="7">Indented regions</a></li>
+<li><a href="ms-keeps-and-displays.html" accesskey="8">Keeps, boxed keeps, and displays</a></li>
+<li><a href="ms-Insertions.html" accesskey="9">Tables, figures, equations, and references</a></li>
+<li><a href="ms-Footnotes.html">Footnotes</a></li>
+<li><a href="ms-language-and-localization.html">Language and localization</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Document-Control-Settings.html b/doc/groff.html.node/ms-Document-Control-Settings.html
new file mode 100644
index 0000000..ef8f2a4
--- /dev/null
+++ b/doc/groff.html.node/ms-Document-Control-Settings.html
@@ -0,0 +1,524 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Document Control Settings (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Document Control Settings (The GNU Troff Manual)">
+<meta name="keywords" content="ms Document Control Settings (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms.html" rel="up" title="ms">
+<link href="ms-Document-Description-Macros.html" rel="next" title="ms Document Description Macros">
+<link href="ms-Document-Structure.html" rel="prev" title="ms Document Structure">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="ms-Document-Control-Settings">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Document-Description-Macros.html" accesskey="n" rel="next">Document Description Macros</a>, Previous: <a href="ms-Document-Structure.html" accesskey="p" rel="prev">Document Structure</a>, Up: <a href="ms.html" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Document-Control-Settings">4.6.3 Document Control Settings</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-document-control-settings"></a>
+
+<p><samp class="file">ms</samp> exposes many aspects of document layout to user control via
+<code class="code">groff</code> requests. To use them, you must understand how to define
+registers and strings.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enr"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nr</code></strong> <var class="def-var-arguments">reg value</var><a class="copiable-link" href='#index-_002enr'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nr"></a>
+<p>Set register <var class="var">reg</var> to <var class="var">value</var>. If <var class="var">reg</var> doesn&rsquo;t exist, GNU
+<code class="code">troff</code> creates it.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002eds"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.ds</code></strong> <var class="def-var-arguments">name contents</var><a class="copiable-link" href='#index-_002eds'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ds"></a>
+<p>Set string <var class="var">name</var> to <var class="var">contents</var>.
+</p></dd></dl>
+
+<p>A list of document control registers and strings follows. For any
+parameter whose default is unsatisfactory, define its register or string
+before calling any <samp class="file">ms</samp> macro other than <code class="code">RP</code>.
+</p>
+<ul class="mini-toc">
+<li><a href="#Margin-settings" accesskey="1">Margin settings</a></li>
+<li><a href="#Titles-_0028headers_002c-footers_0029" accesskey="2">Titles (headers, footers)</a></li>
+<li><a href="#Text-settings" accesskey="3">Text settings</a></li>
+<li><a href="#Paragraph-settings" accesskey="4">Paragraph settings</a></li>
+<li><a href="#Heading-settings" accesskey="5">Heading settings</a></li>
+<li><a href="#Footnote-settings" accesskey="6">Footnote settings</a></li>
+<li><a href="#Display-settings" accesskey="7">Display settings</a></li>
+<li><a href="#Other-settings" accesskey="8">Other settings</a></li>
+</ul>
+<div class="unnumberedsubsubsec-level-extent" id="Margin-settings">
+<h4 class="unnumberedsubsubsec">Margin settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bPO_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PO]</code></strong><a class="copiable-link" href='#index-_005cn_005bPO_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PO-_005bms_005d"></a>
+<p>Defines the page offset (i.e., the left margin).
+</p>
+<p>Effective: next page.
+</p>
+<p>Default: Varies by output device and paper format; 1<span class="dmn">i</span> is used for
+typesetters using U.S. letter paper, and zero for terminals.
+See <a class="xref" href="Paper-Format.html">Paper Format</a>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bLL_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[LL]</code></strong><a class="copiable-link" href='#index-_005cn_005bLL_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LL-_005bms_005d"></a>
+<p>Defines the line length (i.e., the width of the body text).
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: Varies by output device and paper format; 6.5<span class="dmn">i</span> is used
+for typesetters using U.S. letter paper (see <a class="pxref" href="Paper-Format.html">Paper Format</a>) and
+65<span class="dmn">n</span> on terminals.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bLT_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[LT]</code></strong><a class="copiable-link" href='#index-_005cn_005bLT_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LT-_005bms_005d"></a>
+<p>Defines the title line length (i.e., the header and footer width). This
+is usually the same as <code class="code">LL</code>, but need not be.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: Varies by output device and paper format; 6.5<span class="dmn">i</span> is used
+for typesetters using U.S. letter paper (see <a class="pxref" href="Paper-Format.html">Paper Format</a>) and
+65<span class="dmn">n</span> on terminals.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bHM_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[HM]</code></strong><a class="copiable-link" href='#index-_005cn_005bHM_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-HM-_005bms_005d"></a>
+<p>Defines the header margin height at the top of the page.
+</p>
+<p>Effective: next page.
+</p>
+<p>Default: 1<span class="dmn">i</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bFM_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FM]</code></strong><a class="copiable-link" href='#index-_005cn_005bFM_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FM-_005bms_005d"></a>
+<p>Defines the footer margin height at the bottom of the page.
+</p>
+<p>Effective: next page.
+</p>
+<p>Default: 1<span class="dmn">i</span>.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Titles-_0028headers_002c-footers_0029">
+<h4 class="unnumberedsubsubsec">Titles (headers, footers)</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bLH_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[LH]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bLH_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LH-_005bms_005d"></a>
+<p>Defines the text displayed in the left header position.
+</p>
+<p>Effective: next header.
+</p>
+<p>Default: empty.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bCH_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[CH]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bCH_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-CH-_005bms_005d"></a>
+<p>Defines the text displayed in the center header position.
+</p>
+<p>Effective: next header.
+</p>
+<p>Default: &lsquo;<samp class="samp">-\n[%]-</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bRH_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[RH]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bRH_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RH-_005bms_005d"></a>
+<p>Defines the text displayed in the right header position.
+</p>
+<p>Effective: next header.
+</p>
+<p>Default: empty.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bLF_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[LF]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bLF_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LF-_005bms_005d"></a>
+<p>Defines the text displayed in the left footer position.
+</p>
+<p>Effective: next footer.
+</p>
+<p>Default: empty.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bCF_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[CF]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bCF_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-CF-_005bms_005d"></a>
+<p>Defines the text displayed in the center footer position.
+</p>
+<p>Effective: next footer.
+</p>
+<p>Default: empty.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bRF_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[RF]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bRF_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RF-_005bms_005d"></a>
+<p>Defines the text displayed in the right footer position.
+</p>
+<p>Effective: next footer.
+</p>
+<p>Default: empty.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Text-settings">
+<h4 class="unnumberedsubsubsec">Text settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bPS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PS]</code></strong><a class="copiable-link" href='#index-_005cn_005bPS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PS-_005bms_005d-1"></a>
+<p>Defines the type size of the body text.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 10<span class="dmn">p</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bVS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[VS]</code></strong><a class="copiable-link" href='#index-_005cn_005bVS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-VS-_005bms_005d"></a>
+<p>Defines the vertical spacing (type size plus leading).
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 12<span class="dmn">p</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bHY_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[HY]</code></strong><a class="copiable-link" href='#index-_005cn_005bHY_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-HY-_005bms_005d"></a>
+<p>Defines the automatic hyphenation mode used with the <code class="code">hy</code> request.
+Setting <code class="code">HY</code> to&nbsp;0 is equivalent to using the <code class="code">nh</code>
+request. This is a Tenth Edition Research Unix extension.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 6.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bFAM_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[FAM]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bFAM_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FAM-_005bms_005d"></a>
+<p>Defines the font family used to typeset the document. This is a GNU
+extension.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: defined by the output device; often &lsquo;<samp class="samp">T</samp>&rsquo; (see <a class="pxref" href="ms-Body-Text.html">Body Text</a>)
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Paragraph-settings">
+<h4 class="unnumberedsubsubsec">Paragraph settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bPI_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PI]</code></strong><a class="copiable-link" href='#index-_005cn_005bPI_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PI-_005bms_005d"></a>
+<p>Defines the indentation amount used by the <code class="code">PP</code>, <code class="code">IP</code> (unless
+overridden by an optional argument), <code class="code">XP</code>, and <code class="code">RS</code> macros.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 5<span class="dmn">n</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bPD_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PD]</code></strong><a class="copiable-link" href='#index-_005cn_005bPD_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PD-_005bms_005d"></a>
+<p>Defines the space between paragraphs.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 0.3<span class="dmn">v</span> (1<span class="dmn">v</span> on low-resolution devices).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bQI_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[QI]</code></strong><a class="copiable-link" href='#index-_005cn_005bQI_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-QI-_005bms_005d"></a>
+<p>Defines the indentation amount used on both sides of a paragraph set
+with the <code class="code">QP</code> or between the <code class="code">QS</code> and <code class="code">QE</code> macros.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 5<span class="dmn">n</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bPORPHANS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PORPHANS]</code></strong><a class="copiable-link" href='#index-_005cn_005bPORPHANS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PORPHANS-_005bms_005d"></a>
+<p>Defines the minimum number of initial lines of any paragraph that must
+be kept together to avoid isolated lines at the bottom of a page. If a
+new paragraph is started close to the bottom of a page, and there is
+insufficient space to accommodate <code class="code">PORPHANS</code> lines before an
+automatic page break, then a page break is forced before the start of
+the paragraph. This is a GNU extension.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 1.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Heading-settings">
+<h4 class="unnumberedsubsubsec">Heading settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bPSINCR_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[PSINCR]</code></strong><a class="copiable-link" href='#index-_005cn_005bPSINCR_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PSINCR-_005bms_005d"></a>
+<p>Defines an increment in type size to be applied to a heading at a
+lesser depth than that specified in <code class="code">GROWPS</code>. The value of
+<code class="code">PSINCR</code> should be specified in points with the <span class="dmn">p</span> scaling
+unit and may include a fractional component; for example, &lsquo;<samp class="samp">.nr&nbsp;PSINCR&nbsp;1.5p</samp>&rsquo;<!-- /@w --> sets a type size increment of 1.5<span class="dmn">p</span>. This is a GNU
+extension.
+</p>
+<p>Effective: next heading.
+</p>
+<p>Default: 1<span class="dmn">p</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bGROWPS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[GROWPS]</code></strong><a class="copiable-link" href='#index-_005cn_005bGROWPS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-GROWPS-_005bms_005d"></a>
+<p>Defines the heading depth above which the type size increment set by
+<code class="code">PSINCR</code> becomes effective. For each heading depth less than the
+value of <code class="code">GROWPS</code>, the type size is increased by <code class="code">PSINCR</code>.
+Setting <code class="code">GROWPS</code> to any value less than&nbsp;2 disables the
+incremental heading size feature. This is a GNU extension.
+</p>
+<p>Effective: next heading.
+</p>
+<p>Default: 0.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bHORPHANS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[HORPHANS]</code></strong><a class="copiable-link" href='#index-_005cn_005bHORPHANS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-HORPHANS-_005bms_005d"></a>
+<p>Defines the minimum number of lines of an immediately succeeding
+paragraph that should be kept together with any heading introduced by
+the <code class="code">NH</code> or <code class="code">SH</code> macros. If a heading is placed close to the
+bottom of a page, and there is insufficient space to accommodate both
+the heading and at least <code class="code">HORPHANS</code> lines of the following
+paragraph, before an automatic page break, then the page break is forced
+before the heading. This is a GNU extension.
+</p>
+<p>Effective: next paragraph.
+</p>
+<p>Default: 1.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bSN_002dSTYLE_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[SN-STYLE]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bSN_002dSTYLE_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-SN_002dSTYLE-_005bms_005d"></a>
+<p>Defines the style used to print numbered headings. See <a class="xref" href="Headings-in-ms.html">Headings</a>. This is a GNU extension.
+</p>
+<p>Effective: next heading.
+</p>
+<p>Default: alias of <code class="code">SN-DOT</code>
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Footnote-settings">
+<h4 class="unnumberedsubsubsec">Footnote settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bFI_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FI]</code></strong><a class="copiable-link" href='#index-_005cn_005bFI_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FI-_005bms_005d"></a>
+<p>Defines the footnote indentation. This is a Berkeley extension.
+</p>
+<p>Effective: next footnote.
+</p>
+<p>Default: 2<span class="dmn">n</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bFF_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FF]</code></strong><a class="copiable-link" href='#index-_005cn_005bFF_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FF-_005bms_005d"></a>
+<p>Defines the format of automatically numbered footnotes,
+and those for which the <code class="code">FS</code> request is given a marker argument, at
+the bottom of a column or page. This is a Berkeley extension.
+</p><dl class="table">
+<dt><code class="code">0</code></dt>
+<dd><p>Set an automatic number<a class="footnote" id="DOCF8" href="groff.html_fot.html#FOOT8"><sup>8</sup></a> as a
+superscript (on typesetter devices) or surrounded by square brackets (on
+terminals). The footnote paragraph is indented as with <code class="code">PP</code> if
+there is an <code class="code">FS</code> argument or an automatic number, and as with
+<code class="code">LP</code> otherwise. This is the default.
+</p>
+</dd>
+<dt><code class="code">1</code></dt>
+<dd><p>As <code class="code">0</code>, but set the marker as regular text and follow an
+automatic number with a period.
+</p>
+</dd>
+<dt><code class="code">2</code></dt>
+<dd><p>As <code class="code">1</code>, but without indentation (like <code class="code">LP</code>).
+</p>
+</dd>
+<dt><code class="code">3</code></dt>
+<dd><p>As <code class="code">1</code>, but set the footnote paragraph with the marker hanging
+(like <code class="code">IP</code>).
+</p></dd>
+</dl>
+
+<p>Effective: next footnote.
+</p>
+<p>Default: 0.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bFPS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FPS]</code></strong><a class="copiable-link" href='#index-_005cn_005bFPS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FPS-_005bms_005d"></a>
+<p>Defines the footnote type size.
+</p>
+<p>Effective: next footnote.
+</p>
+<p>Default: <code class="code">\n[PS] - 2p</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bFVS_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FVS]</code></strong><a class="copiable-link" href='#index-_005cn_005bFVS_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FVS-_005bms_005d"></a>
+<p>Defines the footnote vertical spacing.
+</p>
+<p>Effective: next footnote.
+</p>
+<p>Default: <code class="code">\n[FPS] + 2p</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bFPD_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[FPD]</code></strong><a class="copiable-link" href='#index-_005cn_005bFPD_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FPD-_005bms_005d"></a>
+<p>Defines the footnote paragraph spacing. This is a GNU extension.
+</p>
+<p>Effective: next footnote.
+</p>
+<p>Default: <code class="code">\n[PD] / 2</code>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bFR_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[FR]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bFR_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FR-_005bms_005d"></a>
+<p>Defines the ratio of the footnote line length to the current line
+length. This is a GNU extension.
+</p>
+<p>Effective: next footnote in single-column arrangements, next page
+otherwise.
+</p>
+<p>Default: <code class="code">11/12</code>.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Display-settings">
+<h4 class="unnumberedsubsubsec">Display settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bDD_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[DD]</code></strong><a class="copiable-link" href='#index-_005cn_005bDD_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DD-_005bms_005d"></a>
+<p>Sets the display distance&mdash;the vertical spacing before and after a
+display, a <code class="code">tbl</code> table, an <code class="code">eqn</code> equation, or a <code class="code">pic</code>
+image. This is a Berkeley extension.
+</p>
+<p>Effective: next display boundary.
+</p>
+<p>Default: 0.5<span class="dmn">v</span> (1<span class="dmn">v</span> on low-resolution devices).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bDI_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[DI]</code></strong><a class="copiable-link" href='#index-_005cn_005bDI_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DI-_005bms_005d"></a>
+<p>Sets the default amount by which to indent a display started with
+<code class="code">DS</code> and <code class="code">ID</code> without arguments, to &lsquo;<samp class="samp">.DS&nbsp;I</samp>&rsquo; without
+an indentation argument, and to equations set with &lsquo;<samp class="samp">.EQ&nbsp;I</samp>&rsquo;.
+This is a GNU extension.
+</p>
+<p>Effective: next indented display.
+</p>
+<p>Default: 0.5<span class="dmn">i</span>.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Other-settings">
+<h4 class="unnumberedsubsubsec">Other settings</h4>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bMINGW_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[MINGW]</code></strong><a class="copiable-link" href='#index-_005cn_005bMINGW_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MINGW-_005bms_005d"></a>
+<p>Defines the default minimum width between columns in a multi-column
+document. This is a GNU extension.
+</p>
+<p>Effective: next page.
+</p>
+<p>Default: 2<span class="dmn">n</span>.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005cn_005bTC_002dMARGIN_005d"><span class="category-def">Register: </span><span><strong class="def-name"><code class="t">\n[TC-MARGIN]</code></strong><a class="copiable-link" href='#index-_005cn_005bTC_002dMARGIN_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TC_002dMARGIN-_005bms_005d"></a>
+<p>Defines the width of the field in which page numbers are set in a table
+of contents entry; the right margin thus moves inboard by this amount.
+This is a GNU extension.
+</p>
+<p>Effective: next <code class="code">PX</code> call.
+</p>
+<p>Default: <code class="code">\w'000'</code>
+</p></dd></dl>
+
+
+
+</div>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Document-Description-Macros.html">Document Description Macros</a>, Previous: <a href="ms-Document-Structure.html">Document Structure</a>, Up: <a href="ms.html"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Document-Description-Macros.html b/doc/groff.html.node/ms-Document-Description-Macros.html
new file mode 100644
index 0000000..4801e47
--- /dev/null
+++ b/doc/groff.html.node/ms-Document-Description-Macros.html
@@ -0,0 +1,189 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Document Description Macros (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Document Description Macros (The GNU Troff Manual)">
+<meta name="keywords" content="ms Document Description Macros (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms.html" rel="up" title="ms">
+<link href="ms-Body-Text.html" rel="next" title="ms Body Text">
+<link href="ms-Document-Control-Settings.html" rel="prev" title="ms Document Control Settings">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="ms-Document-Description-Macros">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Body-Text.html" accesskey="n" rel="next">Body Text</a>, Previous: <a href="ms-Document-Control-Settings.html" accesskey="p" rel="prev">Document Control Settings</a>, Up: <a href="ms.html" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Document-Description-Macros">4.6.4 Document Description Macros</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-document-description"></a>
+<a class="index-entry-id" id="index-document-description-macros_002c-_005bms_005d"></a>
+
+<p>Only the simplest document lacks a title.<a class="footnote" id="DOCF9" href="groff.html_fot.html#FOOT9"><sup>9</sup></a> As its level of sophistication (or
+complexity) increases, it tends to acquire a date of revision,
+explicitly identified authors, sponsoring institutions for authors, and,
+at the rarefied heights, an abstract of its content. Define these
+data by calling the macros below in the order shown; <code class="code">DA</code> or
+<code class="code">ND</code> can be called to set the document date (or other identifier)
+at any time before (a) the abstract, if present, or (b) its information
+is required in a header or footer. Use of these macros is optional,
+except that <code class="code">TL</code> is mandatory if any of <code class="code">RP</code>, <code class="code">AU</code>,
+<code class="code">AI</code>, or <code class="code">AB</code> is called, and <code class="code">AE</code> is mandatory if
+<code class="code">AB</code> is called.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eRP"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RP</code></strong> <var class="def-var-arguments">[<code class="code">no-repeat-info</code>] [<code class="code">no-renumber</code>]</var><a class="copiable-link" href='#index-_002eRP'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RP-_005bms_005d"></a>
+<p>Use the &ldquo;report&rdquo; (<abbr class="acronym">AT&amp;T</abbr>: &ldquo;released paper&rdquo;) format for your
+document, creating a separate cover page. The default arrangement is to
+place most of the document description (title, author names and
+institutions, and abstract, but not the date) at the top of the first
+page. If the optional <code class="code">no-repeat-info</code> argument is given,
+<samp class="file">ms</samp> produces a cover page but does not repeat any of its
+information subsequently (but see the <code class="code">DA</code> macro below regarding
+the date). Normally, <code class="code">RP</code> sets the page number following the cover
+page to&nbsp;1. Specifying the optional <code class="code">no-renumber</code> argument
+suppresses this alteration. Optional arguments can occur in any order.
+<code class="code">no</code> is recognized as a synonym of <code class="code">no-repeat-info</code> for
+<code class="code">AT&amp;T</code> compatibility.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eTL"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TL</code></strong><a class="copiable-link" href='#index-_002eTL'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TL-_005bms_005d"></a>
+<p>Specify the document title. <samp class="file">ms</samp> collects text on input lines
+following this call into the title until reaching <code class="code">AU</code>, <code class="code">AB</code>,
+or a heading or paragraphing macro call.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eAU"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AU</code></strong><a class="copiable-link" href='#index-_002eAU'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-AU-_005bms_005d"></a>
+<p>Specify an author&rsquo;s name. <samp class="file">ms</samp> collects text on input lines
+following this call into the author&rsquo;s name until reaching <code class="code">AI</code>,
+<code class="code">AB</code>, another <code class="code">AU</code>, or a heading or paragraphing macro call.
+Call it repeatedly to specify multiple authors.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eAI"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AI</code></strong><a class="copiable-link" href='#index-_002eAI'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-AI-_005bms_005d"></a>
+<p>Specify the preceding author&rsquo;s institution. An <code class="code">AU</code> call is
+usefully followed by at most one <code class="code">AI</code> call; if there are more, the
+last <code class="code">AI</code> call controls. <samp class="file">ms</samp> collects text on input lines
+following this call into the author&rsquo;s institution until reaching
+<code class="code">AU</code>, <code class="code">AB</code>, or a heading or paragraphing macro call.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDA"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DA</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">x</i></span> &hellip;]</var><a class="copiable-link" href='#index-_002eDA'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DA-_005bms_005d"></a>
+<p>Typeset the current date, or any arguments <var class="var">x</var>, in the center
+footer, and, if <code class="code">RP</code> is also called, left-aligned at the end of the
+description information on the cover page.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eND"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.ND</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">x</i></span> &hellip;]</var><a class="copiable-link" href='#index-_002eND'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ND-_005bms_005d"></a>
+<p>Typeset the current date, or any arguments <var class="var">x</var>, if <code class="code">RP</code> is also
+called, left-aligned at the end of the document description on the cover
+page. This is <code class="code">groff</code> <samp class="file">ms</samp>&rsquo;s default.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eAB"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AB</code></strong> <var class="def-var-arguments">[<code class="code">no</code>]</var><a class="copiable-link" href='#index-_002eAB'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-AB-_005bms_005d"></a>
+<p>Begin the abstract. <samp class="file">ms</samp> collects text on input lines following
+this call into the abstract until reaching an <code class="code">AE</code> call. By
+default, <samp class="file">ms</samp> places the word &ldquo;ABSTRACT&rdquo; centered and in italics
+above the text of the abstract. The optional argument <code class="code">no</code>
+suppresses this heading.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eAE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AE</code></strong><a class="copiable-link" href='#index-_002eAE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-AE-_005bms_005d"></a>
+<p>End the abstract.
+</p></dd></dl>
+
+<p>An example document description, using a cover page, follows.
+<a class="index-entry-id" id="index-cover-page-in-_005bms_005d_002c-example-markup"></a>
+<a class="index-entry-id" id="index-example-markup_002c-cover-page-in-_005bms_005d"></a>
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.RP
+.TL
+The Inevitability of Code Bloat
+in Commercial and Free Software
+.AU
+J.\&amp; Random Luser
+.AI
+University of West Bumblefuzz
+.AB
+This report examines the long-term growth of the code
+bases in two large,
+popular software packages;
+the free Emacs and the commercial Microsoft Word.
+While differences appear in the type or order of
+features added,
+due to the different methodologies used,
+the results are the same in the end.
+.PP
+The free software approach is shown to be superior in
+that while free software can become as bloated as
+commercial offerings,
+free software tends to have fewer serious bugs and the
+added features are more in line with user demand.
+.AE
+
+<span class="r">&hellip;the rest of the paper&hellip;</span>
+</pre></div>
+</td></tr></table>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Body-Text.html">Body Text</a>, Previous: <a href="ms-Document-Control-Settings.html">Document Control Settings</a>, Up: <a href="ms.html"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Document-Structure.html b/doc/groff.html.node/ms-Document-Structure.html
new file mode 100644
index 0000000..de4be0e
--- /dev/null
+++ b/doc/groff.html.node/ms-Document-Structure.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Document Structure (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Document Structure (The GNU Troff Manual)">
+<meta name="keywords" content="ms Document Structure (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms.html" rel="up" title="ms">
+<link href="ms-Document-Control-Settings.html" rel="next" title="ms Document Control Settings">
+<link href="ms-Introduction.html" rel="prev" title="ms Introduction">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="ms-Document-Structure">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Document-Control-Settings.html" accesskey="n" rel="next">Document Control Settings</a>, Previous: <a href="ms-Introduction.html" accesskey="p" rel="prev">Introduction</a>, Up: <a href="ms.html" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Document-Structure">4.6.2 Document Structure</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-general-structure"></a>
+
+<p>The <samp class="file">ms</samp> macro package expects a certain amount of structure:
+a well-formed document contains at least one paragraphing or heading
+macro call. Longer documents have a structure as follows.
+</p>
+<dl class="table">
+<dt><strong class="strong">Document type</strong></dt>
+<dd><p>Calling the <code class="code">RP</code> macro at the beginning of your document puts the
+document description (see below) on a cover page. Otherwise, <samp class="file">ms</samp>
+places the information (if any) on the first page, followed immediately
+by the body text. Some document types found in other <samp class="file">ms</samp>
+implementations are specific to <abbr class="acronym">AT&amp;T</abbr> or Berkeley, and are not
+supported by <code class="code">groff</code> <samp class="file">ms</samp>.
+</p>
+</dd>
+<dt><strong class="strong">Format and layout</strong></dt>
+<dd><p>By setting registers and strings, you can configure your document&rsquo;s
+typeface, margins, spacing, headers and footers, and footnote
+arrangement. See <a class="xref" href="ms-Document-Control-Settings.html">Document Control Settings</a>.
+</p>
+</dd>
+<dt><strong class="strong">Document description</strong></dt>
+<dd><p>A document description consists of any of: a title, one or more authors&rsquo;
+names and affiliated institutions, an abstract, and a date or other
+identifier. See <a class="xref" href="ms-Document-Description-Macros.html">Document Description Macros</a>.
+</p>
+</dd>
+<dt><strong class="strong">Body text</strong></dt>
+<dd><p>The main matter of your document follows its description (if any).
+<samp class="file">ms</samp> supports highly structured text consisting of paragraphs
+interspersed with multi-level headings (chapters, sections, subsections,
+and so forth) and augmented by lists, footnotes, tables, diagrams, and
+similar material. See <a class="xref" href="ms-Body-Text.html">Body Text</a>.
+</p>
+</dd>
+<dt><strong class="strong">Tables of contents</strong></dt>
+<dd><p>Macros enable the collection of entries for a table of contents (or
+index) as the material they discuss appears in the document. You then
+call a macro to emit the table of contents at the end of your document.
+The table of contents must necessarily follow the rest of the text since
+GNU <code class="code">troff</code> is a single-pass formatter; it thus cannot determine
+the page number of a division of the text until it has been set and
+output. Since <samp class="file">ms</samp> was designed for the production of hard copy,
+the traditional procedure was to manually relocate the pages containing
+the table of contents between the cover page and the body text. Today,
+page resequencing is more often done in the digital domain. An index
+works similarly, but because it typically needs to be sorted after
+collection, its preparation requires separate processing.
+</p></dd>
+</dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Document-Control-Settings.html">Document Control Settings</a>, Previous: <a href="ms-Introduction.html">Introduction</a>, Up: <a href="ms.html"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Footnotes.html b/doc/groff.html.node/ms-Footnotes.html
new file mode 100644
index 0000000..8c5f1f5
--- /dev/null
+++ b/doc/groff.html.node/ms-Footnotes.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Footnotes (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Footnotes (The GNU Troff Manual)">
+<meta name="keywords" content="ms Footnotes (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Body-Text.html" rel="up" title="ms Body Text">
+<link href="ms-Insertions.html" rel="prev" title="ms Insertions">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="ms-Footnotes">
+<div class="nav-panel">
+<p>
+Previous: <a href="ms-Insertions.html" accesskey="p" rel="prev">Tables, figures, equations, and references</a>, Up: <a href="ms-Body-Text.html" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Footnotes">4.6.5.10 Footnotes</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-footnotes"></a>
+<a class="index-entry-id" id="index-footnotes-_005bms_005d"></a>
+
+<a class="index-entry-id" id="index-footnote-marker-_005bms_005d"></a>
+<a class="index-entry-id" id="index-marker_002c-footnote-_005bms_005d"></a>
+<p>A footnote is typically anchored to a place in the text with a
+<em class="dfn">marker</em>, which is a small integer, a symbol such as a dagger, or
+arbitrary user-specified text.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002a_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[*]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002a_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002a-_005bms_005d"></a>
+<p>Place an <em class="dfn">automatic number</em>, an automatically generated numeric
+footnote marker, in the text. Each time this string is interpolated,
+the number it produces increments by one. Automatic numbers start at 1.
+This is a Berkeley extension.
+</p></dd></dl>
+
+<p>Enclose the footnote text in <code class="code">FS</code> and <code class="code">FE</code> macro calls to set
+it at the nearest available &ldquo;foot&rdquo;, or bottom, of a text column or
+page.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eFS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.FS</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">marker</i></span>]</var><a class="copiable-link" href='#index-_002eFS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eFE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.FE</code></strong><a class="copiable-link" href='#index-_002eFE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-FE-_005bms_005d"></a>
+<p>Begin (<code class="code">FS</code>) and end (<code class="code">FE</code>) a footnote. <code class="code">FS</code> calls
+<code class="code">FS-MARK</code> with any supplied <var class="var">marker</var> argument, which is then
+also placed at the beginning of the footnote text. If <var class="var">marker</var> is
+omitted, the next pending automatic footnote number enqueued by
+interpolation of the <code class="code">*</code> string is used, and if none exists,
+nothing is prefixed.
+</p></dd></dl>
+
+<p>You may not desire automatically numbered footnotes in spite of their
+convenience. You can indicate a footnote with a symbol or other text by
+specifying its marker at the appropriate place (for example, by using
+<code class="code">\[dg]</code> for the dagger glyph) <em class="emph">and</em> as an argument to the
+<code class="code">FS</code> macro. Such manual marks should be repeated as arguments to
+<code class="code">FS</code> or as part of the footnote text to disambiguate their
+correspondence. You may wish to use <code class="code">\*{</code> and <code class="code">\*}</code> to
+superscript the marker at the anchor point, in the footnote text, or
+both.
+</p>
+<p><code class="code">groff</code> <samp class="file">ms</samp> provides a hook macro, <code class="code">FS-MARK</code>, for
+user-determined operations to be performed when the <code class="code">FS</code> macro is
+called. It is passed the same arguments as <code class="code">FS</code> itself. An
+application of <code class="code">FS-MARK</code> is anchor placement for a hyperlink
+reference, so that a footnote can link back to its referential
+context.<a class="footnote" id="DOCF11" href="groff.html_fot.html#FOOT11"><sup>11</sup></a> By default, this macro has an empty definition.
+<code class="code">FS-MARK</code> is a GNU extension.
+</p>
+<a class="index-entry-id" id="index-footnotes_002c-and-keeps-_005bms_005d"></a>
+<a class="index-entry-id" id="index-keeps_002c-and-footnotes-_005bms_005d"></a>
+<a class="index-entry-id" id="index-footnotes_002c-and-displays-_005bms_005d"></a>
+<a class="index-entry-id" id="index-displays_002c-and-footnotes-_005bms_005d"></a>
+<p>Footnotes can be safely used within keeps and displays, but you should
+avoid using automatically numbered footnotes within floating keeps. You
+can place a second <code class="code">\**</code> interpolation between a <code class="code">\**</code> and its
+corresponding <code class="code">FS</code> call as long as each <code class="code">FS</code> call occurs
+<em class="emph">after</em> the corresponding <code class="code">\**</code> and occurrences of <code class="code">FS</code>
+are in the same order as corresponding occurrences of <code class="code">\**</code>.
+</p>
+<p>Footnote text is formatted as paragraphs are, using analogous
+parameters. The registers <code class="code">FI</code>, <code class="code">FPD</code>, <code class="code">FPS</code>, and
+<code class="code">FVS</code> correspond to <code class="code">PI</code>, <code class="code">PD</code>, <code class="code">PS</code>, and <code class="code">CS</code>,
+respectively; <code class="code">FPD</code>, <code class="code">FPS</code>, and <code class="code">FVS</code> are GNU extensions.
+</p>
+<p>The <code class="code">FF</code> register controls the formatting of automatically numbered
+footnote paragraphs and those for which <code class="code">FS</code> is given a marker
+argument. See <a class="xref" href="ms-Document-Control-Settings.html">Document Control Settings</a>.
+</p>
+<p>The default footnote line length is 11/12ths of the normal line length
+for compatibility with the expectations of historical <samp class="file">ms</samp>
+documents; you may wish to set the <code class="code">FR</code> string to &lsquo;<samp class="samp">1</samp>&rsquo; to align
+with contemporary typesetting practices. In the
+past,<a class="footnote" id="DOCF12" href="groff.html_fot.html#FOOT12"><sup>12</sup></a> an <code class="code">FL</code> register
+was used for the line length in footnotes; however, setting this
+register at document initialization time had no effect on the footnote
+line length in multi-column arrangements.<a class="footnote" id="DOCF13" href="groff.html_fot.html#FOOT13"><sup>13</sup></a>
+</p>
+<p><code class="code">FR</code> should be used in preference to the old <code class="code">FL</code> register in
+contemporary documents. The footnote line length is effectively
+computed as &lsquo;<samp class="samp"><i class="slanted">column-width</i> * \*[FR]</samp>&rsquo;. If an absolute
+footnote line length is required, recall that arithmetic expressions in
+<code class="code">roff</code> input are evaluated strictly from left to right, with no
+operator precedence (parentheses are honored).
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.ds FR 0+3i \&quot; Set footnote line length to 3 inches.
+</pre></div></div>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="ms-Insertions.html">Tables, figures, equations, and references</a>, Up: <a href="ms-Body-Text.html">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Headers-and-Footers.html b/doc/groff.html.node/ms-Headers-and-Footers.html
new file mode 100644
index 0000000..472f19c
--- /dev/null
+++ b/doc/groff.html.node/ms-Headers-and-Footers.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Headers and Footers (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Headers and Footers (The GNU Troff Manual)">
+<meta name="keywords" content="ms Headers and Footers (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Page-Layout.html" rel="up" title="ms Page Layout">
+<link href="Tab-Stops-in-ms.html" rel="next" title="Tab Stops in ms">
+<link href="ms-Page-Layout.html" rel="prev" title="ms Page Layout">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="ms-Headers-and-Footers">
+<div class="nav-panel">
+<p>
+Next: <a href="Tab-Stops-in-ms.html" accesskey="n" rel="next">Tab stops</a>, Previous: <a href="ms-Page-Layout.html" accesskey="p" rel="prev">Page layout</a>, Up: <a href="ms-Page-Layout.html" accesskey="u" rel="up">Page layout</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Headers-and-footers">4.6.6.1 Headers and footers</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-headers"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-footers"></a>
+<a class="index-entry-id" id="index-headers-_005bms_005d"></a>
+<a class="index-entry-id" id="index-footers-_005bms_005d"></a>
+
+<p>There are multiple ways to produce headers and footers. One is to
+define the strings <code class="code">LH</code>, <code class="code">CH</code>, and <code class="code">RH</code> to set the left,
+center, and right headers, respectively; and <code class="code">LF</code>, <code class="code">CF</code>, and
+<code class="code">RF</code> to set the left, center, and right footers. This approach
+suffices for documents that do not distinguish odd- and even-numbered
+pages.
+</p>
+<p>Another method is to call macros that set headers or footers for odd- or
+even-numbered pages. Each such macro takes a delimited argument
+separating the left, center, and right header or footer texts from each
+other. You can replace the neutral apostrophes (<code class="code">'</code>) shown below
+with any character not appearing in the header or footer text. These
+macros are Berkeley extensions.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eOH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.OH</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002eOH'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-OH-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eEH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EH</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002eEH'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EH-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eOF"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.OF</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002eOF'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-OF-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eEF"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EF</code></strong> <var class="def-var-arguments"><code class="code">'</code><span class="r"><i class="slanted">left</i></span><code class="code">'</code><span class="r"><i class="slanted">center</i></span><code class="code">'</code><span class="r"><i class="slanted">right</i></span><code class="code">'</code></var><a class="copiable-link" href='#index-_002eEF'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EF-_005bms_005d"></a>
+<p>The <code class="code">OH</code> and <code class="code">EH</code> macros define headers for odd- (recto)
+and even-numbered (verso) pages, respectively; the <code class="code">OF</code> and
+<code class="code">EF</code> macros define footers for them.
+</p></dd></dl>
+
+<p>With either method, a percent sign <code class="code">%</code> in header or footer text is
+replaced by the current page number. By default, <samp class="file">ms</samp> places no
+header on a page numbered &ldquo;1&rdquo; (regardless of its number format).
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eP1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.P1</code></strong><a class="copiable-link" href='#index-_002eP1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-P1-_005bms_005d"></a>
+<p>Typeset the header even on page&nbsp;1. To be effective, this macro
+must be called before the header trap is sprung on any page numbered
+&ldquo;1&rdquo;; in practice, unless your page numbering is unusual, this means
+that you should call it early, before <code class="code">TL</code> or any heading or
+paragraphing macro. This is a Berkeley extension.
+</p></dd></dl>
+
+<p>For even greater flexibility, <samp class="file">ms</samp> is designed to permit the
+redefinition of the macros that are called when the <code class="code">groff</code> traps
+that ordinarily cause the headers and footers to be output are sprung.
+<code class="code">PT</code> (&ldquo;page trap&rdquo;) is called by <samp class="file">ms</samp> when the header is to
+be written, and <code class="code">BT</code> (&ldquo;bottom trap&rdquo;) when the footer is to be.
+The <code class="code">groff</code> page location trap that <samp class="file">ms</samp> sets up to format the
+header also calls the (normally undefined) <code class="code">HD</code> macro after
+<code class="code">PT</code>; you can define <code class="code">HD</code> if you need additional processing
+after setting the header (for example, to draw a line below it).
+The <code class="code">HD</code> hook is a Berkeley extension. Any such macros you
+(re)define must implement any desired specialization for odd-, even-, or
+first numbered pages.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Tab-Stops-in-ms.html">Tab stops</a>, Previous: <a href="ms-Page-Layout.html">Page layout</a>, Up: <a href="ms-Page-Layout.html">Page layout</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Insertions.html b/doc/groff.html.node/ms-Insertions.html
new file mode 100644
index 0000000..bb58a90
--- /dev/null
+++ b/doc/groff.html.node/ms-Insertions.html
@@ -0,0 +1,181 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Insertions (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Insertions (The GNU Troff Manual)">
+<meta name="keywords" content="ms Insertions (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Body-Text.html" rel="up" title="ms Body Text">
+<link href="ms-Footnotes.html" rel="next" title="ms Footnotes">
+<link href="ms-keeps-and-displays.html" rel="prev" title="ms keeps and displays">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="ms-Insertions">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Footnotes.html" accesskey="n" rel="next">Footnotes</a>, Previous: <a href="ms-keeps-and-displays.html" accesskey="p" rel="prev">Keeps, boxed keeps, and displays</a>, Up: <a href="ms-Body-Text.html" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Tables_002c-figures_002c-equations_002c-and-references">4.6.5.9 Tables, figures, equations, and references</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-tables"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-figures"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-equations"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-references"></a>
+<a class="index-entry-id" id="index-tables-_005bms_005d"></a>
+<a class="index-entry-id" id="index-figures-_005bms_005d"></a>
+<a class="index-entry-id" id="index-equations-_005bms_005d"></a>
+<a class="index-entry-id" id="index-references-_005bms_005d"></a>
+
+<p>The <samp class="file">ms</samp> package is often used with the <code class="code">tbl</code>, <code class="code">pic</code>,
+<code class="code">eqn</code>, and <code class="code">refer</code> preprocessors.
+<a class="index-entry-id" id="index-tbl"></a>
+<a class="index-entry-id" id="index-pic"></a>
+<a class="index-entry-id" id="index-eqn"></a>
+<a class="index-entry-id" id="index-refer"></a>
+Mark text meant for preprocessors by enclosing it in pairs of tokens
+as follows, with nothing between the dot and the macro name. The
+preprocessors match these tokens only at the start of an input line.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eTS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TS</code></strong> <var class="def-var-arguments">[<code class="code">H</code>]</var><a class="copiable-link" href='#index-_002eTS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eTE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TE</code></strong><a class="copiable-link" href='#index-_002eTE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TE-_005bms_005d"></a>
+<p>Demarcate a table to be processed by the <code class="code">tbl</code> preprocessor. The
+optional argument&nbsp;<code class="code">H</code> to <code class="code">TS</code> instructs <samp class="file">ms</samp> to
+repeat table rows (often column headings) at the top of each new page
+the table spans, if applicable; calling the <code class="code">TH</code> macro marks the
+end of such rows. The GNU <cite class="cite">tbl<span class="r">(1)</span></cite> man page provides a
+comprehensive reference to the preprocessor and offers examples of its
+use.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002ePS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PS</code></strong><a class="copiable-link" href='#index-_002ePS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002ePE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PE</code></strong><a class="copiable-link" href='#index-_002ePE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PE-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002ePF"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PF</code></strong><a class="copiable-link" href='#index-_002ePF'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PF-_005bms_005d"></a>
+<p><code class="code">PS</code> begins a picture to be processed by the <code class="command">gpic</code>
+preprocessor; either of <code class="code">PE</code> or <code class="code">PF</code> ends it, the latter with
+&ldquo;flyback&rdquo; to the vertical position at its top. You can create
+<code class="code">pic</code> input manually or with a program such as <code class="code">xfig</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eEQ"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EQ</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">align</i></span> [<span class="r"><i class="slanted">label</i></span>]]</var><a class="copiable-link" href='#index-_002eEQ'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EQ-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eEN"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.EN</code></strong><a class="copiable-link" href='#index-_002eEN'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-EN-_005bms_005d"></a>
+<p>Demarcate an equation to be processed by the <code class="code">eqn</code> preprocessor.
+The equation is centered by default; <var class="var">align</var> can be &lsquo;<samp class="samp">C</samp>&rsquo;,
+&lsquo;<samp class="samp">L</samp>&rsquo;, or &lsquo;<samp class="samp">I</samp>&rsquo; to (explicitly) center, left-align, or indent it
+by the amount stored in the <code class="code">DI</code> register, respectively. If
+specified, <var class="var">label</var> is set right-aligned.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002e_005b"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.[</code></strong><a class="copiable-link" href='#index-_002e_005b'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005b-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002e_005d"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.]</code></strong><a class="copiable-link" href='#index-_002e_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005d-_005bms_005d"></a>
+<p>Demarcate a bibliographic citation to be processed by the <code class="code">refer</code>
+preprocessor. The GNU <cite class="cite">refer<span class="r">(1)</span></cite> man page provides a
+comprehensive reference to the preprocessor and the format of its
+bibliographic database. Type &lsquo;<samp class="samp">man refer</samp>&rsquo; at the command line to
+view it.
+</p></dd></dl>
+
+<p>When <code class="code">refer</code> emits collected references (as might be done on a
+&ldquo;Works Cited&rdquo; page), it interpolates the <code class="code">REFERENCES</code> string as
+an unnumbered heading (<code class="code">SH</code>).
+</p>
+<a class="index-entry-id" id="index-table_002c-multi_002dpage_002c-example-_005bms_005d"></a>
+<a class="index-entry-id" id="index-multi_002dpage-table-example-_005bms_005d"></a>
+<p>The following is an example of how to set up a table that may print
+across two or more pages.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.TS H
+allbox;
+Cb | Cb .
+Part&rarr;Description
+_
+.TH
+.T&amp;
+GH-1978&rarr;Fribulating gonkulator
+<span class="r">&hellip;the rest of the table follows&hellip;</span>
+.TE
+</pre></div>
+</td></tr></table>
+
+<p>Attempting to place a multi-page table inside a keep can lead to
+unpleasant results, particularly if the <code class="code">tbl</code> <code class="code">allbox</code> option
+is used.
+</p>
+<a class="index-entry-id" id="index-equation-example-_005bms_005d"></a>
+<p>Mathematics can be typeset using the language of the <code class="code">eqn</code>
+preprocessor.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.EQ C (\*[SN-NO-DOT]a)
+p ~ = ~ q sqrt { ( 1 + ~ ( x / q sup 2 ) }
+.EN
+</pre></div>
+</td></tr></table>
+
+<p>This input formats a labelled equation. We used the <code class="code">SN-NO-DOT</code>
+string to base the equation label on the current heading number, giving
+us more flexibility to reorganize the document.
+</p>
+<p>Use <code class="command">groff</code> options to run preprocessors on the input:
+<samp class="option">-e</samp> for <code class="command">geqn</code>, <samp class="option">-p</samp> for <code class="command">gpic</code>,
+<samp class="option">-R</samp> for <code class="command">grefer</code>, and <samp class="option">-t</samp> for <code class="command">gtbl</code>.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Footnotes.html">Footnotes</a>, Previous: <a href="ms-keeps-and-displays.html">Keeps, boxed keeps, and displays</a>, Up: <a href="ms-Body-Text.html">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Introduction.html b/doc/groff.html.node/ms-Introduction.html
new file mode 100644
index 0000000..4069ac7
--- /dev/null
+++ b/doc/groff.html.node/ms-Introduction.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Introduction (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Introduction (The GNU Troff Manual)">
+<meta name="keywords" content="ms Introduction (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms.html" rel="up" title="ms">
+<link href="ms-Document-Structure.html" rel="next" title="ms Document Structure">
+<link href="ms.html" rel="prev" title="ms">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="ms-Introduction">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Document-Structure.html" accesskey="n" rel="next">Document Structure</a>, Previous: <a href="ms.html" accesskey="p" rel="prev"><samp class="file">ms</samp></a>, Up: <a href="ms.html" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Introduction-2">4.6.1 Introduction</h4>
+
+<p>The <samp class="file">ms</samp> macros are the oldest surviving package for <code class="code">roff</code>
+systems.<a class="footnote" id="DOCF7" href="groff.html_fot.html#FOOT7"><sup>7</sup></a> While the <samp class="file">man</samp>
+package was designed for brief reference documents, the <samp class="file">ms</samp> macros
+are also suitable for longer works intended for printing and possible
+publication.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="ms-basic-information.html" accesskey="1">Basic information</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Legacy-Features.html b/doc/groff.html.node/ms-Legacy-Features.html
new file mode 100644
index 0000000..2f24f41
--- /dev/null
+++ b/doc/groff.html.node/ms-Legacy-Features.html
@@ -0,0 +1,285 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Legacy Features (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Legacy Features (The GNU Troff Manual)">
+<meta name="keywords" content="ms Legacy Features (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms.html" rel="up" title="ms">
+<link href="ms-Naming-Conventions.html" rel="next" title="ms Naming Conventions">
+<link href="Differences-from-AT_0026T-ms.html" rel="prev" title="Differences from AT&amp;T ms">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="ms-Legacy-Features">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Naming-Conventions.html" accesskey="n" rel="next">Naming Conventions</a>, Previous: <a href="Differences-from-AT_0026T-ms.html" accesskey="p" rel="prev">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a>, Up: <a href="ms.html" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Legacy-Features">4.6.8 Legacy Features</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-strings"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-special-characters"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-accent-marks"></a>
+<a class="index-entry-id" id="index-accent-marks-_005bms_005d"></a>
+<a class="index-entry-id" id="index-special-characters-_005bms_005d"></a>
+<a class="index-entry-id" id="index-strings-_005bms_005d"></a>
+
+<p><code class="code">groff</code> <samp class="file">ms</samp> retains some legacy features solely to support
+formatting of historical documents; contemporary ones should not use
+them because they can render poorly. See the <cite class="cite">groff_char<span class="r">(7)</span></cite>
+man page.
+</p>
+<ul class="mini-toc">
+<li><a href="#AT_0026T-accent-mark-strings" accesskey="1">AT&amp;T accent mark strings</a></li>
+<li><a href="#Berkeley-accent-mark-and-glyph-strings" accesskey="2">Berkeley accent mark and glyph strings</a></li>
+</ul>
+<div class="unnumberedsubsubsec-level-extent" id="AT_0026T-accent-mark-strings">
+<h4 class="unnumberedsubsubsec">AT&amp;T accent mark strings</h4>
+
+<p>AT&amp;T <samp class="file">ms</samp> defined accent mark strings as follows.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_0027_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<code class="code">'</code>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0027_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_0027-_005bms_005d"></a>
+<p>Apply acute accent to subsequent glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_0060_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<code class="code">`</code>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0060_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_0060-_005bms_005d"></a>
+<p>Apply grave accent to subsequent glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_003a_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[:]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003a_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_003a-_005bms_005d"></a>
+<p>Apply dieresis (umlaut) to subsequent glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_005e_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[^]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_005e_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005e-_005bms_005d"></a>
+<p>Apply circumflex accent to subsequent glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_007e_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[~]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_007e_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_007e-_005bms_005d"></a>
+<p>Apply tilde accent to subsequent glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bC_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[C]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bC_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-C-_005bms_005d"></a>
+<p>Apply caron to subsequent glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002c_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[,]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002c_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002c-_005bms_005d"></a>
+<p>Apply cedilla to subsequent glyph.
+</p></dd></dl>
+
+</div>
+<div class="unnumberedsubsubsec-level-extent" id="Berkeley-accent-mark-and-glyph-strings">
+<h4 class="unnumberedsubsubsec">Berkeley accent mark and glyph strings</h4>
+
+<p>Berkeley <samp class="file">ms</samp> offered an <code class="code">AM</code> macro; calling it redefined the
+AT&amp;T accent mark strings (except for &lsquo;<samp class="samp">\*C</samp>&rsquo;), applied them to the
+<em class="emph">preceding</em> glyph, and defined additional strings, some for spacing
+glyphs.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eAM"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.AM</code></strong><a class="copiable-link" href='#index-_002eAM'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-AM-_005bms_005d"></a>
+<p>Enable alternative accent mark and glyph-producing strings.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_0027_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<code class="code">'</code>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0027_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_0027-_005bms_005d-1"></a>
+<p>Apply acute accent to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_0060_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[<code class="code">`</code>]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0060_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_0060-_005bms_005d-1"></a>
+<p>Apply grave accent to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_003a_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[:]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003a_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_003a-_005bms_005d-1"></a>
+<p>Apply dieresis (umlaut) to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_005e_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[^]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_005e_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005e-_005bms_005d-1"></a>
+<p>Apply circumflex accent to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_007e_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[~]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_007e_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_007e-_005bms_005d-1"></a>
+<p>Apply tilde accent to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002c_005d-1"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[,]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002c_005d-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002c-_005bms_005d-1"></a>
+<p>Apply cedilla to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002f_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[/]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002f_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002f-_005bms_005d"></a>
+<p>Apply stroke (slash) to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bv_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[v]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bv_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-v-_005bms_005d"></a>
+<p>Apply caron to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_005f_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[_]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_005f_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_005f-_005bms_005d"></a>
+<p>Apply macron to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_002e_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[.]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_002e_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_002e-_005bms_005d"></a>
+<p>Apply underdot to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bo_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[o]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bo_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-o-_005bms_005d"></a>
+<p>Apply ring accent to preceding glyph.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_003f_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[?]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_003f_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_003f-_005bms_005d"></a>
+<p>Interpolate inverted question mark.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b_0021_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[!]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b_0021_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-_0021-_005bms_005d"></a>
+<p>Interpolate inverted exclamation mark.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b8_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[8]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b8_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-8-_005bms_005d"></a>
+<p>Interpolate small letter sharp s.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bq_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[q]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bq_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-q-_005bms_005d"></a>
+<p>Interpolate small letter o with hook accent (ogonek).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005b3_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[3]</code></strong><a class="copiable-link" href='#index-_005c_002a_005b3_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-3-_005bms_005d"></a>
+<p>Interpolate small letter yogh.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bd_002d_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[d-]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bd_002d_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-d_002d-_005bms_005d"></a>
+<p>Interpolate small letter eth.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bD_002d_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[D-]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bD_002d_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-D_002d-_005bms_005d"></a>
+<p>Interpolate capital letter eth.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bth_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[th]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bth_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-th-_005bms_005d"></a>
+<p>Interpolate small letter thorn.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bTh_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[Th]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bTh_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Th-_005bms_005d"></a>
+<p>Interpolate capital letter thorn.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bae_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[ae]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bae_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ae-_005bms_005d"></a>
+<p>Interpolate small æ ligature.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bAe_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[Ae]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bAe_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-Ae-_005bms_005d"></a>
+<p>Interpolate capital Æ ligature.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005boe_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[oe]</code></strong><a class="copiable-link" href='#index-_005c_002a_005boe_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-oe-_005bms_005d"></a>
+<p>Interpolate small oe ligature.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bOE_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[OE]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bOE_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-OE-_005bms_005d"></a>
+<p>Interpolate capital OE ligature.
+</p></dd></dl>
+
+
+</div>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Naming-Conventions.html">Naming Conventions</a>, Previous: <a href="Differences-from-AT_0026T-ms.html">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a>, Up: <a href="ms.html"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Margins.html b/doc/groff.html.node/ms-Margins.html
new file mode 100644
index 0000000..f47f698
--- /dev/null
+++ b/doc/groff.html.node/ms-Margins.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Margins (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Margins (The GNU Troff Manual)">
+<meta name="keywords" content="ms Margins (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Page-Layout.html" rel="up" title="ms Page Layout">
+<link href="ms-Multiple-Columns.html" rel="next" title="ms Multiple Columns">
+<link href="Tab-Stops-in-ms.html" rel="prev" title="Tab Stops in ms">
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="ms-Margins">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Multiple-Columns.html" accesskey="n" rel="next">Multiple columns</a>, Previous: <a href="Tab-Stops-in-ms.html" accesskey="p" rel="prev">Tab stops</a>, Up: <a href="ms-Page-Layout.html" accesskey="u" rel="up">Page layout</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Margins">4.6.6.3 Margins</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-margins"></a>
+
+<p>Control margins using the registers summarized in &ldquo;Margin settings&rdquo; in
+<a class="ref" href="ms-Document-Control-Settings.html">Document Control Settings</a> above. There is no setting for the
+right margin; the combination of page offset <code class="code">\n[PO]</code> and line
+length <code class="code">\n[LL]</code> determines it.
+</p>
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Multiple-Columns.html b/doc/groff.html.node/ms-Multiple-Columns.html
new file mode 100644
index 0000000..c95792f
--- /dev/null
+++ b/doc/groff.html.node/ms-Multiple-Columns.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Multiple Columns (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Multiple Columns (The GNU Troff Manual)">
+<meta name="keywords" content="ms Multiple Columns (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Page-Layout.html" rel="up" title="ms Page Layout">
+<link href="ms-TOC.html" rel="next" title="ms TOC">
+<link href="ms-Margins.html" rel="prev" title="ms Margins">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="ms-Multiple-Columns">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-TOC.html" accesskey="n" rel="next">Creating a table of contents</a>, Previous: <a href="ms-Margins.html" accesskey="p" rel="prev">Margins</a>, Up: <a href="ms-Page-Layout.html" accesskey="u" rel="up">Page layout</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Multiple-columns">4.6.6.4 Multiple columns</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-multiple-columns"></a>
+<a class="index-entry-id" id="index-multiple-columns-_005bms_005d"></a>
+
+<p><samp class="file">ms</samp> can set text in as many columns as reasonably fit on the page.
+The following macros force a page break if a multi-column layout is
+active when they are called. The <code class="code">MINGW</code> register stores the
+default minimum gutter width; it is a GNU extension. When multiple
+columns are in use, keeps and the <code class="code">HORPHANS</code> and <code class="code">PORPHANS</code>
+registers work with respect to column breaks instead of page breaks.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002e1C"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.1C</code></strong><a class="copiable-link" href='#index-_002e1C'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-1C-_005bms_005d"></a>
+<p>Arrange page text in a single column (the default).
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002e2C"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.2C</code></strong><a class="copiable-link" href='#index-_002e2C'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-2C-_005bms_005d"></a>
+<p>Arrange page text in two columns.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eMC"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.MC</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">column-width</i></span> [<span class="r"><i class="slanted">gutter-width</i></span>]]</var><a class="copiable-link" href='#index-_002eMC'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MC-_005bms_005d"></a>
+<p>Arrange page text in multiple columns. If you specify no arguments, it
+is equivalent to the <code class="code">2C</code> macro. Otherwise, <var class="var">column-width</var> is
+the width of each column and <var class="var">gutter-width</var> is the minimum distance
+between columns.
+</p></dd></dl>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Naming-Conventions.html b/doc/groff.html.node/ms-Naming-Conventions.html
new file mode 100644
index 0000000..db31955
--- /dev/null
+++ b/doc/groff.html.node/ms-Naming-Conventions.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Naming Conventions (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Naming Conventions (The GNU Troff Manual)">
+<meta name="keywords" content="ms Naming Conventions (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms.html" rel="up" title="ms">
+<link href="ms-Legacy-Features.html" rel="prev" title="ms Legacy Features">
+<style type="text/css">
+<!--
+ul.mark-bullet {list-style-type: disc}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="ms-Naming-Conventions">
+<div class="nav-panel">
+<p>
+Previous: <a href="ms-Legacy-Features.html" accesskey="p" rel="prev">Legacy Features</a>, Up: <a href="ms.html" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Naming-Conventions">4.6.9 Naming Conventions</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-naming-conventions"></a>
+<a class="index-entry-id" id="index-naming-conventions_002c-ms-macros"></a>
+
+<p>The following conventions are used for names of macros, strings, and
+registers. External names available to documents that use the
+<code class="code">groff</code> <samp class="file">ms</samp> macros contain only uppercase letters and digits.
+</p>
+<p>Internally, the macros are divided into modules. Conventions for
+identifier names are as follows.
+</p>
+<ul class="itemize mark-bullet">
+<li>Names used only within one module are of the form
+<var class="var">module</var><code class="code">*</code><var class="var">name</var>.
+
+</li><li>Names used outside the module in which they are defined are of the form
+<var class="var">module</var><code class="code">@</code><var class="var">name</var>.
+
+</li><li>Names associated with a particular environment are of the form
+<var class="var">environment</var><code class="code">:</code><var class="var">name</var>; these are used only within the
+<code class="code">par</code> module.
+
+</li><li><var class="var">name</var> does not have a module prefix.
+
+</li><li>Constructed names used to implement arrays are of the form
+<var class="var">array</var><code class="code">!</code><var class="var">index</var>.
+</li></ul>
+
+<p>Thus the <code class="code">groff</code> <samp class="file">ms</samp> macros reserve the following names.
+</p>
+<ul class="itemize mark-bullet">
+<li>Names containing the characters <code class="code">*</code>, <code class="code">@</code>, and&nbsp;<code class="code">:</code>.
+
+</li><li>Names containing only uppercase letters and digits.
+</li></ul>
+
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-Page-Layout.html b/doc/groff.html.node/ms-Page-Layout.html
new file mode 100644
index 0000000..7bea36d
--- /dev/null
+++ b/doc/groff.html.node/ms-Page-Layout.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms Page Layout (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms Page Layout (The GNU Troff Manual)">
+<meta name="keywords" content="ms Page Layout (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms.html" rel="up" title="ms">
+<link href="Differences-from-AT_0026T-ms.html" rel="next" title="Differences from AT&amp;T ms">
+<link href="ms-Body-Text.html" rel="prev" title="ms Body Text">
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="ms-Page-Layout">
+<div class="nav-panel">
+<p>
+Next: <a href="Differences-from-AT_0026T-ms.html" accesskey="n" rel="next">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a>, Previous: <a href="ms-Body-Text.html" accesskey="p" rel="prev">Body Text</a>, Up: <a href="ms.html" accesskey="u" rel="up"><samp class="file">ms</samp></a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="Page-layout">4.6.6 Page layout</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-page-layout"></a>
+<a class="index-entry-id" id="index-page-layout-_005bms_005d"></a>
+
+<p><samp class="file">ms</samp>&rsquo;s default page layout arranges text in a single column with
+the page number between hyphens centered in a header on each page except
+the first, and produces no footers. You can customize this arrangement.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="ms-Headers-and-Footers.html" accesskey="1">Headers and footers</a></li>
+<li><a href="Tab-Stops-in-ms.html" accesskey="2">Tab stops</a></li>
+<li><a href="ms-Margins.html" accesskey="3">Margins</a></li>
+<li><a href="ms-Multiple-Columns.html" accesskey="4">Multiple columns</a></li>
+<li><a href="ms-TOC.html" accesskey="5">Creating a table of contents</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-TOC.html b/doc/groff.html.node/ms-TOC.html
new file mode 100644
index 0000000..96a2f76
--- /dev/null
+++ b/doc/groff.html.node/ms-TOC.html
@@ -0,0 +1,242 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms TOC (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms TOC (The GNU Troff Manual)">
+<meta name="keywords" content="ms TOC (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Page-Layout.html" rel="up" title="ms Page Layout">
+<link href="Differences-from-AT_0026T-ms.html" rel="next" title="Differences from AT&amp;T ms">
+<link href="ms-Multiple-Columns.html" rel="prev" title="ms Multiple Columns">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="ms-TOC">
+<div class="nav-panel">
+<p>
+Next: <a href="Differences-from-AT_0026T-ms.html" accesskey="n" rel="next">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a>, Previous: <a href="ms-Multiple-Columns.html" accesskey="p" rel="prev">Multiple columns</a>, Up: <a href="ms-Page-Layout.html" accesskey="u" rel="up">Page layout</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Creating-a-table-of-contents">4.6.6.5 Creating a table of contents</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-creating-table-of-contents"></a>
+<a class="index-entry-id" id="index-table-of-contents_002c-creating-_005bms_005d"></a>
+
+<p>Because <code class="code">roff</code> formatters process their input in a single pass,
+material on page 50, for example, cannot influence what appears on
+page&nbsp;1&mdash;this poses a challenge for a table of contents at its
+traditional location in front matter, if you wish to avoid manually
+maintaining it. <samp class="file">ms</samp> enables the collection of material to be
+presented in the table of contents as it appears, saving its page number
+along with it, and then emitting the collected contents on demand toward
+the end of the document. The table of contents can then be resequenced
+to its desired location by physically rearranging the pages of a printed
+document, or as part of post-processing&mdash;with a <cite class="cite">sed<span class="r">(1)</span></cite>
+script to reorder the pages in <code class="command">troff</code>&rsquo;s output, with
+<cite class="cite">pdfjam<span class="r">(1)</span></cite>, or with <cite class="cite">gropdf<span class="r">(1)</span></cite>&rsquo;s
+&lsquo;<samp class="samp">.pdfswitchtopage</samp>&rsquo; feature, for example.
+</p>
+<p>Define an entry to appear in the table of contents by bracketing its
+text between calls to the <code class="code">XS</code> and <code class="code">XE</code> macros. A typical
+application is to call them immediately after <code class="code">NH</code> or <code class="code">SH</code> and
+repeat the heading text within them. The <code class="code">XA</code> macro, used within
+&lsquo;<samp class="samp">.XS</samp>&rsquo;/&lsquo;<samp class="samp">.XE</samp>&rsquo; pairs, supplements an entry&mdash;for instance, when
+it requires multiple output lines, whether because a heading is too long
+to fit or because style dictates that page numbers not be repeated. You
+may wish to indent the text thus wrapped to correspond to its heading
+depth; this can be done in the entry text by prefixing it with tabs or
+horizontal motion escape sequences, or by providing a second argument to
+the <code class="code">XA</code> macro. <code class="code">XS</code> and <code class="code">XA</code> automatically associate
+the page number where they are called with the text following them, but
+they accept arguments to override this behavior. At the end of the
+document, call <code class="code">TC</code> or <code class="code">PX</code> to emit the table of contents;
+<code class="code">TC</code> resets the page number to &lsquo;<samp class="samp">i</samp>&rsquo; (Roman numeral one), and
+then calls <code class="code">PX</code>. All of these macros are Berkeley extensions.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eXS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XS</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">page-number</i></span>]</var><a class="copiable-link" href='#index-_002eXS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXA"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XA</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">page-number</i></span> [<span class="r"><i class="slanted">indentation</i></span>]]</var><a class="copiable-link" href='#index-_002eXA'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XA-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XE</code></strong><a class="copiable-link" href='#index-_002eXE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XE-_005bms_005d"></a>
+<p>Begin, supplement, and end a table of contents entry. Each entry is
+associated with <var class="var">page-number</var> (otherwise the current page number); a
+<var class="var">page-number</var> of &lsquo;<samp class="samp">no</samp>&rsquo; prevents a leader and page number from
+being emitted for that entry. Use of <code class="code">XA</code> within
+<code class="code">XS</code>/<code class="code">XE</code> is optional; it can be repeated. If
+<var class="var">indentation</var> is present, a supplemental entry is indented by that
+amount; ens are assumed if no unit is indicated. Text on input lines
+between <code class="code">XS</code> and <code class="code">XE</code> is stored for later recall by <code class="code">PX</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002ePX"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.PX</code></strong> <var class="def-var-arguments">[<code class="code">no</code>]</var><a class="copiable-link" href='#index-_002ePX'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-PX-_005bms_005d"></a>
+<p>Switch to single-column layout. Unless <code class="code">no</code> is specified, center
+and interpolate the <code class="code">TOC</code> string in bold and two points larger than
+the body text. Emit the table of contents entries.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eTC"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.TC</code></strong> <var class="def-var-arguments">[<code class="code">no</code>]</var><a class="copiable-link" href='#index-_002eTC'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TC-_005bms_005d"></a>
+<p>Set the page number to&nbsp;1, the page number format to lowercase Roman
+numerals, and call <code class="code">PX</code> (with a <code class="code">no</code> argument, if present).
+</p></dd></dl>
+
+<p>Here&rsquo;s an example of typical <samp class="file">ms</samp> table of contents preparation.
+We employ horizontal escape sequences <code class="code">\h</code> to indent the entries by
+sectioning depth.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.NH 1
+Introduction
+.XS
+Introduction
+.XE
+<span class="r">&hellip;</span>
+.NH 2
+Methodology
+.XS
+\h'2n'Methodology
+.XA
+\h'4n'Fassbinder's Approach
+\h'4n'Kahiu's Approach
+.XE
+<span class="r">&hellip;</span>
+.NH 1
+Findings
+.XS
+Findings
+.XE
+<span class="r">&hellip;</span>
+.TC
+</pre></div>
+</td></tr></table>
+
+<p>The remaining features in this subsubsection are GNU extensions.
+<code class="code">groff</code> <samp class="file">ms</samp> obviates the need to repeat heading text after
+<code class="code">XS</code> calls. Call <code class="code">XN</code> and <code class="code">XH</code> after <code class="code">NH</code> and
+<code class="code">SH</code>, respectively.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eXN"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XN</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXN'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XN-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXH"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XH</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">depth</i></span> <span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXH'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XH-_005bms_005d"></a>
+<p>Format <var class="var">heading-text</var> and create a corresponding table of contents
+entry. <code class="code">XN</code> computes the indentation from the depth of the
+preceding <code class="code">NH</code> call; <code class="code">XH</code> requires a <var class="var">depth</var> argument to
+do so.
+</p></dd></dl>
+
+<p><code class="code">groff</code> <samp class="file">ms</samp> encourages customization of table of contents
+entry production.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eXN_002dREPLACEMENT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XN-REPLACEMENT</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXN_002dREPLACEMENT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XN_002dREPLACEMENT-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXH_002dREPLACEMENT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XH-REPLACEMENT</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">depth</i></span> <span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXH_002dREPLACEMENT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XH_002dREPLACEMENT-_005bms_005d"></a>
+<p>These hook macros implement <code class="code">XN</code> and <code class="code">XH</code>, respectively.
+They call <code class="code">XN-INIT</code> and pass their <var class="var">heading-text</var> arguments to
+<code class="code">XH-UPDATE-TOC</code>.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eXN_002dINIT"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XN-INIT</code></strong><a class="copiable-link" href='#index-_002eXN_002dINIT'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XN_002dINIT-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eXH_002dUPDATE_002dTOC"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.XH-UPDATE-TOC</code></strong> <var class="def-var-arguments"><span class="r"><i class="slanted">depth</i></span> <span class="r"><i class="slanted">heading-text</i></span></var><a class="copiable-link" href='#index-_002eXH_002dUPDATE_002dTOC'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-XH_002dUPDATE_002dTOC-_005bms_005d"></a>
+<p>The <code class="code">XN-INIT</code> hook macro does nothing by default.
+<code class="code">XH-UPDATE-TOC</code> brackets <var class="var">heading-text</var> with <code class="code">XS</code> and
+<code class="code">XE</code> calls, indenting it by 2 ens per level of <var class="var">depth</var> beyond
+the first.
+</p></dd></dl>
+
+<p>We could therefore produce a table of contents similar to that in the
+previous example with fewer macro calls. (The difference is that this
+input follows the &ldquo;Approach&rdquo; entries with leaders and page numbers.)
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.NH 1
+.XN Introduction
+<span class="r">&hellip;</span>
+.NH 2
+.XN Methodology
+.XH 3 &quot;Fassbinder's Approach&quot;
+.XH 3 &quot;Kahiu's Approach&quot;
+<span class="r">&hellip;</span>
+.NH 1
+.XN Findings
+<span class="r">&hellip;</span>
+</pre></div>
+</td></tr></table>
+
+<p>To get the section number of the numbered headings into the table of
+contents entries, we might define <code class="code">XN-REPLACEMENT</code> as follows.
+(We obtain the heading depth from <code class="code">groff</code> <samp class="file">ms</samp>&rsquo;s internal
+register <code class="code">nh*hl</code>.)
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.de XN-REPLACEMENT
+.XN-INIT
+.XH-UPDATE-TOC \\n[nh*hl] \\$@
+\&amp;\\*[SN] \\$*
+..
+</pre></div>
+</td></tr></table>
+
+<p>You can change the style of the leader that bridges each table of
+contents entry with its page number; define the <code class="code">TC-LEADER</code> special
+character by using the <code class="code">char</code> request. A typical leader combines
+the dot glyph &lsquo;<samp class="samp">.</samp>&rsquo; with a horizontal motion escape sequence to
+spread the dots. The width of the page number field is stored in the
+<code class="code">TC-MARGIN</code> register.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Differences-from-AT_0026T-ms.html">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a>, Previous: <a href="ms-Multiple-Columns.html">Multiple columns</a>, Up: <a href="ms-Page-Layout.html">Page layout</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-basic-information.html b/doc/groff.html.node/ms-basic-information.html
new file mode 100644
index 0000000..cc87b0b
--- /dev/null
+++ b/doc/groff.html.node/ms-basic-information.html
@@ -0,0 +1,211 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms basic information (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms basic information (The GNU Troff Manual)">
+<meta name="keywords" content="ms basic information (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Introduction.html" rel="up" title="ms Introduction">
+<link href="ms-Document-Structure.html" rel="next" title="ms Document Structure">
+<link href="ms-Introduction.html" rel="prev" title="ms Introduction">
+<style type="text/css">
+<!--
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="ms-basic-information">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Document-Structure.html" accesskey="n" rel="next">Document Structure</a>, Previous: <a href="ms-Introduction.html" accesskey="p" rel="prev">Introduction</a>, Up: <a href="ms-Introduction.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Basic-information">4.6.1.1 Basic information</h4>
+
+<p><samp class="file">ms</samp> documents are plain text files; prepare them with your
+preferred text editor. If you&rsquo;re in a hurry to start, know that
+<samp class="file">ms</samp> needs one of its macros called at the beginning of a document
+so that it can initialize. A <em class="dfn">macro</em> is a formatting instruction to
+<samp class="file">ms</samp>. Put a macro call on a line by itself. Use &lsquo;<samp class="samp">.PP</samp>&rsquo; if you
+want your paragraph&rsquo;s first line to be indented, or &lsquo;<samp class="samp">.LP</samp>&rsquo; if you
+don&rsquo;t.
+</p>
+<p>After that, start typing normally. It is a good practice to start each
+sentence on a new line, or to put two spaces after sentence-ending
+punctuation, so that the formatter knows where the sentence boundaries
+are. You can separate paragraphs with further paragraphing macros, or
+with blank lines, and you can indent with tabs. When you need one of
+the features mentioned earlier (see <a class="pxref" href="ms.html"><samp class="file">ms</samp></a>), return to this part of the
+manual.
+</p>
+<p>Format the document with the <code class="command">groff</code> command. <code class="command">nroff</code>
+can be useful for previewing.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">$ editor radical.ms
+$ nroff -ww -z -ms radical.ms # check for errors
+$ nroff -ms radical.ms | less -R
+$ groff -T ps -ms radical.ms &gt; radical.ps
+$ see radical.ps
+</pre></div>
+</td></tr></table>
+
+<p>Our <samp class="file">radical.ms</samp> document might look like this.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.LP
+Radical novelties are so disturbing that they tend to be
+suppressed or ignored, to the extent that even the
+possibility of their existence in general is more often
+denied than admitted.
+
+&rarr;That's what Dijkstra said, anyway.
+</pre></div>
+</td></tr></table>
+
+<p><samp class="file">ms</samp> exposes many aspects of document layout to user control via
+<code class="code">groff</code>&rsquo;s <em class="dfn">registers</em> and <em class="dfn">strings</em>, which store numbers
+and text, respectively. Measurements in <code class="code">groff</code> are expressed with
+a suffix called a <em class="dfn">scaling unit</em>.
+</p>
+<dl class="table">
+<dt><code class="code">i</code></dt>
+<dd><p>inches
+</p>
+</dd>
+<dt><code class="code">c</code></dt>
+<dd><p>centimeters
+</p>
+</dd>
+<dt><code class="code">p</code></dt>
+<dd><p>points (1/72 inch)
+</p>
+</dd>
+<dt><code class="code">P</code></dt>
+<dd><p>picas (1/6 inch)
+</p>
+</dd>
+<dt><code class="code">v</code></dt>
+<dd><p>vees; current vertical spacing
+</p>
+</dd>
+<dt><code class="code">m</code></dt>
+<dd><p>ems; width of an &ldquo;M&rdquo; in the current font
+</p>
+</dd>
+<dt><code class="code">n</code></dt>
+<dd><p>ens; one-half em
+</p></dd>
+</dl>
+
+<p>Set registers with the <code class="code">nr</code> request and strings with the <code class="code">ds</code>
+request. <em class="dfn">Requests</em> are like macro calls; they go on lines by
+themselves and start with the <em class="dfn">control character</em>, a dot (<code class="code">.</code>).
+The difference is that they directly instruct the formatter program,
+rather than the macro package. We&rsquo;ll discuss a few as applicable. It
+is wise to specify a scaling unit when setting any register that
+represents a length, size, or distance.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.nr PS 10.5p \&quot; Use 10.5-point type.
+.ds FAM P \&quot; Use Palatino font family.
+</pre></div>
+</td></tr></table>
+
+<p>In the foregoing, we see that <code class="code">\&quot;</code> begins a comment. This is an
+example of an <em class="dfn">escape sequence</em>, the other kind of formatting
+instruction. Escape sequences can appear anywhere. They begin with the
+escape character (<code class="code">\</code>) and are followed by at least one more
+character. <samp class="file">ms</samp> documents
+tend to use only a few of <code class="code">groff</code>&rsquo;s many requests and escape
+sequences; see <a class="ref" href="Request-Index.html">Request Index</a> and <a class="ref" href="Escape-Sequence-Index.html">Escape Sequence Index</a> or
+the <cite class="cite">groff<span class="r">(7)</span></cite> man page for complete lists.
+</p>
+<dl class="table">
+<dt><code class="code">\&quot;</code></dt>
+<dd><p>Begin comment; ignore remainder of line.
+</p>
+</dd>
+<dt><code class="code">\n[<var class="var">reg</var>]</code></dt>
+<dd><p>Interpolate value of register <var class="var">reg</var>.
+</p>
+</dd>
+<dt><code class="code">\*[<var class="var">str</var>]</code></dt>
+<dd><p>Interpolate contents of string <var class="var">str</var>.
+</p>
+</dd>
+<dt><code class="code">\*<var class="var">s</var></code></dt>
+<dd><p>abbreviation of <code class="code">\*[<var class="var">s</var>]</code>; the name <var class="var">s</var> must be only one
+character
+</p>
+</dd>
+<dt><code class="code">\[<var class="var">char</var>]</code></dt>
+<dd><p>Interpolate glyph of special character named <var class="var">char</var>.
+</p>
+</dd>
+<dt><code class="code">\&amp;</code></dt>
+<dd><p>dummy character
+</p>
+</dd>
+<dt><code class="code">\~</code></dt>
+<dd><p>Insert an unbreakable space that is adjustable like a normal space.
+</p>
+</dd>
+<dt><code class="code">\|</code></dt>
+<dd><p>Move horizontally by one-sixth em (&ldquo;thin space&rdquo;).
+</p></dd>
+</dl>
+
+<p>Prefix any words that start with a dot &lsquo;<samp class="samp">.</samp>&rsquo; or neutral apostrophe
+&lsquo;<samp class="samp">'</samp>&rsquo; with <code class="code">\&amp;</code> if they are at the beginning of an input line
+(or might become that way in editing) to prevent them from being
+interpreted as macro calls or requests. Suffix &lsquo;<samp class="samp">.</samp>&rsquo;, &lsquo;<samp class="samp">?</samp>&rsquo;, and
+&lsquo;<samp class="samp">!</samp>&rsquo; with <code class="code">\&amp;</code> when needed to cancel end-of-sentence detection.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">My exposure was \&amp;.5 to \&amp;.6 Sv of neutrons, said Dr.\&amp;
+Wallace after the criticality incident.
+</pre></div>
+</td></tr></table>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Document-Structure.html">Document Structure</a>, Previous: <a href="ms-Introduction.html">Introduction</a>, Up: <a href="ms-Introduction.html">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-keeps-and-displays.html b/doc/groff.html.node/ms-keeps-and-displays.html
new file mode 100644
index 0000000..47088aa
--- /dev/null
+++ b/doc/groff.html.node/ms-keeps-and-displays.html
@@ -0,0 +1,207 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms keeps and displays (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms keeps and displays (The GNU Troff Manual)">
+<meta name="keywords" content="ms keeps and displays (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Body-Text.html" rel="up" title="ms Body Text">
+<link href="ms-Insertions.html" rel="next" title="ms Insertions">
+<link href="Indented-regions-in-ms.html" rel="prev" title="Indented regions in ms">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="ms-keeps-and-displays">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Insertions.html" accesskey="n" rel="next">Tables, figures, equations, and references</a>, Previous: <a href="Indented-regions-in-ms.html" accesskey="p" rel="prev">Indented regions</a>, Up: <a href="ms-Body-Text.html" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Keeps_002c-boxed-keeps_002c-and-displays">4.6.5.8 Keeps, boxed keeps, and displays</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-displays"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-keeps"></a>
+<a class="index-entry-id" id="index-keeps-_005bms_005d"></a>
+
+<p>On occasion, you may want to <em class="dfn">keep</em> several lines of text, or a
+region of a document, together on a single page, preventing an automatic
+page break within certain boundaries. This can cause a page break to
+occur earlier than it normally would. For example, you may want to keep
+two paragraphs together, or a paragraph that refers to a table, list, or
+figure adjacent to the item it discusses. <samp class="file">ms</samp> provides the
+<code class="code">KS</code> and <code class="code">KE</code> macros for this purpose.
+</p>
+<p>You can alternatively specify a <em class="dfn">floating keep</em>: if a keep cannot
+fit on the current page, <samp class="file">ms</samp> holds its contents and
+allows material following the keep (in the source document) to fill the
+remainder of the current page. When the page breaks, whether by
+reaching the end or <code class="code">bp</code> request, <samp class="file">ms</samp> puts the floating keep
+at the beginning of the next page. This is useful for placing large
+graphics or tables that do not need to appear exactly where they occur
+in the source document.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eKS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.KS</code></strong><a class="copiable-link" href='#index-_002eKS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-KS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eKF"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.KF</code></strong><a class="copiable-link" href='#index-_002eKF'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-KF-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eKE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.KE</code></strong><a class="copiable-link" href='#index-_002eKE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-KE-_005bms_005d"></a>
+<p><code class="code">KS</code> begins a keep, <code class="code">KF</code> a floating keep, and <code class="code">KE</code> ends a
+keep of either kind.
+</p></dd></dl>
+
+<p>As an alternative to the keep mechanism, the <code class="code">ne</code> request forces a
+page break if there is not at least the amount of vertical space
+specified in its argument remaining on the page (see <a class="pxref" href="Page-Control.html">Page Control</a>).
+One application of <code class="code">ne</code> is to reserve space on the page for a
+figure or illustration to be included later.
+</p>
+<a class="index-entry-id" id="index-boxes-_005bms_005d"></a>
+<p>A <em class="dfn">boxed keep</em> has a frame drawn around it.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eB1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.B1</code></strong><a class="copiable-link" href='#index-_002eB1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-B1-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eB2"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.B2</code></strong><a class="copiable-link" href='#index-_002eB2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-B2-_005bms_005d"></a>
+<p><code class="code">B1</code> begins a keep with a box drawn around it. <code class="code">B2</code> ends a
+boxed keep.
+</p></dd></dl>
+
+<p>Boxed keep macros cause breaks; if you need to box a word or phrase
+within a line, see the <code class="code">BX</code> macro in <a class="ref" href="Typeface-and-decoration.html">Typeface and decoration</a>.
+Box lines are drawn as close as possible to the text they enclose so
+that they are usable within paragraphs. If you wish to box one or more
+paragraphs, you may improve the appearance by calling <code class="code">B1</code> after
+the first paragraphing macro, and by adding a small amount of vertical
+space before calling <code class="code">B2</code>.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">.LP
+.B1
+.I Warning:
+Happy Fun Ball may suddenly accelerate to dangerous
+speeds.
+.sp \n[PD]/2 \&quot; space by half the inter-paragraph distance
+.B2
+</pre></div>
+</td></tr></table>
+
+<p>If you want a boxed keep to float, you will need to enclose the
+<code class="code">B1</code> and <code class="code">B2</code> calls within a pair of <code class="code">KF</code> and <code class="code">KE</code>
+calls.
+</p>
+<a class="index-entry-id" id="index-displays-_005bms_005d"></a>
+<p><em class="dfn">Displays</em> turn off filling; lines of verse or program code are
+shown with their lines broken as in the source document without
+requiring <code class="code">br</code> requests between lines. Displays can be kept on a
+single page or allowed to break across pages. The <code class="code">DS</code> macro
+begins a kept display of the layout specified in its first argument;
+non-kept displays are begun with dedicated macros corresponding to their
+layout.
+</p>
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDS"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments"><code class="t">L</code></var><a class="copiable-link" href='#index-_002eDS'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DS-_005bms_005d"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eLD"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.LD</code></strong><a class="copiable-link" href='#index-_002eLD'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-LD-_005bms_005d"></a>
+<p>Begin (<code class="code">DS</code>: kept) left-aligned display.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDS-1"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments">[<code class="t">I</code> [<span class="r"><i class="slanted">indent</i></span>]]</var><a class="copiable-link" href='#index-_002eDS-1'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DS-_005bms_005d-1"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eID"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.ID</code></strong> <var class="def-var-arguments">[<span class="r"><i class="slanted">indent</i></span>]</var><a class="copiable-link" href='#index-_002eID'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ID-_005bms_005d"></a>
+<p>Begin (<code class="code">DS</code>: kept) display indented by <var class="var">indent</var> if specified,
+and by the amount of the <code class="code">DI</code> register otherwise.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDS-2"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments"><code class="t">B</code></var><a class="copiable-link" href='#index-_002eDS-2'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DS-_005bms_005d-2"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eBD"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.BD</code></strong><a class="copiable-link" href='#index-_002eBD'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-BD-_005bms_005d"></a>
+<p>Begin a (<code class="code">DS</code>: kept) a block display: the entire display is
+left-aligned, but indented such that the longest line in the display
+is centered on the page.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDS-3"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments"><code class="t">C</code></var><a class="copiable-link" href='#index-_002eDS-3'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DS-_005bms_005d-3"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eCD"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.CD</code></strong><a class="copiable-link" href='#index-_002eCD'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-CD-_005bms_005d"></a>
+<p>Begin a (<code class="code">DS</code>: kept) centered display: each line in the display
+is centered.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDS-4"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DS</code></strong> <var class="def-var-arguments"><code class="t">R</code></var><a class="copiable-link" href='#index-_002eDS-4'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DS-_005bms_005d-4"></a>
+</dd><dt class="deffnx defmacx-alias-deffnx def-cmd-deffn" id="index-_002eRD"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.RD</code></strong><a class="copiable-link" href='#index-_002eRD'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-RD-_005bms_005d"></a>
+<p>Begin a (<code class="code">DS</code>: kept) right-aligned display. This is a GNU
+extension.
+</p></dd></dl>
+
+<dl class="first-deffn first-defmac-alias-first-deffn">
+<dt class="deffn defmac-alias-deffn" id="index-_002eDE"><span class="category-def">Macro: </span><span><strong class="def-name"><code class="t">.DE</code></strong><a class="copiable-link" href='#index-_002eDE'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-DE-_005bms_005d"></a>
+<p>End any display.
+</p></dd></dl>
+
+<p>The distance stored in the <code class="code">DD</code> register is inserted before and
+after each pair of display macros; this is a Berkeley extension. In
+<code class="code">groff</code> <samp class="file">ms</samp>, this distance replaces any adjacent
+inter-paragraph distance or subsequent spacing prior to a section
+heading. The <code class="code">DI</code> register is a GNU extension; its value is an
+indentation applied to displays created with &lsquo;<samp class="samp">.DS</samp>&rsquo; and &lsquo;<samp class="samp">.ID</samp>&rsquo;
+without arguments, to &lsquo;<samp class="samp">.DS I</samp>&rsquo; without an indentation argument, and
+to indented equations set with &lsquo;<samp class="samp">.EQ</samp>&rsquo;. Changes to either register
+take effect at the next display boundary.
+</p>
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Insertions.html">Tables, figures, equations, and references</a>, Previous: <a href="Indented-regions-in-ms.html">Indented regions</a>, Up: <a href="ms-Body-Text.html">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms-language-and-localization.html b/doc/groff.html.node/ms-language-and-localization.html
new file mode 100644
index 0000000..032b4a0
--- /dev/null
+++ b/doc/groff.html.node/ms-language-and-localization.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms language and localization (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms language and localization (The GNU Troff Manual)">
+<meta name="keywords" content="ms language and localization (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="ms-Body-Text.html" rel="up" title="ms Body Text">
+<link href="ms-Page-Layout.html" rel="next" title="ms Page Layout">
+<link href="ms-Footnotes.html" rel="prev" title="ms Footnotes">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span.r {font-family: initial; font-weight: normal; font-style: normal}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsubsection-level-extent" id="ms-language-and-localization">
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Page-Layout.html" accesskey="n" rel="next">Page layout</a>, Previous: <a href="ms-Footnotes.html" accesskey="p" rel="prev">Footnotes</a>, Up: <a href="ms-Body-Text.html" accesskey="u" rel="up">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsubsection" id="Language-and-localization">4.6.5.11 Language and localization</h4>
+<a class="index-entry-id" id="index-ms-macros_002c-language"></a>
+<a class="index-entry-id" id="index-ms-macros_002c-localization"></a>
+<a class="index-entry-id" id="index-language-_005bms_005d"></a>
+<a class="index-entry-id" id="index-localization-_005bms_005d"></a>
+
+<p><code class="code">groff</code> <samp class="file">ms</samp> provides several strings that you can customize
+for your own purposes, or redefine to adapt the macro package to
+languages other than English. It is already localized for
+Czech, German, French, Italian, and Swedish. Load the desired
+localization macro package after <samp class="file">ms</samp>; see the
+<cite class="cite">groff_tmac<span class="r">(5)</span></cite> man page.
+</p>
+<table class="cartouche" border="1"><tr><td>
+<div class="example">
+<pre class="example-preformatted">$ groff -ms -mfr bienvenue.ms
+</pre></div>
+</td></tr></table>
+
+<p>The following strings are available.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bREFERENCES_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[REFERENCES]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bREFERENCES_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-REFERENCES-_005bms_005d"></a>
+<p>Contains the string printed at the beginning of a references
+(bibliography) page produced with GNU <cite class="cite">refer<span class="r">(1)</span></cite>. The default
+is &lsquo;<samp class="samp">References</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bABSTRACT_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[ABSTRACT]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bABSTRACT_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-ABSTRACT-_005bms_005d"></a>
+<p>Contains the string printed at the beginning of the abstract. The
+default is &lsquo;<samp class="samp">\f[I]ABSTRACT\f[]</samp>&rsquo;; it includes font selection escape
+sequences to set the word in italics.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bTOC_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[TOC]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bTOC_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-TOC-_005bms_005d"></a>
+<p>Contains the string printed at the beginning of the table of contents.
+The default is &lsquo;<samp class="samp">Table of Contents</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_005c_002a_005bMONTH1_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH1]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH1_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH1-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH2_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH2]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH2_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH2-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH3_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH3]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH3_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH3-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH4_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH4]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH4_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH4-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH5_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH5]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH5_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH5-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH6_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH6]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH6_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH6-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH7_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH7]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH7_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH7-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH8_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH8]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH8_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH8-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH9_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH9]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH9_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH9-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH10_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH10]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH10_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH10-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH11_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH11]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH11_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH11-_005bms_005d"></a>
+</dd><dt class="deffnx def-cmd-deffn" id="index-_005c_002a_005bMONTH12_005d"><span class="category-def">String: </span><span><strong class="def-name"><code class="t">\*[MONTH12]</code></strong><a class="copiable-link" href='#index-_005c_002a_005bMONTH12_005d'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-MONTH12-_005bms_005d"></a>
+<p>Contain the full names of the calendar months. The defaults are in
+English: &lsquo;<samp class="samp">January</samp>&rsquo;, &lsquo;<samp class="samp">February</samp>&rsquo;, and so on.
+</p></dd></dl>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="ms-Page-Layout.html">Page layout</a>, Previous: <a href="ms-Footnotes.html">Footnotes</a>, Up: <a href="ms-Body-Text.html">Body Text</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/ms.html b/doc/groff.html.node/ms.html
new file mode 100644
index 0000000..aaf7bf1
--- /dev/null
+++ b/doc/groff.html.node/ms.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>ms (The GNU Troff Manual)</title>
+
+<meta name="description" content="ms (The GNU Troff Manual)">
+<meta name="keywords" content="ms (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Major-Macro-Packages.html" rel="up" title="Major Macro Packages">
+<link href="mom.html" rel="prev" title="mom">
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="ms">
+<div class="nav-panel">
+<p>
+Previous: <a href="mom.html" accesskey="p" rel="prev"><samp class="file">mom</samp></a>, Up: <a href="Major-Macro-Packages.html" accesskey="u" rel="up">Macro Packages</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="ms-1">4.6 <samp class="file">ms</samp></h3>
+<a class="index-entry-id" id="index-ms-macros"></a>
+
+<p>The <samp class="file">ms</samp> (&ldquo;manuscript&rdquo;) package is suitable for the preparation
+of letters, memoranda, reports, and books. These <code class="code">groff</code>
+macros feature cover page and table of contents generation,
+automatically numbered headings, several paragraph styles, a variety of
+text styling options, footnotes, and multi-column page layouts.
+<samp class="file">ms</samp> supports the <code class="command">tbl</code>, <code class="command">eqn</code>, <code class="command">pic</code>, and
+<code class="command">refer</code> preprocessors for inclusion of tables, mathematical
+equations, diagrams, and standardized bibliographic citations. This
+implementation is mostly compatible with the documented interface and
+behavior of AT&amp;T Unix Version&nbsp;7 <samp class="file">ms</samp>. Many extensions from
+4.2BSD (Berkeley)
+and Tenth Edition Research Unix have been recreated.
+</p>
+
+
+<ul class="mini-toc">
+<li><a href="ms-Introduction.html" accesskey="1">Introduction</a></li>
+<li><a href="ms-Document-Structure.html" accesskey="2">Document Structure</a></li>
+<li><a href="ms-Document-Control-Settings.html" accesskey="3">Document Control Settings</a></li>
+<li><a href="ms-Document-Description-Macros.html" accesskey="4">Document Description Macros</a></li>
+<li><a href="ms-Body-Text.html" accesskey="5">Body Text</a></li>
+<li><a href="ms-Page-Layout.html" accesskey="6">Page layout</a></li>
+<li><a href="Differences-from-AT_0026T-ms.html" accesskey="7">Differences from <abbr class="acronym">AT&amp;T</abbr> <samp class="file">ms</samp></a></li>
+<li><a href="ms-Legacy-Features.html" accesskey="8">Legacy Features</a></li>
+<li><a href="ms-Naming-Conventions.html" accesskey="9">Naming Conventions</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/troff-and-nroff-Modes.html b/doc/groff.html.node/troff-and-nroff-Modes.html
new file mode 100644
index 0000000..257d36e
--- /dev/null
+++ b/doc/groff.html.node/troff-and-nroff-Modes.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>troff and nroff Modes (The GNU Troff Manual)</title>
+
+<meta name="description" content="troff and nroff Modes (The GNU Troff Manual)">
+<meta name="keywords" content="troff and nroff Modes (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="GNU-troff-Reference.html" rel="up" title="GNU troff Reference">
+<link href="Line-Layout.html" rel="next" title="Line Layout">
+<link href="Character-Translations.html" rel="prev" title="Character Translations">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="troff-and-nroff-Modes">
+<div class="nav-panel">
+<p>
+Next: <a href="Line-Layout.html" accesskey="n" rel="next">Line Layout</a>, Previous: <a href="Character-Translations.html" accesskey="p" rel="prev">Character Translations</a>, Up: <a href="GNU-troff-Reference.html" accesskey="u" rel="up">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h3 class="section" id="troff-and-nroff-Modes-1">5.14 <code class="code">troff</code> and <code class="code">nroff</code> Modes</h3>
+<a class="index-entry-id" id="index-troff-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-troff"></a>
+<a class="index-entry-id" id="index-nroff-mode"></a>
+<a class="index-entry-id" id="index-mode_002c-nroff"></a>
+
+<p>Historically, <code class="code">nroff</code> and <code class="code">troff</code> were two separate programs;
+the former for terminal output, the latter for typesetters. GNU
+<code class="code">troff</code> merges both functions into one executable<a class="footnote" id="DOCF68" href="groff.html_fot.html#FOOT68"><sup>68</sup></a> that sends its output to a
+device driver (<code class="code">grotty</code> for terminal devices, <code class="code">grops</code> for
+PostScript, and so on) which interprets this intermediate output format.
+When discussing <abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code>, it makes sense to talk
+about <em class="dfn"><code class="code">nroff</code> mode</em> and <em class="dfn"><code class="code">troff</code> mode</em> since the
+differences are hard-coded. GNU <code class="code">troff</code> takes information from
+device and font description files without handling requests specially if
+a terminal output device is used, so such a strong distinction is
+unnecessary.
+</p>
+<p>Usually, a macro package can be used with all output devices.
+Nevertheless, it is sometimes necessary to make a distinction between
+terminal and non-terminal devices: GNU <code class="code">troff</code> provides two
+built-in conditions &lsquo;<samp class="samp">n</samp>&rsquo; and &lsquo;<samp class="samp">t</samp>&rsquo; for the <code class="code">if</code>, <code class="code">ie</code>,
+and <code class="code">while</code> requests to decide whether GNU <code class="code">troff</code> shall
+behave like <code class="code">nroff</code> or like <code class="code">troff</code>.
+</p>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002etroff"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.troff</code></strong><a class="copiable-link" href='#index-_002etroff'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-troff"></a>
+<a class="index-entry-id" id="index-troffrc-4"></a>
+<a class="index-entry-id" id="index-troffrc_002dend-2"></a>
+<p>Make the &lsquo;<samp class="samp">t</samp>&rsquo; built-in condition true (and the &lsquo;<samp class="samp">n</samp>&rsquo; built-in
+condition false) for <code class="code">if</code>, <code class="code">ie</code>, and <code class="code">while</code> conditional
+requests. This is the default if GNU <code class="code">troff</code> (<em class="emph">not</em>
+<code class="code">groff</code>) is started with the <samp class="option">-R</samp> switch to avoid loading of
+the startup files <samp class="file">troffrc</samp> and <samp class="file">troffrc-end</samp>. Without
+<samp class="option">-R</samp>, GNU <code class="code">troff</code> stays in <code class="code">troff</code> mode if the output
+device is not a terminal (e.g., &lsquo;ps&rsquo;).
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002enroff"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.nroff</code></strong><a class="copiable-link" href='#index-_002enroff'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-nroff"></a>
+<a class="index-entry-id" id="index-tty_002etmac"></a>
+<p>Make the &lsquo;<samp class="samp">n</samp>&rsquo; built-in condition true (and the &lsquo;<samp class="samp">t</samp>&rsquo; built-in
+condition false) for <code class="code">if</code>, <code class="code">ie</code>, and <code class="code">while</code> conditional
+requests. This is the default if GNU <code class="code">troff</code> uses a terminal
+output device; the code for switching to <code class="code">nroff</code> mode is in the
+file <samp class="file">tty.tmac</samp>, which is loaded by the startup file
+<code class="code">troffrc</code>.
+</p></dd></dl>
+
+<p>See <a class="xref" href="Conditionals-and-Loops.html">Conditionals and Loops</a>, for more details on built-in conditions.
+</p>
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="Line-Layout.html">Line Layout</a>, Previous: <a href="Character-Translations.html">Character Translations</a>, Up: <a href="GNU-troff-Reference.html">GNU <code class="code">troff</code> Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.html.node/while.html b/doc/groff.html.node/while.html
new file mode 100644
index 0000000..f9a0bae
--- /dev/null
+++ b/doc/groff.html.node/while.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>while (The GNU Troff Manual)</title>
+
+<meta name="description" content="while (The GNU Troff Manual)">
+<meta name="keywords" content="while (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditionals-and-Loops.html" rel="up" title="Conditionals and Loops">
+<link href="if_002delse.html" rel="prev" title="if-else">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="while">
+<div class="nav-panel">
+<p>
+Previous: <a href="if_002delse.html" accesskey="p" rel="prev">if-else</a>, Up: <a href="Conditionals-and-Loops.html" accesskey="u" rel="up">Conditionals and Loops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="while-1">5.23.5 while</h4>
+<a class="index-entry-id" id="index-while"></a>
+
+<p><code class="code">groff</code> provides a looping construct: the <code class="code">while</code> request.
+Its syntax matches the <code class="code">if</code> request.
+</p>
+<a class="index-entry-id" id="index-body_002c-of-a-while-request"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewhile"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.while</code></strong> <var class="def-var-arguments">cond-expr anything</var><a class="copiable-link" href='#index-_002ewhile'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-while-1"></a>
+<p>Evaluate the conditional expression <var class="var">cond-expr</var>, and repeatedly
+execute <var class="var">anything</var> unless and until <var class="var">cond-expr</var> evaluates false.
+<var class="var">anything</var>, which is often a conditional block, is referred to as
+the <code class="code">while</code> request&rsquo;s <em class="dfn">body</em>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 0 1
+.while (\na &lt; 9) \{\
+\n+a,
+.\}
+\n+a
+ &rArr; 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
+</pre></div></div>
+
+<a class="index-entry-id" id="index-de-request_002c-and-while"></a>
+<p>GNU <code class="code">troff</code> treats the body of a <code class="code">while</code> request similarly to
+that of a <code class="code">de</code> request (albeit one not read in copy
+mode<a class="footnote" id="DOCF94" href="groff.html_fot.html#FOOT94"><sup>94</sup></a>), but stores it under an internal name
+and deletes it when the loop finishes. The operation of a macro
+containing a <code class="code">while</code> request can slow significantly if the
+<code class="code">while</code> body is large. Each time the macro is executed, the
+<code class="code">while</code> body is parsed and stored again.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de xxx
+. nr num 10
+. while (\\n[num] &gt; 0) \{\
+. \&quot; many lines of code
+. nr num -1
+. \}
+..
+</pre></div></div>
+
+<a class="index-entry-id" id="index-recursive-macros"></a>
+<a class="index-entry-id" id="index-macros_002c-recursive"></a>
+<p>An often better solution&mdash;and one that is more portable, since
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> lacked the <code class="code">while</code> request&mdash;is to
+instead write a recursive macro. It will be parsed only
+once.<a class="footnote" id="DOCF95" href="groff.html_fot.html#FOOT95"><sup>95</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de yyy
+. if (\\n[num] &gt; 0) \{\
+. \&quot; many lines of code
+. nr num -1
+. yyy
+. \}
+..
+.
+.de xxx
+. nr num 10
+. yyy
+..
+</pre></div></div>
+
+<p>To prevent infinite loops, the default number of available recursion
+levels is 1,000 or somewhat less.<a class="footnote" id="DOCF96" href="groff.html_fot.html#FOOT96"><sup>96</sup></a> You can
+disable this protective measure, or raise the limit, by setting the
+<code class="code">slimit</code> register. See <a class="xref" href="Debugging.html">Debugging</a>.
+</p>
+<p>As noted above, if a <code class="code">while</code> body begins with a conditional block,
+its closing brace must end an input line.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.if 1 \{\
+. nr a 0 1
+. while (\n[a] &lt; 10) \{\
+. nop \n+[a]
+.\}\}
+ error&rarr; unbalanced brace escape sequences
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebreak"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.break</code></strong><a class="copiable-link" href='#index-_002ebreak'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-break-2"></a>
+<a class="index-entry-id" id="index-while-request_002c-confusing-with-br"></a>
+<a class="index-entry-id" id="index-break-request_002c-in-a-while-loop"></a>
+<a class="index-entry-id" id="index-continue-request_002c-in-a-while-loop"></a>
+<p>Exit a <code class="code">while</code> loop. Do not confuse this request with a
+typographical break or the <code class="code">br</code> request.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002econtinue"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.continue</code></strong><a class="copiable-link" href='#index-_002econtinue'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-continue"></a>
+<p>Skip the remainder of a <code class="code">while</code> loop&rsquo;s body, immediately starting
+the next iteration.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="if_002delse.html">if-else</a>, Up: <a href="Conditionals-and-Loops.html">Conditionals and Loops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/doc/groff.info b/doc/groff.info
new file mode 100644
index 0000000..0b36c23
--- /dev/null
+++ b/doc/groff.info
@@ -0,0 +1,423 @@
+This is groff.info, produced by makeinfo version 7.0.3 from groff.texi.
+
+This manual documents GNU 'troff' version 1.23.0.
+
+ Copyright © 1994-2023 Free Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts, and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+INFO-DIR-SECTION Typesetting
+START-INFO-DIR-ENTRY
+* Groff: (groff). The GNU roff document formatting system.
+END-INFO-DIR-ENTRY
+
+
+Indirect:
+groff.info-1: 723
+groff.info-2: 303755
+groff.info-3: 616581
+
+Tag Table:
+(Indirect)
+Node: Top723
+Node: Introduction1683
+Node: Background2155
+Node: What Is groff?3968
+Node: groff Capabilities4894
+Node: Macro Package Intro6241
+Node: Preprocessor Intro6920
+Node: Preprocessor Intro-Footnotes8331
+Ref: Preprocessor Intro-Footnote-18413
+Node: Output Device Intro8492
+Node: Installation9120
+Node: Conventions Used in This Manual9504
+Node: Conventions Used in This Manual-Footnotes12548
+Ref: Conventions Used in This Manual-Footnote-112656
+Ref: Conventions Used in This Manual-Footnote-212844
+Node: Credits12873
+Node: Invoking groff13398
+Node: Invoking groff-Footnotes14739
+Ref: Invoking groff-Footnote-114813
+Node: Groff Options14866
+Node: Environment27526
+Node: Macro Directories30791
+Node: Macro Directories-Footnotes32254
+Ref: Macro Directories-Footnote-132334
+Node: Font Directories32407
+Node: Paper Format34380
+Node: Invocation Examples35840
+Node: Tutorial for Macro Users37422
+Node: Basics38129
+Node: Basics-Footnotes44199
+Ref: Basics-Footnote-144257
+Node: Common Features44415
+Node: Paragraphs45648
+Node: Sections and Chapters47257
+Node: Headers and Footers47761
+Node: Page Layout Adjustment48487
+Node: Displays and Keeps48979
+Node: Footnotes and Endnotes50257
+Node: Table of Contents50860
+Node: Indexing51812
+Node: Document Formats52253
+Node: Columnation52749
+Node: Font and Size Changes53032
+Node: Predefined Text53542
+Node: Preprocessor Support53852
+Node: Configuration and Customization54295
+Node: Major Macro Packages54667
+Node: man55737
+Node: Optional man extensions56224
+Node: mdoc60222
+Node: me60495
+Node: mm61061
+Node: mom61398
+Node: ms62297
+Node: ms Introduction63317
+Node: ms Introduction-Footnotes63762
+Ref: ms Introduction-Footnote-163838
+Node: ms basic information64073
+Node: ms Document Structure67998
+Node: ms Document Control Settings70473
+Node: ms Document Control Settings-Footnotes79653
+Ref: ms Document Control Settings-Footnote-179755
+Node: ms Document Description Macros79795
+Node: ms Document Description Macros-Footnotes84030
+Ref: ms Document Description Macros-Footnote-184136
+Node: ms Body Text84257
+Node: Text settings in ms84898
+Node: Typographical symbols in ms86081
+Node: Paragraphs in ms86721
+Node: Headings in ms89617
+Node: Typeface and decoration94721
+Node: Typeface and decoration-Footnotes98631
+Ref: Typeface and decoration-Footnote-198723
+Node: Lists in ms99063
+Node: Indented regions in ms102246
+Node: ms keeps and displays103228
+Node: ms Insertions107422
+Node: ms Footnotes110390
+Node: ms Footnotes-Footnotes114176
+Ref: ms Footnotes-Footnote-1114246
+Ref: ms Footnotes-Footnote-2114371
+Ref: ms Footnotes-Footnote-3114462
+Node: ms language and localization114532
+Node: ms Page Layout116058
+Node: ms Headers and Footers116520
+Node: Tab Stops in ms119000
+Node: ms Margins119381
+Node: ms Multiple Columns119765
+Node: ms TOC120726
+Node: Differences from AT&T ms126332
+Node: Differences from AT&T ms-Footnotes131038
+Ref: Differences from AT&T ms-Footnote-1131132
+Ref: Differences from AT&T ms-Footnote-2131258
+Ref: Differences from AT&T ms-Footnote-3131348
+Node: Missing Unix Version 7 ms Macros131620
+Node: Missing Unix Version 7 ms Macros-Footnotes132934
+Ref: Missing Unix Version 7 ms Macros-Footnote-1133044
+Node: ms Legacy Features133212
+Node: ms Naming Conventions135940
+Node: GNU troff Reference136988
+Node: Text138082
+Node: Filling139361
+Node: Filling-Footnotes140444
+Ref: Filling-Footnote-1140504
+Ref: Filling-Footnote-2140555
+Node: Sentences140825
+Node: Sentences-Footnotes145108
+Ref: Sentences-Footnote-1145172
+Ref: Sentences-Footnote-2145389
+Ref: Sentences-Footnote-3145651
+Node: Hyphenation145830
+Node: Breaking146782
+Node: Breaking-Footnotes149367
+Ref: Breaking-Footnote-1149429
+Node: Adjustment149494
+Node: Tabs and Leaders149985
+Node: Tabs and Leaders-Footnotes151169
+Ref: Tabs and Leaders-Footnote-1151247
+Node: Requests and Macros151362
+Node: Requests and Macros-Footnotes157082
+Ref: Requests and Macros-Footnote-1157166
+Ref: Requests and Macros-Footnote-2157277
+Ref: Requests and Macros-Footnote-3157378
+Ref: Requests and Macros-Footnote-4157439
+Node: Macro Packages157508
+Node: Macro Packages-Footnotes158336
+Ref: Macro Packages-Footnote-1158410
+Node: Input Encodings158492
+Node: Input Encodings-Footnotes161415
+Ref: Input Encodings-Footnote-1161491
+Ref: Input Encodings-Footnote-2161688
+Node: Input Conventions161863
+Node: Input Conventions-Footnotes166824
+Ref: Input Conventions-Footnote-1166904
+Node: Page Geometry166958
+Node: Page Geometry-Footnotes170630
+Ref: Page Geometry-Footnote-1170702
+Ref: Page Geometry-Footnote-2170762
+Node: Measurements170831
+Node: Motion Quanta172770
+Node: Default Units173707
+Node: Numeric Expressions175213
+Node: Numeric Expressions-Footnotes183975
+Ref: Numeric Expressions-Footnote-1184059
+Ref: Numeric Expressions-Footnote-2184152
+Ref: Numeric Expressions-Footnote-3184251
+Ref: Numeric Expressions-Footnote-4184291
+Ref: Numeric Expressions-Footnote-5184513
+Node: Identifiers184541
+Node: Identifiers-Footnotes189589
+Ref: Identifiers-Footnote-1189657
+Ref: Identifiers-Footnote-2190254
+Node: Formatter Instructions190373
+Node: Control Characters191643
+Node: Control Characters-Footnotes193934
+Ref: Control Characters-Footnote-1194016
+Node: Invoking Requests194052
+Node: Invoking Requests-Footnotes196161
+Ref: Invoking Requests-Footnote-1196241
+Node: Calling Macros196411
+Node: Calling Macros-Footnotes200319
+Ref: Calling Macros-Footnote-1200393
+Ref: Calling Macros-Footnote-2200457
+Node: Using Escape Sequences200630
+Node: Using Escape Sequences-Footnotes205504
+Ref: Using Escape Sequences-Footnote-1205594
+Ref: Using Escape Sequences-Footnote-2205696
+Node: Delimiters205736
+Node: Comments208561
+Node: Comments-Footnotes211181
+Ref: Comments-Footnote-1211243
+Ref: Comments-Footnote-2211305
+Ref: Comments-Footnote-3211341
+Node: Registers211504
+Node: Setting Registers212084
+Node: Interpolating Registers216559
+Node: Auto-increment217536
+Node: Auto-increment-Footnotes219451
+Ref: Auto-increment-Footnote-1219525
+Node: Assigning Register Formats219598
+Node: Built-in Registers223328
+Node: Built-in Registers-Footnotes227032
+Ref: Built-in Registers-Footnote-1227114
+Node: Manipulating Filling and Adjustment227198
+Node: Manipulating Filling and Adjustment-Footnotes240315
+Ref: Manipulating Filling and Adjustment-Footnote-1240431
+Ref: Manipulating Filling and Adjustment-Footnote-2240479
+Ref: Manipulating Filling and Adjustment-Footnote-3240514
+Node: Manipulating Hyphenation240634
+Node: Manipulating Hyphenation-Footnotes258827
+Ref: Manipulating Hyphenation-Footnote-1258921
+Ref: Manipulating Hyphenation-Footnote-2259086
+Ref: Manipulating Hyphenation-Footnote-3259175
+Ref: Manipulating Hyphenation-Footnote-4259316
+Ref: Manipulating Hyphenation-Footnote-5259639
+Ref: Manipulating Hyphenation-Footnote-6259813
+Node: Manipulating Spacing259881
+Node: Manipulating Spacing-Footnotes265594
+Ref: Manipulating Spacing-Footnote-1265680
+Ref: Manipulating Spacing-Footnote-2265717
+Ref: Manipulating Spacing-Footnote-3265760
+Ref: Manipulating Spacing-Footnote-4265828
+Node: Tabs and Fields265887
+Node: Tabs and Fields-Footnotes272139
+Ref: Tabs and Fields-Footnote-1272215
+Node: Leaders272279
+Node: Leaders-Footnotes274266
+Ref: Leaders-Footnote-1274326
+Node: Fields274486
+Node: Character Translations275876
+Node: troff and nroff Modes279395
+Node: troff and nroff Modes-Footnotes281486
+Ref: troff and nroff Modes-Footnote-1281574
+Node: Line Layout281682
+Node: Line Continuation287718
+Node: Line Continuation-Footnotes290503
+Ref: Line Continuation-Footnote-1290583
+Node: Page Layout290925
+Node: Page Layout-Footnotes294492
+Ref: Page Layout-Footnote-1294560
+Node: Page Control294583
+Node: Page Control-Footnotes299166
+Ref: Page Control-Footnote-1299236
+Node: Using Fonts299264
+Node: Using Fonts-Footnotes302473
+Ref: Using Fonts-Footnote-1302541
+Ref: Using Fonts-Footnote-2302742
+Ref: Using Fonts-Footnote-3302830
+Ref: Using Fonts-Footnote-4302986
+Node: Selecting Fonts303755
+Node: Font Families308177
+Node: Font Families-Footnotes312061
+Ref: Font Families-Footnote-1312133
+Node: Font Positions312167
+Node: Using Symbols315056
+Node: Using Symbols-Footnotes333721
+Ref: Using Symbols-Footnote-1333793
+Ref: Using Symbols-Footnote-2333911
+Ref: Using Symbols-Footnote-3334033
+Ref: Using Symbols-Footnote-4334069
+Node: Character Classes334229
+Node: Special Fonts337008
+Node: Artificial Fonts338195
+Node: Ligatures and Kerning343712
+Node: Italic Corrections347081
+Node: Dummy Characters348505
+Node: Dummy Characters-Footnotes351282
+Ref: Dummy Characters-Footnote-1351360
+Node: Manipulating Type Size and Vertical Spacing351819
+Node: Manipulating Type Size and Vertical Spacing-Footnotes352771
+Ref: Manipulating Type Size and Vertical Spacing-Footnote-1352903
+Ref: Manipulating Type Size and Vertical Spacing-Footnote-2353261
+Node: Changing the Type Size353349
+Node: Changing the Type Size-Footnotes356390
+Ref: Changing the Type Size-Footnote-1356480
+Node: Changing the Vertical Spacing356622
+Node: Using Fractional Type Sizes359239
+Node: Using Fractional Type Sizes-Footnotes362878
+Ref: Using Fractional Type Sizes-Footnote-1362978
+Node: Colors363029
+Node: Colors-Footnotes367195
+Ref: Colors-Footnote-1367253
+Node: Strings367298
+Ref: als375644
+Node: Strings-Footnotes377468
+Ref: Strings-Footnote-1377528
+Node: Conditionals and Loops377555
+Node: Operators in Conditionals378008
+Node: Operators in Conditionals-Footnotes382841
+Ref: Operators in Conditionals-Footnote-1382937
+Ref: Operators in Conditionals-Footnote-2383111
+Ref: Operators in Conditionals-Footnote-3383421
+Ref: Operators in Conditionals-Footnote-4383552
+Ref: Operators in Conditionals-Footnote-5383693
+Node: if-then383766
+Node: if-else385440
+Node: Conditional Blocks386605
+Node: Conditional Blocks-Footnotes389892
+Ref: Conditional Blocks-Footnote-1389974
+Node: while389997
+Node: while-Footnotes392531
+Ref: while-Footnote-1392587
+Ref: while-Footnote-2392614
+Ref: while-Footnote-3392645
+Node: Writing Macros392733
+Node: Writing Macros-Footnotes399609
+Ref: Writing Macros-Footnote-1399683
+Ref: Writing Macros-Footnote-2399710
+Ref: Writing Macros-Footnote-3399915
+Node: Parameters400164
+Node: Parameters-Footnotes404230
+Ref: Parameters-Footnote-1404296
+Node: Copy Mode404707
+Node: Copy Mode-Footnotes410433
+Ref: Copy Mode-Footnote-1410497
+Ref: Copy Mode-Footnote-2410561
+Node: Page Motions410647
+Node: Page Motions-Footnotes420569
+Ref: Page Motions-Footnote-1420639
+Ref: Page Motions-Footnote-2420829
+Node: Drawing Geometric Objects420895
+Node: Drawing Geometric Objects-Footnotes429469
+Ref: Drawing Geometric Objects-Footnote-1429565
+Node: Deferring Output429662
+Node: Traps432701
+Node: Vertical Position Traps433531
+Node: Page Location Traps434625
+Node: Page Location Traps-Footnotes442638
+Ref: Page Location Traps-Footnote-1442722
+Ref: Page Location Traps-Footnote-2442762
+Ref: Page Location Traps-Footnote-3442850
+Node: The Implicit Page Trap443048
+Node: The Implicit Page Trap-Footnotes444309
+Ref: The Implicit Page Trap-Footnote-1444399
+Ref: The Implicit Page Trap-Footnote-2444426
+Node: Diversion Traps444454
+Node: Input Line Traps445241
+Node: Blank Line Traps448690
+Node: Leading Space Traps449222
+Node: End-of-input Traps450106
+Node: End-of-input Traps-Footnotes454067
+Ref: End-of-input Traps-Footnote-1454149
+Ref: End-of-input Traps-Footnote-2454300
+Node: Diversions454402
+Node: Diversions-Footnotes463874
+Ref: Diversions-Footnote-1463940
+Node: Punning Names464008
+Node: Punning Names-Footnotes467295
+Ref: Punning Names-Footnote-1467367
+Node: Environments467421
+Node: Suppressing Output472573
+Node: I/O475340
+Node: Postprocessor Access484470
+Node: Postprocessor Access-Footnotes487454
+Ref: Postprocessor Access-Footnote-1487540
+Ref: Postprocessor Access-Footnote-2487600
+Node: Miscellaneous487776
+Node: Miscellaneous-Footnotes494416
+Ref: Miscellaneous-Footnote-1494488
+Ref: Miscellaneous-Footnote-2494524
+Node: Gtroff Internals494774
+Node: Gtroff Internals-Footnotes499136
+Ref: Gtroff Internals-Footnote-1499214
+Node: Debugging499355
+Node: Warnings506281
+Node: Implementation Differences511010
+Node: Safer Mode511464
+Node: Compatibility Mode511946
+Node: Compatibility Mode-Footnotes517233
+Ref: Compatibility Mode-Footnote-1517315
+Node: Other Differences517696
+Node: Other Differences-Footnotes524092
+Ref: Other Differences-Footnote-1524172
+Ref: Other Differences-Footnote-2524252
+Ref: Other Differences-Footnote-3524429
+Node: File Formats524649
+Node: gtroff Output524960
+Node: gtroff Output-Footnotes526820
+Ref: gtroff Output-Footnote-1526892
+Node: Language Concepts527027
+Node: Separation528140
+Node: Argument Units530374
+Node: Document Parts531511
+Node: Command Reference532909
+Node: Comment Command533325
+Node: Simple Commands533823
+Node: Graphics Commands539265
+Node: Device Control Commands546605
+Node: Obsolete Command550738
+Node: Intermediate Output Examples552015
+Node: Output Language Compatibility554799
+Node: Device and Font Description Files556878
+Node: Device and Font Description Files-Footnotes558261
+Ref: Device and Font Description Files-Footnote-1558373
+Node: DESC File Format558434
+Node: Font Description File Format564511
+Node: Font Description File Format-Footnotes572537
+Ref: Font Description File Format-Footnote-1572639
+Ref: Font Description File Format-Footnote-2572793
+Ref: Font Description File Format-Footnote-3573006
+Ref: Font Description File Format-Footnote-4573115
+Node: Copying This Manual573202
+Node: Request Index598317
+Node: Escape Sequence Index616581
+Node: Operator Index623925
+Node: Register Index625858
+Node: Macro Index640236
+Node: String Index651800
+Node: File Keyword Index659362
+Node: Program and File Index663322
+Node: Concept Index669178
+
+End Tag Table
+
+
+Local Variables:
+coding: iso-8859-1
+End:
diff --git a/doc/groff.info-1 b/doc/groff.info-1
new file mode 100644
index 0000000..e2db4ec
--- /dev/null
+++ b/doc/groff.info-1
@@ -0,0 +1,7824 @@
+This is groff.info, produced by makeinfo version 7.0.3 from groff.texi.
+
+This manual documents GNU 'troff' version 1.23.0.
+
+ Copyright © 1994-2023 Free Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts, and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+INFO-DIR-SECTION Typesetting
+START-INFO-DIR-ENTRY
+* Groff: (groff). The GNU roff document formatting system.
+END-INFO-DIR-ENTRY
+
+
+File: groff.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
+
+GNU 'troff'
+***********
+
+* Menu:
+
+* Introduction::
+* Invoking groff::
+* Tutorial for Macro Users::
+* Major Macro Packages::
+* GNU troff Reference::
+* File Formats::
+* Copying This Manual::
+* Request Index::
+* Escape Sequence Index::
+* Operator Index::
+* Register Index::
+* Macro Index::
+* String Index::
+* File Keyword Index::
+* Program and File Index::
+* Concept Index::
+
+This manual documents GNU 'troff' version 1.23.0.
+
+ Copyright © 1994-2023 Free Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts, and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+
+
+File: groff.info, Node: Introduction, Next: Invoking groff, Prev: Top, Up: Top
+
+1 Introduction
+**************
+
+GNU 'roff' (or 'groff') is a programming system for typesetting
+documents. It is highly flexible and has been used extensively for over
+thirty years.
+
+* Menu:
+
+* Background::
+* What Is groff?::
+* groff Capabilities::
+* Macro Package Intro::
+* Preprocessor Intro::
+* Output Device Intro::
+* Conventions Used in This Manual::
+* Installation::
+* Credits::
+
+
+File: groff.info, Node: Background, Next: What Is groff?, Prev: Introduction, Up: Introduction
+
+1.1 Background
+==============
+
+M. Douglas McIlroy, formerly of AT&T Bell Laboratories and present at
+the creation of the Unix operating system, offers an authoritative
+historical summary.
+
+ The prime reason for Unix was the desire of Ken [Thompson], Dennis
+ [Ritchie], and Joe Ossanna to have a pleasant environment for
+ software development. The fig leaf that got the nod from ...
+ management was that an early use would be to develop a
+ "stand-alone" word-processing system for use in typing pools and
+ secretarial offices. Perhaps they had in mind "dedicated", as
+ distinct from "stand-alone"; that's what eventuated in various
+ cases, most notably in the legal/patent department and in the AT&T
+ CEO's office.
+
+ Both those systems were targets of opportunity, not foreseen from
+ the start. When Unix was up and running on the PDP-11, Joe got
+ wind of the legal department having installed a commercial word
+ processor. He went to pitch Unix as an alternative and clinched a
+ trial by promising to make 'roff' able to number lines by tomorrow
+ in order to fulfill a patent-office requirement that the commercial
+ system did not support.
+
+ Modems were installed so legal-department secretaries could try the
+ Research machine. They liked it and Joe's superb customer service.
+ Soon the legal department got a system of their own. Joe went on
+ to create 'nroff' and 'troff'. Document preparation became a
+ widespread use of Unix, but no stand-alone word-processing system
+ was ever undertaken.
+
+ A history relating 'groff' to its predecessors 'roff', 'nroff', and
+'troff' is available in the 'roff(7)' man page.
+
+
+File: groff.info, Node: What Is groff?, Next: groff Capabilities, Prev: Introduction, Up: Introduction
+
+1.2 What Is 'groff'?
+====================
+
+'groff' (GNU 'roff') is a typesetting system that reads plain text input
+files that include formatting commands to produce output in PostScript,
+PDF, HTML, DVI, or other formats, or for display to a terminal.
+Formatting commands can be low-level typesetting primitives, macros from
+a supplied package, or user-defined macros. All three approaches can be
+combined.
+
+ A reimplementation and extension of the typesetter from AT&T Unix,
+'groff' is present on most POSIX systems owing to its long association
+with Unix manuals (including man pages). It and its predecessor are
+notable for their production of several best-selling software
+engineering texts. 'groff' is capable of producing typographically
+sophisticated documents while consuming minimal system resources.
+
+
+File: groff.info, Node: groff Capabilities, Next: Macro Package Intro, Prev: What Is groff?, Up: Introduction
+
+1.3 'groff' Capabilities
+========================
+
+GNU 'troff' is a typesetting document formatter; it provides a wide
+range of low-level text and page operations within the framework of a
+programming language. These operations compose to generate footnotes,
+tables of contents, mathematical equations, diagrams, multi-column text,
+and other elements of typeset works. Here is a survey of formatter
+features; all are under precise user control.
+
+ * text filling, breaking, alignment to the left or right margin;
+ centering
+
+ * adjustment of inter-word space size to justify text, and of
+ inter-sentence space size to suit local style conventions
+
+ * automatic and manual determination of hyphenation break points
+
+ * pagination
+
+ * selection of any font available to the output device
+
+ * adjustment of type size and vertical spacing (or "leading")
+
+ * configuration of line length and indentation amounts; columnation
+
+ * drawing of geometric primitives (lines, arcs, polygons, circles,
+ ...)
+
+ * setup of stroke and fill colors (where supported by the output
+ device)
+
+ * embedding of hyperlinks, images, document metadata, and other
+ inclusions (where supported by the output device)
+
+
+File: groff.info, Node: Macro Package Intro, Next: Preprocessor Intro, Prev: groff Capabilities, Up: Introduction
+
+1.4 Macro Packages
+==================
+
+Elemental typesetting functions can be be challenging to use directly
+with complex documents. A "macro" facility specifies how certain
+routine operations, such as starting paragraphs, or printing headers and
+footers, should be performed in terms of those low-level instructions.
+Macros can be specific to one document or collected together into a
+"macro package" for use by many. Several macro packages available; the
+most widely used are provided with 'groff'. They are 'man', 'mdoc',
+'me', 'mm', 'mom', and 'ms'.
+
+
+File: groff.info, Node: Preprocessor Intro, Next: Output Device Intro, Prev: Macro Package Intro, Up: Introduction
+
+1.5 Preprocessors
+=================
+
+An alternative approach to complexity management, particularly when
+constructing tables, setting mathematics, or drawing diagrams, lies in
+preprocessing. A "preprocessor" employs a domian-specific language to
+ease the generation of tables, equations, and so forth in terms that are
+convenient for human entry. Each preprocessor reads a document and
+translates the parts of it that apply to it into GNU 'troff' input.
+Command-line options to 'groff' tell it which preprocessors to use.
+
+ 'groff' provides preprocessors for laying out tables ('gtbl'),
+typesetting equations ('geqn'), drawing diagrams ('gpic' and 'ggrn'),
+inserting bibliographic references ('grefer'), and drawing chemical
+structures ('gchem'). An associated program that is useful when dealing
+with preprocessors is 'gsoelim'.(1) (*note Preprocessor
+Intro-Footnote-1::)
+
+ 'groff' also supports 'grap', a preprocessor for drawing graphs. A
+free implementation of it can be obtained separately.
+
+ Unique to 'groff' is the 'preconv' preprocessor that enables 'groff'
+to handle documents in a variety of input encodings.
+
+ Other preprocessors exist, but no free implementations are known. An
+example is 'ideal', which draws diagrams using a mathematical constraint
+language.
+
+
+File: groff.info, Node: Preprocessor Intro-Footnotes, Up: Preprocessor Intro
+
+ (1) The 'g' prefix is not used on all systems; see *note Invoking
+groff::.
+
+
+File: groff.info, Node: Output Device Intro, Next: Installation, Prev: Preprocessor Intro, Up: Introduction
+
+1.6 Output Devices
+==================
+
+GNU 'troff''s output is in a device-independent page description
+language, which is then read by an "output driver" that translates this
+language into a file format or byte stream that a piece of (possibly
+emulated) hardware understands. 'groff' features output drivers for
+PostScript devices, terminal emulators (and other simple typewriter-like
+machines), X11 (for previewing), TeX DVI, HP LaserJet 4/PCL5 and Canon
+LBP printers (which use CaPSL), HTML, XHTML, and PDF.
+
+
+File: groff.info, Node: Installation, Next: Conventions Used in This Manual, Prev: Output Device Intro, Up: Introduction
+
+1.7 Installation
+================
+
+Locate installation instructions in the files 'INSTALL',
+'INSTALL.extra', and 'INSTALL.REPO' in the 'groff' source distribution.
+Being a GNU project, 'groff' supports the familiar './configure && make'
+command sequence.
+
+
+File: groff.info, Node: Conventions Used in This Manual, Next: Credits, Prev: Installation, Up: Introduction
+
+1.8 Conventions Used in This Manual
+===================================
+
+We apply the term "groff" to the language documented here, the GNU
+implementation of the overall system, the project that develops that
+system, and the command of that name. In the first sense, 'groff' is an
+extended dialect of the 'roff' language, for which many similar
+implementations exist.
+
+ The 'roff' language features several major categories for which many
+items are predefined. Presentations of these items feature the form in
+which the item is most commonly used on the left, and, aligned to the
+right margin, the name of the category in brackets.
+
+ -- Register: \n[example]
+ The register 'example' is one that that 'groff' _doesn't_
+ predefine. You can create it yourself, though; see *note Setting
+ Registers::.
+
+ To make this document useful as a reference and not merely amiable
+bedtime reading, we tend to present these syntax items in exhaustive
+detail when they arise. References to topics discussed later in the
+text are frequent; skip material you don't understand yet.
+
+ We use Texinfo's "result" (=>) and error-> notations to present
+output written to the standard output and standard error streams,
+respectively. Diagnostic messages from the GNU 'troff' formatter and
+other programs are examples of the latter, but the formatter can also be
+directed to write user-specified messages to the standard error stream.
+The notation then serves to identify the output stream and does not
+necessarily mean that an error has occurred.(1) (*note Conventions Used
+in This Manual-Footnote-1::)
+
+ $ echo "Twelve o'clock and" | groff -Tascii | sed '/^$/d'
+ => Twelve o'clock and
+ $ echo '.tm all is well.' | groff > /dev/null
+ error-> all is well.
+
+ Sometimes we use => somewhat abstractly to represent formatted text
+that you will need to use a PostScript or PDF viewer program (or a
+printer) to observe. While arguably an abuse of notation, we think this
+preferable to requiring the reader to understand the syntax of these
+page description languages.
+
+ We also present diagnostic messages in an abbreviated form, often
+omitting the name of the program issuing them, the input file name, and
+line number or other positional information when such data do not serve
+to illuminate the topic under discussion.
+
+ Most examples are of 'roff' language input that would be placed in a
+text file. Occasionally, we start an example with a '$' character to
+indicate a shell prompt, as seen above.
+
+ You are encouraged to try the examples yourself, and to alter them to
+better learn 'groff''s behavior. Our examples frequently need to direct
+the formatter to set a line length (with '.ll') that will fit within the
+page margins of this manual. We mention this so that you know why it is
+there before we discuss the 'll' request formally.(2) (*note
+Conventions Used in This Manual-Footnote-2::)
+
+
+File: groff.info, Node: Conventions Used in This Manual-Footnotes, Up: Conventions Used in This Manual
+
+ (1) Unix and related operating systems distinguish standard output
+and standard error streams _because_ of 'troff':
+<https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html>.
+
+ (2) *Note Line Layout::.
+
+
+File: groff.info, Node: Credits, Prev: Conventions Used in This Manual, Up: Introduction
+
+1.9 Credits
+===========
+
+We adapted portions of this manual from existing documents. James
+Clark's man pages were an essential resource; we have updated them in
+parallel with the development of this manual. We based the tutorial for
+macro users on Eric Allman's introduction to his 'me' macro package
+(which we also provide, little altered from 4.4BSD). Larry Kollar
+contributed much of the material on the 'ms' macro package.
+
+
+File: groff.info, Node: Invoking groff, Next: Tutorial for Macro Users, Prev: Introduction, Up: Top
+
+2 Invoking 'groff'
+******************
+
+This chapter focuses on how to invoke the 'groff' front end. This front
+end takes care of the details of constructing the pipeline among the
+preprocessors, 'gtroff' and the postprocessor.
+
+ It has become a tradition that GNU programs get the prefix 'g' to
+distinguish them from their original counterparts provided by the host
+(*note Environment::). Thus, for example, 'geqn' is GNU 'eqn'. On
+operating systems like GNU/Linux or the Hurd, which don't contain
+proprietary versions of 'troff', and on MS-DOS/MS-Windows, where 'troff'
+and associated programs are not available at all, this prefix is omitted
+since GNU 'troff' is the only incarnation of 'troff' used. Exception:
+'groff' is never replaced by 'roff'.
+
+ In this document, we consequently say 'gtroff' when talking about the
+GNU 'troff' program. All other implementations of 'troff' are called
+AT&T 'troff', which is the common origin of almost all 'troff'
+implementations(1) (*note Invoking groff-Footnote-1::) (with more or
+less compatible changes). Similarly, we say 'gpic', 'geqn', and so on.
+
+* Menu:
+
+* Groff Options::
+* Environment::
+* Macro Directories::
+* Font Directories::
+* Paper Format::
+* Invocation Examples::
+
+
+File: groff.info, Node: Invoking groff-Footnotes, Up: Invoking groff
+
+ (1) Besides 'groff', 'neatroff' is an exception.
+
+
+File: groff.info, Node: Groff Options, Next: Environment, Prev: Invoking groff, Up: Invoking groff
+
+2.1 Options
+===========
+
+'groff' normally runs the 'gtroff' program and a postprocessor
+appropriate for the selected device. The default device is 'ps' (but it
+can be changed when 'groff' is configured and built). It can optionally
+preprocess with any of 'gpic', 'geqn', 'gtbl', 'ggrn', 'grap', 'gchem',
+'grefer', 'gsoelim', or 'preconv'.
+
+ This section documents only options to the 'groff' front end. Many
+of the arguments to 'groff' are passed on to 'gtroff'; therefore, those
+are also included. Arguments to preprocessors and output drivers can be
+found in the man pages 'gpic(1)', 'geqn(1)', 'gtbl(1)', 'ggrn(1)',
+'grefer(1)', 'gchem(1)', 'gsoelim(1)', 'preconv(1)', 'grotty(1)',
+'grops(1)', 'gropdf(1)', 'grohtml(1)', 'grodvi(1)', 'grolj4(1)',
+'grolbp(1)', and 'gxditview(1)'.
+
+ The command-line format for 'groff' is:
+
+ groff [ -abceghijklpstvzCEGNRSUVXZ ] [ -dCS ] [ -DARG ]
+ [ -fFAM ] [ -FDIR ] [ -IDIR ] [ -KARG ]
+ [ -LARG ] [ -mNAME ] [ -MDIR ] [ -nNUM ]
+ [ -oLIST ] [ -PARG ] [ -rCN ] [ -TDEV ]
+ [ -wNAME ] [ -WNAME ] [ FILES... ]
+
+ The command-line format for 'gtroff' is as follows.
+
+ gtroff [ -abcivzCERU ] [ -dCS ] [ -fFAM ] [ -FDIR ]
+ [ -mNAME ] [ -MDIR ] [ -nNUM ] [ -oLIST ]
+ [ -rCN ] [ -TNAME ] [ -wNAME ] [ -WNAME ]
+ [ FILES... ]
+
+Obviously, many of the options to 'groff' are actually passed on to
+'gtroff'.
+
+ Options without an argument can be grouped behind a single '-'. A
+filename of '-' denotes the standard input. Whitespace is permitted
+between an option and its argument.
+
+ The 'grog' command can be used to guess the correct 'groff' command
+to format a file. See its man page 'grog(1)'; type 'man grog' at the
+command line to view it.
+
+ 'groff''s command-line options are as follows.
+
+'-a'
+ Generate a plain text approximation of the typeset output. The
+ read-only register '.A' is set to 1. *Note Built-in Registers::.
+ This option produces a sort of abstract preview of the formatted
+ output.
+
+ * Page breaks are marked by a phrase in angle brackets; for
+ example, '<beginning of page>'.
+
+ * Lines are broken where they would be in the formatted output.
+
+ * A horizontal motion of any size is represented as one space.
+ Adjacent horizontal motions are not combined. Inter-sentence
+ space nodes (those arising from the second argument to the
+ 'ss' request) are not represented.
+
+ * Vertical motions are not represented.
+
+ * Special characters are rendered in angle brackets; for
+ example, the default soft hyphen character appears as '<hy>'.
+
+ The above description should not be considered a specification; the
+ details of '-a' output are subject to change.
+
+'-b'
+ Write a backtrace reporting the state of 'gtroff''s input parser to
+ the standard error stream with each diagnostic message. The line
+ numbers given in the backtrace might not always be correct, because
+ 'gtroff''s idea of line numbers can be confused by requests that
+ append to macros.
+
+'-c'
+ Start with color output disabled.
+
+'-C'
+ Enable AT&T 'troff' compatibility mode; implies '-c'. *Note
+ Implementation Differences::, for the list of incompatibilities
+ between 'groff' and AT&T 'troff'.
+
+'-dCTEXT'
+'-dSTRING=TEXT'
+ Define 'roff' string C or STRING as T or TEXT. C must be one
+ character; STRING can be of arbitrary length. Such string
+ assignments happen before any macro file is loaded, including the
+ startup file. Due to 'getopt_long' limitations, C cannot be, and
+ STRING cannot contain, an equals sign, even though that is a valid
+ character in a 'roff' identifier.
+
+'-DENC'
+ Set fallback input encoding used by 'preconv' to ENC; implies '-k'.
+
+'-e'
+ Run 'geqn' preprocessor.
+
+'-E'
+ Inhibit 'gtroff' error messages. This option does _not_ suppress
+ messages sent to the standard error stream by documents or macro
+ packages using 'tm' or related requests.
+
+'-fFAM'
+ Use FAM as the default font family. *Note Font Families::.
+
+'-FDIR'
+ Search in directory 'DIR' for the selected output device's
+ directory of device and font description files. See the
+ description of 'GROFF_FONT_PATH' in *note Environment:: below for
+ the default search locations and ordering.
+
+'-g'
+ Run 'ggrn' preprocessor.
+
+'-G'
+ Run 'grap' preprocessor; implies '-p'.
+
+'-h'
+ Display a usage message and exit.
+
+'-i'
+ Read the standard input after all the named input files have been
+ processed.
+
+'-IDIR'
+ Search the directory DIR for files named in several contexts;
+ implies '-g' and '-s'.
+
+ * 'gsoelim' replaces 'so' requests with the contents of their
+ file name arguments.
+
+ * 'gtroff' searches for files named as operands in its command
+ line and as arguments to 'psbb', 'so', and 'soquiet' requests.
+
+ * Output drivers may search for files; for instance, 'grops'
+ looks for files named in '\X'ps: import ...'', '\X'ps: file
+ ...'', and '\X'pdf: pdfpic ...'' device control escape
+ sequences.
+
+ This option may be specified more than once; the directories are
+ searched in the order specified. If you want to search the current
+ directory before others, add '-I .' at the desired place. The
+ current working directory is otherwise searched last. '-I' works
+ similarly to, and is named for, the "include" option of Unix C
+ compilers.
+
+ '-I' options are passed to 'gsoelim', 'gtroff', and output drivers;
+ with the flag letter changed to '-M', they are also passed to
+ 'ggrn'.
+
+'-j'
+ Run 'gchem' preprocessor. Implies '-p'.
+
+'-k'
+ Run 'preconv' preprocessor. Refer to its man page for its behavior
+ if neither of 'groff''s '-K' or '-D' options is also specified.
+
+'-KENC'
+ Set input encoding used by 'preconv' to ENC; implies '-k'.
+
+'-l'
+ Send the output to a spooler for printing. The 'print' directive
+ in the device description file specifies the default command to be
+ used; see *note Device and Font Description Files::. See options
+ '-L' and '-X'.
+
+'-LARG'
+ Pass ARG to the print spooler program. If multiple ARGs are
+ required, pass each with a separate '-L' option. 'groff' does not
+ prefix an option dash to ARG before passing it to the spooler
+ program.
+
+'-mNAME'
+ Process the file 'NAME.tmac' prior to any input files. If not
+ found, 'tmac.NAME' is attempted. NAME (in both arrangements) is
+ presumed to be a macro file; see the description of
+ 'GROFF_TMAC_PATH' in *note Environment:: below for the default
+ search locations and ordering. This option and its argument are
+ also passed to 'geqn', 'grap', and 'ggrn'.
+
+'-MDIR'
+ Search directory 'DIR' for macro files; see the description of
+ 'GROFF_TMAC_PATH' in *note Environment:: below for the default
+ search locations and ordering. This option and its argument are
+ also passed to 'geqn', 'grap', and 'ggrn'.
+
+'-nNUM'
+ Number the first page NUM.
+
+'-N'
+ Prohibit newlines between 'eqn' delimiters: pass '-N' to 'geqn'.
+
+'-oLIST'
+ Output only pages in LIST, which is a comma-separated list of page
+ ranges; 'N' means page N, 'M-N' means every page between M and N,
+ '-N' means every page up to N, 'N-' means every page from N on.
+ 'gtroff' stops processing and exits after formatting the last page
+ enumerated in LIST.
+
+'-p'
+ Run 'gpic' preprocessor.
+
+'-PARG'
+ Pass ARG to the postprocessor. If multiple ARGs are required, pass
+ each with a separate '-P' option. 'groff' does not prefix an
+ option dash to ARG before passing it to the postprocessor.
+
+'-rCNUMERIC-EXPRESSION'
+'-rREGISTER=EXPR'
+ Set 'roff' register C or REGISTER to the value NUMERIC-EXPRESSION
+ (*note Numeric Expressions::). C must be one character; REGISTER
+ can be of arbitrary length. Such register assignments happen
+ before any macro file is loaded, including the startup file. Due
+ to 'getopt_long' limitations, C cannot be, and REGISTER cannot
+ contain, an equals sign, even though that is a valid character in a
+ 'roff' identifier.
+
+'-R'
+ Run 'grefer' preprocessor. No mechanism is provided for passing
+ arguments to 'grefer' because most 'grefer' options have equivalent
+ language elements that can be specified within the document.
+
+ 'gtroff' also accepts a '-R' option, which is not accessible via
+ 'groff'. This option prevents the loading of the 'troffrc' and
+ 'troffrc-end' files.
+
+'-s'
+ Run 'gsoelim' preprocessor.
+
+'-S'
+ Operate in "safer" mode; see '-U' below for its opposite. For
+ security reasons, safer mode is enabled by default.
+
+'-t'
+ Run 'gtbl' preprocessor.
+
+'-TDEV'
+ Direct 'gtroff' to format the input for the output device DEV.
+ 'groff' then calls an output driver to convert 'gtroff''s output to
+ a form appropriate for DEV. The following output devices are
+ available.
+
+ 'ps'
+ For PostScript printers and previewers.
+
+ 'pdf'
+ For PDF viewers or printers.
+
+ 'dvi'
+ For TeX DVI format.
+
+ 'X75'
+ For a 75dpi X11 previewer.
+
+ 'X75-12'
+ For a 75dpi X11 previewer with a 12-point base font in the
+ document.
+
+ 'X100'
+ For a 100dpi X11 previewer.
+
+ 'X100-12'
+ For a 100dpi X11 previewer with a 12-point base font in the
+ document.
+
+ 'ascii'
+ For typewriter-like devices using the (7-bit) ASCII (ISO 646)
+ character set.
+
+ 'latin1'
+ For typewriter-like devices that support the Latin-1
+ (ISO 8859-1) character set.
+
+ 'utf8'
+ For typewriter-like devices that use the Unicode (ISO 10646)
+ character set with UTF-8 encoding.
+
+ 'cp1047'
+ For typewriter-like devices that use the EBCDIC encoding IBM
+ code page 1047.
+
+ 'lj4'
+ For HP LaserJet4-compatible (or other PCL5-compatible)
+ printers.
+
+ 'lbp'
+ For Canon CaPSL printers (LBP-4 and LBP-8 series laser
+ printers).
+
+ 'html'
+ 'xhtml'
+ To produce HTML and XHTML output, respectively. This driver
+ consists of two parts, a preprocessor ('pre-grohtml') and a
+ postprocessor ('post-grohtml').
+
+ The predefined GNU 'troff' string '.T' contains the name of the
+ output device; the read-only register '.T' is set to 1 if this
+ option is used (which is always true if 'groff' is used to call GNU
+ 'troff'). *Note Built-in Registers::.
+
+ The postprocessor to be used for a device is specified by the
+ 'postpro' command in the device description file. (*Note Device
+ and Font Description Files::.) This can be overridden with the
+ '-X' option.
+
+'-U'
+ Operate in "unsafe mode", which enables the 'open', 'opena', 'pi',
+ 'pso', and 'sy' requests. These requests are disabled by default
+ because they allow an untrusted input document to write to
+ arbitrary file names and run arbitrary commands. This option also
+ adds the current directory to the macro package search path; see
+ the '-m' option above. '-U' is passed to 'gpic' and 'gtroff'.
+
+'-v'
+ Write version information for 'groff' and all programs run by it to
+ the standard output stream; that is, the given command line is
+ processed in the usual way, passing '-v' to the formatter and any
+ pre- or postprocessors invoked.
+
+'-V'
+ Output the pipeline that would be run by 'groff' (as a wrapper
+ program) to the standard output stream, but do not execute it. If
+ given more than once, the pipeline is both written to the standard
+ error stream and run.
+
+'-wCATEGORY'
+ Enable warnings in CATEGORY. Categories are listed in *note
+ Warnings::.
+
+'-WCATEGORY'
+ Inhibit warnings in CATEGORY. Categories are listed in *note
+ Warnings::.
+
+'-X'
+ Use 'gxditview' instead of the usual postprocessor to (pre)view a
+ document on an X11 display. Combining this option with '-Tps' uses
+ the font metrics of the PostScript device, whereas the '-TX75' and
+ '-TX100' options use the metrics of X11 fonts.
+
+'-z'
+ Suppress formatted output from 'gtroff'.
+
+'-Z'
+ Disable postprocessing. 'gtroff' output will appear on the
+ standard output stream (unless suppressed with '-z'; see *note
+ gtroff Output:: for a description of this format.
+
+
+File: groff.info, Node: Environment, Next: Macro Directories, Prev: Groff Options, Up: Invoking groff
+
+2.2 Environment
+===============
+
+There are also several environment variables (of the operating system,
+not within 'gtroff') that can modify the behavior of 'groff'.
+
+'GROFF_BIN_PATH'
+ This search path, followed by 'PATH', is used for commands executed
+ by 'groff'.
+
+'GROFF_COMMAND_PREFIX'
+ If this is set to X, then 'groff' runs 'Xtroff' instead of
+ 'gtroff'. This also applies to 'tbl', 'pic', 'eqn', 'grn', 'chem',
+ 'refer', and 'soelim'. It does not apply to 'grops', 'grodvi',
+ 'grotty', 'pre-grohtml', 'post-grohtml', 'preconv', 'grolj4',
+ 'gropdf', and 'gxditview'.
+
+ The default command prefix is determined during the installation
+ process. If a non-GNU 'troff' system is found, prefix 'g' is used,
+ none otherwise.
+
+'GROFF_ENCODING'
+ The value of this variable is passed to the 'preconv'
+ preprocessor's '-e' option to select the character encoding of
+ input files. This variable's existence implies the 'groff' option
+ '-k'. If set but empty, 'groff' calls 'preconv' without an '-e'
+ option. 'groff''s '-K' option overrides 'GROFF_ENCODING'. See the
+ 'preconv(7)' man page; type 'man preconv' at the command line to
+ view it.
+
+'GROFF_FONT_PATH'
+ A list of directories in which to seek the selected output device's
+ directory of device and font description files. GNU 'troff' will
+ search directories given as arguments to any specified '-F' options
+ before these, and a built-in list of directories after them. *Note
+ Font Directories:: and the 'troff(1)' or 'gtroff(1)' man pages.
+
+'GROFF_TMAC_PATH'
+ A list of directories in which to seek macro files. GNU 'troff'
+ will search directories given as arguments to any specified '-M'
+ options before these, and a built-in list of directories after
+ them. *Note Macro Directories:: and the 'troff(1)' or 'gtroff(1)'
+ man pages.
+
+'GROFF_TMPDIR'
+ The directory in which 'groff' creates temporary files. If this is
+ not set and 'TMPDIR' is set, temporary files are created in that
+ directory. Otherwise temporary files are created in a
+ system-dependent default directory (on Unix and GNU/Linux systems,
+ this is usually '/tmp'). 'grops', 'grefer', 'pre-grohtml', and
+ 'post-grohtml' can create temporary files in this directory.
+
+'GROFF_TYPESETTER'
+ Sets the default output device. If empty or not set, a build-time
+ default (often 'ps') is used. The '-TDEV' option overrides
+ 'GROFF_TYPESETTER'.
+
+'SOURCE_DATE_EPOCH'
+ A timestamp (expressed as seconds since the Unix epoch) to use as
+ the output creation timestamp in place of the current time. The
+ time is converted to human-readable form using 'localtime(3)' when
+ the formatter starts up and stored in registers usable by documents
+ and macro packages (*note Built-in Registers::).
+
+'TZ'
+ The time zone to use when converting the current time (or value of
+ 'SOURCE_DATE_EPOCH') to human-readable form; see 'tzset(3)'.
+
+ MS-DOS and MS-Windows ports of 'groff' use semicolons, rather than
+colons, to separate the directories in the lists described above.
+
+
+File: groff.info, Node: Macro Directories, Next: Font Directories, Prev: Environment, Up: Invoking groff
+
+2.3 Macro Directories
+=====================
+
+A macro file must have a name in the form 'NAME.tmac' or 'tmac.NAME' and
+be placed in a "tmac directory" to be found by the '-mNAME' command-line
+option.(1) (*note Macro Directories-Footnote-1::) Together, these
+directories constitute the "tmac path". Each directory is searched in
+the following order until the desired macro file is found or the list is
+exhausted.
+
+ * Directories specified with GNU 'troff''s or 'groff''s '-M'
+ command-line option.
+
+ * Directories listed in the 'GROFF_TMAC_PATH' environment variable.
+
+ * The current working directory (only if in unsafe mode using the
+ '-U' command-line option).
+
+ * The user's home directory, 'HOME'.
+
+ * A platform-dependent directory, a site-local (platform-independent)
+ directory, and the main tmac directory. The locations
+ corresponding to your installation are listed in section
+ "Environment" of 'gtroff(1)'. If not otherwise configured, they
+ are as follows.
+
+ /usr/local/lib/groff/site-tmac
+ /usr/local/share/groff/site-tmac
+ /usr/local/share/groff/1.23.0/tmac
+
+ The foregoing assumes that the version of 'groff' is 1.23.0, and
+ that the installation prefix was '/usr/local'. It is possible to
+ fine-tune these locations during the source configuration process.
+
+
+File: groff.info, Node: Macro Directories-Footnotes, Up: Macro Directories
+
+ (1) The 'mso' request does not have these limitations. *Note I/O::.
+
+
+File: groff.info, Node: Font Directories, Next: Paper Format, Prev: Macro Directories, Up: Invoking groff
+
+2.4 Font Directories
+====================
+
+'groff' enforces few restrictions on how font description files are
+named. For its family/style mechanism to work (*note Font Families::),
+the names of fonts within a family should start with the family name,
+followed by the style. For example, the Times family uses 'T' for the
+family name and 'R', 'B', 'I', and 'BI' to indicate the styles 'roman',
+'bold', 'italic', and 'bold italic', respectively. Thus the final font
+names are 'TR', 'TB', 'TI', and 'TBI'.
+
+ Font description files are kept in "font directories", which together
+constitute the "font path". The search procedure always appends the
+directory 'dev'NAME, where NAME is the name of the output device.
+Assuming TeX DVI output, and '/foo/bar' as a font directory, the font
+description files for 'grodvi' must be in '/foo/bar/devdvi'. Each
+directory in the font path is searched in the following order until the
+desired font description file is found or the list is exhausted.
+
+ * Directories specified with GNU 'troff''s or 'groff''s '-f'
+ command-line option. All output drivers (and some preprocessors)
+ support this option as well, because they require information about
+ the glyphs to be rendered in the document.
+
+ * Directories listed in the 'GROFF_FONT_PATH' environment variable.
+
+ * A site-local directory and the main font description directory.
+ The locations corresponding to your installation are listed in
+ section "Environment" of 'gtroff(1)'. If not otherwise configured,
+ they are as follows.
+
+ /usr/local/share/groff/site-font
+ /usr/local/share/groff/1.23.0/font
+
+ The foregoing assumes that the version of 'groff' is 1.23.0, and
+ that the installation prefix was '/usr/local'. It is possible to
+ fine-tune these locations during the source configuration process.
+
+
+File: groff.info, Node: Paper Format, Next: Invocation Examples, Prev: Font Directories, Up: Invoking groff
+
+2.5 Paper Format
+================
+
+In 'groff', the page dimensions for the formatter GNU 'troff' and for
+output devices are handled separately. *Note Page Layout::, for
+vertical manipulation of the page size, and *Note Line Layout::, for
+horizontal changes. The 'papersize' macro package, normally loaded by
+'troffrc' at startup, provides an interface for configuring page
+dimensions by convenient names, like 'letter' or 'a4'; see
+'groff_tmac(5)'. The default used by the formatter depends on its build
+configuration, but is usually one of the foregoing, as geographically
+appropriate.
+
+ It is up to each macro package to respect the page dimensions
+configured in this way.
+
+ For each output device, the size of the output medium can be set in
+its 'DESC' file. Most output drivers also recognize a command-line
+option '-p' to override the default dimensions and an option '-l' to use
+landscape orientation. *Note DESC File Format::, for a description of
+the 'papersize' keyword, which takes an argument of the same form as
+'-p'. The output driver's man page, such as 'grops(1)', may also be
+helpful.
+
+ 'groff' uses the command-line option '-P' to pass options to
+postprocessors; for example, use the following for PostScript output on
+A4 paper in landscape orientation.
+
+ groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
+
+
+File: groff.info, Node: Invocation Examples, Prev: Paper Format, Up: Invoking groff
+
+2.6 Invocation Examples
+=======================
+
+'roff' systems are best known for formatting man pages. Once a 'man'
+librarian program has located a man page, it may execute a 'groff'
+command much like the following.
+
+ groff -t -man -Tutf8 /usr/share/man/man1/groff.1
+
+ The librarian will also pipe the output through a pager, which might
+not interpret the SGR terminal escape sequences 'groff' emits for
+boldface, underlining, or italics; see the 'grotty(1)' man page for a
+discussion.
+
+ To process a 'roff' input file using the preprocessors 'gtbl' and
+'gpic' and the 'me' macro package in the way to which AT&T 'troff' users
+were accustomed, one would type (or script) a pipeline.
+
+ gpic foo.me | gtbl | gtroff -me -Tutf8 | grotty
+
+ Using 'groff', this pipe can be shortened to an equivalent command.
+
+ groff -p -t -me -T utf8 foo.me
+
+ An even easier way to do this is to use 'grog' to guess the
+preprocessor and macro options and execute the result by using the
+command substitution feature of the shell.
+
+ $(grog -Tutf8 foo.me)
+
+ Each command-line option to a postprocessor must be specified with
+any required leading dashes '-' because 'groff' passes the arguments
+as-is to the postprocessor; this permits arbitrary arguments to be
+transmitted. For example, to pass a title to the 'gxditview'
+postprocessor, the shell commands
+
+ groff -X -P -title -P 'trial run' mydoc.t
+
+and
+
+ groff -X -Z mydoc.t | gxditview -title 'trial run' -
+
+are equivalent.
+
+
+File: groff.info, Node: Tutorial for Macro Users, Next: Major Macro Packages, Prev: Invoking groff, Up: Top
+
+3 Tutorial for Macro Users
+**************************
+
+Most users of the 'roff' language employ a macro package to format their
+documents. Successful macro packages ease the composition process;
+their users need not have mastered the full formatting language, nor
+understand features like diversions, traps, and environments. This
+chapter aims to familiarize you with basic concepts and mechanisms
+common to many macro packages (like "displays"). If you prefer a
+meticulous and comprehensive presentation, try *note GNU troff
+Reference:: instead.
+
+* Menu:
+
+* Basics::
+* Common Features::
+
+
+File: groff.info, Node: Basics, Next: Common Features, Prev: Tutorial for Macro Users, Up: Tutorial for Macro Users
+
+3.1 Basics
+==========
+
+Let us first survey some basic concepts necessary to use a macro package
+fruitfully.(1) (*note Basics-Footnote-1::) References are made
+throughout to more detailed information.
+
+ GNU 'troff' reads an input file prepared by the user and outputs a
+formatted document suitable for publication or framing. The input
+consists of text, or words to be printed, and embedded commands
+(requests and escape sequences), which tell GNU 'troff' how to format
+the output. *Note Formatter Instructions::.
+
+ The word argument is used in this chapter to mean a word or number
+that appears on the same line as a request, and which modifies the
+meaning of that request. For example, the request
+
+ .sp
+
+spaces one line, but
+
+ .sp 4
+
+spaces four lines. The number 4 is an argument to the 'sp' request,
+which says to space four lines instead of one. Arguments are separated
+from the request and from each other by spaces (_not_ tabs). *Note
+Invoking Requests::.
+
+ The primary function of GNU 'troff' is to collect words from input
+lines, fill output lines with those words, adjust the line to the
+right-hand margin by widening spaces, and output the result. For
+example, the input:
+
+ Now is the time
+ for all good men
+ to come to the aid
+ of their party.
+ Four score and seven
+ years ago, etc.
+
+is read, packed onto output lines, and justified to produce:
+
+ => Now is the time for all good men to come to the aid of
+ => their party. Four score and seven years ago, etc.
+
+ Sometimes a new output line should be started even though the current
+line is not yet full--for example, at the end of a paragraph. To do
+this it is possible to force a break, starting a new output line. Some
+requests cause a break automatically, as do (normally) blank input lines
+and input lines beginning with a space or tab.
+
+ Not all input lines are text lines--words to be formatted. Some are
+control lines that tell a macro package (or GNU 'troff' directly) how to
+format the text. Control lines start with a dot ('.') or an apostrophe
+(''') as the first character, and can be followed by a macro call.
+
+ The formatter also does more complex things, such as automatically
+numbering pages, skipping over page boundaries, putting footnotes in the
+correct place, and so forth.
+
+ Here are a few hints for preparing text for input to GNU 'troff'.
+
+ * First, keep the input lines short. Short input lines are easier to
+ edit, and GNU 'troff' packs words onto longer lines anyhow.
+
+ * In keeping with this, it is helpful to begin a new line after every
+ comma or phrase, since common corrections are to add or delete
+ sentences or phrases.
+
+ * End each sentence with two spaces--or better, start each sentence
+ on a new line. GNU 'troff' recognizes characters that usually end
+ a sentence, and inserts inter-sentence space accordingly.
+
+ * Do not hyphenate words at the end of lines--GNU 'troff' is smart
+ enough to hyphenate words as needed, but is not smart enough to
+ take hyphens out and join a word back together. Also, words such
+ as "mother-in-law" should not be broken over a line, since then a
+ space can occur where not wanted, such as "mother- in-law".
+
+ We offer further advice in *note Input Conventions::.
+
+ GNU 'troff' permits alteration of the distance between lines of text.
+This is termed vertical spacing and is expressed in the same units as
+the type size--the point. The default is 10-point type on 12-point
+spacing. To get double-spaced text you would set the vertical spacing
+to 24 points. Some, but not all, macro packages expose a macro or
+register to configure the vertical spacing.
+
+ A number of requests allow you to change the way the output is
+arranged on the page, sometimes called the layout of the output page.
+Most macro packages don't supply macros for performing these (at least
+not without performing other actions besides), as they are such basic
+operations. The macro packages for writing man pages, 'man' and 'mdoc',
+don't encourage explicit use of these requests at all.
+
+ The request '.sp N' leaves N lines of blank space. N can be omitted
+(skipping a single line) or can be of the form Ni (for N inches) or Nc
+(for N centimeters). For example, the input:
+
+ .sp 1.5i
+ My thoughts on the subject
+ .sp
+
+leaves one and a half inches of space, followed by the line "My thoughts
+on the subject", followed by a single blank line (more measurement units
+are available; see *note Measurements::).
+
+ If you seek precision in spacing, be advised when using a macro
+package that it might not honor 'sp' requests as you expect; it can use
+a formatter feature called no-space mode to prevent excess space from
+accumulating. Macro packages typically offer registers to control
+spacing between paragraphs, before section headings, and around displays
+(discussed below); use these facilities preferentially. *Note
+Manipulating Spacing::.
+
+ Text lines can be centered by using the 'ce' request. The line after
+'ce' is centered (horizontally) on the page. To center more than one
+line, use '.ce N' (where N is the number of lines to center), followed
+by the N lines. To center many lines without counting them, type:
+
+ .ce 1000
+ lines to center
+ .ce 0
+
+The '.ce 0' request tells GNU 'troff' to center zero more lines, in
+other words, stop centering.
+
+ GNU 'troff' also offers the 'rj' request for right-aligning text. It
+works analogously to 'ce' and is convenient for setting epigraphs.
+
+ The 'bp' request starts a new page; this necessarily implies an
+ordinary (line) break.
+
+ All of these requests cause a break; that is, they always start a new
+line. To start a new line without performing any other action, use
+'br'. If you invoke them with the apostrophe ''', the no-break control
+character, the (initial) break they normally perform is suppressed.
+''br' does nothing.
+
+
+File: groff.info, Node: Basics-Footnotes, Up: Basics
+
+ (1) The remainder of this chapter is based on 'Writing Papers with
+nroff using -me' by Eric P. Allman, which is distributed with 'groff' as
+'meintro.me'.
+
+
+File: groff.info, Node: Common Features, Prev: Basics, Up: Tutorial for Macro Users
+
+3.2 Common Features
+===================
+
+GNU 'troff' provides low-level operations for formatting a document.
+Many routine operations are undertaken in nearly all documents that
+require a series of such primitive operations to be performed. These
+common tasks are grouped into macros, which are then collected into a
+macro package.
+
+ Macro packages come in two varieties: "major" or "full-service" ones
+that manage page layout, and "minor" or "auxiliary" ones that do not,
+instead fulfilling narrow, specific tasks. Find a list in the
+'groff_tmac(5)' man page. Type 'man groff_tmac' at the command line to
+view it.
+
+ We survey several capabilities of full-service macro package below.
+Each package employs its own macros to exercise them. For details,
+consult its man page or, for 'ms', see *note ms::.
+
+* Menu:
+
+* Paragraphs::
+* Sections and Chapters::
+* Headers and Footers::
+* Page Layout Adjustment::
+* Displays and Keeps::
+* Footnotes and Endnotes::
+* Table of Contents::
+* Indexing::
+* Document Formats::
+* Columnation::
+* Font and Size Changes::
+* Predefined Text::
+* Preprocessor Support::
+* Configuration and Customization::
+
+
+File: groff.info, Node: Paragraphs, Next: Sections and Chapters, Prev: Common Features, Up: Common Features
+
+3.2.1 Paragraphs
+----------------
+
+Paragraphs can be separated and indented in various ways. Some start
+with a blank line and have a first-line indentation, like most of the
+ones in this manual. Block paragraphs omit the indentation.
+
+ => Some men look at constitutions with sanctimonious
+ => reverence, and deem them like the ark of the
+ => covenant, too sacred to be touched.
+
+We also frequently encounter tagged paragraphs, which begin with a tag
+or label at the left margin and indent the remaining text.
+
+ => one This is the first paragraph. Notice how the
+ => first line of the resulting paragraph lines
+ => up with the other lines in the paragraph.
+
+If the tag is too wide for the indentation, the line is broken.
+
+ => longlabel
+ => The label does not align with the subsequent
+ => lines, but they align with each other.
+
+A variation of the tagged paragraph is the itemized or enumerated
+paragraph, which might use punctuation or a digit for a tag,
+respectively. These are frequently used to construct lists.
+
+ => o This list item starts with a bullet. When
+ => producing output for a device using the ASCII
+ => character set, an 'o' is formatted instead.
+
+Often, use of the same macro without a tag continues such a discussion.
+
+ => -xyz This option is recognized but ignored.
+ =>
+ => It had a security hole that we don't discuss.
+
+
+File: groff.info, Node: Sections and Chapters, Next: Headers and Footers, Prev: Paragraphs, Up: Common Features
+
+3.2.2 Sections and Chapters
+---------------------------
+
+The simplest kind of section heading is unnumbered, set in a bold or
+italic style, and occupies a line by itself. Others possess
+automatically numbered multi-level headings and/or different typeface
+styles or sizes at different levels. More sophisticated macro packages
+supply macros for designating chapters and appendices.
+
+
+File: groff.info, Node: Headers and Footers, Next: Page Layout Adjustment, Prev: Sections and Chapters, Up: Common Features
+
+3.2.3 Headers and Footers
+-------------------------
+
+Headers and footers occupy the top and bottom of each page,
+respectively, and contain data like the page number and the article or
+chapter title. Their appearance is not affected by the running text.
+Some packages allow for different titles on even- and odd-numbered pages
+(for printed, bound material).
+
+ Headers and footers are together called titles, and comprise three
+parts: left-aligned, centered, and right-aligned. A '%' character
+appearing anywhere in a title is automatically replaced by the page
+number. *Note Page Layout::.
+
+
+File: groff.info, Node: Page Layout Adjustment, Next: Displays and Keeps, Prev: Headers and Footers, Up: Common Features
+
+3.2.4 Page Layout
+-----------------
+
+Most macro packages let the user specify the size of the page margins.
+The top and bottom margins are typically handled differently than the
+left and right margins; the latter two are derived from the page offset,
+indentation, and line length. *Note Line Layout::. Commonly, packages
+support registers to tune these values.
+
+
+File: groff.info, Node: Displays and Keeps, Next: Footnotes and Endnotes, Prev: Page Layout Adjustment, Up: Common Features
+
+3.2.5 Displays and Keeps
+------------------------
+
+Displays are sections of text set off from the surrounding material
+(typically paragraphs), often differing in indentation, and/or spacing.
+Tables, block quotations, and figures are displayed. Equations and code
+examples, when not much shorter than an output line, often are. Lists
+may or may not be. Packages for setting man pages support example
+displays but not keeps.
+
+ A keep is a group of output lines, often a display, that is formatted
+on a single page if possible; it causes a page break to happen early so
+as to not interrupt the kept material.
+
+ Floating keeps can move, or "float", relative to the text around them
+in the input. They are useful for displays that are captioned and
+referred to by name, as with "See figure 3". Depending on the package,
+a floating keep appears at the bottom of the current page if it fits,
+and at the top of the next otherwise. Alternatively, floating keeps
+might be deferred to the end of a section. Using a floating keep can
+avoid the large vertical spaces that may precede a tall keep of the
+ordinary sort when it won't fit on the page.
+
+
+File: groff.info, Node: Footnotes and Endnotes, Next: Table of Contents, Prev: Displays and Keeps, Up: Common Features
+
+3.2.6 Footnotes and Endnotes
+----------------------------
+
+Footnotes and endnotes are forms of delayed formatting. They are
+recorded at their points of relevance in the input, but not formatted
+there. Instead, a mark cues the reader to check the "foot", or bottom,
+of the current page, or in the case of endnotes, an annotation list
+later in the document. Macro packages that support these features also
+supply a means of automatically numbering either type of annotation.
+
+
+File: groff.info, Node: Table of Contents, Next: Indexing, Prev: Footnotes and Endnotes, Up: Common Features
+
+3.2.7 Table of Contents
+-----------------------
+
+A package may handle a table of contents by directing section heading
+macros to save section heading text and the page number where it occurs
+for use in a later entry for a table of contents. It writes the
+collected entries at the end of the document, once all are known, upon
+request. A row of dots (a leader) bridges the text on the left with its
+location on the right. Other collections might work in this manner,
+providing lists of figures or tables.
+
+ A table of contents is often found at the end of a GNU 'troff'
+document because the formatter processes the document in a single pass.
+The 'gropdf' output driver supports a PDF feature that relocates pages
+at the time the document is rendered; see the 'gropdf(1)' man page.
+Type 'man gropdf' at the command line to view it.
+
+
+File: groff.info, Node: Indexing, Next: Document Formats, Prev: Table of Contents, Up: Common Features
+
+3.2.8 Indexing
+--------------
+
+An index is similar to a table of contents, in that entry labels and
+locations must be collected, but poses a greater challenge because it
+needs to be sorted before it is output. Here, processing the document
+in multiple passes is inescapable, and tools like the 'makeindex'
+program are necessary.
+
+
+File: groff.info, Node: Document Formats, Next: Columnation, Prev: Indexing, Up: Common Features
+
+3.2.9 Document Formats
+----------------------
+
+Some macro packages supply stock configurations of certain documents,
+like business letters and memoranda. These often also have provision
+for a cover sheet, which may be rigid in its format. With these
+features, it is even more important to use the package's macros in
+preference to the formatter requests presented earlier, where possible.
+
+
+File: groff.info, Node: Columnation, Next: Font and Size Changes, Prev: Document Formats, Up: Common Features
+
+3.2.10 Columnation
+------------------
+
+Macro packages apart from 'man' and 'mdoc' for man page formatting offer
+a facility for setting multiple columns on the page.
+
+
+File: groff.info, Node: Font and Size Changes, Next: Predefined Text, Prev: Columnation, Up: Common Features
+
+3.2.11 Font and Size Changes
+----------------------------
+
+The formatter's requests and escape sequences for setting the typeface
+and size are not always intuitive, so all macro packages provide macros
+to make these operations simpler. They also make it more convenient to
+change typefaces in the middle of a word and can handle italic
+corrections automatically. *Note Italic Corrections::.
+
+
+File: groff.info, Node: Predefined Text, Next: Preprocessor Support, Prev: Font and Size Changes, Up: Common Features
+
+3.2.12 Predefined Text
+----------------------
+
+Most macro packages supply predefined strings to set prepared text like
+the date, or to perform operations like super- and subscripting.
+
+
+File: groff.info, Node: Preprocessor Support, Next: Configuration and Customization, Prev: Predefined Text, Up: Common Features
+
+3.2.13 Preprocessor Support
+---------------------------
+
+All macro packages provide support for various preprocessors and may
+extend their functionality by defining macros to set their contents in
+displays. Examples include 'TS' and 'TE' for 'gtbl', 'EQ' and 'EN' for
+'geqn', and 'PS' and 'PE' for 'gpic'.
+
+
+File: groff.info, Node: Configuration and Customization, Prev: Preprocessor Support, Up: Common Features
+
+3.2.14 Configuration and Customization
+--------------------------------------
+
+Packages provide means of customizing many of the details of how the
+package behaves. These range from setting the default type size to
+changing the appearance of section headers.
+
+
+File: groff.info, Node: Major Macro Packages, Next: GNU troff Reference, Prev: Tutorial for Macro Users, Up: Top
+
+4 Macro Packages
+****************
+
+This chapter surveys the "major" macro packages that come with 'groff'.
+One, 'ms', is presented in detail.
+
+ Major macro packages are also sometimes described as "full-service"
+due to the breadth of features they provide and because more than one
+cannot be used by the same document; for example
+
+ groff -m man foo.man -m ms bar.doc
+
+doesn't work. Option arguments are processed before non-option
+arguments; the above (failing) sample is thus reordered to
+
+ groff -m man -m ms foo.man bar.doc
+
+ Many auxiliary, or "minor", macro packages are also available. They
+may in general be used with any full-service macro package and handle a
+variety of tasks from character encoding selection, to language
+localization, to inlining of raster images. See the 'groff_tmac(5)' man
+page for a list. Type 'man groff_tmac' at the command line to view it.
+
+* Menu:
+
+* man::
+* mdoc::
+* me::
+* mm::
+* mom::
+* ms::
+
+
+File: groff.info, Node: man, Next: mdoc, Prev: Major Macro Packages, Up: Major Macro Packages
+
+4.1 'man'
+=========
+
+The 'man' macro package is the most widely used and probably the most
+important ever developed for 'troff'. It is easy to use, and a vast
+majority of manual pages ("man pages") are written in it.
+
+ 'groff''s implementation is documented in the 'groff_man(7)' man
+page. Type 'man groff_man' at the command line to view it.
+
+* Menu:
+
+* Optional man extensions::
+
+
+File: groff.info, Node: Optional man extensions, Up: man
+
+4.1.1 Optional 'man' extensions
+-------------------------------
+
+Use the file 'man.local' for local extensions to the 'man' macros or for
+style changes.
+
+Custom headers and footers
+..........................
+
+In 'groff' versions 1.18.2 and later, you can specify custom headers and
+footers by redefining the following macros in 'man.local'.
+
+ -- Macro: .PT
+ Control the content of the headers. Normally, the header prints
+ the command name and section number on either side, and the
+ optional fifth argument to 'TH' in the center.
+
+ -- Macro: .BT
+ Control the content of the footers. Normally, the footer prints
+ the page number and the third and fourth arguments to 'TH'.
+
+ Use the 'FT' register to specify the footer position. The default
+ is -0.5i.
+
+Ultrix-specific man macros
+..........................
+
+The 'groff' source distribution includes a file named 'man.ultrix',
+containing macros compatible with the Ultrix variant of 'man'. Copy
+this file into 'man.local' (or use the 'mso' request to load it) to
+enable the following macros.
+
+ -- Macro: .CT key
+ Print '<CTRL/KEY>'.
+
+ -- Macro: .CW
+ Print subsequent text using a "constant-width" (monospaced)
+ typeface (Courier roman).
+
+ -- Macro: .Ds
+ Begin a non-filled display.
+
+ -- Macro: .De
+ End a non-filled display started with 'Ds'.
+
+ -- Macro: .EX [indent]
+ Begin a non-filled display using a monospaced typeface (Courier
+ roman). Use the optional INDENT argument to indent the display.
+
+ -- Macro: .EE
+ End a non-filled display started with 'EX'.
+
+ -- Macro: .G [text]
+ Set TEXT in Helvetica. If no text is present on the line where the
+ macro is called, then the text of the next line appears in
+ Helvetica.
+
+ -- Macro: .GL [text]
+ Set TEXT in Helvetica oblique. If no text is present on the line
+ where the macro is called, then the text of the next line appears
+ in Helvetica Oblique.
+
+ -- Macro: .HB [text]
+ Set TEXT in Helvetica bold. If no text is present on the line
+ where the macro is called, then all text up to the next 'HB'
+ appears in Helvetica bold.
+
+ -- Macro: .TB [text]
+ Identical to 'HB'.
+
+ -- Macro: .MS title sect [punct]
+ Set a man page reference in Ultrix format. The TITLE is in Courier
+ instead of italic. Optional punctuation follows the section number
+ without an intervening space.
+
+ -- Macro: .NT [C] [title]
+ Begin a note. Print the optional title, or the word "Note",
+ centered on the page. Text following the macro makes up the body
+ of the note, and is indented on both sides. If the first argument
+ is 'C', the body of the note is printed centered (the second
+ argument replaces the word "Note" if specified).
+
+ -- Macro: .NE
+ End a note begun with 'NT'.
+
+ -- Macro: .PN path [punct]
+ Set the path name in a monospaced typeface (Courier roman),
+ followed by optional punctuation.
+
+ -- Macro: .Pn [punct] path [punct]
+ If called with two arguments, identical to 'PN'. If called with
+ three arguments, set the second argument in a monospaced typeface
+ (Courier roman), bracketed by the first and third arguments in the
+ current font.
+
+ -- Macro: .R
+ Switch to roman font and turn off any underlining in effect.
+
+ -- Macro: .RN
+ Print the string '<RETURN>'.
+
+ -- Macro: .VS [4]
+ Start printing a change bar in the margin if the number '4' is
+ specified. Otherwise, this macro does nothing.
+
+ -- Macro: .VE
+ End printing the change bar begun by 'VS'.
+
+Simple example
+..............
+
+The following example 'man.local' file alters the 'SH' macro to add some
+extra vertical space before printing the heading. Headings are printed
+in Helvetica bold.
+
+ .\" Make the heading fonts Helvetica
+ .ds HF HB
+ .
+ .\" Put more space in front of headings.
+ .rn SH SH-orig
+ .de SH
+ . if t .sp (u;\\n[PD]*2)
+ . SH-orig \\$*
+ ..
+
+
+File: groff.info, Node: mdoc, Next: me, Prev: man, Up: Major Macro Packages
+
+4.2 'mdoc'
+==========
+
+'groff''s implementation of the BSD 'doc' package for man pages is
+documented in the 'groff_mdoc(7)' man page. Type 'man groff_mdoc' at
+the command line to view it.
+
+
+File: groff.info, Node: me, Next: mm, Prev: mdoc, Up: Major Macro Packages
+
+4.3 'me'
+========
+
+'groff''s implementation of the BSD 'me' macro package is documented
+using itself. A tutorial, 'meintro.me', and reference, 'meref.me', are
+available in 'groff''s documentation directory. A 'groff_me(7)' man
+page is also available and identifies the installation path for these
+documents. Type 'man groff_me' at the command line to view it.
+
+ A French translation of the tutorial is available as 'meintro_fr.me'
+and installed parallel to the English version.
+
+
+File: groff.info, Node: mm, Next: mom, Prev: me, Up: Major Macro Packages
+
+4.4 'mm'
+========
+
+'groff''s implementation of the AT&T memorandum macro package is
+documented in the 'groff_mm(7)' man page. Type 'man groff_mm' at the
+command line) to view it.
+
+ A Swedish localization of 'mm' is also available; see
+'groff_mmse(7)'.
+
+
+File: groff.info, Node: mom, Next: ms, Prev: mm, Up: Major Macro Packages
+
+4.5 'mom'
+=========
+
+The main documentation files for the 'mom' macros are in HTML format.
+Additional, useful documentation is in PDF format. See the 'groff(1)'
+man page, section "Installation Directories", for their location.
+
+ * 'toc.html' Entry point to the full mom manual.
+
+ * 'macrolist.html' Hyperlinked index of macros with brief
+ descriptions, arranged by category.
+
+ * 'mom-pdf.pdf' PDF features and usage.
+
+ The mom macros are in active development between 'groff' releases.
+The most recent version, along with up-to-date documentation, is
+available at <http://www.schaffter.ca/mom/mom-05.html>.
+
+ The 'groff_mom(7)' man page (type 'man groff_mom' at the command
+line) contains a partial list of available macros, however their usage
+is best understood by consulting the HTML documentation.
+
+
+File: groff.info, Node: ms, Prev: mom, Up: Major Macro Packages
+
+4.6 'ms'
+========
+
+The 'ms' ("manuscript") package is suitable for the preparation of
+letters, memoranda, reports, and books. These 'groff' macros feature
+cover page and table of contents generation, automatically numbered
+headings, several paragraph styles, a variety of text styling options,
+footnotes, and multi-column page layouts. 'ms' supports the 'tbl',
+'eqn', 'pic', and 'refer' preprocessors for inclusion of tables,
+mathematical equations, diagrams, and standardized bibliographic
+citations. This implementation is mostly compatible with the documented
+interface and behavior of AT&T Unix Version 7 'ms'. Many extensions
+from 4.2BSD (Berkeley) and Tenth Edition Research Unix have been
+recreated.
+
+* Menu:
+
+* ms Introduction::
+* ms Document Structure::
+* ms Document Control Settings::
+* ms Document Description Macros::
+* ms Body Text::
+* ms Page Layout::
+* Differences from AT&T ms::
+* ms Legacy Features::
+* ms Naming Conventions::
+
+
+File: groff.info, Node: ms Introduction, Next: ms Document Structure, Prev: ms, Up: ms
+
+4.6.1 Introduction
+------------------
+
+The 'ms' macros are the oldest surviving package for 'roff' systems.(1)
+(*note ms Introduction-Footnote-1::) While the 'man' package was
+designed for brief reference documents, the 'ms' macros are also
+suitable for longer works intended for printing and possible
+publication.
+
+* Menu:
+
+* ms basic information::
+
+
+File: groff.info, Node: ms Introduction-Footnotes, Up: ms Introduction
+
+ (1) While manual _pages_ are older, early ones used macros supplanted
+by the 'man' package of Seventh Edition Unix (1979). 'ms' shipped with
+Sixth Edition (1975) and was documented by Mike Lesk in a Bell Labs
+internal memorandum.
+
+
+File: groff.info, Node: ms basic information, Next: ms Document Structure, Prev: ms Introduction, Up: ms Introduction
+
+4.6.1.1 Basic information
+.........................
+
+'ms' documents are plain text files; prepare them with your preferred
+text editor. If you're in a hurry to start, know that 'ms' needs one of
+its macros called at the beginning of a document so that it can
+initialize. A "macro" is a formatting instruction to 'ms'. Put a macro
+call on a line by itself. Use '.PP' if you want your paragraph's first
+line to be indented, or '.LP' if you don't.
+
+ After that, start typing normally. It is a good practice to start
+each sentence on a new line, or to put two spaces after sentence-ending
+punctuation, so that the formatter knows where the sentence boundaries
+are. You can separate paragraphs with further paragraphing macros, or
+with blank lines, and you can indent with tabs. When you need one of
+the features mentioned earlier (*note ms::), return to this part of the
+manual.
+
+ Format the document with the 'groff' command. 'nroff' can be useful
+for previewing.
+
+ $ editor radical.ms
+ $ nroff -ww -z -ms radical.ms # check for errors
+ $ nroff -ms radical.ms | less -R
+ $ groff -T ps -ms radical.ms > radical.ps
+ $ see radical.ps
+
+ Our 'radical.ms' document might look like this.
+
+ .LP
+ Radical novelties are so disturbing that they tend to be
+ suppressed or ignored, to the extent that even the
+ possibility of their existence in general is more often
+ denied than admitted.
+
+ ->That's what Dijkstra said, anyway.
+
+ 'ms' exposes many aspects of document layout to user control via
+'groff''s "registers" and "strings", which store numbers and text,
+respectively. Measurements in 'groff' are expressed with a suffix
+called a "scaling unit".
+
+'i'
+ inches
+
+'c'
+ centimeters
+
+'p'
+ points (1/72 inch)
+
+'P'
+ picas (1/6 inch)
+
+'v'
+ vees; current vertical spacing
+
+'m'
+ ems; width of an "M" in the current font
+
+'n'
+ ens; one-half em
+
+ Set registers with the 'nr' request and strings with the 'ds'
+request. "Requests" are like macro calls; they go on lines by
+themselves and start with the "control character", a dot ('.'). The
+difference is that they directly instruct the formatter program, rather
+than the macro package. We'll discuss a few as applicable. It is wise
+to specify a scaling unit when setting any register that represents a
+length, size, or distance.
+
+ .nr PS 10.5p \" Use 10.5-point type.
+ .ds FAM P \" Use Palatino font family.
+
+In the foregoing, we see that '\"' begins a comment. This is an example
+of an "escape sequence", the other kind of formatting instruction.
+Escape sequences can appear anywhere. They begin with the escape
+character ('\') and are followed by at least one more character. 'ms'
+documents tend to use only a few of 'groff''s many requests and escape
+sequences; see *note Request Index:: and *note Escape Sequence Index::
+or the 'groff(7)' man page for complete lists.
+
+'\"'
+ Begin comment; ignore remainder of line.
+
+'\n[REG]'
+ Interpolate value of register REG.
+
+'\*[STR]'
+ Interpolate contents of string STR.
+
+'\*S'
+ abbreviation of '\*[S]'; the name S must be only one character
+
+'\[CHAR]'
+ Interpolate glyph of special character named CHAR.
+
+'\&'
+ dummy character
+
+'\~'
+ Insert an unbreakable space that is adjustable like a normal space.
+
+'\|'
+ Move horizontally by one-sixth em ("thin space").
+
+ Prefix any words that start with a dot '.' or neutral apostrophe '''
+with '\&' if they are at the beginning of an input line (or might become
+that way in editing) to prevent them from being interpreted as macro
+calls or requests. Suffix '.', '?', and '!' with '\&' when needed to
+cancel end-of-sentence detection.
+
+ My exposure was \&.5 to \&.6 Sv of neutrons, said Dr.\&
+ Wallace after the criticality incident.
+
+
+File: groff.info, Node: ms Document Structure, Next: ms Document Control Settings, Prev: ms Introduction, Up: ms
+
+4.6.2 Document Structure
+------------------------
+
+The 'ms' macro package expects a certain amount of structure: a
+well-formed document contains at least one paragraphing or heading macro
+call. Longer documents have a structure as follows.
+
+*Document type*
+ Calling the 'RP' macro at the beginning of your document puts the
+ document description (see below) on a cover page. Otherwise, 'ms'
+ places the information (if any) on the first page, followed
+ immediately by the body text. Some document types found in other
+ 'ms' implementations are specific to AT&T or Berkeley, and are not
+ supported by 'groff' 'ms'.
+
+*Format and layout*
+ By setting registers and strings, you can configure your document's
+ typeface, margins, spacing, headers and footers, and footnote
+ arrangement. *Note ms Document Control Settings::.
+
+*Document description*
+ A document description consists of any of: a title, one or more
+ authors' names and affiliated institutions, an abstract, and a date
+ or other identifier. *Note ms Document Description Macros::.
+
+*Body text*
+ The main matter of your document follows its description (if any).
+ 'ms' supports highly structured text consisting of paragraphs
+ interspersed with multi-level headings (chapters, sections,
+ subsections, and so forth) and augmented by lists, footnotes,
+ tables, diagrams, and similar material. *Note ms Body Text::.
+
+*Tables of contents*
+ Macros enable the collection of entries for a table of contents (or
+ index) as the material they discuss appears in the document. You
+ then call a macro to emit the table of contents at the end of your
+ document. The table of contents must necessarily follow the rest
+ of the text since GNU 'troff' is a single-pass formatter; it thus
+ cannot determine the page number of a division of the text until it
+ has been set and output. Since 'ms' was designed for the
+ production of hard copy, the traditional procedure was to manually
+ relocate the pages containing the table of contents between the
+ cover page and the body text. Today, page resequencing is more
+ often done in the digital domain. An index works similarly, but
+ because it typically needs to be sorted after collection, its
+ preparation requires separate processing.
+
+
+File: groff.info, Node: ms Document Control Settings, Next: ms Document Description Macros, Prev: ms Document Structure, Up: ms
+
+4.6.3 Document Control Settings
+-------------------------------
+
+'ms' exposes many aspects of document layout to user control via 'groff'
+requests. To use them, you must understand how to define registers and
+strings.
+
+ -- Request: .nr reg value
+ Set register REG to VALUE. If REG doesn't exist, GNU 'troff'
+ creates it.
+
+ -- Request: .ds name contents
+ Set string NAME to CONTENTS.
+
+ A list of document control registers and strings follows. For any
+parameter whose default is unsatisfactory, define its register or string
+before calling any 'ms' macro other than 'RP'.
+
+Margin settings
+...............
+
+ -- Register: \n[PO]
+ Defines the page offset (i.e., the left margin).
+
+ Effective: next page.
+
+ Default: Varies by output device and paper format; 1i is used for
+ typesetters using U.S. letter paper, and zero for terminals. *Note
+ Paper Format::.
+
+ -- Register: \n[LL]
+ Defines the line length (i.e., the width of the body text).
+
+ Effective: next paragraph.
+
+ Default: Varies by output device and paper format; 6.5i is used for
+ typesetters using U.S. letter paper (*note Paper Format::) and 65n
+ on terminals.
+
+ -- Register: \n[LT]
+ Defines the title line length (i.e., the header and footer width).
+ This is usually the same as 'LL', but need not be.
+
+ Effective: next paragraph.
+
+ Default: Varies by output device and paper format; 6.5i is used for
+ typesetters using U.S. letter paper (*note Paper Format::) and 65n
+ on terminals.
+
+ -- Register: \n[HM]
+ Defines the header margin height at the top of the page.
+
+ Effective: next page.
+
+ Default: 1i.
+
+ -- Register: \n[FM]
+ Defines the footer margin height at the bottom of the page.
+
+ Effective: next page.
+
+ Default: 1i.
+
+Titles (headers, footers)
+.........................
+
+ -- String: \*[LH]
+ Defines the text displayed in the left header position.
+
+ Effective: next header.
+
+ Default: empty.
+
+ -- String: \*[CH]
+ Defines the text displayed in the center header position.
+
+ Effective: next header.
+
+ Default: '-\n[%]-'.
+
+ -- String: \*[RH]
+ Defines the text displayed in the right header position.
+
+ Effective: next header.
+
+ Default: empty.
+
+ -- String: \*[LF]
+ Defines the text displayed in the left footer position.
+
+ Effective: next footer.
+
+ Default: empty.
+
+ -- String: \*[CF]
+ Defines the text displayed in the center footer position.
+
+ Effective: next footer.
+
+ Default: empty.
+
+ -- String: \*[RF]
+ Defines the text displayed in the right footer position.
+
+ Effective: next footer.
+
+ Default: empty.
+
+Text settings
+.............
+
+ -- Register: \n[PS]
+ Defines the type size of the body text.
+
+ Effective: next paragraph.
+
+ Default: 10p.
+
+ -- Register: \n[VS]
+ Defines the vertical spacing (type size plus leading).
+
+ Effective: next paragraph.
+
+ Default: 12p.
+
+ -- Register: \n[HY]
+ Defines the automatic hyphenation mode used with the 'hy' request.
+ Setting 'HY' to 0 is equivalent to using the 'nh' request. This is
+ a Tenth Edition Research Unix extension.
+
+ Effective: next paragraph.
+
+ Default: 6.
+
+ -- String: \*[FAM]
+ Defines the font family used to typeset the document. This is a
+ GNU extension.
+
+ Effective: next paragraph.
+
+ Default: defined by the output device; often 'T' (*note ms Body
+ Text::)
+
+Paragraph settings
+..................
+
+ -- Register: \n[PI]
+ Defines the indentation amount used by the 'PP', 'IP' (unless
+ overridden by an optional argument), 'XP', and 'RS' macros.
+
+ Effective: next paragraph.
+
+ Default: 5n.
+
+ -- Register: \n[PD]
+ Defines the space between paragraphs.
+
+ Effective: next paragraph.
+
+ Default: 0.3v (1v on low-resolution devices).
+
+ -- Register: \n[QI]
+ Defines the indentation amount used on both sides of a paragraph
+ set with the 'QP' or between the 'QS' and 'QE' macros.
+
+ Effective: next paragraph.
+
+ Default: 5n.
+
+ -- Register: \n[PORPHANS]
+ Defines the minimum number of initial lines of any paragraph that
+ must be kept together to avoid isolated lines at the bottom of a
+ page. If a new paragraph is started close to the bottom of a page,
+ and there is insufficient space to accommodate 'PORPHANS' lines
+ before an automatic page break, then a page break is forced before
+ the start of the paragraph. This is a GNU extension.
+
+ Effective: next paragraph.
+
+ Default: 1.
+
+Heading settings
+................
+
+ -- Register: \n[PSINCR]
+ Defines an increment in type size to be applied to a heading at a
+ lesser depth than that specified in 'GROWPS'. The value of
+ 'PSINCR' should be specified in points with the p scaling unit and
+ may include a fractional component; for example, '.nr PSINCR 1.5p'
+ sets a type size increment of 1.5p. This is a GNU extension.
+
+ Effective: next heading.
+
+ Default: 1p.
+
+ -- Register: \n[GROWPS]
+ Defines the heading depth above which the type size increment set
+ by 'PSINCR' becomes effective. For each heading depth less than
+ the value of 'GROWPS', the type size is increased by 'PSINCR'.
+ Setting 'GROWPS' to any value less than 2 disables the incremental
+ heading size feature. This is a GNU extension.
+
+ Effective: next heading.
+
+ Default: 0.
+
+ -- Register: \n[HORPHANS]
+ Defines the minimum number of lines of an immediately succeeding
+ paragraph that should be kept together with any heading introduced
+ by the 'NH' or 'SH' macros. If a heading is placed close to the
+ bottom of a page, and there is insufficient space to accommodate
+ both the heading and at least 'HORPHANS' lines of the following
+ paragraph, before an automatic page break, then the page break is
+ forced before the heading. This is a GNU extension.
+
+ Effective: next paragraph.
+
+ Default: 1.
+
+ -- String: \*[SN-STYLE]
+ Defines the style used to print numbered headings. *Note Headings
+ in ms::. This is a GNU extension.
+
+ Effective: next heading.
+
+ Default: alias of 'SN-DOT'
+
+Footnote settings
+.................
+
+ -- Register: \n[FI]
+ Defines the footnote indentation. This is a Berkeley extension.
+
+ Effective: next footnote.
+
+ Default: 2n.
+
+ -- Register: \n[FF]
+ Defines the format of automatically numbered footnotes, and those
+ for which the 'FS' request is given a marker argument, at the
+ bottom of a column or page. This is a Berkeley extension.
+ '0'
+ Set an automatic number(1) (*note ms Document Control
+ Settings-Footnote-1::) as a superscript (on typesetter
+ devices) or surrounded by square brackets (on terminals). The
+ footnote paragraph is indented as with 'PP' if there is an
+ 'FS' argument or an automatic number, and as with 'LP'
+ otherwise. This is the default.
+
+ '1'
+ As '0', but set the marker as regular text and follow an
+ automatic number with a period.
+
+ '2'
+ As '1', but without indentation (like 'LP').
+
+ '3'
+ As '1', but set the footnote paragraph with the marker hanging
+ (like 'IP').
+
+ Effective: next footnote.
+
+ Default: 0.
+
+ -- Register: \n[FPS]
+ Defines the footnote type size.
+
+ Effective: next footnote.
+
+ Default: '\n[PS] - 2p'.
+
+ -- Register: \n[FVS]
+ Defines the footnote vertical spacing.
+
+ Effective: next footnote.
+
+ Default: '\n[FPS] + 2p'.
+
+ -- Register: \n[FPD]
+ Defines the footnote paragraph spacing. This is a GNU extension.
+
+ Effective: next footnote.
+
+ Default: '\n[PD] / 2'.
+
+ -- String: \*[FR]
+ Defines the ratio of the footnote line length to the current line
+ length. This is a GNU extension.
+
+ Effective: next footnote in single-column arrangements, next page
+ otherwise.
+
+ Default: '11/12'.
+
+Display settings
+................
+
+ -- Register: \n[DD]
+ Sets the display distance--the vertical spacing before and after a
+ display, a 'tbl' table, an 'eqn' equation, or a 'pic' image. This
+ is a Berkeley extension.
+
+ Effective: next display boundary.
+
+ Default: 0.5v (1v on low-resolution devices).
+
+ -- Register: \n[DI]
+ Sets the default amount by which to indent a display started with
+ 'DS' and 'ID' without arguments, to '.DS I' without an indentation
+ argument, and to equations set with '.EQ I'. This is a GNU
+ extension.
+
+ Effective: next indented display.
+
+ Default: 0.5i.
+
+Other settings
+..............
+
+ -- Register: \n[MINGW]
+ Defines the default minimum width between columns in a multi-column
+ document. This is a GNU extension.
+
+ Effective: next page.
+
+ Default: 2n.
+
+ -- Register: \n[TC-MARGIN]
+ Defines the width of the field in which page numbers are set in a
+ table of contents entry; the right margin thus moves inboard by
+ this amount. This is a GNU extension.
+
+ Effective: next 'PX' call.
+
+ Default: '\w'000''
+
+
+File: groff.info, Node: ms Document Control Settings-Footnotes, Up: ms Document Control Settings
+
+ (1) defined in *note ms Footnotes::
+
+
+File: groff.info, Node: ms Document Description Macros, Next: ms Body Text, Prev: ms Document Control Settings, Up: ms
+
+4.6.4 Document Description Macros
+---------------------------------
+
+Only the simplest document lacks a title.(1) (*note ms Document
+Description Macros-Footnote-1::) As its level of sophistication (or
+complexity) increases, it tends to acquire a date of revision,
+explicitly identified authors, sponsoring institutions for authors, and,
+at the rarefied heights, an abstract of its content. Define these data
+by calling the macros below in the order shown; 'DA' or 'ND' can be
+called to set the document date (or other identifier) at any time before
+(a) the abstract, if present, or (b) its information is required in a
+header or footer. Use of these macros is optional, except that 'TL' is
+mandatory if any of 'RP', 'AU', 'AI', or 'AB' is called, and 'AE' is
+mandatory if 'AB' is called.
+
+ -- Macro: .RP [no-repeat-info] [no-renumber]
+ Use the "report" (AT&T: "released paper") format for your document,
+ creating a separate cover page. The default arrangement is to
+ place most of the document description (title, author names and
+ institutions, and abstract, but not the date) at the top of the
+ first page. If the optional 'no-repeat-info' argument is given,
+ 'ms' produces a cover page but does not repeat any of its
+ information subsequently (but see the 'DA' macro below regarding
+ the date). Normally, 'RP' sets the page number following the cover
+ page to 1. Specifying the optional 'no-renumber' argument
+ suppresses this alteration. Optional arguments can occur in any
+ order. 'no' is recognized as a synonym of 'no-repeat-info' for
+ 'AT&T' compatibility.
+
+ -- Macro: .TL
+ Specify the document title. 'ms' collects text on input lines
+ following this call into the title until reaching 'AU', 'AB', or a
+ heading or paragraphing macro call.
+
+ -- Macro: .AU
+ Specify an author's name. 'ms' collects text on input lines
+ following this call into the author's name until reaching 'AI',
+ 'AB', another 'AU', or a heading or paragraphing macro call. Call
+ it repeatedly to specify multiple authors.
+
+ -- Macro: .AI
+ Specify the preceding author's institution. An 'AU' call is
+ usefully followed by at most one 'AI' call; if there are more, the
+ last 'AI' call controls. 'ms' collects text on input lines
+ following this call into the author's institution until reaching
+ 'AU', 'AB', or a heading or paragraphing macro call.
+
+ -- Macro: .DA [x ...]
+ Typeset the current date, or any arguments X, in the center footer,
+ and, if 'RP' is also called, left-aligned at the end of the
+ description information on the cover page.
+
+ -- Macro: .ND [x ...]
+ Typeset the current date, or any arguments X, if 'RP' is also
+ called, left-aligned at the end of the document description on the
+ cover page. This is 'groff' 'ms''s default.
+
+ -- Macro: .AB [no]
+ Begin the abstract. 'ms' collects text on input lines following
+ this call into the abstract until reaching an 'AE' call. By
+ default, 'ms' places the word "ABSTRACT" centered and in italics
+ above the text of the abstract. The optional argument 'no'
+ suppresses this heading.
+
+ -- Macro: .AE
+ End the abstract.
+
+ An example document description, using a cover page, follows.
+
+ .RP
+ .TL
+ The Inevitability of Code Bloat
+ in Commercial and Free Software
+ .AU
+ J.\& Random Luser
+ .AI
+ University of West Bumblefuzz
+ .AB
+ This report examines the long-term growth of the code
+ bases in two large,
+ popular software packages;
+ the free Emacs and the commercial Microsoft Word.
+ While differences appear in the type or order of
+ features added,
+ due to the different methodologies used,
+ the results are the same in the end.
+ .PP
+ The free software approach is shown to be superior in
+ that while free software can become as bloated as
+ commercial offerings,
+ free software tends to have fewer serious bugs and the
+ added features are more in line with user demand.
+ .AE
+
+ ...the rest of the paper...
+
+
+File: groff.info, Node: ms Document Description Macros-Footnotes, Up: ms Document Description Macros
+
+ (1) Distinguish a document title from "titles", which are what 'roff'
+systems call headers and footers collectively.
+
+
+File: groff.info, Node: ms Body Text, Next: ms Page Layout, Prev: ms Document Description Macros, Up: ms
+
+4.6.5 Body Text
+---------------
+
+A variety of macros, registers, and strings can be used to structure and
+style the body of your document. They organize your text into
+paragraphs, headings, footnotes, and inclusions of material such as
+tables and figures.
+
+* Menu:
+
+* Text settings in ms::
+* Typographical symbols in ms::
+* Paragraphs in ms::
+* Headings in ms::
+* Typeface and decoration::
+* Lists in ms::
+* Indented regions in ms::
+* ms keeps and displays::
+* ms Insertions::
+* ms Footnotes::
+* ms language and localization::
+
+
+File: groff.info, Node: Text settings in ms, Next: Typographical symbols in ms, Prev: ms Body Text, Up: ms Body Text
+
+4.6.5.1 Text settings
+.....................
+
+The 'FAM' string, a GNU extension, sets the font family for body text;
+the default is 'T'. The 'PS' and 'VS' registers set the type size and
+vertical spacing (distance between text baselines), respectively. The
+font family and type size are ignored on terminal devices. Setting
+these parameters before the first call of a heading, paragraphing, or
+(non-date) document description macro also applies them to headers,
+footers, and (for 'FAM') footnotes.
+
+ Which font families are available depends on the output device; as a
+convention, 'T' selects a serif family ("Times"), 'H' a sans-serif
+family ("Helvetica"), and 'C' a monospaced family ("Courier"). The man
+page for the output driver documents its font repertoire. Consult the
+'groff(1)' man page for lists of available output devices and their
+drivers.
+
+ The hyphenation mode (as used by the 'hy' request) is set from the
+'HY' register. Setting 'HY' to '0' is equivalent to using the 'nh'
+request. This is a Tenth Edition Research Unix extension.
+
+
+File: groff.info, Node: Typographical symbols in ms, Next: Paragraphs in ms, Prev: Text settings in ms, Up: ms Body Text
+
+4.6.5.2 Typographical symbols
+.............................
+
+'ms' provides a few strings to obtain typographical symbols not easily
+entered with the keyboard. These and many others are available as
+special character escape sequences--see the 'groff_char(7)' man page.
+
+ -- String: \*[-]
+ Interpolate an em dash.
+
+ -- String: \*[Q]
+ -- String: \*[U]
+ Interpolate typographer's quotation marks where available, and
+ neutral double quotes otherwise. '\*Q' is the left quote and '\*U'
+ the right.
+
+
+File: groff.info, Node: Paragraphs in ms, Next: Headings in ms, Prev: Typographical symbols in ms, Up: ms Body Text
+
+4.6.5.3 Paragraphs
+..................
+
+Paragraphing macros "break", or terminate, any pending output line so
+that a new paragraph can begin. Several paragraph types are available,
+differing in how indentation applies to them: to left, right, or both
+margins; to the first output line of the paragraph, all output lines, or
+all but the first. All paragraphing macro calls cause the insertion of
+vertical space in the amount stored in the 'PD' register, except at page
+or column breaks. Alternatively, a blank input line breaks the output
+line and vertically spaces by one vee.
+
+ -- Macro: .LP
+ Set a paragraph without any (additional) indentation.
+
+ -- Macro: .PP
+ Set a paragraph with a first-line left indentation in the amount
+ stored in the 'PI' register.
+
+ -- Macro: .IP [marker [width]]
+ Set a paragraph with a left indentation. The optional MARKER is
+ not indented and is empty by default. It has several applications;
+ see *note Lists in ms::. WIDTH overrides the indentation amount
+ stored in the 'PI' register; its default unit is 'n'. Once
+ specified, WIDTH applies to further 'IP' calls until specified
+ again or a heading or different paragraphing macro is called.
+
+ -- Macro: .QP
+ Set a paragraph indented from both left and right margins by the
+ amount stored in the 'QI' register.
+
+ -- Macro: .QS
+ -- Macro: .QE
+ Begin ('QS') and end ('QE') a region where each paragraph is
+ indented from both margins by the amount stored in the 'QI'
+ register. The text between 'QS' and 'QE' can be structured further
+ by use of other paragraphing macros.
+
+ -- Macro: .XP
+ Set an "exdented" paragraph--one with a left indentation in the
+ amount stored in the 'PI' register on every line _except_ the first
+ (also known as a hanging indent). This is a Berkeley extension.
+
+ The following example illustrates the use of paragraphing macros.
+
+ .NH 2
+ Cases used in the 2001 study
+ .LP
+ Two software releases were considered for this report.
+ .PP
+ The first is commercial software;
+ the second is free.
+ .IP \[bu]
+ Microsoft Word for Windows,
+ starting with version 1.0 through the current version
+ (Word 2000).
+ .IP \[bu]
+ GNU Emacs,
+ from its first appearance as a standalone editor through
+ the current version (v20).
+ See [Bloggs 2002] for details.
+ .QP
+ Franklin's Law applied to software:
+ software expands to outgrow both RAM and disk space over
+ time.
+ .SH
+ Bibliography
+ .XP
+ Bloggs, Joseph R.,
+ .I "Everyone's a Critic" ,
+ Underground Press, March 2002.
+ A definitive work that answers all questions and
+ criticisms about the quality and usability of free
+ software.
+
+
+File: groff.info, Node: Headings in ms, Next: Typeface and decoration, Prev: Paragraphs in ms, Up: ms Body Text
+
+4.6.5.4 Headings
+................
+
+Use headings to create a sequential or hierarchical structure for your
+document. The 'ms' macros print headings in *bold* using the same font
+family and, by default, type size as the body text. Headings are
+available with and without automatic numbering. Text on input lines
+following the macro call becomes the heading's title. Call a
+paragraphing macro to end the heading text and start the section's
+content.
+
+ -- Macro: .NH [depth]
+ -- Macro: .NH S heading-depth-index ...
+ Set an automatically numbered heading.
+
+ 'ms' produces a numbered heading the form A.B.C..., to any depth
+ desired, with the numbering of each depth increasing automatically
+ and being reset to zero when a more significant level is increased.
+ "1" is the most significant or coarsest division of the document.
+ Only non-zero values are output. If DEPTH is omitted, it is taken
+ to be '1'.
+
+ If you specify DEPTH such that an ascending gap occurs relative to
+ the previous 'NH' call--that is, you "skip a depth", as by '.NH 1'
+ and then '.NH 3'--'groff' 'ms' emits a warning on the standard
+ error stream.
+
+ Alternatively, you can give 'NH' a first argument of 'S', followed
+ by integers to number the heading depths explicitly. Further
+ automatic numbering, if used, resumes using the specified indices
+ as their predecessors. This feature is a Berkeley extension.
+
+ An example may be illustrative.
+
+ .NH 1
+ Animalia
+ .NH 2
+ Arthropoda
+ .NH 3
+ Crustacea
+ .NH 2
+ Chordata
+ .NH S 6 6 6
+ Daimonia
+ .NH 1
+ Plantae
+
+ The above results in numbering as follows; the vertical space that
+normally precedes each heading is omitted.
+
+ 1. Animalia
+ 1.1. Arthropoda
+ 1.1.1. Crustacea
+ 1.2. Chordata
+ 6.6.6. Daimonia
+ 7. Plantae
+
+ -- String: \*[SN-STYLE]
+ -- String: \*[SN-DOT]
+ -- String: \*[SN-NO-DOT]
+ -- String: \*[SN]
+ After 'NH' is called, the assigned number is made available in the
+ strings 'SN-DOT' (as it appears in a printed heading with default
+ formatting, followed by a terminating period) and 'SN-NO-DOT' (with
+ the terminating period omitted). These are GNU extensions.
+
+ You can control the style used to print numbered headings by
+ defining an appropriate alias for the string 'SN-STYLE'. By
+ default, 'SN-STYLE' is aliased to 'SN-DOT'. If you prefer to omit
+ the terminating period from numbers appearing in numbered headings,
+ you may define the alias as follows.
+
+ .als SN-STYLE SN-NO-DOT
+
+ Any such change in numbering style becomes effective from the next
+ use of 'NH' following redefinition of the alias for 'SN-STYLE'.
+ The formatted number of the current heading is available in the
+ 'SN' string (a feature first documented by Berkeley), which
+ facilitates its inclusion in, for example, table captions, equation
+ labels, and 'XS'/'XA'/'XE' table of contents entries.
+
+ -- Macro: .SH [depth]
+ Set an unnumbered heading.
+
+ The optional DEPTH argument is a GNU extension indicating the
+ heading depth corresponding to the DEPTH argument of 'NH'. It
+ matches the type size at which the heading is set to that of a
+ numbered heading at the same depth when the 'GROWPS' and 'PSINCR'
+ heading size adjustment mechanism is in effect.
+
+ If the 'GROWPS' register is set to a value greater than the LEVEL
+argument to 'NH' or 'SH', the type size of a heading produced by these
+macros increases by 'PSINCR' units over the size specified by 'PS'
+multiplied by the difference of 'GROWPS' and LEVEL. The value stored in
+'PSINCR' is interpreted in 'groff' basic units; the 'p' scaling unit
+should be employed when assigning a value specified in points. For
+example, the sequence
+
+ .nr PS 10
+ .nr GROWPS 3
+ .nr PSINCR 1.5p
+ .NH 1
+ Carnivora
+ .NH 2
+ Felinae
+ .NH 3
+ Felis catus
+ .SH 2
+ Machairodontinae
+
+will cause "1. Carnivora" to be printed in 13-point text, followed by
+"1.1. Felinae" in 11.5-point text, while "1.1.1. Felis catus" and all
+more deeply nested heading levels will remain in the 10-point text
+specified by the 'PS' register. "Machairodontinae" is printed at 11.5
+points, since it corresponds to heading level 2.
+
+ The 'HORPHANS' register operates in conjunction with the 'NH' and
+'SH' macros to inhibit the printing of isolated headings at the bottom
+of a page; it specifies the minimum number of lines of an immediately
+subsequent paragraph that must be kept on the same page as the heading.
+If insufficient space remains on the current page to accommodate the
+heading and this number of lines of paragraph text, a page break is
+forced before the heading is printed. Any display macro call or 'tbl',
+'pic', or 'eqn' region between the heading and the subsequent paragraph
+suppresses this grouping. *Note ms keeps and displays:: and *note ms
+Insertions::.
+
+
+File: groff.info, Node: Typeface and decoration, Next: Lists in ms, Prev: Headings in ms, Up: ms Body Text
+
+4.6.5.5 Typeface and decoration
+...............................
+
+The 'ms' macros provide a variety of ways to style text. Attend closely
+to the ordering of arguments labeled PRE and POST, which is not
+intuitive. Support for PRE arguments is a GNU extension.(1) (*note
+Typeface and decoration-Footnote-1::)
+
+ -- Macro: .B [text [post [pre]]]
+ Style TEXT in bold, followed by POST in the previous font style
+ without intervening space, and preceded by PRE similarly. Without
+ arguments, 'ms' styles subsequent text in bold until the next
+ paragraphing, heading, or no-argument typeface macro call.
+
+ -- Macro: .R [text [post [pre]]]
+ As 'B', but use the roman style (upright text of normal weight)
+ instead of bold. Argument recognition is a GNU extension.
+
+ -- Macro: .I [text [post [pre]]]
+ As 'B', but use an italic or oblique style instead of bold.
+
+ -- Macro: .BI [text [post [pre]]]
+ As 'B', but use a bold italic or bold oblique style instead of
+ upright bold. This is a Tenth Edition Research Unix extension.
+
+ -- Macro: .CW [text [post [pre]]]
+ As 'B', but use a constant-width (monospaced) roman typeface
+ instead of bold. This is a Tenth Edition Research Unix extension.
+
+ -- Macro: .BX [text]
+ Typeset TEXT and draw a box around it. On terminal devices,
+ reverse video is used instead. If you want TEXT to contain space,
+ use unbreakable space or horizontal motion escape sequences ('\~',
+ '\<SP>', '\^', '\|', '\0' or '\h').
+
+ -- Macro: .UL [text [post]]
+ Typeset TEXT with an underline. POST, if present, is set after
+ TEXT with no intervening space.
+
+ -- Macro: .LG
+ Set subsequent text in larger type (two points larger than the
+ current size) until the next type size, paragraphing, or heading
+ macro call. You can specify this macro multiple times to enlarge
+ the type size as needed.
+
+ -- Macro: .SM
+ Set subsequent text in smaller type (two points smaller than the
+ current size) until the next type size, paragraphing, or heading
+ macro call. You can specify this macro multiple times to reduce
+ the type size as needed.
+
+ -- Macro: .NL
+ Set subsequent text at the normal type size (the amount in the 'PS'
+ register).
+
+ PRE and POST arguments are typically used to simplify the attachment
+of punctuation to styled words. When PRE is used, a hyphenation control
+escape sequence '\%' that would ordinarily start TEXT must start PRE
+instead to have the desired effect.
+
+ The CS course's students found one C language keyword
+ .CW static ) \%(
+ most troublesome.
+
+ The foregoing example produces output as follows.
+
+ The CS course's students found one C language keyword (static)
+ most troublesome.
+
+ You can use the output line continuation escape sequence '\c' to
+achieve the same result (*note Line Continuation::). It is also
+portable to older 'ms' implementations.
+
+ The CS course's students found one C language keyword
+ \%(\c
+ .CW \%static )
+ most troublesome.
+
+ 'groff' 'ms' also offers strings to begin and end super- and
+subscripting. These are GNU extensions.
+
+ -- String: \*[{]
+ -- String: \*[}]
+ Begin and end superscripting, respectively.
+
+ -- String: \*[<]
+ -- String: \*[>]
+ Begin and end subscripting, respectively.
+
+ Rather than calling the 'CW' macro, in 'groff' 'ms' you might prefer
+to change the font family to Courier by setting the 'FAM' string to 'C'.
+You can then use all four style macros above, returning to the default
+family (Times) with '.ds FAM T'. Because changes to 'FAM' take effect
+only at the next paragraph, 'CW' remains useful to "inline" a change to
+the font family, similarly to the practice of this document in noting
+syntactical elements of 'ms' and 'groff'.
+
+
+File: groff.info, Node: Typeface and decoration-Footnotes, Up: Typeface and decoration
+
+ (1) This idiosyncrasy arose through feature accretion; for example,
+the 'B' macro in Version 6 Unix 'ms' (1975) accepted only one argument,
+the text to be set in boldface. By Version 7 (1979) it recognized a
+second argument; in 1990, 'groff' 'ms' added a "pre" argument, placing
+it third to avoid breaking support for older documents.
+
+
+File: groff.info, Node: Lists in ms, Next: Indented regions in ms, Prev: Typeface and decoration, Up: ms Body Text
+
+4.6.5.6 Lists
+.............
+
+The MARKER argument to the 'IP' macro can be employed to present a
+variety of lists; for instance, you can use a bullet glyph ('\[bu]') for
+unordered lists, a number (or auto-incrementing register) for numbered
+lists, or a word or phrase for glossary-style or definition lists. If
+you set the paragraph indentation register 'PI' before calling 'IP', you
+can later reorder the items in the list without having to ensure that a
+WIDTH argument remains affixed to the first call.
+
+ The following is an example of a bulleted list.
+
+ .nr PI 2n
+ A bulleted list:
+ .IP \[bu]
+ lawyers
+ .IP \[bu]
+ guns
+ .IP \[bu]
+ money
+
+ A bulleted list:
+
+ * lawyers
+
+ * guns
+
+ * money
+
+ The following is an example of a numbered list.
+
+ .nr step 0 1
+ .nr PI 3n
+ A numbered list:
+ .IP \n+[step]
+ lawyers
+ .IP \n+[step]
+ guns
+ .IP \n+[step]
+ money
+
+ A numbered list:
+
+ 1. lawyers
+
+ 2. guns
+
+ 3. money
+
+ Here we have employed the 'nr' request to create a register of our
+own, 'step'. We initialized it to zero and assigned it an
+auto-increment of 1. Each time we use the escape sequence '\n+[PI]'
+(note the plus sign), the formatter applies the increment just before
+interpolating the register's value. Preparing the 'PI' register as well
+enables us to rearrange the list without the tedium of updating macro
+calls.
+
+ The next example illustrates a glossary-style list.
+
+ A glossary-style list:
+ .IP lawyers 0.4i
+ Two or more attorneys.
+ .IP guns
+ Firearms,
+ preferably large-caliber.
+ .IP money
+ Gotta pay for those
+ lawyers and guns!
+
+ A glossary-style list:
+
+ lawyers
+ Two or more attorneys.
+
+ guns Firearms, preferably large-caliber.
+
+ money
+ Gotta pay for those lawyers and guns!
+
+ In the previous example, observe how the 'IP' macro places the
+definition on the same line as the term if it has enough space. If this
+is not what you want, there are a few workarounds we will illustrate by
+modifying the example. First, you can use a 'br' request to force a
+break after printing the term or label.
+
+ .IP guns
+ .br
+ Firearms,
+
+ Second, you could apply the '\p' escape sequence to force a break.
+The space following the escape sequence is important; if you omit it,
+'groff' prints the first word of the paragraph text on the same line as
+the term or label (if it fits) _then_ breaks the line.
+
+ .IP guns
+ \p Firearms,
+
+ Finally, you may append a horizontal motion to the marker with the
+'\h' escape sequence; using the same amount as the indentation will
+ensure that the marker is too wide for 'groff' to treat it as "fitting"
+on the same line as the paragraph text.
+
+ .IP guns\h'0.4i'
+ Firearms,
+
+ In each case, the result is the same.
+
+ A glossary-style list:
+
+ lawyers
+ Two or more attorneys.
+
+ guns
+ Firearms, preferably large-caliber.
+
+ money
+ Gotta pay for those lawyers and guns!
+
+
+File: groff.info, Node: Indented regions in ms, Next: ms keeps and displays, Prev: Lists in ms, Up: ms Body Text
+
+4.6.5.7 Indented regions
+........................
+
+You may need to indent a region of text while otherwise formatting it
+normally. Indented regions can be nested; you can change '\n[PI]'
+before each call to vary the amount of inset.
+
+ -- Macro: .RS
+ Begin a region where headings, paragraphs, and displays are
+ indented (further) by the amount stored in the 'PI' register.
+
+ -- Macro: .RE
+ End the (next) most recent indented region.
+
+ This feature enables you to easily line up text under hanging and
+indented paragraphs. For example, you may wish to structure lists
+hierarchically.
+
+ .IP \[bu] 2
+ Lawyers:
+ .RS
+ .IP \[bu]
+ Dewey,
+ .IP \[bu]
+ Cheatham,
+ and
+ .IP \[bu]
+ and Howe.
+ .RE
+ .IP \[bu]
+ Guns
+
+ * Lawyers:
+
+ * Dewey,
+
+ * Cheatham, and
+
+ * Howe.
+
+ * Guns
+
+
+File: groff.info, Node: ms keeps and displays, Next: ms Insertions, Prev: Indented regions in ms, Up: ms Body Text
+
+4.6.5.8 Keeps, boxed keeps, and displays
+........................................
+
+On occasion, you may want to "keep" several lines of text, or a region
+of a document, together on a single page, preventing an automatic page
+break within certain boundaries. This can cause a page break to occur
+earlier than it normally would. For example, you may want to keep two
+paragraphs together, or a paragraph that refers to a table, list, or
+figure adjacent to the item it discusses. 'ms' provides the 'KS' and
+'KE' macros for this purpose.
+
+ You can alternatively specify a "floating keep": if a keep cannot fit
+on the current page, 'ms' holds its contents and allows material
+following the keep (in the source document) to fill the remainder of the
+current page. When the page breaks, whether by reaching the end or 'bp'
+request, 'ms' puts the floating keep at the beginning of the next page.
+This is useful for placing large graphics or tables that do not need to
+appear exactly where they occur in the source document.
+
+ -- Macro: .KS
+ -- Macro: .KF
+ -- Macro: .KE
+ 'KS' begins a keep, 'KF' a floating keep, and 'KE' ends a keep of
+ either kind.
+
+ As an alternative to the keep mechanism, the 'ne' request forces a
+page break if there is not at least the amount of vertical space
+specified in its argument remaining on the page (*note Page Control::).
+One application of 'ne' is to reserve space on the page for a figure or
+illustration to be included later.
+
+ A "boxed keep" has a frame drawn around it.
+
+ -- Macro: .B1
+ -- Macro: .B2
+ 'B1' begins a keep with a box drawn around it. 'B2' ends a boxed
+ keep.
+
+ Boxed keep macros cause breaks; if you need to box a word or phrase
+within a line, see the 'BX' macro in *note Typeface and decoration::.
+Box lines are drawn as close as possible to the text they enclose so
+that they are usable within paragraphs. If you wish to box one or more
+paragraphs, you may improve the appearance by calling 'B1' after the
+first paragraphing macro, and by adding a small amount of vertical space
+before calling 'B2'.
+
+ .LP
+ .B1
+ .I Warning:
+ Happy Fun Ball may suddenly accelerate to dangerous
+ speeds.
+ .sp \n[PD]/2 \" space by half the inter-paragraph distance
+ .B2
+
+ If you want a boxed keep to float, you will need to enclose the 'B1'
+and 'B2' calls within a pair of 'KF' and 'KE' calls.
+
+ "Displays" turn off filling; lines of verse or program code are shown
+with their lines broken as in the source document without requiring 'br'
+requests between lines. Displays can be kept on a single page or
+allowed to break across pages. The 'DS' macro begins a kept display of
+the layout specified in its first argument; non-kept displays are begun
+with dedicated macros corresponding to their layout.
+
+ -- Macro: .DS L
+ -- Macro: .LD
+ Begin ('DS': kept) left-aligned display.
+
+ -- Macro: .DS [I [indent]]
+ -- Macro: .ID [indent]
+ Begin ('DS': kept) display indented by INDENT if specified, and by
+ the amount of the 'DI' register otherwise.
+
+ -- Macro: .DS B
+ -- Macro: .BD
+ Begin a ('DS': kept) a block display: the entire display is
+ left-aligned, but indented such that the longest line in the
+ display is centered on the page.
+
+ -- Macro: .DS C
+ -- Macro: .CD
+ Begin a ('DS': kept) centered display: each line in the display is
+ centered.
+
+ -- Macro: .DS R
+ -- Macro: .RD
+ Begin a ('DS': kept) right-aligned display. This is a GNU
+ extension.
+
+ -- Macro: .DE
+ End any display.
+
+ The distance stored in the 'DD' register is inserted before and after
+each pair of display macros; this is a Berkeley extension. In 'groff'
+'ms', this distance replaces any adjacent inter-paragraph distance or
+subsequent spacing prior to a section heading. The 'DI' register is a
+GNU extension; its value is an indentation applied to displays created
+with '.DS' and '.ID' without arguments, to '.DS I' without an
+indentation argument, and to indented equations set with '.EQ'. Changes
+to either register take effect at the next display boundary.
+
+
+File: groff.info, Node: ms Insertions, Next: ms Footnotes, Prev: ms keeps and displays, Up: ms Body Text
+
+4.6.5.9 Tables, figures, equations, and references
+..................................................
+
+The 'ms' package is often used with the 'tbl', 'pic', 'eqn', and 'refer'
+preprocessors. Mark text meant for preprocessors by enclosing it in
+pairs of tokens as follows, with nothing between the dot and the macro
+name. The preprocessors match these tokens only at the start of an
+input line.
+
+ -- Macro: .TS [H]
+ -- Macro: .TE
+ Demarcate a table to be processed by the 'tbl' preprocessor. The
+ optional argument 'H' to 'TS' instructs 'ms' to repeat table rows
+ (often column headings) at the top of each new page the table
+ spans, if applicable; calling the 'TH' macro marks the end of such
+ rows. The GNU 'tbl(1)' man page provides a comprehensive reference
+ to the preprocessor and offers examples of its use.
+
+ -- Macro: .PS
+ -- Macro: .PE
+ -- Macro: .PF
+ 'PS' begins a picture to be processed by the 'gpic' preprocessor;
+ either of 'PE' or 'PF' ends it, the latter with "flyback" to the
+ vertical position at its top. You can create 'pic' input manually
+ or with a program such as 'xfig'.
+
+ -- Macro: .EQ [align [label]]
+ -- Macro: .EN
+ Demarcate an equation to be processed by the 'eqn' preprocessor.
+ The equation is centered by default; ALIGN can be 'C', 'L', or 'I'
+ to (explicitly) center, left-align, or indent it by the amount
+ stored in the 'DI' register, respectively. If specified, LABEL is
+ set right-aligned.
+
+ -- Macro: .[
+ -- Macro: .]
+ Demarcate a bibliographic citation to be processed by the 'refer'
+ preprocessor. The GNU 'refer(1)' man page provides a comprehensive
+ reference to the preprocessor and the format of its bibliographic
+ database. Type 'man refer' at the command line to view it.
+
+ When 'refer' emits collected references (as might be done on a "Works
+Cited" page), it interpolates the 'REFERENCES' string as an unnumbered
+heading ('SH').
+
+ The following is an example of how to set up a table that may print
+across two or more pages.
+
+ .TS H
+ allbox;
+ Cb | Cb .
+ Part->Description
+ _
+ .TH
+ .T&
+ GH-1978->Fribulating gonkulator
+ ...the rest of the table follows...
+ .TE
+
+Attempting to place a multi-page table inside a keep can lead to
+unpleasant results, particularly if the 'tbl' 'allbox' option is used.
+
+ Mathematics can be typeset using the language of the 'eqn'
+preprocessor.
+
+ .EQ C (\*[SN-NO-DOT]a)
+ p ~ = ~ q sqrt { ( 1 + ~ ( x / q sup 2 ) }
+ .EN
+
+This input formats a labelled equation. We used the 'SN-NO-DOT' string
+to base the equation label on the current heading number, giving us more
+flexibility to reorganize the document.
+
+ Use 'groff' options to run preprocessors on the input: '-e' for
+'geqn', '-p' for 'gpic', '-R' for 'grefer', and '-t' for 'gtbl'.
+
+
+File: groff.info, Node: ms Footnotes, Prev: ms Insertions, Up: ms Body Text
+
+4.6.5.10 Footnotes
+..................
+
+A footnote is typically anchored to a place in the text with a "marker",
+which is a small integer, a symbol such as a dagger, or arbitrary
+user-specified text.
+
+ -- String: \*[*]
+ Place an "automatic number", an automatically generated numeric
+ footnote marker, in the text. Each time this string is
+ interpolated, the number it produces increments by one. Automatic
+ numbers start at 1. This is a Berkeley extension.
+
+ Enclose the footnote text in 'FS' and 'FE' macro calls to set it at
+the nearest available "foot", or bottom, of a text column or page.
+
+ -- Macro: .FS [marker]
+ -- Macro: .FE
+ Begin ('FS') and end ('FE') a footnote. 'FS' calls 'FS-MARK' with
+ any supplied MARKER argument, which is then also placed at the
+ beginning of the footnote text. If MARKER is omitted, the next
+ pending automatic footnote number enqueued by interpolation of the
+ '*' string is used, and if none exists, nothing is prefixed.
+
+ You may not desire automatically numbered footnotes in spite of their
+convenience. You can indicate a footnote with a symbol or other text by
+specifying its marker at the appropriate place (for example, by using
+'\[dg]' for the dagger glyph) _and_ as an argument to the 'FS' macro.
+Such manual marks should be repeated as arguments to 'FS' or as part of
+the footnote text to disambiguate their correspondence. You may wish to
+use '\*{' and '\*}' to superscript the marker at the anchor point, in
+the footnote text, or both.
+
+ 'groff' 'ms' provides a hook macro, 'FS-MARK', for user-determined
+operations to be performed when the 'FS' macro is called. It is passed
+the same arguments as 'FS' itself. An application of 'FS-MARK' is
+anchor placement for a hyperlink reference, so that a footnote can link
+back to its referential context.(1) (*note ms Footnotes-Footnote-1::)
+By default, this macro has an empty definition. 'FS-MARK' is a GNU
+extension.
+
+ Footnotes can be safely used within keeps and displays, but you
+should avoid using automatically numbered footnotes within floating
+keeps. You can place a second '\**' interpolation between a '\**' and
+its corresponding 'FS' call as long as each 'FS' call occurs _after_ the
+corresponding '\**' and occurrences of 'FS' are in the same order as
+corresponding occurrences of '\**'.
+
+ Footnote text is formatted as paragraphs are, using analogous
+parameters. The registers 'FI', 'FPD', 'FPS', and 'FVS' correspond to
+'PI', 'PD', 'PS', and 'CS', respectively; 'FPD', 'FPS', and 'FVS' are
+GNU extensions.
+
+ The 'FF' register controls the formatting of automatically numbered
+footnote paragraphs and those for which 'FS' is given a marker argument.
+*Note ms Document Control Settings::.
+
+ The default footnote line length is 11/12ths of the normal line
+length for compatibility with the expectations of historical 'ms'
+documents; you may wish to set the 'FR' string to '1' to align with
+contemporary typesetting practices. In the past,(2) (*note ms
+Footnotes-Footnote-2::) an 'FL' register was used for the line length in
+footnotes; however, setting this register at document initialization
+time had no effect on the footnote line length in multi-column
+arrangements.(3) (*note ms Footnotes-Footnote-3::)
+
+ 'FR' should be used in preference to the old 'FL' register in
+contemporary documents. The footnote line length is effectively
+computed as 'column-width * \*[FR]'. If an absolute footnote line
+length is required, recall that arithmetic expressions in 'roff' input
+are evaluated strictly from left to right, with no operator precedence
+(parentheses are honored).
+
+ .ds FR 0+3i \" Set footnote line length to 3 inches.
+
+
+File: groff.info, Node: ms Footnotes-Footnotes, Up: ms Footnotes
+
+ (1) "Portable Document Format Publishing with GNU Troff",
+'pdfmark.ms' in the 'groff' distribution, uses this technique.
+
+ (2) Unix Version 7 'ms', its descendants, and GNU 'ms' prior to
+'groff' version 1.23.0
+
+ (3) You could reset it after each call to '.1C', '.2C', or '.MC'.
+
+
+File: groff.info, Node: ms language and localization, Next: ms Page Layout, Prev: ms Footnotes, Up: ms Body Text
+
+4.6.5.11 Language and localization
+..................................
+
+'groff' 'ms' provides several strings that you can customize for your
+own purposes, or redefine to adapt the macro package to languages other
+than English. It is already localized for Czech, German, French,
+Italian, and Swedish. Load the desired localization macro package after
+'ms'; see the 'groff_tmac(5)' man page.
+
+ $ groff -ms -mfr bienvenue.ms
+
+ The following strings are available.
+
+ -- String: \*[REFERENCES]
+ Contains the string printed at the beginning of a references
+ (bibliography) page produced with GNU 'refer(1)'. The default is
+ 'References'.
+
+ -- String: \*[ABSTRACT]
+ Contains the string printed at the beginning of the abstract. The
+ default is '\f[I]ABSTRACT\f[]'; it includes font selection escape
+ sequences to set the word in italics.
+
+ -- String: \*[TOC]
+ Contains the string printed at the beginning of the table of
+ contents. The default is 'Table of Contents'.
+
+ -- String: \*[MONTH1]
+ -- String: \*[MONTH2]
+ -- String: \*[MONTH3]
+ -- String: \*[MONTH4]
+ -- String: \*[MONTH5]
+ -- String: \*[MONTH6]
+ -- String: \*[MONTH7]
+ -- String: \*[MONTH8]
+ -- String: \*[MONTH9]
+ -- String: \*[MONTH10]
+ -- String: \*[MONTH11]
+ -- String: \*[MONTH12]
+ Contain the full names of the calendar months. The defaults are in
+ English: 'January', 'February', and so on.
+
+
+File: groff.info, Node: ms Page Layout, Next: Differences from AT&T ms, Prev: ms Body Text, Up: ms
+
+4.6.6 Page layout
+-----------------
+
+'ms''s default page layout arranges text in a single column with the
+page number between hyphens centered in a header on each page except the
+first, and produces no footers. You can customize this arrangement.
+
+* Menu:
+
+* ms Headers and Footers::
+* Tab Stops in ms::
+* ms Margins::
+* ms Multiple Columns::
+* ms TOC::
+
+
+File: groff.info, Node: ms Headers and Footers, Next: Tab Stops in ms, Prev: ms Page Layout, Up: ms Page Layout
+
+4.6.6.1 Headers and footers
+...........................
+
+There are multiple ways to produce headers and footers. One is to
+define the strings 'LH', 'CH', and 'RH' to set the left, center, and
+right headers, respectively; and 'LF', 'CF', and 'RF' to set the left,
+center, and right footers. This approach suffices for documents that do
+not distinguish odd- and even-numbered pages.
+
+ Another method is to call macros that set headers or footers for odd-
+or even-numbered pages. Each such macro takes a delimited argument
+separating the left, center, and right header or footer texts from each
+other. You can replace the neutral apostrophes (''') shown below with
+any character not appearing in the header or footer text. These macros
+are Berkeley extensions.
+
+ -- Macro: .OH 'left'center'right'
+ -- Macro: .EH 'left'center'right'
+ -- Macro: .OF 'left'center'right'
+ -- Macro: .EF 'left'center'right'
+ The 'OH' and 'EH' macros define headers for odd- (recto) and
+ even-numbered (verso) pages, respectively; the 'OF' and 'EF' macros
+ define footers for them.
+
+ With either method, a percent sign '%' in header or footer text is
+replaced by the current page number. By default, 'ms' places no header
+on a page numbered "1" (regardless of its number format).
+
+ -- Macro: .P1
+ Typeset the header even on page 1. To be effective, this macro
+ must be called before the header trap is sprung on any page
+ numbered "1"; in practice, unless your page numbering is unusual,
+ this means that you should call it early, before 'TL' or any
+ heading or paragraphing macro. This is a Berkeley extension.
+
+ For even greater flexibility, 'ms' is designed to permit the
+redefinition of the macros that are called when the 'groff' traps that
+ordinarily cause the headers and footers to be output are sprung. 'PT'
+("page trap") is called by 'ms' when the header is to be written, and
+'BT' ("bottom trap") when the footer is to be. The 'groff' page
+location trap that 'ms' sets up to format the header also calls the
+(normally undefined) 'HD' macro after 'PT'; you can define 'HD' if you
+need additional processing after setting the header (for example, to
+draw a line below it). The 'HD' hook is a Berkeley extension. Any such
+macros you (re)define must implement any desired specialization for
+odd-, even-, or first numbered pages.
+
+
+File: groff.info, Node: Tab Stops in ms, Next: ms Margins, Prev: ms Headers and Footers, Up: ms Page Layout
+
+4.6.6.2 Tab stops
+.................
+
+Use the 'ta' request to define tab stops as needed. *Note Tabs and
+Fields::.
+
+ -- Macro: .TA
+ Reset the tab stops to the 'ms' default (every 5 ens). Redefine
+ this macro to create a different set of default tab stops.
+
+
+File: groff.info, Node: ms Margins, Next: ms Multiple Columns, Prev: Tab Stops in ms, Up: ms Page Layout
+
+4.6.6.3 Margins
+...............
+
+Control margins using the registers summarized in "Margin settings" in
+*note ms Document Control Settings:: above. There is no setting for the
+right margin; the combination of page offset '\n[PO]' and line length
+'\n[LL]' determines it.
+
+
+File: groff.info, Node: ms Multiple Columns, Next: ms TOC, Prev: ms Margins, Up: ms Page Layout
+
+4.6.6.4 Multiple columns
+........................
+
+'ms' can set text in as many columns as reasonably fit on the page. The
+following macros force a page break if a multi-column layout is active
+when they are called. The 'MINGW' register stores the default minimum
+gutter width; it is a GNU extension. When multiple columns are in use,
+keeps and the 'HORPHANS' and 'PORPHANS' registers work with respect to
+column breaks instead of page breaks.
+
+ -- Macro: .1C
+ Arrange page text in a single column (the default).
+
+ -- Macro: .2C
+ Arrange page text in two columns.
+
+ -- Macro: .MC [column-width [gutter-width]]
+ Arrange page text in multiple columns. If you specify no
+ arguments, it is equivalent to the '2C' macro. Otherwise,
+ COLUMN-WIDTH is the width of each column and GUTTER-WIDTH is the
+ minimum distance between columns.
+
+
+File: groff.info, Node: ms TOC, Next: Differences from AT&T ms, Prev: ms Multiple Columns, Up: ms Page Layout
+
+4.6.6.5 Creating a table of contents
+....................................
+
+Because 'roff' formatters process their input in a single pass, material
+on page 50, for example, cannot influence what appears on page 1--this
+poses a challenge for a table of contents at its traditional location in
+front matter, if you wish to avoid manually maintaining it. 'ms'
+enables the collection of material to be presented in the table of
+contents as it appears, saving its page number along with it, and then
+emitting the collected contents on demand toward the end of the
+document. The table of contents can then be resequenced to its desired
+location by physically rearranging the pages of a printed document, or
+as part of post-processing--with a 'sed(1)' script to reorder the pages
+in 'troff''s output, with 'pdfjam(1)', or with 'gropdf(1)''s
+'.pdfswitchtopage' feature, for example.
+
+ Define an entry to appear in the table of contents by bracketing its
+text between calls to the 'XS' and 'XE' macros. A typical application
+is to call them immediately after 'NH' or 'SH' and repeat the heading
+text within them. The 'XA' macro, used within '.XS'/'.XE' pairs,
+supplements an entry--for instance, when it requires multiple output
+lines, whether because a heading is too long to fit or because style
+dictates that page numbers not be repeated. You may wish to indent the
+text thus wrapped to correspond to its heading depth; this can be done
+in the entry text by prefixing it with tabs or horizontal motion escape
+sequences, or by providing a second argument to the 'XA' macro. 'XS'
+and 'XA' automatically associate the page number where they are called
+with the text following them, but they accept arguments to override this
+behavior. At the end of the document, call 'TC' or 'PX' to emit the
+table of contents; 'TC' resets the page number to 'i' (Roman numeral
+one), and then calls 'PX'. All of these macros are Berkeley extensions.
+
+ -- Macro: .XS [page-number]
+ -- Macro: .XA [page-number [indentation]]
+ -- Macro: .XE
+ Begin, supplement, and end a table of contents entry. Each entry
+ is associated with PAGE-NUMBER (otherwise the current page number);
+ a PAGE-NUMBER of 'no' prevents a leader and page number from being
+ emitted for that entry. Use of 'XA' within 'XS'/'XE' is optional;
+ it can be repeated. If INDENTATION is present, a supplemental
+ entry is indented by that amount; ens are assumed if no unit is
+ indicated. Text on input lines between 'XS' and 'XE' is stored for
+ later recall by 'PX'.
+
+ -- Macro: .PX [no]
+ Switch to single-column layout. Unless 'no' is specified, center
+ and interpolate the 'TOC' string in bold and two points larger than
+ the body text. Emit the table of contents entries.
+
+ -- Macro: .TC [no]
+ Set the page number to 1, the page number format to lowercase Roman
+ numerals, and call 'PX' (with a 'no' argument, if present).
+
+ Here's an example of typical 'ms' table of contents preparation. We
+employ horizontal escape sequences '\h' to indent the entries by
+sectioning depth.
+
+ .NH 1
+ Introduction
+ .XS
+ Introduction
+ .XE
+ ...
+ .NH 2
+ Methodology
+ .XS
+ \h'2n'Methodology
+ .XA
+ \h'4n'Fassbinder's Approach
+ \h'4n'Kahiu's Approach
+ .XE
+ ...
+ .NH 1
+ Findings
+ .XS
+ Findings
+ .XE
+ ...
+ .TC
+
+ The remaining features in this subsubsection are GNU extensions.
+'groff' 'ms' obviates the need to repeat heading text after 'XS' calls.
+Call 'XN' and 'XH' after 'NH' and 'SH', respectively.
+
+ -- Macro: .XN heading-text
+ -- Macro: .XH depth heading-text
+ Format HEADING-TEXT and create a corresponding table of contents
+ entry. 'XN' computes the indentation from the depth of the
+ preceding 'NH' call; 'XH' requires a DEPTH argument to do so.
+
+ 'groff' 'ms' encourages customization of table of contents entry
+production.
+
+ -- Macro: .XN-REPLACEMENT heading-text
+ -- Macro: .XH-REPLACEMENT depth heading-text
+ These hook macros implement 'XN' and 'XH', respectively. They call
+ 'XN-INIT' and pass their HEADING-TEXT arguments to 'XH-UPDATE-TOC'.
+
+ -- Macro: .XN-INIT
+ -- Macro: .XH-UPDATE-TOC depth heading-text
+ The 'XN-INIT' hook macro does nothing by default. 'XH-UPDATE-TOC'
+ brackets HEADING-TEXT with 'XS' and 'XE' calls, indenting it by 2
+ ens per level of DEPTH beyond the first.
+
+ We could therefore produce a table of contents similar to that in the
+previous example with fewer macro calls. (The difference is that this
+input follows the "Approach" entries with leaders and page numbers.)
+
+ .NH 1
+ .XN Introduction
+ ...
+ .NH 2
+ .XN Methodology
+ .XH 3 "Fassbinder's Approach"
+ .XH 3 "Kahiu's Approach"
+ ...
+ .NH 1
+ .XN Findings
+ ...
+
+ To get the section number of the numbered headings into the table of
+contents entries, we might define 'XN-REPLACEMENT' as follows. (We
+obtain the heading depth from 'groff' 'ms''s internal register 'nh*hl'.)
+
+ .de XN-REPLACEMENT
+ .XN-INIT
+ .XH-UPDATE-TOC \\n[nh*hl] \\$@
+ \&\\*[SN] \\$*
+ ..
+
+ You can change the style of the leader that bridges each table of
+contents entry with its page number; define the 'TC-LEADER' special
+character by using the 'char' request. A typical leader combines the
+dot glyph '.' with a horizontal motion escape sequence to spread the
+dots. The width of the page number field is stored in the 'TC-MARGIN'
+register.
+
+
+File: groff.info, Node: Differences from AT&T ms, Next: ms Naming Conventions, Prev: ms Page Layout, Up: ms
+
+4.6.7 Differences from AT&T 'ms'
+--------------------------------
+
+The 'groff' 'ms' macros are an independent reimplementation, using no
+AT&T code. Since they take advantage of the extended features of
+'groff', they cannot be used with AT&T 'troff'. 'groff' 'ms' supports
+features described above as Berkeley and Tenth Edition Research Unix
+extensions, and adds several of its own.
+
+ * The internals of 'groff' 'ms' differ from the internals of AT&T
+ 'ms'. Documents that depend upon implementation details of AT&T
+ 'ms' may not format properly with 'groff' 'ms'. Such details
+ include macros whose function was not documented in the AT&T 'ms'
+ manual.(1) (*note Differences from AT&T ms-Footnote-1::)
+
+ * The error-handling policy of 'groff' 'ms' is to detect and report
+ errors, rather than to ignore them silently.
+
+ * Tenth Edition Research Unix supported 'P1'/'P2' macros to bracket
+ code examples; 'groff' 'ms' does not.
+
+ * 'groff' 'ms' does not work in GNU 'troff''s AT&T compatibility
+ mode. If loaded when that mode is enabled, it aborts processing
+ with a diagnostic message.
+
+ * Multiple line spacing is not supported. Use a larger vertical
+ spacing instead.
+
+ * 'groff' 'ms' uses the same header and footer defaults in both
+ 'nroff' and 'troff' modes as AT&T 'ms' does in 'troff' mode; AT&T's
+ default in 'nroff' mode is to put the date, in U.S. traditional
+ format (e.g., "January 1, 2021"), in the center footer (the 'CF'
+ string).
+
+ * Many 'groff' 'ms' macros, including those for paragraphs, headings,
+ and displays, cause a reset of paragraph rendering parameters, and
+ may change the indentation; they do so not by incrementing or
+ decrementing it, but by setting it absolutely. This can cause
+ problems for documents that define additional macros of their own
+ that try to manipulate indentation. Use the 'ms' 'RS' and 'RE'
+ macros instead of the 'in' request.
+
+ * AT&T 'ms' interpreted the values of the registers 'PS' and 'VS' in
+ points, and did not support the use of scaling units with them.
+ 'groff' 'ms' interprets values of the registers 'PS', 'VS', 'FPS',
+ and 'FVS' equal to or larger than 1,000 (one thousand) as decimal
+ fractions multiplied by 1,000.(2) (*note Differences from AT&T
+ ms-Footnote-2::) This threshold makes use of a scaling unit with
+ these parameters practical for high-resolution devices while
+ preserving backward compatibility. It also permits expression of
+ non-integral type sizes. For example, 'groff -rPS=10.5p' at the
+ shell prompt is equivalent to placing '.nr PS 10.5p' at the
+ beginning of the document.
+
+ * AT&T 'ms''s 'AU' macro supported arguments used with some document
+ types; 'groff' 'ms' does not.
+
+ * Right-aligned displays are available. The AT&T 'ms' manual
+ observes that "it is tempting to assume that '.DS R' will right
+ adjust lines, but it doesn't work". In 'groff' 'ms', it does.
+
+ * To make 'groff' 'ms' use the default page offset (which also
+ specifies the left margin), the 'PO' register must stay undefined
+ until the first 'ms' macro is called.
+
+ This implies that '\n[PO]' should not be used early in the
+ document, unless it is changed also: accessing an undefined
+ register automatically defines it.
+
+ * 'groff' 'ms' supports the 'PN' register, but it is not necessary;
+ you can access the page number via the usual '%' register and
+ invoke the 'af' request to assign a different format to it if
+ desired.(3) (*note Differences from AT&T ms-Footnote-3::)
+
+ * The AT&T 'ms' manual documents registers 'CW' and 'GW' as setting
+ the default column width and "intercolumn gap", respectively, and
+ which applied when 'MC' was called with fewer than two arguments.
+ 'groff' 'ms' instead treats 'MC' without arguments as synonymous
+ with '2C'; there is thus no occasion for a default column width
+ register. Further, the 'MINGW' register and the second argument to
+ 'MC' specify a _minimum_ space between columns, not the fixed
+ gutter width of AT&T 'ms'.
+
+ * The AT&T 'ms' manual did not document the 'QI' register; Berkeley
+ and 'groff' 'ms' do.
+
+ -- Register: \n[GS]
+ The register 'GS' is set to 1 by the 'groff' 'ms' macros, but is
+ not used by the AT&T 'ms' package. Documents that need to
+ determine whether they are being formatted with 'groff' 'ms' or
+ another implementation should test this register.
+
+* Menu:
+
+* Missing Unix Version 7 ms Macros::
+
+
+File: groff.info, Node: Differences from AT&T ms-Footnotes, Up: Differences from AT&T ms
+
+ (1) 'Typing Documents on the UNIX System: Using the -ms Macros with
+Troff and Nroff', M. E. Lesk, Bell Laboratories, 1978
+
+ (2) Register values are converted to and stored as basic units.
+*Note Measurements::.
+
+ (3) If you redefine the 'ms' 'PT' macro and desire special treatment
+of certain page numbers (like '1'), you may need to handle a non-Arabic
+page number format, as 'groff' 'ms''s 'PT' does; see the macro package
+source. 'groff' 'ms' aliases the 'PN' register to '%'.
+
+
+File: groff.info, Node: Missing Unix Version 7 ms Macros, Prev: Differences from AT&T ms, Up: Differences from AT&T ms
+
+4.6.7.1 Unix Version 7 'ms' macros not implemented by 'groff' 'ms'
+..................................................................
+
+Several macros described in the Unix Version 7 'ms' documentation are
+unimplemented by 'groff' 'ms' because they are specific to the
+requirements of documents produced internally by Bell Laboratories, some
+of which also require a glyph for the Bell System logo that 'groff' does
+not support. These macros implemented several document type formats
+('EG', 'IM', 'MF', 'MR', 'TM', 'TR'), were meaningful only in
+conjunction with the use of certain document types ('AT', 'CS', 'CT',
+'OK', 'SG'), stored the postal addresses of Bell Labs sites ('HO', 'IH',
+'MH', 'PY', 'WH'), or lacked a stable definition over time ('UX'). To
+compatibly render historical 'ms' documents using these macros, we
+advise your documents to invoke the 'rm' request to remove any such
+macros it uses and then define replacements with an authentically
+typeset original at hand.(1) (*note Missing Unix Version 7 ms
+Macros-Footnote-1::) For informal purposes, a simple definition of 'UX'
+should maintain the readability of the document's substance.
+
+ .rm UX
+ .ds UX Unix\"
+
+
+File: groff.info, Node: Missing Unix Version 7 ms Macros-Footnotes, Up: Missing Unix Version 7 ms Macros
+
+ (1) The removal beforehand is necessary because 'groff' 'ms' aliases
+these macros to a diagnostic macro, and you want to redefine the aliased
+name, not its target.
+
+
+File: groff.info, Node: ms Legacy Features, Next: ms Naming Conventions, Prev: Differences from AT&T ms, Up: ms
+
+4.6.8 Legacy Features
+---------------------
+
+'groff' 'ms' retains some legacy features solely to support formatting
+of historical documents; contemporary ones should not use them because
+they can render poorly. See the 'groff_char(7)' man page.
+
+AT&T accent mark strings
+........................
+
+AT&T 'ms' defined accent mark strings as follows.
+
+ -- String: \*[']
+ Apply acute accent to subsequent glyph.
+
+ -- String: \*[`]
+ Apply grave accent to subsequent glyph.
+
+ -- String: \*[:]
+ Apply dieresis (umlaut) to subsequent glyph.
+
+ -- String: \*[^]
+ Apply circumflex accent to subsequent glyph.
+
+ -- String: \*[~]
+ Apply tilde accent to subsequent glyph.
+
+ -- String: \*[C]
+ Apply caron to subsequent glyph.
+
+ -- String: \*[,]
+ Apply cedilla to subsequent glyph.
+
+Berkeley accent mark and glyph strings
+......................................
+
+Berkeley 'ms' offered an 'AM' macro; calling it redefined the AT&T
+accent mark strings (except for '\*C'), applied them to the _preceding_
+glyph, and defined additional strings, some for spacing glyphs.
+
+ -- Macro: .AM
+ Enable alternative accent mark and glyph-producing strings.
+
+ -- String: \*[']
+ Apply acute accent to preceding glyph.
+
+ -- String: \*[`]
+ Apply grave accent to preceding glyph.
+
+ -- String: \*[:]
+ Apply dieresis (umlaut) to preceding glyph.
+
+ -- String: \*[^]
+ Apply circumflex accent to preceding glyph.
+
+ -- String: \*[~]
+ Apply tilde accent to preceding glyph.
+
+ -- String: \*[,]
+ Apply cedilla to preceding glyph.
+
+ -- String: \*[/]
+ Apply stroke (slash) to preceding glyph.
+
+ -- String: \*[v]
+ Apply caron to preceding glyph.
+
+ -- String: \*[_]
+ Apply macron to preceding glyph.
+
+ -- String: \*[.]
+ Apply underdot to preceding glyph.
+
+ -- String: \*[o]
+ Apply ring accent to preceding glyph.
+
+ -- String: \*[?]
+ Interpolate inverted question mark.
+
+ -- String: \*[!]
+ Interpolate inverted exclamation mark.
+
+ -- String: \*[8]
+ Interpolate small letter sharp s.
+
+ -- String: \*[q]
+ Interpolate small letter o with hook accent (ogonek).
+
+ -- String: \*[3]
+ Interpolate small letter yogh.
+
+ -- String: \*[d-]
+ Interpolate small letter eth.
+
+ -- String: \*[D-]
+ Interpolate capital letter eth.
+
+ -- String: \*[th]
+ Interpolate small letter thorn.
+
+ -- String: \*[Th]
+ Interpolate capital letter thorn.
+
+ -- String: \*[ae]
+ Interpolate small æ ligature.
+
+ -- String: \*[Ae]
+ Interpolate capital Æ ligature.
+
+ -- String: \*[oe]
+ Interpolate small oe ligature.
+
+ -- String: \*[OE]
+ Interpolate capital OE ligature.
+
+
+File: groff.info, Node: ms Naming Conventions, Prev: ms Legacy Features, Up: ms
+
+4.6.9 Naming Conventions
+------------------------
+
+The following conventions are used for names of macros, strings, and
+registers. External names available to documents that use the 'groff'
+'ms' macros contain only uppercase letters and digits.
+
+ Internally, the macros are divided into modules. Conventions for
+identifier names are as follows.
+
+ * Names used only within one module are of the form MODULE'*'NAME.
+
+ * Names used outside the module in which they are defined are of the
+ form MODULE'@'NAME.
+
+ * Names associated with a particular environment are of the form
+ ENVIRONMENT':'NAME; these are used only within the 'par' module.
+
+ * NAME does not have a module prefix.
+
+ * Constructed names used to implement arrays are of the form
+ ARRAY'!'INDEX.
+
+ Thus the 'groff' 'ms' macros reserve the following names.
+
+ * Names containing the characters '*', '@', and ':'.
+
+ * Names containing only uppercase letters and digits.
+
+
+File: groff.info, Node: GNU troff Reference, Next: File Formats, Prev: Major Macro Packages, Up: Top
+
+5 GNU 'troff' Reference
+***********************
+
+This chapter covers _all_ of the facilities of the GNU 'troff'
+formatting engine. Users of macro packages may skip it if not
+interested in details.
+
+* Menu:
+
+* Text::
+* Page Geometry::
+* Measurements::
+* Numeric Expressions::
+* Identifiers::
+* Formatter Instructions::
+* Comments::
+* Registers::
+* Manipulating Filling and Adjustment::
+* Manipulating Hyphenation::
+* Manipulating Spacing::
+* Tabs and Fields::
+* Character Translations::
+* troff and nroff Modes::
+* Line Layout::
+* Line Continuation::
+* Page Layout::
+* Page Control::
+* Using Fonts::
+* Manipulating Type Size and Vertical Spacing::
+* Colors::
+* Strings::
+* Conditionals and Loops::
+* Writing Macros::
+* Page Motions::
+* Drawing Geometric Objects::
+* Deferring Output::
+* Traps::
+* Diversions::
+* Punning Names::
+* Environments::
+* Suppressing Output::
+* I/O::
+* Postprocessor Access::
+* Miscellaneous::
+* Gtroff Internals::
+* Debugging::
+* Implementation Differences::
+
+
+File: groff.info, Node: Text, Next: Measurements, Prev: GNU troff Reference, Up: GNU troff Reference
+
+5.1 Text
+========
+
+AT&T 'troff' was designed to take input as it would be composed on a
+typewriter, including the teletypewriters used as early computer
+terminals, and relieve the user drafting a document of concern with
+details like line length, hyphenation breaking, and the achievement of
+straight margins. Early in its development, the program gained the
+ability to prepare output for a phototypesetter; a document could then
+be prepared for output to either a teletypewriter, a phototypesetter, or
+both. GNU 'troff' continues this tradition of permitting an author to
+compose a single master version of a document which can then be rendered
+for a variety of output formats or devices.
+
+ 'roff' input files contain text interspersed with instructions to
+control the formatter. Even in the absence of such instructions, GNU
+'troff' still processes its input in several ways, by filling,
+hyphenating, breaking, and adjusting it, and supplementing it with
+inter-sentence space.
+
+* Menu:
+
+* Filling::
+* Hyphenation::
+* Sentences::
+* Breaking::
+* Adjustment::
+* Tabs and Leaders::
+* Requests and Macros::
+* Macro Packages::
+* Input Encodings::
+* Input Conventions::
+
+
+File: groff.info, Node: Filling, Next: Sentences, Prev: Text, Up: Text
+
+5.1.1 Filling
+-------------
+
+When GNU 'troff' starts up, it obtains information about the device for
+which it is preparing output.(1) (*note Filling-Footnote-1::) An
+essential property is the length of the output line, such as "6.5
+inches".
+
+ GNU 'troff' interprets plain text files employing the Unix
+line-ending convention. It reads input a character at a time,
+collecting words as it goes, and fits as many words together on an
+output line as it can--this is known as "filling". To GNU 'troff', a
+"word" is any sequence of one or more characters that aren't spaces or
+newlines. The exceptions separate words.(2) (*note
+Filling-Footnote-2::) To disable filling, see *note Manipulating Filling
+and Adjustment::.
+
+ It is a truth universally acknowledged
+ that a single man in possession of a
+ good fortune must be in want of a wife.
+ => It is a truth universally acknowledged that a
+ => single man in possession of a good fortune must
+ => be in want of a wife.
+
+
+File: groff.info, Node: Filling-Footnotes, Up: Filling
+
+ (1) *Note Device and Font Description Files::.
+
+ (2) Tabs and leaders also separate words. Escape sequences can
+function as word characters, word separators, or neither--the last
+simply have no effect on GNU 'troff''s idea of whether an input
+character is within a word. We'll discuss all of these in due course.
+
+
+File: groff.info, Node: Sentences, Next: Hyphenation, Prev: Filling, Up: Text
+
+5.1.2 Sentences
+---------------
+
+A passionate debate has raged for decades among writers of the English
+language over whether more space should appear between adjacent
+sentences than between words within a sentence, and if so, how much, and
+what other circumstances should influence this spacing.(1) (*note
+Sentences-Footnote-1::) GNU 'troff' follows the example of AT&T 'troff';
+it attempts to detect the boundaries between sentences, and supplies
+additional inter-sentence space between them.
+
+ Hello, world!
+ Welcome to groff.
+ => Hello, world! Welcome to groff.
+
+ GNU 'troff' flags certain characters (normally '!', '?', and '.') as
+potentially ending a sentence. When GNU 'troff' encounters one of these
+"end-of-sentence characters" at the end of an input line, or one of them
+is followed by two (unescaped) spaces on the same input line, it appends
+an inter-word space followed by an inter-sentence space in the output.
+
+ R. Harper subscribes to a maxim of P. T. Barnum.
+ => R. Harper subscribes to a maxim of P. T. Barnum.
+
+ In the above example, inter-sentence space is not added after 'P.' or
+'T.' because the periods do not occur at the end of an input line, nor
+are they followed by two or more spaces. Let's imagine that we've heard
+something about defamation from Mr. Harper's attorney, recast the
+sentence, and reflowed it in our text editor.
+
+ I submit that R. Harper subscribes to a maxim of P. T.
+ Barnum.
+ => I submit that R. Harper subscribes to a maxim of
+ => P. T. Barnum.
+
+ "Barnum" doesn't begin a sentence! What to do? Let us meet our
+first "escape sequence", a series of input characters that give
+instructions to GNU 'troff' instead of being used to construct output
+device glyphs.(2) (*note Sentences-Footnote-2::) An escape sequence
+begins with the backslash character '\' by default, an uncommon
+character in natural language text, and is _always_ followed by at least
+one other character, hence the term "sequence".
+
+ The dummy character escape sequence '\&' can be used after an
+end-of-sentence character to defeat end-of-sentence detection on a
+per-instance basis. We can therefore rewrite our input more
+defensively.
+
+ I submit that R.\& Harper subscribes to a maxim of P.\&
+ T.\& Barnum.
+ => I submit that R. Harper subscribes to a maxim of
+ => P. T. Barnum.
+
+ Adding text caused our input to wrap; now, we don't need '\&' after
+'T.' but we do after 'P.'. Consistent use of the escape sequence
+ensures that potential sentence boundaries are robust to editing
+activities. Further advice along these lines will follow in *note Input
+Conventions::.
+
+ Normally, the occurrence of a visible non-end-of-sentence character
+(as opposed to a space or tab) immediately after an end-of-sentence
+character cancels detection of the end of a sentence. For example, it
+would be incorrect for GNU 'troff' to infer the end of a sentence after
+the dot in '3.14159'. However, several characters are treated
+_transparently_ after the occurrence of an end-of-sentence character.
+That is, GNU 'troff' does not cancel end-of-sentence detection when it
+processes them. This is because such characters are often used as
+footnote markers or to close quotations and parentheticals. The default
+set is '"', ''', ')', ']', '*', '\[dg]', '\[dd]', '\[rq]', and '\[cq]'.
+The last four are examples of "special characters", escape sequences
+whose purpose is to obtain glyphs that are not easily typed at the
+keyboard, or which have special meaning to GNU 'troff' (like '\'
+itself).(3) (*note Sentences-Footnote-3::)
+
+ \[lq]The idea that the poor should have leisure has always
+ been shocking to the rich.\[rq]
+ (Bertrand Russell, 1935)
+ => "The idea that the poor should have
+ => leisure has always been shocking to
+ => the rich." (Bertrand Russell, 1935)
+
+ The sets of characters that potentially end sentences or are
+transparent to sentence endings are configurable. See the 'cflags'
+request in *note Using Symbols::. To change the additional
+inter-sentence space amount--even to remove it entirely--see *note
+Manipulating Filling and Adjustment::.
+
+
+File: groff.info, Node: Sentences-Footnotes, Up: Sentences
+
+ (1) A well-researched jeremiad appreciated by 'groff' contributors on
+both sides of the sentence-spacing debate can be found at
+<https://web.archive.org/web/20171217060354/http://www.heracliteanriver.com/?p=324>.
+
+ (2) This statement oversimplifies; there are escape sequences whose
+purpose is precisely to produce glyphs on the output device, and input
+characters that _aren't_ part of escape sequences can undergo a great
+deal of processing before getting to the output.
+
+ (3) The mnemonics for the special characters shown here are "dagger",
+"double dagger", "right (double) quote", and "closing (single) quote".
+See the 'groff_char(7)' man page.
+
+
+File: groff.info, Node: Hyphenation, Next: Breaking, Prev: Sentences, Up: Text
+
+5.1.3 Hyphenation
+-----------------
+
+When an output line is nearly full, it is uncommon for the next word
+collected from the input to exactly fill it--typically, there is room
+left over only for part of the next word. The process of splitting a
+word so that it appears partially on one line (with a hyphen to indicate
+to the reader that the word has been broken) with its remainder on the
+next is "hyphenation". Hyphenation points can be manually specified;
+GNU 'troff' also uses a hyphenation algorithm and language-specific
+pattern files (based on those used in TeX) to decide which words can be
+hyphenated and where.
+
+ Hyphenation does not always occur even when the hyphenation rules for
+a word allow it; it can be disabled, and when not disabled there are
+several parameters that can prevent it in certain circumstances. *Note
+Manipulating Hyphenation::.
+
+
+File: groff.info, Node: Breaking, Next: Adjustment, Prev: Hyphenation, Up: Text
+
+5.1.4 Breaking
+--------------
+
+Once an output line is full, the next word (or remainder of a hyphenated
+one) is placed on a different output line; this is called a "break". In
+this manual and in 'roff' discussions generally, a "break" if not
+further qualified always refers to the termination of an output line.
+When the formatter is filling text, it introduces breaks automatically
+to keep output lines from exceeding the configured line length. After
+an automatic break, GNU 'troff' adjusts the line if applicable (see
+below), and then resumes collecting and filling text on the next output
+line.
+
+ Sometimes, a line cannot be broken automatically. This usually does
+not happen with natural language text unless the output line length has
+been manipulated to be extremely short, but it can with specialized text
+like program source code. We can use 'perl' at the shell prompt to
+contrive an example of failure to break the line. We also employ the
+'-z' option to suppress normal output.
+
+ $ perl -e 'print "#" x 80, "\n";' | nroff -z
+ error-> warning: cannot break line
+
+ The remedy for these cases is to tell GNU 'troff' where the line may
+be broken without hyphens. This is done with the non-printing break
+point escape sequence '\:'; see *note Manipulating Hyphenation::.
+
+ What if the document author wants to stop filling lines temporarily,
+for instance to start a new paragraph? There are several solutions. A
+blank input line not only causes a break, but by default it also outputs
+a one-line vertical space (effectively a blank output line). This
+behavior can be modified; see *note Blank Line Traps::. Macro packages
+may discourage or disable the blank line method of paragraphing in favor
+of their own macros.
+
+ A line that begins with one or more spaces causes a break. The
+spaces are output at the beginning of the next line without being
+_adjusted_ (see below); however, this behavior can be modified (*note
+Leading Space Traps::). Again, macro packages may provide other methods
+of producing indented paragraphs. Trailing spaces on text lines are
+discarded.(1) (*note Breaking-Footnote-1::)
+
+ What if the file ends before enough words have been collected to fill
+an output line? Or the output line is exactly full but not yet broken,
+and there is no more input? GNU 'troff' interprets the end of input as
+a break. Certain requests also cause breaks, implicitly or explicitly.
+This is discussed in *note Manipulating Filling and Adjustment::.
+
+
+File: groff.info, Node: Breaking-Footnotes, Up: Breaking
+
+ (1) "Text lines" are defined in *note Requests and Macros::.
+
+
+File: groff.info, Node: Adjustment, Next: Tabs and Leaders, Prev: Breaking, Up: Text
+
+5.1.5 Adjustment
+----------------
+
+After GNU 'troff' performs an automatic break, it may then "adjust" the
+line, widening inter-word spaces until the text reaches the right
+margin. Extra spaces between words are preserved. Leading and trailing
+spaces are handled as noted above. Text can be aligned to the left or
+right margin only, or centered; see *note Manipulating Filling and
+Adjustment::.
+
+
+File: groff.info, Node: Tabs and Leaders, Next: Input Conventions, Prev: Adjustment, Up: Text
+
+5.1.6 Tabs and Leaders
+----------------------
+
+GNU 'troff' translates input horizontal tab characters ("tabs") and
+<Control+A> characters ("leaders") into movements to the next tab stop.
+Tabs simply move to the next tab stop; leaders place enough periods to
+fill the space. Tab stops are by default located every half inch
+measured from the drawing position corresponding to the beginning of the
+input line; see *note Page Geometry::. Tabs and leaders do not cause
+breaks and therefore do not interrupt filling. Below, we use arrows ->
+and bullets * to indicate input tabs and leaders, respectively.
+
+ 1
+ -> 2 -> 3 * 4
+ -> * 5
+ => 1 2 3.......4 ........5
+
+ Tabs and leaders lend themselves to table construction.(1) (*note
+Tabs and Leaders-Footnote-1::) The tab and leader glyphs can be
+configured, and further facilities for sophisticated table composition
+are available; see *note Tabs and Fields::. There are many details to
+track when using such low-level features, so most users turn to the
+'tbl(1)' preprocessor to lay out tables.
+
+
+File: groff.info, Node: Tabs and Leaders-Footnotes, Up: Tabs and Leaders
+
+ (1) "Tab" is short for "tabulation", revealing the term's origin as a
+spacing mechanism for table arrangement.
+
+
+File: groff.info, Node: Requests and Macros, Next: Macro Packages, Prev: Tabs and Leaders, Up: Text
+
+5.1.7 Requests and Macros
+-------------------------
+
+We have now encountered almost all of the syntax there is in the 'roff'
+language, with an exception already noted in passing. A "request" is an
+instruction to the formatter that occurs after a "control character",
+which is recognized at the beginning of an input line. The regular
+control character is a dot ('.'). Its counterpart, the "no-break
+control character", a neutral apostrophe ('''), suppresses the break
+that is implied by some requests. These characters were chosen because
+it is uncommon for lines of text in natural languages to begin with
+them. If you require a formatted period or apostrophe (closing single
+quotation mark) where GNU 'troff' is expecting a control character,
+prefix the dot or neutral apostrophe with the dummy character escape
+sequence, '\&'.
+
+ An input line beginning with a control character is called a "control
+line". Every line of input that is not a control line is a "text
+line".(1) (*note Requests and Macros-Footnote-1::)
+
+ Requests often take "arguments", words (separated from the request
+name and each other by spaces) that specify details of the action GNU
+'troff' is expected to perform. If a request is meaningless without
+arguments, it is typically ignored.
+
+ GNU 'troff''s requests and escape sequences comprise the control
+language of the formatter. Of key importance are the requests that
+define macros. Macros are invoked like requests, enabling the request
+repertoire to be extended or overridden.(2) (*note Requests and
+Macros-Footnote-2::)
+
+ A "macro" can be thought of as an abbreviation you can define for a
+collection of control and text lines. When the macro is "called" by
+giving its name after a control character, it is replaced with what it
+stands for. The process of textual replacement is known as
+"interpolation".(3) (*note Requests and Macros-Footnote-3::)
+Interpolations are handled as soon as they are recognized, and once
+performed, a 'roff' formatter scans the replacement for further
+requests, macro calls, and escape sequences.
+
+ In 'roff' systems, the 'de' request defines a macro.(4) (*note
+Requests and Macros-Footnote-4::)
+
+ .de DATE
+ 2020-11-14
+ ..
+
+The foregoing input produces no output by itself; all we have done is
+store some information. Observe the pair of dots that ends the macro
+definition. This is a default; you can specify your own terminator for
+the macro definition as the second argument to the 'de' request.
+
+ .de NAME ENDNAME
+ Heywood Jabuzzoff
+ .ENDNAME
+
+ In fact, the ending marker is itself the name of a macro to be
+called, or a request to be invoked, if it is defined at the time its
+control line is read.
+
+ .de END
+ Big Rip
+ ..
+ .de START END
+ Big Bang
+ .END
+ .START
+ => Big Rip Big Bang
+
+In the foregoing example, "Big Rip" printed before "Big Bang" because
+its macro was _called_ first. Consider what would happen if we dropped
+'END' from the '.de START' line and added '..' after '.END'. Would the
+order change?
+
+ Let us consider a more elaborate example.
+
+ .de DATE
+ 2020-10-05
+ ..
+ .
+ .de BOSS
+ D.\& Kruger,
+ J.\& Peterman
+ ..
+ .
+ .de NOTICE
+ Approved:
+ .DATE
+ by
+ .BOSS
+ ..
+ .
+ Insert tedious regulatory compliance paragraph here.
+
+ .NOTICE
+
+ Insert tedious liability disclaimer paragraph here.
+
+ .NOTICE
+ => Insert tedious regulatory compliance paragraph here.
+ =>
+ => Approved: 2020-10-05 by D. Kruger, J. Peterman
+ =>
+ => Insert tedious liability disclaimer paragraph here.
+ =>
+ => Approved: 2020-10-05 by D. Kruger, J. Peterman
+
+The above document started with a series of control lines. Three macros
+were defined, with a 'de' request declaring each macro's name, and the
+"body" of the macro starting on the next line and continuing until a
+line with two dots ''..'' marked its end. The text proper began only
+after the macros were defined; this is a common pattern. Only the
+'NOTICE' macro was called "directly" by the document; 'DATE' and 'BOSS'
+were called only by 'NOTICE' itself. Escape sequences were used in
+'BOSS', two levels of macro interpolation deep.
+
+ The advantage in typing and maintenance economy may not be obvious
+from such a short example, but imagine a much longer document with
+dozens of such paragraphs, each requiring a notice of managerial
+approval. Consider what must happen if you are in charge of generating
+a new version of such a document with a different date, for a different
+boss. With well-chosen macros, you only have to change each datum in
+one place.
+
+ In practice, we would probably use strings (*note Strings::) instead
+of macros for such simple interpolations; what is important here is to
+glimpse the potential of macros and the power of recursive
+interpolation.
+
+ We could have defined 'DATE' and 'BOSS' in the opposite order;
+perhaps less obviously, we could also have defined them _after_
+'NOTICE'. "Forward references" like this are acceptable because the
+body of a macro definition is not (completely) interpreted, but stored
+instead (*note Copy Mode::). While a macro is being defined (or
+appended to), requests are not interpreted and macros not interpolated,
+whereas some commonly used escape sequences _are_ interpreted. 'roff'
+systems also support recursive macro calls, as long as you have a way to
+break the recursion (*note Conditionals and Loops::). Maintainable
+'roff' documents tend to arrange macro definitions to minimize forward
+references.
+
+
+File: groff.info, Node: Requests and Macros-Footnotes, Up: Requests and Macros
+
+ (1) The '\<RET>' escape sequence can alter how an input line is
+classified; see *note Line Continuation::.
+
+ (2) Argument handling in macros is more flexible but also more
+complex. *Note Calling Macros::.
+
+ (3) Some escape sequences undergo interpolation as well.
+
+ (4) GNU 'troff' offers additional ones. *Note Writing Macros::.
+
+
+File: groff.info, Node: Macro Packages, Next: Input Encodings, Prev: Requests and Macros, Up: Text
+
+5.1.8 Macro Packages
+--------------------
+
+Macro definitions can be collected into "macro files", 'roff' input
+files designed to produce no output themselves but instead ease the
+preparation of other 'roff' documents. There is no syntactical
+difference between a macro file and any other 'roff' document; only its
+purpose distinguishes it. When a macro file is installed at a standard
+location and suitable for use by a general audience, it is often termed
+a "macro package".(1) (*note Macro Packages-Footnote-1::) Macro
+packages can be loaded by supplying the '-m' option to GNU 'troff' or a
+'groff' front end. Alternatively, a document requiring a macro package
+can load it with the 'mso' ("macro source") request.
+
+
+File: groff.info, Node: Macro Packages-Footnotes, Up: Macro Packages
+
+ (1) Macro files and packages frequently define registers and strings
+as well.
+
+
+File: groff.info, Node: Input Encodings, Next: Input Conventions, Prev: Macro Packages, Up: Text
+
+5.1.9 Input Encodings
+---------------------
+
+The 'groff' command's '-k' option calls the 'preconv' preprocessor to
+perform input character encoding conversions. Input to the GNU 'troff'
+formatter itself, on the other hand, must be in one of two encodings it
+can recognize.
+
+'cp1047'
+ The code page 1047 input encoding works only on EBCDIC platforms
+ (and conversely, the other input encodings don't work with EBCDIC);
+ the file 'cp1047.tmac' is loaded at startup.
+
+'latin1'
+ ISO Latin-1, an encoding for Western European languages, is the
+ default input encoding on non-EBCDIC platforms; the file
+ 'latin1.tmac' is loaded at startup.
+
+Any document that is encoded in ISO 646:1991 (a descendant of USAS
+X3.4-1968 or "US-ASCII"), or, equivalently, uses only code points from
+the "C0 Controls" and "Basic Latin" parts of the Unicode character set
+is also a valid ISO Latin-1 document; the standards are interchangeable
+in their first 128 code points.(1) (*note Input Encodings-Footnote-1::)
+
+ Other encodings are supported by means of macro packages.
+
+'latin2'
+ To use ISO Latin-2, an encoding for Central and Eastern European
+ languages, invoke '.mso latin2.tmac' at the beginning of your
+ document or supply '-mlatin2' as a command-line argument to
+ 'groff'.
+
+'latin5'
+ To use ISO Latin-5, an encoding for the Turkish language, invoke
+ '.mso latin5.tmac' at the beginning of your document or supply
+ '-mlatin5' as a command-line argument to 'groff'.
+
+'latin9'
+ ISO Latin-9 succeeds Latin-1; it includes a Euro sign and better
+ glyph coverage for French. To use this encoding, invoke
+ '.mso latin9.tmac' at the beginning of your document or supply
+ '-mlatin9' as a command-line argument to 'groff'.
+
+ Some characters from an input encoding may not be available with a
+particular output driver, or their glyphs may not have representation in
+the font used. For terminal devices, fallbacks are defined, like 'EUR'
+for the Euro sign and '(C)' for the copyright sign. For typesetter
+devices, you may need to "mount" fonts that support glyphs required by
+the document. *Note Font Positions::.
+
+ Because a Euro glyph was not historically defined in PostScript
+fonts, 'groff' comes with a font called 'freeeuro.pfa' that provides the
+Euro in several styles. Standard PostScript fonts contain the glyphs
+from Latin-5 and Latin-9 that Latin-1 lacks, so these encodings are
+supported for the 'ps' and 'pdf' output devices as 'groff' ships, while
+Latin-2 is not.
+
+ Unicode supports characters from all other input encodings; the
+'utf8' output driver for terminals therefore does as well. The DVI
+output driver supports the Latin-2 and Latin-9 encodings if the
+command-line option '-mec' is used as well. (2) (*note Input
+Encodings-Footnote-2::)
+
+
+File: groff.info, Node: Input Encodings-Footnotes, Up: Input Encodings
+
+ (1) The _semantics_ of certain punctuation code points have gotten
+stricter with the successive standards, a cause of some frustration
+among man page writers; see the 'groff_char(7)' man page.
+
+ (2) The DVI output device defaults to using the Computer Modern (CM)
+fonts; 'ec.tmac' loads the EC fonts instead, which provide Euro '\[Eu]'
+and per mille '\[%0]' glyphs.
+
+
+File: groff.info, Node: Input Conventions, Prev: Input Encodings, Up: Text
+
+5.1.10 Input Conventions
+------------------------
+
+Since GNU 'troff' fills text automatically, it is common practice in the
+'roff' language to avoid visual composition of text in input files: the
+esthetic appeal of the formatted output is what matters. Therefore,
+'roff' input should be arranged such that it is easy for authors and
+maintainers to compose and develop the document, understand the syntax
+of 'roff' requests, macro calls, and preprocessor languages used, and
+predict the behavior of the formatter. Several traditions have accrued
+in service of these goals.
+
+ * Follow sentence endings in the input with newlines to ease their
+ recognition (*note Sentences::). It is frequently convenient to
+ end text lines after colons and semicolons as well, as these
+ typically precede independent clauses. Consider doing so after
+ commas; they often occur in lists that become easy to scan when
+ itemized by line, or constitute supplements to the sentence that
+ are added, deleted, or updated to clarify it. Parenthetical and
+ quoted phrases are also good candidates for placement on text lines
+ by themselves.
+
+ * Set your text editor's line length to 72 characters or fewer.(1)
+ (*note Input Conventions-Footnote-1::) This limit, combined with
+ the previous item of advice, makes it less common that an input
+ line will wrap in your text editor, and thus will help you perceive
+ excessively long constructions in your text. Recall that natural
+ languages originate in speech, not writing, and that punctuation is
+ correlated with pauses for breathing and changes in prosody.
+
+ * Use '\&' after '!', '?', and '.' if they are followed by space,
+ tab, or newline characters and don't end a sentence.
+
+ * In filled text lines, use '\&' before '.' and ''' if they are
+ preceded by space, so that reflowing the input doesn't turn them
+ into control lines.
+
+ * Do not use spaces to perform indentation or align columns of a
+ table. Leading spaces are reliable when text is not being filled.
+
+ * Comment your document. It is never too soon to apply comments to
+ record information of use to future document maintainers (including
+ your future self). We thus introduce another escape sequence,
+ '\"', which causes GNU 'troff' to ignore the remainder of the input
+ line.
+
+ * Use the empty request--a control character followed immediately by
+ a newline--to visually manage separation of material in input
+ files. Many of the 'groff' project's own documents use an empty
+ request between sentences, after macro definitions, and where a
+ break is expected, and two empty requests between paragraphs or
+ other requests or macro calls that will introduce vertical space
+ into the document.
+
+ You can combine the empty request with the comment escape sequence
+ to include whole-line comments in your document, and even "comment
+ out" sections of it.
+
+ We conclude this section with an example sufficiently long to
+illustrate most of the above suggestions in practice. For the purpose
+of fitting the example between the margins of this manual with the font
+used for its typeset version, we have shortened the input line length to
+56 columns. As before, an arrow -> indicates a tab character.
+
+ .\" nroff this_file.roff | less
+ .\" groff -T ps this_file.roff > this_file.ps
+ ->The theory of relativity is intimately connected with
+ the theory of space and time.
+ .
+ I shall therefore begin with a brief investigation of
+ the origin of our ideas of space and time,
+ although in doing so I know that I introduce a
+ controversial subject. \" remainder of paragraph elided
+ .
+ .
+
+ ->The experiences of an individual appear to us arranged
+ in a series of events;
+ in this series the single events which we remember
+ appear to be ordered according to the criterion of
+ \[lq]earlier\[rq] and \[lq]later\[rq], \" punct swapped
+ which cannot be analysed further.
+ .
+ There exists,
+ therefore,
+ for the individual,
+ an I-time,
+ or subjective time.
+ .
+ This itself is not measurable.
+ .
+ I can,
+ indeed,
+ associate numbers with the events,
+ in such a way that the greater number is associated with
+ the later event than with an earlier one;
+ but the nature of this association may be quite
+ arbitrary.
+ .
+ This association I can define by means of a clock by
+ comparing the order of events furnished by the clock
+ with the order of a given series of events.
+ .
+ We understand by a clock something which provides a
+ series of events which can be counted,
+ and which has other properties of which we shall speak
+ later.
+ .\" Albert Einstein, _The Meaning of Relativity_, 1922
+
+
+File: groff.info, Node: Input Conventions-Footnotes, Up: Input Conventions
+
+ (1) Emacs: 'fill-column: 72'; Vim: 'textwidth=72'
+
+
+File: groff.info, Node: Page Geometry, Next: Measurements, Prev: Text, Up: GNU troff Reference
+
+5.2 Page Geometry
+=================
+
+'roff' systems format text under certain assumptions about the size of
+the output medium, or page. For the formatter to correctly break a line
+it is filling, it must know the line length, which it derives from the
+page width (*note Line Layout::). For it to decide whether to write an
+output line to the current page or wait until the next one, it must know
+the page length (*note Page Layout::).
+
+ A device's "resolution" converts practical units like inches or
+centimeters to "basic units", a convenient length measure for the output
+device or file format. The formatter and output driver use basic units
+to reckon page measurements. The device description file defines its
+resolution and page dimensions (*note DESC File Format::).
+
+ A "page" is a two-dimensional structure upon which a 'roff' system
+imposes a rectangular coordinate system with its upper left corner as
+the origin. Coordinate values are in basic units and increase down and
+to the right. Useful ones are therefore always positive and within
+numeric ranges corresponding to the page boundaries.
+
+ While the formatter (and, later, output driver) is processing a page,
+it keeps track of its "drawing position", which is the location at which
+the next glyph will be written, from which the next motion will be
+measured, or where a geometric object will commence rendering.
+Notionally, glyphs are drawn from the text baseline upward and to the
+right.(1) (*note Page Geometry-Footnote-1::) The "text baseline" is a
+(usually invisible) line upon which the glyphs of a typeface are
+aligned. A glyph therefore "starts" at its bottom-left corner. If
+drawn at the origin, a typical letter glyph would lie partially or
+wholly off the page, depending on whether, like "g", it features a
+descender below the baseline.
+
+ Such a situation is nearly always undesirable. It is furthermore
+conventional not to write or draw at the extreme edges of the page.
+Therefore the initial drawing position of a 'roff' formatter is not at
+the origin, but below and to the right of it. This rightward shift from
+the left edge is known as the "page offset".(2) (*note Page
+Geometry-Footnote-2::) The downward shift leaves room for a text output
+line.
+
+ Text is arranged on a one-dimensional lattice of text baselines from
+the top to the bottom of the page. "Vertical spacing" is the distance
+between adjacent text baselines. Typographic tradition sets this
+quantity to 120% of the type size. The initial drawing position is one
+unit of vertical spacing below the page top. Typographers term this
+unit a vee.
+
+ Vertical spacing has an impact on page-breaking decisions.
+Generally, when a break occurs, the formatter moves the drawing position
+to the next text baseline automatically. If the formatter were already
+writing to the last line that would fit on the page, advancing by one
+vee would place the next text baseline off the page. Rather than let
+that happen, 'roff' formatters instruct the output driver to eject the
+page, start a new one, and again set the drawing position to one vee
+below the page top; this is a "page break".
+
+ When the last line of input text corresponds to the last output line
+that fits on the page, the break caused by the end of input will also
+break the page, producing a useless blank one. Macro packages keep
+users from having to confront this difficulty by setting "traps" (*note
+Traps::); moreover, all but the simplest page layouts tend to have
+headers and footers, or at least bear vertical margins larger than one
+vee.
+
+
+File: groff.info, Node: Page Geometry-Footnotes, Up: Page Geometry
+
+ (1) 'groff' does not yet support right-to-left scripts.
+
+ (2) 'groff''s terminal output devices have page offsets of zero.
+
+
+File: groff.info, Node: Measurements, Next: Numeric Expressions, Prev: Text, Up: GNU troff Reference
+
+5.3 Measurements
+================
+
+The formatter sometimes requires the input of numeric parameters to
+specify measurements. These are specified as integers or decimal
+fractions with an optional "scaling unit" suffixed. A scaling unit is a
+letter that immediately follows the last digit of a number. Digits
+after the decimal point are optional. Measurement expressions include
+'10.5p', '11i', and '3.c'.
+
+ Measurements are scaled by the scaling unit and stored internally
+(with any fractional part discarded) in basic units. The device
+resolution can therefore be obtained by storing a value of '1i' to a
+register. The only constraint on the basic unit is that it is at least
+as small as any other unit.
+
+'u'
+ Basic unit.
+
+'i'
+ Inch; defined as 2.54 centimeters.
+
+'c'
+ Centimeter; a centimeter is about 0.3937 inches.
+
+'p'
+ Point; a typesetter's unit used for measuring type size. There are
+ 72 points to an inch.
+
+'P'
+ Pica; another typesetter's unit. There are 6 picas to an inch and
+ 12 points to a pica.
+
+'s'
+'z'
+ *Note Using Fractional Type Sizes::, for a discussion of these
+ units.
+
+'f'
+ GNU 'troff' defines this unit to scale decimal fractions in the
+ interval [0, 1] to 16-bit unsigned integers. It multiplies a
+ quantity by 65,536. *Note Colors::, for usage.
+
+ The magnitudes of other scaling units depend on the text formatting
+parameters in effect. These are useful when specifying measurements
+that need to scale with the typeface or vertical spacing.
+
+'m'
+ Em; an em is equal to the current type size in points. It is named
+ thus because it is approximately the width of the letter 'M'.
+
+'n'
+ En; an en is one-half em.
+
+'v'
+ Vee; recall *note Page Geometry::.
+
+'M'
+ Hundredth of an em.
+
+* Menu:
+
+* Motion Quanta::
+* Default Units::
+
+
+File: groff.info, Node: Motion Quanta, Next: Default Units, Prev: Measurements, Up: Measurements
+
+5.3.1 Motion Quanta
+-------------------
+
+An output device's basic unit 'u' is not necessarily its smallest
+addressable length; 'u' can be smaller to avoid problems with integer
+roundoff. The minimum distances that a device can work with in the
+horizontal and vertical directions are termed its "motion quanta".
+Measurements are rounded to applicable motion quanta. Half-quantum
+fractions round toward zero.
+
+ -- Register: \n[.H]
+ -- Register: \n[.V]
+ These read-only registers interpolate the horizontal and vertical
+ motion quanta, respectively, of the output device in basic units.
+
+ For example, we might draw short baseline rules on a terminal device
+as follows. *Note Drawing Geometric Objects::.
+
+ .tm \n[.H]
+ error-> 24
+ .nf
+ \l'36u' 36u
+ \l'37u' 37u
+ => _ 36u
+ => __ 37u
+
+
+File: groff.info, Node: Default Units, Prev: Motion Quanta, Up: Measurements
+
+5.3.2 Default Units
+-------------------
+
+A general-purpose register (one created or updated with the 'nr'
+request; see *note Registers::) is implicitly dimensionless, or reckoned
+in basic units if interpreted in a measurement context. But it is
+convenient for many requests and escape sequences to infer a scaling
+unit for an argument if none is specified. An explicit scaling unit
+(not after a closing parenthesis) can override an undesirable default.
+Effectively, the default unit is suffixed to the expression if a scaling
+unit is not already present. GNU 'troff''s use of integer arithmetic
+should also be kept in mind (*note Numeric Expressions::).
+
+ The 'll' request interprets its argument in ems by default. Consider
+several attempts to set a line length of 3.5 inches when the type size
+is 10 points on a terminal device with a resolution of 240 basic units
+and horizontal motion quantum of 24. Some expressions become zero; the
+request clamps them to that quantum.
+
+ .ll 3.5i \" 3.5i (= 840u)
+ .ll 7/2 \" 7u/2u -> 3u -> 3m -> 0, clamped to 24u
+ .ll (7 / 2)u \" 7u/2u -> as above
+ .ll 7/2i \" 7u/2i -> 7u/480u -> 0 -> as above
+ .ll 7i/2 \" 7i/2u -> 1680u/2m -> 1680u/24u -> 35u
+ .ll 7i/2u \" 3.5i (= 840u)
+
+The safest way to specify measurements is to attach a scaling unit. To
+multiply or divide by a dimensionless quantity, use 'u' as its scaling
+unit.
+
+
+File: groff.info, Node: Numeric Expressions, Next: Identifiers, Prev: Measurements, Up: GNU troff Reference
+
+5.4 Numeric Expressions
+=======================
+
+A "numeric expression" evaluates to an integer: it can be as simple as a
+literal '0' or it can be a complex sequence of register and string
+interpolations interleaved with measurements and operators.
+
+ GNU 'troff' provides a set of mathematical and logical operators
+familiar to programmers--as well as some unusual ones--but supports only
+integer arithmetic.(1) (*note Numeric Expressions-Footnote-1::) The
+internal data type used for computing results is usually a 32-bit signed
+integer, which suffices to represent magnitudes within a range of ±2
+billion.(2) (*note Numeric Expressions-Footnote-2::)
+
+ Arithmetic infix operators perform a function on the numeric
+expressions to their left and right; they are '+' (addition), '-'
+(subtraction), '*' (multiplication), '/' (truncating division), and '%'
+(modulus). "Truncating division" rounds to the integer nearer to zero,
+no matter how large the fractional portion. Overflow and division (or
+modulus) by zero are errors and abort evaluation of a numeric
+expression.
+
+ Arithmetic unary operators operate on the numeric expression to their
+right; they are '-' (negation) and '+' (assertion--for completeness; it
+does nothing). The unary minus must often be used with parentheses to
+avoid confusion with the decrementation operator, discussed below.
+
+ Observe the rounding behavior and effect of negative operands on the
+modulus and truncating division operators.
+
+ .nr T 199/100
+ .nr U 5/2
+ .nr V (-5)/2
+ .nr W 5/-2
+ .nr X 5%2
+ .nr Y (-5)%2
+ .nr Z 5%-2
+ T=\n[T] U=\n[U] V=\n[V] W=\n[W] X=\n[X] Y=\n[Y] Z=\n[Z]
+ => T=1 U=2 V=-2 W=-2 X=1 Y=-1 Z=1
+
+The sign of the modulus of operands of mixed signs is determined by the
+sign of the first. Division and modulus operators satisfy the following
+property: given a dividend A and a divisor B, a quotient Q formed by '(a
+/ b)' and a remainder R by '(a % b)', then qb + r = a.
+
+ GNU 'troff''s scaling operator, used with parentheses as '(C;E)',
+evaluates a numeric expression E using C as the default scaling unit.
+If C is omitted, scaling units are ignored in the evaluation of E. This
+operator can save typing by avoiding the attachment of scaling units to
+every operand out of caution. Your macros can select a sensible default
+unit in case the user neglects to supply one.
+
+ .\" Indent by amount given in first argument; assume ens.
+ .de Indent
+ . in (n;\\$1)
+ ..
+
+Without the scaling operator, the foregoing macro would, if called with
+a unitless argument, cause indentation by the 'in' request's default
+scaling unit (ems). The result would be twice as much indentation as
+expected.
+
+ GNU 'troff' also provides a pair of operators to compute the extrema
+of two operands: '>?' (maximum) and '<?' (minimum).
+
+ .nr slots 5
+ .nr candidates 3
+ .nr salaries (\n[slots] <? \n[candidates])
+ Looks like we'll end up paying \n[salaries] salaries.
+ => Looks like we'll end up paying 3 salaries.
+
+ Comparison operators comprise '<' (less than), '>' (greater than),
+'<=' (less than or equal), '>=' (greater than or equal), and '='
+(equal). '==' is a synonym for '='. When evaluated, a comparison is
+replaced with '0' if it is false and '1' if true. In the 'roff'
+language, positive values are true, others false.
+
+ We can operate on truth values with the logical operators '&'
+(logical conjunction or "and") and ':' (logical disjunction or "or").
+They evaluate as comparison operators do.
+
+ A logical complementation ("not") operator, '!', works only within
+'if', 'ie', and 'while' requests. Furthermore, '!' is recognized only
+at the beginning of a numeric expression not contained by another
+numeric expression. In other words, it must be the "outermost"
+operator. Including it elsewhere in the expression produces a warning
+in the 'number' category (*note Warnings::), and its expression
+evaluates false. This unfortunate limitation maintains compatibility
+with AT&T 'troff'. Test a numeric expression for falsity by comparing
+it to a false value.(3) (*note Numeric Expressions-Footnote-3::)
+
+ .nr X 1
+ .nr Y 0
+ .\" This does not work as expected.
+ .if (\n[X])&(!\n[Y]) .nop A: X is true, Y is false
+ .
+ .\" Use this construct instead.
+ .if (\n[X])&(\n[Y]<=0) .nop B: X is true, Y is false
+ error-> warning: expected numeric expression, got '!'
+ => B: X is true, Y is false
+
+ The 'roff' language has no operator precedence: expressions are
+evaluated strictly from left to right, in contrast to schoolhouse
+arithmetic. Use parentheses '(' ')' to impose a desired precedence upon
+subexpressions.
+
+ .nr X 3+5*4
+ .nr Y (3+5)*4
+ .nr Z 3+(5*4)
+ X=\n[X] Y=\n[Y] Z=\n[Z]
+ => X=32 Y=32 Z=23
+
+ For many requests and escape sequences that cause motion on the page,
+the unary operators '+' and '-' work differently when leading a numeric
+expression. They then indicate a motion relative to the drawing
+position: positive is down in vertical contexts, right in horizontal
+ones.
+
+ '+' and '-' are also treated differently by the following requests
+and escape sequences: 'bp', 'in', 'll', 'lt', 'nm', 'nr', 'pl', 'pn',
+'po', 'ps', 'pvs', 'rt', 'ti', '\H', '\R', and '\s'. Here, leading plus
+and minus signs serve as incrementation and decrementation operators,
+respectively. To negate an expression, subtract it from zero or include
+the unary minus in parentheses with its argument. *Note Setting
+Registers::, for examples.
+
+ A leading '|' operator indicates a motion relative not to the drawing
+position but to a boundary. For horizontal motions, the measurement
+specifies a distance relative to a drawing position corresponding to the
+beginning of the _input_ line. By default, tab stops reckon movements
+in this way. Most escape sequences do not; '|' tells them to do so.
+
+ Mind the \h'1.2i'gap.
+ .br
+ Mind the \h'|1.2i'gap.
+ .br
+ Mind the
+ \h'|1.2i'gap.
+ => Mind the gap.
+ => Mind the gap.
+ => Mind the gap.
+
+ One use of this feature is to define macros whose scope is limited to
+the output they format.
+
+ .\" underline word $1 with trailing punctuation $2
+ .de Underline
+ . nop \\$1\l'|0\[ul]'\\$2
+ ..
+ Typographical emphasis is best used
+ .Underline sparingly .
+
+In the above example, '|0' specifies a negative motion from the current
+position (at the end of the argument just emitted, '\$1') to the
+beginning of the input line. Thus, the '\l' escape sequence in this
+case draws a line from right to left. A macro call occurs at the
+beginning of an input line;(4) (*note Numeric Expressions-Footnote-4::)
+if the '|' operator were omitted, then the underline would be drawn at
+zero distance from the current position, producing device-dependent, and
+likely undesirable, results. On the 'ps' output device, it underlines
+the period.
+
+ For vertical motions, the '|' operator specifies a distance from the
+first text baseline on the page or in the current diversion,(5) (*note
+Numeric Expressions-Footnote-5::) using the current vertical spacing.
+
+ A
+ .br
+ B \Z'C'\v'|0'D
+ => A D
+ => B C
+
+ In the foregoing example, we've used the '\Z' escape sequence (*note
+Page Motions::) to restore the drawing position after formatting 'C',
+then moved vertically to the first text baseline on the page.
+
+ -- Escape sequence: \B'anything'
+ Interpolate 1 if ANYTHING is a valid numeric expression, and 0
+ otherwise. The delimiter need not be a neutral apostrophe; see
+ *note Delimiters::.
+
+ You might use '\B' along with the 'if' request to filter out invalid
+macro or string arguments. *Note Conditionals and Loops::.
+
+ .\" Indent by amount given in first argument; assume ens.
+ .de Indent
+ . if \B'\\$1' .in (n;\\$1)
+ ..
+
+ A register interpolated as an operand in a numeric expression must
+have an Arabic format; luckily, this is the default. *Note Assigning
+Register Formats::.
+
+ Because spaces separate arguments to requests, spaces are not allowed
+in numeric expressions unless the (sub)expression containing them is
+surrounded by parentheses. *Note Invoking Requests::, and *note
+Conditionals and Loops::.
+
+ .nf
+ .nr a 1+2 + 2+1
+ \na
+ error-> expected numeric expression, got a space
+ => 3
+ .nr a 1+(2 + 2)+1
+ \na
+ => 6
+
+ The 'nr' request (*note Setting Registers::) expects its second and
+optional third arguments to be numeric expressions; a bare '+' does not
+qualify, so our first attempt got a warning.
+
+
+File: groff.info, Node: Numeric Expressions-Footnotes, Up: Numeric Expressions
+
+ (1) Provision is made for interpreting and reporting decimal
+fractions in certain cases.
+
+ (2) If that's not enough, see the 'groff_tmac(5)' man page for the
+'62bit.tmac' macro package.
+
+ (3) *Note Conditionals and Loops::.
+
+ (4) Control structure syntax creates an exception to this rule, but
+is designed to remain useful: recalling our example, '.if 1 .Underline
+this' would underline only "this", precisely. *Note Conditionals and
+Loops::.
+
+ (5) *Note Diversions::.
+
+
+File: groff.info, Node: Identifiers, Next: Formatter Instructions, Prev: Numeric Expressions, Up: GNU troff Reference
+
+5.5 Identifiers
+===============
+
+An "identifier" labels a GNU 'troff' datum such as a register, name
+(macro, string, or diversion), typeface, color, special character,
+character class, environment, or stream. Valid identifiers consist of
+one or more ordinary characters. An ordinary character is an input
+character that is not the escape character, a leader, tab, newline, or
+invalid as GNU 'troff' input.
+
+ Invalid input characters are a subset of control characters (from the
+sets "C0 Controls" and "C1 Controls" as Unicode describes them). When
+GNU 'troff' encounters one in an identifier, it produces a warning in
+category 'input' (*note Warnings::). They are removed during
+interpretation: an identifier 'foo', followed by an invalid character
+and then 'bar', is processed as 'foobar'.
+
+ On a machine using the ISO 646, 8859, or 10646 character encodings,
+invalid input characters are '0x00', '0x08', '0x0B', '0x0D'-'0x1F', and
+'0x80'-'0x9F'. On an EBCDIC host, they are '0x00'-'0x01', '0x08',
+'0x09', '0x0B', '0x0D'-'0x14', '0x17'-'0x1F', and '0x30'-'0x3F'.(1)
+(*note Identifiers-Footnote-1::) Some of these code points are used by
+GNU 'troff' internally, making it non-trivial to extend the program to
+accept UTF-8 or other encodings that use characters from these
+ranges.(2) (*note Identifiers-Footnote-2::)
+
+ Thus, the identifiers 'br', 'PP', 'end-list', 'ref*normal-print',
+'|', '@_', and '!"#$%'()*+,-./' are all valid. Discretion should be
+exercised to prevent confusion. Identifiers starting with '(' or '['
+require care.
+
+ .nr x 9
+ .nr y 1
+ .nr (x 2
+ .nr [y 3
+ .nr sum1 (\n(x + \n[y])
+ error-> a space character is not allowed in an escape
+ error-> sequence parameter
+ A:2+3=\n[sum1]
+ .nr sum2 (\n((x + \n[[y])
+ B:2+3=\n[sum2]
+ .nr sum3 (\n[(x] + \n([y)
+ C:2+3=\n[sum3]
+ => A:2+3=1 B:2+3=5 C:2+3=5
+
+An identifier with a closing bracket (']') in its name can't be accessed
+with bracket-form escape sequences that expect an identifier as a
+parameter. For example, '\[foo]]' accesses the glyph 'foo', followed by
+']' in whatever the surrounding context is, whereas '\C'foo]'' formats a
+glyph named 'foo]'. Similarly, the identifier '(' can't be interpolated
+_except_ with bracket forms.
+
+ If you begin a macro, string, or diversion name with either of the
+characters '[' or ']', you foreclose use of the 'grefer' preprocessor,
+which recognizes '.[' and '.]' as bibliographic reference delimiters.
+
+ -- Escape sequence: \A'anything'
+ Interpolate 1 if ANYTHING is a valid identifier, and 0 otherwise.
+ The delimiter need not be a neutral apostrophe; see *note
+ Delimiters::. Because invalid input characters are removed (see
+ above), invalid identifiers are empty or contain spaces, tabs, or
+ newlines.
+
+ You can employ '\A' to validate a macro argument before using it to
+ construct another escape sequence or identifier.
+
+ .\" usage: .init-coordinate-pair name val1 val2
+ .\" Create a coordinate pair where name!x=val1 and
+ .\" name!y=val2.
+ .de init-coordinate-pair
+ . if \A'\\$1' \{\
+ . if \B'\\$2' .nr \\$1!x \\$2
+ . if \B'\\$3' .nr \\$1!y \\$3
+ . \}
+ ..
+ .init-coordinate-pair center 5 10
+ The center is at (\n[center!x], \n[center!y]).
+ .init-coordinate-pair "poi->nt" trash garbage \" ignored
+ .init-coordinate-pair point trash garbage \" ignored
+ => The center is at (5, 10).
+
+ In this example, we also validated the numeric arguments; the
+ registers 'point!x' and 'point!y' remain undefined. *Note Numeric
+ Expressions:: for the '\B' escape sequence.
+
+ How GNU 'troff' handles the interpretation of an undefined identifier
+depends on the context. There is no way to invoke an undefined request;
+such syntax is interpreted as a macro call instead. If the identifier
+is interpreted as a string, macro, or diversion, GNU 'troff' emits a
+warning in category 'mac', defines it as empty, and interpolates
+nothing. If the identifier is interpreted as a register, GNU 'troff'
+emits a warning in category 'reg', initializes it to zero, and
+interpolates that value. *Note Warnings::, *note Interpolating
+Registers::, and *note Strings::. Attempting to use an undefined
+typeface, special character, color, character class, environment, or
+stream generally provokes an error diagnostic.
+
+ Identifiers for requests, macros, strings, and diversions share one
+name space; special characters and character classes another. No other
+object types do.
+
+ .de xxx
+ . nop foo
+ ..
+ .di xxx
+ bar
+ .br
+ .di
+ .
+ .xxx
+ => bar
+
+The foregoing example shows that GNU 'troff' reuses the identifier
+'xxx', changing it from a macro to a diversion. No warning is emitted,
+and the previous contents of 'xxx' are lost.
+
+
+File: groff.info, Node: Identifiers-Footnotes, Up: Identifiers
+
+ (1) Historically, control characters like ASCII STX, ETX, and BEL
+(<Control+B>, <Control+C>, and <Control+G>) have been observed in 'roff'
+documents, particularly in macro packages employing them as delimiters
+with the output comparison operator to try to avoid collisions with the
+content of arbitrary user-supplied parameters (*note Operators in
+Conditionals::). We discourage this expedient; in GNU 'troff' it is
+unnecessary (outside of compatibility mode) because delimited arguments
+are parsed at a different input level than the surrounding context.
+*Note Implementation Differences::.
+
+ (2) Consider what happens when a C1 control '0x80'-'0x9F' is
+necessary as a continuation byte in a UTF-8 sequence.
+
+
+File: groff.info, Node: Formatter Instructions, Next: Registers, Prev: Identifiers, Up: GNU troff Reference
+
+5.6 Formatter Instructions
+==========================
+
+To support documents that require more than filling, automatic line
+breaking and hyphenation, adjustment, and supplemental inter-sentence
+space, the 'roff' language offers two means of embedding instructions to
+the formatter.
+
+ One is a "request", which begins with a control character and takes
+up the remainder of the input line. Requests often perform relatively
+large-scale operations such as setting the page length, breaking the
+line, or starting a new page. They also conduct internal operations
+like defining macros.
+
+ The other is an "escape sequence", which begins with the escape
+character and can be embedded anywhere in the input, even in arguments
+to requests and other escape sequences. Escape sequences interpolate
+special characters, strings, or registers, and handle comparatively
+minor formatting tasks like sub- and superscripting.
+
+ Some operations, such as font selection and type size alteration, are
+available via both requests and escape sequences.
+
+* Menu:
+
+* Control Characters::
+* Invoking Requests::
+* Calling Macros::
+* Using Escape Sequences::
+* Delimiters::
+
+
+File: groff.info, Node: Control Characters, Next: Invoking Requests, Prev: Formatter Instructions, Up: Formatter Instructions
+
+5.6.1 Control Characters
+------------------------
+
+The mechanism of using 'roff''s control characters to invoke requests
+and call macros was introduced in *note Requests and Macros::. Control
+characters are recognized only at the beginning of an input line, or at
+the beginning of the branch of a control structure request; see *note
+Conditionals and Loops::.
+
+ A few requests cause a break implicitly; use the no-break control
+character to prevent the break. Break suppression is its sole
+behavioral distinction. Employing the no-break control character to
+invoke requests that don't cause breaks is harmless but poor style.
+*Note Manipulating Filling and Adjustment::.
+
+ The control '.' and no-break control ''' characters can each be
+changed to any ordinary character(1) (*note Control
+Characters-Footnote-1::) with the 'cc' and 'c2' requests, respectively.
+
+ -- Request: .cc [o]
+ Recognize the ordinary character O as the control character. If O
+ is absent or invalid, the default control character '.' is
+ selected. The identity of the control character is associated with
+ the environment (*note Environments::).
+
+ -- Request: .c2 [o]
+ Recognize the ordinary character O as the no-break control
+ character. If O is absent or invalid, the default no-break control
+ character ''' is selected. The identity of the no-break control
+ character is associated with the environment (*note
+ Environments::).
+
+ When writing a macro, you might wish to know which control character
+was used to call it.
+
+ -- Register: \n[.br]
+ This read-only register interpolates 1 if the currently executing
+ macro was called using the normal control character and 0
+ otherwise. If a macro is interpolated as a string, the '.br'
+ register's value is inherited from the context of the string
+ interpolation. *Note Strings::.
+
+ Use this register to reliably intercept requests that imply breaks.
+
+ .als bp*orig bp
+ .de bp
+ . ie \\n[.br] .bp*orig
+ . el 'bp*orig
+ ..
+
+ Testing the '.br' register outside of a macro definition makes no
+ sense.
+
+
+File: groff.info, Node: Control Characters-Footnotes, Up: Control Characters
+
+ (1) Recall *note Identifiers::.
+
+
+File: groff.info, Node: Invoking Requests, Next: Calling Macros, Prev: Control Characters, Up: Formatter Instructions
+
+5.6.2 Invoking Requests
+-----------------------
+
+A control character is optionally followed by tabs and/or spaces and
+then an identifier naming a request or macro. The invocation of an
+unrecognized request is interpreted as a macro call. Defining a macro
+with the same name as a request replaces the request. Deleting a
+request name with the 'rm' request makes it unavailable. The 'als'
+request can alias requests, permitting them to be wrapped or
+non-destructively replaced. *Note Strings::.
+
+ There is no inherent limit on argument length or quantity. Most
+requests take one or more arguments, and ignore any they do not expect.
+A request may be separated from its arguments by tabs or spaces, but
+only spaces can separate an argument from its successor. Only one
+between arguments is necessary; any excess is ignored. GNU 'troff' does
+not allow tabs for argument separation.(1) (*note Invoking
+Requests-Footnote-1::)
+
+ Generally, a space _within_ a request argument is not relevant, not
+meaningful, or is supported by bespoke provisions, as with the 'tl'
+request's delimiters (*note Page Layout::). Some requests, like 'ds',
+interpret the remainder of the control line as a single argument. *Note
+Strings::.
+
+ Spaces and tabs immediately after a control character are ignored.
+Commonly, authors structure the source of documents or macro files with
+them.
+
+ .de center
+ . if \\n[.br] \
+ . br
+ . ce \\$1
+ ..
+ .
+ .
+ .de right-align
+ .->if \\n[.br] \
+ .->->br
+ .->rj \\$1
+ ..
+
+ If you assign an empty blank line trap, you can separate macro
+definitions (or any input lines) with blank lines.
+
+ .de do-nothing
+ ..
+ .blm do-nothing \" activate blank line trap
+
+ .de center
+ . if \\n[.br] \
+ . br
+ . ce \\$1
+ ..
+
+
+ .de right-align
+ .->if \\n[.br] \
+ .->->br
+ .->rj \\$1
+ ..
+
+ .blm \" deactivate blank line trap
+
+ *Note Blank Line Traps::.
+
+
+File: groff.info, Node: Invoking Requests-Footnotes, Up: Invoking Requests
+
+ (1) In compatibility mode, a space is not necessary after a request
+or macro name of two characters' length. Also, Plan 9 'troff' allows
+tabs to separate arguments.
+
+
+File: groff.info, Node: Calling Macros, Next: Using Escape Sequences, Prev: Invoking Requests, Up: Formatter Instructions
+
+5.6.3 Calling Macros
+--------------------
+
+If a macro of the desired name does not exist when called, it is
+created, assigned an empty definition, and a warning in category 'mac'
+is emitted. Calling an undefined macro _does_ end a macro definition
+naming it as its end macro (*note Writing Macros::).
+
+ To embed spaces _within_ a macro argument, enclose the argument in
+neutral double quotes '"'. Horizontal motion escape sequences are
+sometimes a better choice for arguments to be formatted as text.
+
+ Consider calls to a hypothetical section heading macro 'uh'.
+
+ .uh The Mouse Problem
+ .uh "The Mouse Problem"
+ .uh The\~Mouse\~Problem
+ .uh The\ Mouse\ Problem
+
+The first line calls 'uh' with three arguments: 'The', 'Mouse', and
+'Problem'. The remainder call the 'uh' macro with one argument, 'The
+Mouse Problem'. The last solution, using escaped spaces, can be found
+in documents prepared for AT&T 'troff'. It can cause surprise when text
+is adjusted, because '\<SP>' inserts a _fixed-width_, non-breaking
+space. GNU 'troff''s '\~' escape sequence inserts an adjustable,
+non-breaking space.(1) (*note Calling Macros-Footnote-1::)
+
+ The foregoing raises the question of how to embed neutral double
+quotes or backslashes in macro arguments when _those_ characters are
+desired as literals. In GNU 'troff', the special character escape
+sequence '\[rs]' produces a backslash and '\[dq]' a neutral double
+quote.
+
+ In GNU 'troff''s AT&T compatibility mode, these characters remain
+available as '\(rs' and '\(dq', respectively. AT&T 'troff' did not
+consistently define these special characters, but its descendants can be
+made to support them. *Note Device and Font Description Files::.
+
+ If even that is not feasible, options remain. To obtain a literal
+escape character in a macro argument, you can simply type it if you
+change or disable the escape character first. *Note Using Escape
+Sequences::. Otherwise, you must escape the escape character repeatedly
+to a context-dependent extent. *Note Copy Mode::.
+
+ For the (neutral) double quote, you have recourse to an obscure
+syntactical feature of AT&T 'troff'. Because a double quote can begin a
+macro argument, the formatter keeps track of whether the current
+argument was started thus, and doesn't require a space after the double
+quote that ends it.(2) (*note Calling Macros-Footnote-2::) In the
+argument list to a macro, a double quote that _isn't_ preceded by a
+space _doesn't_ start a macro argument. If not preceded by a double
+quote that began an argument, this double quote becomes part of the
+argument. Furthermore, within a quoted argument, a pair of adjacent
+double quotes becomes a literal double quote.
+
+ .de eq
+ . tm arg1:\\$1 arg2:\\$2 arg3:\\$3
+ . tm arg4:\\$4 arg5:\\$5 arg6:\\$6
+ .. \" 4 backslashes on the next line
+ .eq a" "b c" "de"f\\\\g" h""i "j""k"
+ error-> arg1:a" arg2:b c arg3:de
+ error-> arg4:f\g" arg5:h""i arg6:j"k
+
+ Apart from the complexity of the rules, this traditional solution has
+the disadvantage that double quotes don't survive repeated argument
+expansion in AT&T 'troff' or GNU 'troff''s compatibility mode. This can
+frustrate efforts to pass such arguments intact through multiple macro
+calls.
+
+ .cp 1
+ .de eq
+ . tm arg1:\\$1 arg2:\\$2 arg3:\\$3
+ . tm arg4:\\$4 arg5:\\$5 arg6:\\$6
+ ..
+ .de xe
+ . eq \\$1 \\$2 \\$3 \\$4 \\$5 \\$6
+ .. \" 8 backslashes on the next line
+ .xe a" "b c" "de"f\\\\\\\\g" h""i "j""k"
+ error-> arg1:a" arg2:b arg3:c
+ error-> arg4:de arg5:f\g" arg6:h""i
+
+ Outside of compatibility mode, GNU 'troff' doesn't exhibit this
+problem because it tracks the nesting depth of interpolations. *Note
+Implementation Differences::.
+
+
+File: groff.info, Node: Calling Macros-Footnotes, Up: Calling Macros
+
+ (1) '\~' is fairly portable; see *note Other Differences::.
+
+ (2) Strictly, you can neglect to close the last quoted macro
+argument, relying on the end of the control line to do so. We consider
+this lethargic practice poor style.
+
+
+File: groff.info, Node: Using Escape Sequences, Next: Delimiters, Prev: Calling Macros, Up: Formatter Instructions
+
+5.6.4 Using Escape Sequences
+----------------------------
+
+Whereas requests must occur on control lines, escape sequences can occur
+intermixed with text and may appear in arguments to requests, macros,
+and other escape sequences. An escape sequence is introduced by the
+escape character, a backslash '\' (but see the 'ec' request below). The
+next character selects the escape's function.
+
+ Escape sequences vary in length. Some take an argument, and of
+those, some have different syntactical forms for a one-character,
+two-character, or arbitrary-length argument. Others accept _only_ an
+arbitrary-length argument. In the former scheme, a one-character
+argument follows the function character immediately, an opening
+parenthesis '(' introduces a two-character argument (no closing
+parenthesis is used), and an argument of arbitrary length is enclosed in
+brackets '[]'. In the latter scheme, the user selects a delimiter
+character. A few escape sequences are idiosyncratic, and support both
+of the foregoing conventions ('\s'), designate their own termination
+sequence ('\?'), consume input until the next newline ('\!', '\"',
+'\#'), or support an additional modifier character ('\s' again, and
+'\n'). As with requests, use of some escape sequences in source
+documents may interact poorly with a macro package you use; consult its
+documentation to learn of "safe" sequences or alternative facilities it
+provides to achieve the desired result.
+
+ If an escape character is followed by a character that does not
+identify a defined operation, the escape character is ignored (producing
+a diagnostic of the 'escape' warning category, which is not enabled by
+default) and the following character is processed normally.
+
+ $ groff -Tps -ww
+ .nr N 12
+ .ds co white
+ .ds animal elephant
+ I have \fI\nN \*(co \*[animal]s,\f[]
+ said \P.\&\~Pseudo Pachyderm.
+ error-> warning: escape character ignored before 'P'
+ => I have 12 white elephants, said P. Pseudo Pachyderm.
+
+ Escape sequence interpolation is of higher precedence than escape
+sequence argument interpretation. This rule affords flexibility in
+using escape sequences to construct parameters to other escape
+sequences.
+
+ .ds family C\" Courier
+ .ds style I\" oblique
+ Choice a typeface \f(\*[family]\*[style]wisely.
+ => Choose a typeface wisely.
+
+In the above, the syntax form '\f(' accepts only two characters for an
+argument; the example works because the subsequent escape sequences are
+interpolated before the selection escape sequence argument is processed,
+and strings 'family' and 'style' interpolate one character each.(1)
+(*note Using Escape Sequences-Footnote-1::)
+
+ The escape character is nearly always interpreted when encountered;
+it is therefore desirable to have a way to interpolate it, disable it,
+or change it.
+
+ -- Escape sequence: \e
+ Interpolate the escape character.
+
+ The '\[rs]' special character escape sequence formats a backslash
+glyph. In macro and string definitions, the input sequences '\\' and
+'\E' defer interpretation of escape sequences. *Note Copy Mode::.
+
+ -- Request: .eo
+ Disable the escape mechanism except in copy mode. Once this
+ request is invoked, no input character is recognized as starting an
+ escape sequence in interpretation mode.
+
+ -- Request: .ec [o]
+ Recognize the ordinary character O as the escape character. If O
+ is absent or invalid, the default escape character '\' is selected.
+
+ Switching escape sequence interpretation off to define a macro and
+back on afterward can obviate the need to double the escape character
+within the definition. *Note Writing Macros::. This technique is not
+available if your macro needs to interpolate values at the time it is
+_defined_--but many do not.
+
+ .\" simplified `BR` macro from the man(7) macro package
+ .eo
+ .de BR
+ . ds result \&
+ . while (\n[.$] >= 2) \{\
+ . as result \fB\$1\fR\$2\"
+ . shift 2
+ . \}
+ . if \n[.$] .as result \fB\$1\"
+ \*[result]
+ . rm result
+ . ft R
+ ..
+ .ec
+
+ -- Request: .ecs
+ -- Request: .ecr
+ The 'ecs' request stores the escape character for recall with
+ 'ecr'. 'ecr' sets the escape character to '\' if none has been
+ saved.
+
+ Use these requests together to temporarily change the escape
+ character.
+
+ Using a different escape character, or disabling it, when calling
+macros not under your control will likely cause errors, since GNU
+'troff' has no mechanism to "intern" macros--that is, to convert a macro
+definition into a form independent of its representation.(2) (*note
+Using Escape Sequences-Footnote-2::) When a macro is called, its
+contents are interpreted literally.
+
+
+File: groff.info, Node: Using Escape Sequences-Footnotes, Up: Using Escape Sequences
+
+ (1) The omission of spaces before the comment escape sequences is
+necessary; see *note Strings::.
+
+ (2) TeX does have such a mechanism.
+
+
+File: groff.info, Node: Delimiters, Prev: Using Escape Sequences, Up: Formatter Instructions
+
+5.6.5 Delimiters
+----------------
+
+Some escape sequences that require parameters use delimiters. The
+neutral apostrophe ''' is a popular choice and shown in this document.
+The neutral double quote '"' is also commonly seen. Letters, numerals,
+and leaders can be used. Punctuation characters are likely better
+choices, except for those defined as infix operators in numeric
+expressions; see below.
+
+ \l'1.5i\[bu]' \" draw 1.5 inches of bullet glyphs
+
+ The following escape sequences don't take arguments and thus are
+allowed as delimiters: '\<SP>', '\%', '\|', '\^', '\{', '\}', '\'',
+'\`', '\-', '\_', '\!', '\?', '\)', '\/', '\,', '\&', '\:', '\~', '\0',
+'\a', '\c', '\d', '\e', '\E', '\p', '\r', '\t', and '\u'. However,
+using them this way is discouraged; they can make the input confusing to
+read.
+
+ A few escape sequences, '\A', '\b', '\o', '\w', '\X', and '\Z',
+accept a newline as a delimiter. Newlines that serve as delimiters
+continue to be recognized as input line terminators.
+
+ A caf\o
+ e\(aa
+ in Paris
+ => A café in Paris
+
+Use of newlines as delimiters in escape sequences is also discouraged.
+
+ Finally, the escape sequences '\D', '\h', '\H', '\l', '\L', '\N',
+'\R', '\s', '\S', '\v', and '\x' prohibit many delimiters.
+
+ * the numerals '0'-'9' and the decimal point '.'
+
+ * the (single-character) operators '+-/*%<>=&:()'
+
+ * the space and tab characters
+
+ * any escape sequences other than '\%', '\:', '\{', '\}', '\'', '\`',
+ '\-', '\_', '\!', '\/', '\c', '\e', and '\p'
+
+ Delimiter syntax is complex and flexible primarily for historical
+reasons; the foregoing restrictions need be kept in mind mainly when
+using 'groff' in AT&T compatibility mode. GNU 'troff' keeps track of
+the nesting depth of escape sequence interpolations, so the only
+characters you need to avoid using as delimiters are those that appear
+in the arguments you input, not any that result from interpolation.
+Typically, ''' works fine. *Note Implementation Differences::.
+
+ $ groff -Tps
+ .de Mw
+ . nr wd \w'\\$1'
+ . tm "\\$1" is \\n(wd units wide.
+ ..
+ .Mw Wet'suwet'en
+ .Mw Wet+200i
+ .cp 1 \" turn on compatibility mode
+ .Mw Wet'suwet'en
+ .Mw Wet'
+ .Mw Wet+200i
+ error-> "Wet'suwet'en" is 54740 units wide.
+ error-> "Wet'+200i" is 42610 units wide.
+ error-> "Wet'suwet'en" is 15860 units wide.
+ error-> "Wet'" is 15860 units wide.
+ error-> "Wet'+200i" is 14415860 units wide.
+
+ We see here that in compatibility mode, the part of the argument
+after the ''' delimiter escapes from its context and, if nefariously
+crafted, influences the computation of the WD register's value in a
+surprising way.
+
+
+File: groff.info, Node: Comments, Next: Registers, Prev: Formatter Instructions, Up: GNU troff Reference
+
+5.7 Comments
+============
+
+One of the most common forms of escape sequence is the comment.(1)
+(*note Comments-Footnote-1::)
+
+ -- Escape sequence: \"
+ Start a comment. Everything up to the next newline is ignored.
+
+ This may sound simple, but it can be tricky to keep the comments
+ from interfering with the appearance of the output. If the escape
+ sequence is to the right of some text or a request, that portion of
+ the line is ignored, but spaces preceding it are processed normally
+ by GNU 'troff'. This affects only the 'ds' and 'as' requests and
+ their variants.
+
+ One possibly irritating idiosyncrasy is that tabs should not be
+ used to vertically align comments in the source document. Tab
+ characters are not treated as separators between a request name and
+ its first argument, nor between arguments.
+
+ A comment on a line by itself is treated as a blank line, because
+ after eliminating the comment, that is all that remains.
+
+ Test
+ \" comment
+ Test
+ => Test
+ =>
+ => Test
+
+ To avoid this, it is common to combine the empty request with the
+ comment escape sequence as '.\"', causing the input line to be
+ ignored.
+
+ Another commenting scheme sometimes seen is three consecutive
+ single quotes (''''') at the beginning of a line. This works, but
+ GNU 'troff' emits a warning diagnostic (if enabled) about an
+ undefined macro (namely '''').
+
+ -- Escape sequence: \#
+ Start a comment; everything up to and including the next newline is
+ ignored. This 'groff' extension was introduced to avoid the
+ problems described above.
+
+ Test
+ \# comment
+ Test
+ => Test Test
+
+ -- Request: .ig [end]
+ Ignore input until, in the current conditional block (if any),(2)
+ (*note Comments-Footnote-2::) the macro END is called at the start
+ of a control line, or the control line '..' is encountered if END
+ is not specified. 'ig' is parsed as if it were a macro definition,
+ but its contents are discarded, not stored.(3) (*note
+ Comments-Footnote-3::)
+
+ hand\c
+ .de TX
+ fasting
+ ..
+ .ig TX
+ This is part of a large block of input that has been
+ temporarily(?) commented out.
+ We can restore it simply by removing the .ig request and
+ the call of its end macro.
+ .TX
+ => handfasting
+
+
+File: groff.info, Node: Comments-Footnotes, Up: Comments
+
+ (1) This claim may be more aspirational than descriptive.
+
+ (2) *Note Conditional Blocks::.
+
+ (3) Exception: auto-incrementing registers defined outside the
+ignored region _will_ be modified if interpolated with '\n±' inside it.
+*Note Auto-increment::.
+
+
+File: groff.info, Node: Registers, Next: Manipulating Filling and Adjustment, Prev: Formatter Instructions, Up: GNU troff Reference
+
+5.8 Registers
+=============
+
+In the 'roff' language, numbers can be stored in "registers". Many
+built-in registers exist, supplying anything from the date to details of
+formatting parameters. You can also define your own. *Note
+Identifiers::, for information on constructing a valid name for a
+register.
+
+* Menu:
+
+* Setting Registers::
+* Interpolating Registers::
+* Auto-increment::
+* Assigning Register Formats::
+* Built-in Registers::
+
+
+File: groff.info, Node: Setting Registers, Next: Interpolating Registers, Prev: Registers, Up: Registers
+
+5.8.1 Setting Registers
+-----------------------
+
+Define registers and update their values with the 'nr' request or the
+'\R' escape sequence.
+
+ -- Request: .nr ident value
+ -- Escape sequence: \R'ident value'
+ Set register IDENT to VALUE. If IDENT doesn't exist, GNU 'troff'
+ creates it. In the '\R' escape sequence, the delimiter need not be
+ a neutral apostrophe; see *note Delimiters::. It also does not
+ produce an input token in GNU 'troff'. *Note Gtroff Internals::.
+
+ .nr a (((17 + (3 * 4))) % 4)
+ \n[a]
+ .\R'a (((17 + (3 * 4))) % 4)'
+ \n[a]
+ => 1 1
+
+ (Later, we will discuss additional forms of 'nr' and '\R' that can
+ change a register's value after it is dereferenced but before it is
+ interpolated. *Note Auto-increment::.)
+
+ The complete transparency of '\R' can cause surprising effects if
+ you use registers like '.k', which get evaluated at the time they
+ are accessed.
+
+ .ll 1.6i
+ .
+ aaa bbb ccc ddd eee fff ggg hhh\R':k \n[.k]'
+ .tm :k == \n[:k]
+ => :k == 126950
+ .
+ .br
+ .
+ aaa bbb ccc ddd eee fff ggg hhh\h'0'\R':k \n[.k]'
+ .tm :k == \n[:k]
+ => :k == 15000
+
+ If you process this with the PostScript device ('-Tps'), there will
+ be a line break eventually after 'ggg' in both input lines.
+ However, after processing the space after 'ggg', the partially
+ collected line is not overfull yet, so GNU 'troff' continues to
+ collect input until it sees the space (or in this case, the
+ newline) after 'hhh'. At this point, the line is longer than the
+ line length, and the line gets broken.
+
+ In the first input line, since the '\R' escape sequence leaves no
+ traces, the check for the overfull line hasn't been done yet at the
+ point where '\R' gets handled, and you get a value for the '.k'
+ register that is even greater than the current line length.
+
+ In the second input line, the insertion of '\h'0'' to cause a
+ zero-width motion forces GNU 'troff' to check the line length,
+ which in turn causes the start of a new output line. Now '.k'
+ returns the expected value.
+
+ 'nr' and '\R' each have two additional special forms to increment or
+decrement a register.
+
+ -- Request: .nr ident +value
+ -- Request: .nr ident -value
+ -- Escape sequence: \R'ident +value'
+ -- Escape sequence: \R'ident -value'
+ Increment (decrement) register IDENT by VALUE. In the '\R' escape
+ sequence, the delimiter need not be a neutral apostrophe; see *note
+ Delimiters::.
+
+ .nr a 1
+ .nr a +1
+ \na
+ => 2
+
+ A leading minus sign in VALUE is always interpreted as a
+ decrementation operator, not an algebraic sign. To assign a
+ register a negative value or the negated value of another register,
+ you can force GNU 'troff' to interpret '-' as a negation or minus,
+ rather than decrementation, operator: enclose it with its operand
+ in parentheses or subtract it from zero.
+
+ .nr a 7
+ .nr b 3
+ .nr a -\nb
+ \na
+ => 4
+ .nr a (-\nb)
+ \na
+ => -3
+ .nr a 0-\nb
+ \na
+ => -3
+
+ If a register's prior value does not exist (the register was
+ undefined), an increment or decrement is applied as if to 0.
+
+ -- Request: .rr ident
+ Remove register IDENT. If IDENT doesn't exist, the request is
+ ignored. Technically, only the name is removed; the register's
+ contents are still accessible under aliases created with 'aln', if
+ any.
+
+ -- Request: .rnn ident1 ident2
+ Rename register IDENT1 to IDENT2. If IDENT1 doesn't exist, the
+ request is ignored. Renaming a built-in register does not
+ otherwise alter its properties.
+
+ -- Request: .aln new old
+ Create an alias NEW for an existing register OLD, causing the names
+ to refer to the same stored object. If OLD is undefined, a warning
+ in category 'reg' is produced and the request is ignored. *Note
+ Warnings::, for information about the enablement and suppression of
+ warnings.
+
+ To remove a register alias, invoke 'rr' on its name. A register's
+ contents do not become inaccessible until it has no more names.
+
+
+File: groff.info, Node: Interpolating Registers, Next: Auto-increment, Prev: Setting Registers, Up: Registers
+
+5.8.2 Interpolating Registers
+-----------------------------
+
+Register contents are interpolated with the '\n' escape sequence.
+
+ -- Escape sequence: \ni
+ -- Escape sequence: \n(id
+ -- Escape sequence: \n[ident]
+ Interpolate register with name IDENT (one-character name I,
+ two-character name ID). '\n' is interpreted even in copy mode
+ (*note Copy Mode::). If the register is undefined, it is created
+ and assigned a value of '0', that value is interpolated, and a
+ warning in category 'reg' is emitted. *Note Warnings::, for
+ information about the enablement and suppression of warnings.
+
+ .nr a 5
+ .nr as \na+\na
+ \n(as
+ => 10
+
+ .nr a1 5
+ .nr ab 6
+ .ds str b
+ .ds num 1
+ \n[a\n[num]]
+ => 5
+ \n[a\*[str]]
+ => 6
+
+
+File: groff.info, Node: Auto-increment, Next: Assigning Register Formats, Prev: Interpolating Registers, Up: Registers
+
+5.8.3 Auto-increment
+--------------------
+
+Registers can also be incremented or decremented by a configured amount
+at the time they are interpolated. The value of the increment is
+specified with a third argument to the 'nr' request, and a special
+interpolation syntax is used to alter and then retrieve the register's
+value. Together, these features are called "auto-increment".(1) (*note
+Auto-increment-Footnote-1::)
+
+ -- Request: .nr ident value incr
+ Set register IDENT to VALUE and its auto-incrementation amount to
+ to INCR. The '\R' escape sequence doesn't support an INCR
+ argument.
+
+ Auto-incrementation is not _completely_ automatic; the '\n' escape
+sequence in its basic form never alters the value of a register. To
+apply auto-incrementation to a register, interpolate it with '\n±'.
+
+ -- Escape sequence: \n+i
+ -- Escape sequence: \n-i
+ -- Escape sequence: \n+(id
+ -- Escape sequence: \n-(id
+ -- Escape sequence: \n+[ident]
+ -- Escape sequence: \n-[ident]
+ Increment or decrement IDENT (one-character name I, two-character
+ name ID) by the register's auto-incrementation value and then
+ interpolate the new register value. If IDENT has no
+ auto-incrementation value, interpolate as with '\n'.
+
+ .nr a 0 1
+ .nr xx 0 5
+ .nr foo 0 -2
+ \n+a, \n+a, \n+a, \n+a, \n+a
+ .br
+ \n-(xx, \n-(xx, \n-(xx, \n-(xx, \n-(xx
+ .br
+ \n+[foo], \n+[foo], \n+[foo], \n+[foo], \n+[foo]
+ => 1, 2, 3, 4, 5
+ => -5, -10, -15, -20, -25
+ => -2, -4, -6, -8, -10
+
+ To change the increment value without changing the value of a
+register, assign the register's value to itself by interpolating it, and
+specify the desired increment normally. Apply an increment of '0' to
+disable auto-incrementation of the register.
+
+
+File: groff.info, Node: Auto-increment-Footnotes, Up: Auto-increment
+
+ (1) A negative auto-increment can be considered an "auto-decrement".
+
+
+File: groff.info, Node: Assigning Register Formats, Next: Built-in Registers, Prev: Auto-increment, Up: Registers
+
+5.8.4 Assigning Register Formats
+--------------------------------
+
+A writable register's value can be interpolated in several number
+formats. By default, conventional Arabic numerals are used. Other
+formats see use in sectioning and outlining schemes and alternative page
+numbering arrangements.
+
+ -- Request: .af reg fmt
+ Use number format FMT when interpolating register REG. Valid
+ number formats are as follows.
+
+ '0...'
+ Arabic numerals 0, 1, 2, and so on. Any decimal digit is
+ equivalent to '0'; the formatter merely counts the digits
+ specified. Multiple Arabic numerals in FMT cause
+ interpolations to be zero-padded on the left if necessary to
+ at least as many digits as specified (interpolations never
+ truncate a register value). A register with format '00'
+ interpolates values 1, 2, 3 as '01', '02', '03'. The default
+ format for all writable registers is '0'.
+
+ 'I'
+ Uppercase Roman numerals: 0, I, II, III, IV, ...
+
+ 'i'
+ Lowercase Roman numerals: 0, i, ii, iii, iv, ...
+
+ 'A'
+ Uppercase letters: 0, A, B, C, ..., Z, AA, AB, ...
+
+ 'a'
+ Lowercase letters: 0, a, b, c, ..., z, aa, ab, ...
+
+ Omitting FMT causes a warning in category 'missing'. *Note
+ Warnings::, for information about the enablement and suppression of
+ warnings. Specifying an unrecognized format is an error.
+
+ Zero values are interpolated as '0' in non-Arabic formats.
+ Negative quantities are prefixed with '-' irrespective of format.
+ In Arabic formats, the sign supplements the field width. If REG
+ doesn't exist, it is created with a zero value.
+
+ .nr a 10
+ .af a 0 \" the default format
+ \na,
+ .af a I
+ \na,
+ .af a 321
+ .nr a (-\na)
+ \na,
+ .af a a
+ \na
+ => 10, X, -010, -j
+
+ The representable extrema in the 'i' and 'I' formats correspond to
+ Arabic ±39,999. GNU 'troff' uses 'w' and 'z' to represent 5,000
+ and 10,000 in Roman numerals, respectively, following the
+ convention of AT&T 'troff'--currently, the correct glyphs for Roman
+ numerals five thousand ('U+2181') and ten thousand ('U+2182') are
+ not used.
+
+ Assigning the format of a read-only register is an error. Instead,
+ copy the read-only register's value to, and assign the format of, a
+ writable register.
+
+ -- Escape sequence: \gr
+ -- Escape sequence: \g(rg
+ -- Escape sequence: \g[reg]
+ Interpolate the format of the register REG (one-character name R,
+ two-character name RG). Zeroes represent Arabic formats. If REG
+ is not defined, REG is not created and nothing is interpolated.
+ '\g' is interpreted even in copy mode (*note Copy Mode::).
+
+ GNU 'troff' interprets only Arabic numerals. The Roman numeral or
+alphabetic formats cannot be used as operands to arithmetic operators in
+expressions (*note Numeric Expressions::). For instance, it may be
+desirable to test the page number independently of its format.
+
+ .af % i \" front matter
+ .de header-trap
+ . \" To test the page number, we need it in Arabic.
+ . ds saved-page-number-format \\g%\"
+ . af % 0
+ . nr page-number-in-decimal \\n%
+ . af % \\*[saved-page-number-format]
+ . ie \\n[page-number-in-decimal]=1 .do-first-page-stuff
+ . el \{\
+ . ie o .do-odd-numbered-page-stuff
+ . el .do-even-numbered-page-stuff
+ . \}
+ . rm saved-page-number-format
+ ..
+ .wh 0 header-trap
+
+
+File: groff.info, Node: Built-in Registers, Prev: Assigning Register Formats, Up: Registers
+
+5.8.5 Built-in Registers
+------------------------
+
+Predefined registers whose identifiers start with a dot are read-only.
+Many are Boolean-valued, interpolating a true or false value testable
+with the 'if', 'ie', or 'while' requests. Some read-only registers are
+string-valued, meaning that they interpolate text.
+
+ *Caution:* Built-in registers are subject to removal like others;
+once removed, they can be recreated only as normal writable registers
+and will not reflect formatter state.
+
+ A register name (without the dot) is often associated with a request
+of the same name. A complete listing of all built-in registers can be
+found in *note Register Index::.
+
+ We present here a few built-in registers that are not described
+elsewhere in this manual; they have to do with invariant properties of
+GNU 'troff', or obtain information about the formatter's command-line
+options, processing progress, or the operating environment.
+
+'\n[.A]'
+ Approximate output is being formatted (Boolean-valued); see 'groff'
+ '-a' option (*note Groff Options::).
+
+'\n[.c]'
+'\n[c.]'
+ Input line number. 'c.' is a writable synonym, affecting
+ subsequent interpolations of both '.c' and 'c.'.
+
+'\n[.F]'
+ Name of input file (string-valued).
+
+'\n[.g]'
+ Always true in GNU 'troff' (Boolean-valued). Documents can use
+ this to ask the formatter if it claims 'groff' compatibility.
+
+'\n[.P]'
+ Output page selection status (Boolean-valued); see 'groff' '-o'
+ option (*note Groff Options::).
+
+'\n[.R]'
+ Count of available unused registers; always 10,000 in GNU
+ 'troff'.(1) (*note Built-in Registers-Footnote-1::)
+
+'\n[.T]'
+ Indicator of output device selection (Boolean-valued); see 'groff'
+ '-T' option (*note Groff Options::).
+
+'\n[.U]'
+ Unsafe mode enablement status (Boolean-valued); see 'groff' '-U'
+ option (*note Groff Options::).
+
+'\n[.x]'
+ Major version number of the running GNU 'troff' formatter. For
+ example, if the version number is 1.23.0, then '.x' contains '1'.
+
+'\n[.y]'
+ Minor version number of the running GNU 'troff' formatter. For
+ example, if the version number is 1.23.0, then '.y' contains '23'.
+
+'\n[.Y]'
+ Revision number of the running GNU 'troff' formatter. For example,
+ if the version number is 1.23.0, then '.Y' contains '0'.
+
+'\n[$$]'
+ Process identifier (PID) of the GNU 'troff' program in its
+ operating environment.
+
+ Date- and time-related registers are set per the local time as
+determined by 'localtime(3)' when the formatter launches. This
+initialization can be overridden by 'SOURCE_DATE_EPOCH' and 'TZ'; see
+*note Environment::.
+
+'\n[seconds]'
+ Count of seconds elapsed in the minute (0-60).
+
+'\n[minutes]'
+ Count of minutes elapsed in the hour (0-59).
+
+'\n[hours]'
+ Count of hours elapsed since midnight (0-23).
+
+'\n[dw]'
+ Day of the week (1-7; 1 is Sunday).
+
+'\n[dy]'
+ Day of the month (1-31).
+
+'\n[mo]'
+ Month of the year (1-12).
+
+'\n[year]'
+ Gregorian year.
+
+'\n[yr]'
+ Gregorian year minus 1900. This register is incorrectly documented
+ in the AT&T 'troff' manual as storing the last two digits of the
+ current year. That claim stopped being true in 2000. Old 'troff'
+ input that looks like:
+
+ '\" The year number is a surprise after 1999.
+ This document was formatted in 19\n(yr.
+
+ can be corrected to:
+
+ This document was formatted in \n[year].
+
+ or, for portability across many 'roff' programs, to the following.
+
+ .nr y4 1900+\n(yr
+ This document was formatted in \n(y4.
+
+
+File: groff.info, Node: Built-in Registers-Footnotes, Up: Built-in Registers
+
+ (1) GNU 'troff' dynamically allocates memory for as many registers as
+required.
+
+
+File: groff.info, Node: Manipulating Filling and Adjustment, Next: Manipulating Hyphenation, Prev: Registers, Up: GNU troff Reference
+
+5.9 Manipulating Filling and Adjustment
+=======================================
+
+When an output line is pending (see below), a break moves the drawing
+position to the beginning of the next text baseline, interrupting
+filling. Various ways of causing breaks were shown in *note Breaking::.
+The 'br' request likewise causes a break. Several other requests imply
+breaks: 'bp', 'ce', 'cf', 'fi', 'fl', 'in', 'nf', 'rj', 'sp', 'ti', and
+'trf'. If the no-break control character is used with any of these
+requests, GNU 'troff' suppresses the break; instead the requested
+operation takes effect at the next break. ''br' does nothing.
+
+ .ll 55n
+ This line is normally filled and adjusted.
+ .br
+ A line's alignment is decided
+ 'ce \" Center the next input line (no break).
+ when it is output.
+ This line returns to normal filling and adjustment.
+ => This line is normally filled and adjusted.
+ => A line's alignment is decided when it is output.
+ => This line returns to normal filling and adjustment.
+
+Output line properties like page offset, indentation, adjustment, and
+even the location of its text baseline, are not determined until the
+line has been broken. An output line is said to be "pending" if some
+input has been collected but an output line corresponding to it has not
+yet been written; such an output line is also termed "partially
+collected". If no output line is pending, it is as if a break has
+already happened; additional breaks, whether explicit or implicit, have
+no effect. If the vertical drawing position is negative--as it is when
+the formatter starts up--a break starts a new page (even if no output
+line is pending) unless an end-of-input macro is being interpreted.
+*Note End-of-input Traps::.
+
+ -- Request: .br
+ Break the line: emit any pending output line without adjustment.
+
+ foo bar
+ .br
+ baz
+ 'br
+ qux
+ => foo bar
+ => baz qux
+
+ Sometimes you want to prevent a break within a phrase or between a
+quantity and its units.
+
+ -- Escape sequence: \~
+ Insert an unbreakable space that is adjustable like an ordinary
+ space. It is discarded from the end of an output line if a break
+ is forced.
+
+ Set the output speed to\~1.
+ There are 1,024\~bytes in 1\~KiB.
+ J.\~F.\~Ossanna wrote the original CSTR\~#54.
+
+ By default, GNU 'troff' fills text and adjusts it to reach the output
+line length. The 'nf' request disables filling; the 'fi' request
+reënables it.
+
+ -- Request: .fi
+ -- Register: \n[.u]
+ Enable filling of output lines; a pending output line is broken.
+ The read-only register '.u' is set to 1. The filling enablement
+ status, sometimes called "fill mode", is associated with the
+ environment (*note Environments::). *Note Line Continuation::, for
+ interaction with the '\c' escape sequence.
+
+ -- Request: .nf
+ Disable filling of output lines: the output line length (*note Line
+ Layout::) is ignored and output lines are broken where the input
+ lines are. A pending output line is broken and adjustment is
+ suppressed. The read-only register '.u' is set to 0. The filling
+ enablement status is associated with the environment (*note
+ Environments::). See *note Line Continuation::, for interaction
+ with the '\c' escape sequence.
+
+ -- Request: .ad [mode]
+ -- Register: \n[.j]
+ Enable output line adjustment in MODE, taking effect when the
+ pending (or next) output line is broken. Adjustment is suppressed
+ when filling is. MODE can have one of the following values.
+
+ 'b'
+ 'n'
+ Adjust "normally": if the output line does not consume the
+ distance between the indentation and the configured output
+ line length, GNU 'troff' stretches adjustable spaces within
+ the line until that length is reached. When the indentation
+ is zero, this mode spreads the line to both the left and right
+ margins. This is the GNU 'troff' default.
+
+ 'c'
+ Center filled text. Contrast with the 'ce' request, which
+ centers text _without_ filling it.
+
+ 'l'
+ Align text to the left without adjusting it.
+
+ 'r'
+ Align text to the right without adjusting it.
+
+ MODE can also be a value previously stored in the '.j' register.
+ Using 'ad' without an argument is the same as '.ad \n[.j]'; unless
+ filling is disabled, GNU 'troff' resumes adjusting lines in the
+ same way it did before adjustment was disabled by invocation of the
+ 'na' request.
+
+ The adjustment mode and enablement status are encoded in the
+ read-only register '.j'. These parameters are associated with the
+ environment (*note Environments::).
+
+ The value of '.j' for any adjustment mode is an implementation
+ detail and should not be relied upon as a programmer's interface.
+ Do not write logic to interpret or perform arithmetic on it.
+
+ .ll 48n
+ .de AD
+ . br
+ . ad \\$1
+ ..
+ .de NA
+ . br
+ . na
+ ..
+ left
+ .AD r
+ .nr ad \n(.j
+ right
+ .AD c
+ center
+ .NA
+ left
+ .AD
+ center
+ .AD \n(ad
+ right
+ => left
+ => right
+ => center
+ => left
+ => center
+ => right
+
+ -- Request: .na
+ Disable output line adjustment. This produces the same output as
+ left-alignment, but the value of the adjustment mode register '.j'
+ is altered differently. The adjustment mode and enablement status
+ are associated with the environment (*note Environments::).
+
+ -- Request: .brp
+ -- Escape sequence: \p
+ Break, adjusting the line per the current adjustment mode. '\p'
+ schedules a break with adjustment at the next word boundary. The
+ escape sequence is itself neither a break nor a space of any kind;
+ it can thus be placed in the middle of a word to cause a break at
+ the end of that word.
+
+ Breaking with immediate adjustment can produce ugly results since
+ GNU 'troff' doesn't have a sophisticated paragraph-building
+ algorithm, as TeX has, for example. Instead, GNU 'troff' fills and
+ adjusts a paragraph line by line.
+
+ .ll 4.5i
+ This is an uninteresting sentence.
+ This is an uninteresting sentence.\p
+ This is an uninteresting sentence.
+
+ is formatted as follows.
+
+ This is an uninteresting sentence. This is
+ an uninteresting sentence.
+ This is an uninteresting sentence.
+
+ To clearly present the next couple of requests, we must introduce the
+concept of "productive" input lines. A "productive input line" is one
+that directly produces formatted output. Text lines produce output,(1)
+(*note Manipulating Filling and Adjustment-Footnote-1::) as do control
+lines containing requests like 'tl' or escape sequences like '\D'.
+Macro calls are not _directly_ productive, and thus not counted, but
+their interpolated contents can be. Empty requests, and requests and
+escape sequences that define registers or strings or alter the
+formatting environment (as with changes to the size, face, height,
+slant, or color of the type) are not productive. We will also preview
+the output line continuation escape sequence, '\c', which "connects" two
+input lines that would otherwise be counted separately. (2) (*note
+Manipulating Filling and Adjustment-Footnote-2::)
+
+ .de hello
+ Hello, world!
+ ..
+ .ce \" center output of next productive input line
+ .
+ .nr junk-reg 1
+ .ft I
+ Chorus: \c
+ .ft
+ .hello
+ Went the day well?
+ => Chorus: Hello, world!
+ => Went the day well?
+
+ -- Request: .ce [n]
+ -- Register: \n[.ce]
+ Break (unless the no-break control character is used), center the
+ output of the next N productive input lines with respect to the
+ line length and indentation without filling, then break again
+ regardless of the invoking control character. If the argument is
+ not positive, centering is disabled. Omitting the argument implies
+ an N of '1'. The count of lines remaining to be centered is stored
+ in the read-only register '.ce' and is associated with the
+ environment (*note Environments::).
+
+ While the '.ad c' request also centers text, it fills the text as
+ well.
+
+ .de FR
+ This is a small text fragment that shows the differences
+ between the `.ce' and the `.ad c' requests.
+ ..
+ .ll 4i
+ .ce 1000
+ .FR
+ .ce 0
+
+ .ad c
+ .FR
+ => This is a small text fragment that shows
+ => the differences
+ => between the `.ce' and the `.ad c' requests.
+ =>
+ => This is a small text fragment that shows
+ => the differences between the `.ce' and
+ => the `.ad c' requests.
+
+ The previous example illustrates a common idiom of turning
+ centering on for a quantity of lines far in excess of what is
+ required, and off again after the text to be centered. This
+ technique relieves humans of counting lines for requests that take
+ a count of input lines as an argument.
+
+ -- Request: .rj [n]
+ -- Register: \n[.rj]
+ Break (unless the no-break control character is used), align the
+ output of the next N productive input lines to the right margin
+ without filling, then break again regardless of the control
+ character. If the argument is not positive, right-alignment is
+ disabled. Omitting the argument implies an N of '1'. The count of
+ lines remaining to be right-aligned is stored in the read-only
+ register '.rj' and is associated with the environment (*note
+ Environments::).
+
+ .ll 49n
+ .rj 3
+ At first I hoped that such a technically unsound
+ project would collapse but I soon realized it was
+ doomed to success. \[em] C. A. R. Hoare
+ => At first I hoped that such a technically unsound
+ => project would collapse but I soon realized it was
+ => doomed to success. -- C. A. R. Hoare
+
+ -- Request: .ss word-space-size [additional-sentence-space-size]
+ -- Register: \n[.ss]
+ -- Register: \n[.sss]
+ Set the sizes of spaces between words and sentences(3) (*note
+ Manipulating Filling and Adjustment-Footnote-3::) in twelfths of
+ font's space width (typically one-fourth to one-third em for
+ Western scripts). The default for both parameters is 12. Negative
+ values are erroneous. The first argument is a minimum; if an
+ output line undergoes adjustment, such spaces may increase in
+ width. The optional second argument sets the amount of additional
+ space separating sentences on the same output line. If omitted,
+ this amount is set to WORD-SPACE-SIZE. The request is ignored if
+ there are no parameters.
+
+ Additional inter-sentence space is used only if the output line is
+ not full when the end of a sentence occurs in the input. If a
+ sentence ends at the end of an input line, then both an inter-word
+ space and an inter-sentence space are added to the output; if two
+ spaces follow the end of a sentence in the middle of an input line,
+ then the second space becomes an inter-sentence space in the
+ output. Additional inter-sentence space is not adjusted, but the
+ inter-word space that always precedes it may be. Further input
+ spaces after the second, if present, are adjusted as normal.
+
+ The read-only registers '.ss' and '.sss' hold the minimal
+ inter-word space and additional inter-sentence space amounts,
+ respectively. These parameters are part of the environment (*note
+ Environments::), and rounded down to the nearest multiple of 12 on
+ terminals.
+
+ The 'ss' request can insert discardable horizontal space; that is,
+ space that is discarded at a break. For example, some footnote
+ styles collect the notes into a single paragraph with large gaps
+ between each note.
+
+ .ll 48n
+ 1.\~J. Fict. Ch. Soc. 6 (2020), 3\[en]14.
+ .ss 12 48 \" applies to next sentence ending
+ Reprints no longer available through FCS.
+ .ss 12 \" go back to normal
+ 2.\~Better known for other work.
+ => 1. J. Fict. Ch. Soc. 6 (2020), 3-14. Reprints
+ => no longer available through FCS. 2. Better
+ => known for other work.
+
+ If _undiscardable_ space is required, use the '\h' escape sequence.
+
+
+File: groff.info, Node: Manipulating Filling and Adjustment-Footnotes, Up: Manipulating Filling and Adjustment
+
+ (1) unless diverted; see *note Diversions::
+
+ (2) *Note Line Continuation::.
+
+ (3) Recall *note Filling:: and *note Sentences:: for the definitions
+of word and sentence boundaries, respectively.
+
+
+File: groff.info, Node: Manipulating Hyphenation, Next: Manipulating Spacing, Prev: Manipulating Filling and Adjustment, Up: GNU troff Reference
+
+5.10 Manipulating Hyphenation
+=============================
+
+When filling, GNU 'troff' hyphenates words as needed at user-specified
+and automatically determined hyphenation points. The machine-driven
+determination of hyphenation points in words requires algorithms and
+data, and is susceptible to conventions and preferences. Before
+tackling such "automatic hyphenation", let us consider how hyphenation
+points can be set explicitly.
+
+ Explicitly hyphenated words such as "mother-in-law" are eligible for
+breaking after each of their hyphens. Relatively few words in a
+language offer such obvious break points, however, and automatic
+detection of syllabic (or phonetic) boundaries for hyphenation is not
+perfect,(1) (*note Manipulating Hyphenation-Footnote-1::) particularly
+for unusual words found in technical literature. We can instruct GNU
+'troff' how to hyphenate specific words if the need arises.
+
+ -- Request: .hw word ...
+ Define each "hyphenation exception" WORD with each hyphen '-' in
+ the word indicating a hyphenation point. For example, the request
+
+ .hw in-sa-lub-rious alpha
+
+ marks potential hyphenation points in "insalubrious", and prevents
+ "alpha" from being hyphenated at all.
+
+ Besides the space character, any character whose hyphenation code
+ is zero can be used to separate the arguments of 'hw' (see the
+ 'hcode' request below). In addition, this request can be used more
+ than once.
+
+ Hyphenation points specified with 'hw' are not subject to the
+ within-word placement restrictions imposed by the 'hy' request (see
+ below).
+
+ Hyphenation exceptions specified with the 'hw' request are
+ associated with the hyphenation language (see the 'hla' request
+ below) and environment (*note Environments::); invoking the 'hw'
+ request in the absence of a hyphenation language is an error.
+
+ The request is ignored if there are no parameters.
+
+ These are known as hyphenation exceptions in the expectation that
+most users will avail themselves of automatic hyphenation; these
+exceptions override any rules that would normally apply to a word
+matching a hyphenation exception defined with 'hw'.
+
+ Situations also arise when only a specific occurrence of a word needs
+its hyphenation altered or suppressed, or when a URL or similar string
+needs to be breakable in sensible places without hyphenation.
+
+ -- Escape sequence: \%
+ -- Escape sequence: \:
+ To tell GNU 'troff' how to hyphenate words as they occur in input,
+ use the '\%' escape sequence; it is the default "hyphenation
+ character". Each instance within a word indicates to GNU 'troff'
+ that the word may be hyphenated at that point, while prefixing a
+ word with this escape sequence prevents it from being otherwise
+ hyphenated. This mechanism affects only that occurrence of the
+ word; to change the hyphenation of a word for the remainder of
+ input processing, use the 'hw' request.
+
+ GNU 'troff' regards the escape sequences '\X' and '\Y' as starting
+ a word; that is, the '\%' escape sequence in, say,
+ '\X'...'\%foobar' or '\Y'...'\%foobar' no longer prevents
+ hyphenation of 'foobar' but inserts a hyphenation point just prior
+ to it; most likely this isn't what you want. *Note Postprocessor
+ Access::.
+
+ '\:' inserts a non-printing break point; that is, a word can break
+ there, but the soft hyphen glyph (see below) is not written to the
+ output if it does. This escape sequence is an input word boundary,
+ so the remainder of the word is subject to hyphenation as normal.
+
+ You can combine '\:' and '\%' to control breaking of a file name or
+ URL, or to permit hyphenation only after certain explicit hyphens
+ within a word.
+
+ The \%Lethbridge-Stewart-\:\%Sackville-Baggins divorce
+ was, in retrospect, inevitable once the contents of
+ \%/var/log/\:\%httpd/\:\%access_log on the family web
+ server came to light, revealing visitors from Hogwarts.
+
+ -- Request: .hc [char]
+ Change the hyphenation character to CHAR. This character then
+ works as the '\%' escape sequence normally does, and thus no longer
+ appears in the output.(2) (*note Manipulating
+ Hyphenation-Footnote-2::) Without an argument, 'hc' resets the
+ hyphenation character to '\%' (the default). The hyphenation
+ character is associated with the environment (*note
+ Environments::).
+
+ -- Request: .shc [c]
+ Set the "soft hyphen character", inserted when a word is hyphenated
+ automatically or at a hyphenation character, to the ordinary or
+ special character C.(3) (*note Manipulating
+ Hyphenation-Footnote-3::) If the argument is omitted, the soft
+ hyphen character is set to the default, '\[hy]'. If no glyph for C
+ exists in the font in use at a potential hyphenation point, then
+ the line is not broken there. Neither character definitions
+ (specified with the 'char' and similar requests) nor translations
+ (specified with the 'tr' request) are applied to C.
+
+ Several requests influence automatic hyphenation. Because
+conventions vary, a variety of hyphenation modes is available to the
+'hy' request; these determine whether hyphenation will apply to a word
+prior to breaking a line at the end of a page (more or less; see below
+for details), and at which positions within that word automatically
+determined hyphenation points are permissible. The places within a word
+that are eligible for hyphenation are determined by language-specific
+data and lettercase relationships. Furthermore, hyphenation of a word
+might be suppressed due to a limit on consecutive hyphenated lines
+('hlm'), a minimum line length threshold ('hym'), or because the line
+can instead be adjusted with additional inter-word space ('hys').
+
+ -- Request: .hy [mode]
+ -- Register: \n[.hy]
+ Set automatic hyphenation mode to MODE, an integer encoding
+ conditions for hyphenation; if omitted, '1' is implied. The
+ hyphenation mode is available in the read-only register '.hy'; it
+ is associated with the environment (*note Environments::). The
+ default hyphenation mode depends on the localization file loaded
+ when GNU 'troff' starts up; see the 'hpf' request below.
+
+ Typesetting practice generally does not avail itself of every
+ opportunity for hyphenation, but the details differ by language and
+ site mandates. The hyphenation modes of AT&T 'troff' were
+ implemented with English-language publishing practices of the 1970s
+ in mind, not a scrupulous enumeration of conceivable parameters.
+ GNU 'troff' extends those modes such that finer-grained control is
+ possible, favoring compatibility with older implementations over a
+ more intuitive arrangement. The means of hyphenation mode control
+ is a set of numbers that can be added up to encode the behavior
+ sought.(4) (*note Manipulating Hyphenation-Footnote-4::) The
+ entries in the following table are termed "values"; the sum of the
+ desired values is the "mode".
+
+ '0'
+ disables hyphenation.
+
+ '1'
+ enables hyphenation except after the first and before the last
+ character of a word.
+
+ The remaining values "imply" 1; that is, they enable hyphenation
+ under the same conditions as '.hy 1', and then apply or lift
+ restrictions relative to that basis.
+
+ '2'
+ disables hyphenation of the last word on a page,(5) (*note
+ Manipulating Hyphenation-Footnote-5::) even for explicitly
+ hyphenated words.
+
+ '4'
+ disables hyphenation before the last two characters of a word.
+
+ '8'
+ disables hyphenation after the first two characters of a word.
+
+ '16'
+ enables hyphenation before the last character of a word.
+
+ '32'
+ enables hyphenation after the first character of a word.
+
+ Apart from value 2, restrictions imposed by the hyphenation mode
+ are _not_ respected for words whose hyphenations have been
+ specified with the hyphenation character ('\%' by default) or the
+ 'hw' request.
+
+ Nonzero values in the previous table are additive. For example,
+ mode 12 causes GNU 'troff' to hyphenate neither the last two nor
+ the first two characters of a word. Some values cannot be used
+ together because they contradict; for instance, values 4 and 16,
+ and values 8 and 32. As noted, it is superfluous to add 1 to any
+ non-zero even mode.
+
+ The automatic placement of hyphens in words is determined by
+ "pattern files", which are derived from TeX and available for
+ several languages. The number of characters at the beginning of a
+ word after which the first hyphenation point should be inserted is
+ determined by the patterns themselves; it can't be reduced further
+ without introducing additional, invalid hyphenation points
+ (unfortunately, this information is not part of a pattern file--you
+ have to know it in advance). The same is true for the number of
+ characters at the end of a word before the last hyphenation point
+ should be inserted. For example, you can supply the following
+ input to 'echo $(nroff)'.
+
+ .ll 1
+ .hy 48
+ splitting
+
+ You will get
+
+ s- plit- t- in- g
+
+ instead of the correct 'split- ting'. English patterns as
+ distributed with GNU 'troff' need two characters at the beginning
+ and three characters at the end; this means that value 4 of 'hy' is
+ mandatory. Value 8 is possible as an additional restriction, but
+ values 16 and 32 should be avoided, as should mode 1. Modes 4
+ and 6 are typical.
+
+ A table of left and right minimum character counts for hyphenation
+ as needed by the patterns distributed with GNU 'troff' follows; see
+ the 'groff_tmac(5)' man page for more information on GNU 'troff''s
+ language macro files.
+
+ language pattern name left min right min
+ -----------------------------------------------------------
+ Czech cs 2 2
+ English en 2 3
+ French fr 2 3
+ German traditional det 2 2
+ German reformed den 2 2
+ Italian it 2 2
+ Swedish sv 1 2
+
+ Hyphenation exceptions within pattern files (i.e., the words within
+ a TeX '\hyphenation' group) obey the hyphenation restrictions given
+ by 'hy'.
+
+ -- Request: .nh
+ Disable automatic hyphenation; i.e., set the hyphenation mode to 0
+ (see above). The hyphenation mode of the last call to 'hy' is not
+ remembered.
+
+ -- Request: .hpf pattern-file
+ -- Request: .hpfa pattern-file
+ -- Request: .hpfcode a b [c d] ...
+ Read hyphenation patterns from PATTERN-FILE, which is sought in the
+ same way that macro files are with the 'mso' request or the
+ '-mNAME' command-line option to 'groff'. The PATTERN-FILE should
+ have the same format as (simple) TeX pattern files. More
+ specifically, the following scanning rules are implemented.
+
+ * A percent sign starts a comment (up to the end of the line)
+ even if preceded by a backslash.
+
+ * "Digraphs" like '\$' are not supported.
+
+ * '^^XX' (where each X is 0-9 or a-f) and '^^C' (character C in
+ the code point range 0-127 decimal) are recognized; other uses
+ of '^' cause an error.
+
+ * No macro expansion is performed.
+
+ * 'hpf' checks for the expression '\patterns{...}' (possibly
+ with whitespace before or after the braces). Everything
+ between the braces is taken as hyphenation patterns.
+ Consequently, '{' and '}' are not allowed in patterns.
+
+ * Similarly, '\hyphenation{...}' gives a list of hyphenation
+ exceptions.
+
+ * '\endinput' is recognized also.
+
+ * For backward compatibility, if '\patterns' is missing, the
+ whole file is treated as a list of hyphenation patterns
+ (except that the '%' character is recognized as the start of a
+ comment).
+
+ The 'hpfa' request appends a file of patterns to the current list.
+
+ The 'hpfcode' request defines mapping values for character codes in
+ pattern files. It is an older mechanism no longer used by GNU
+ 'troff''s own macro files; for its successor, see 'hcode' below.
+ 'hpf' or 'hpfa' apply the mapping after reading the patterns but
+ before replacing or appending to the active list of patterns. Its
+ arguments are pairs of character codes--integers from 0 to 255.
+ The request maps character code A to code B, code C to code D, and
+ so on. Character codes that would otherwise be invalid in GNU
+ 'troff' can be used. By default, every code maps to itself except
+ those for letters 'A' to 'Z', which map to those for 'a' to 'z'.
+
+ The set of hyphenation patterns is associated with the language set
+ by the 'hla' request (see below). The 'hpf' request is usually
+ invoked by a localization file loaded by the 'troffrc' file.(6)
+ (*note Manipulating Hyphenation-Footnote-6::)
+
+ A second call to 'hpf' (for the same language) replaces the
+ hyphenation patterns with the new ones. Invoking 'hpf' or 'hpfa'
+ causes an error if there is no hyphenation language. If no 'hpf'
+ request is specified (either in the document, in a file loaded at
+ startup, or in a macro package), GNU 'troff' won't automatically
+ hyphenate at all.
+
+ -- Request: .hcode c1 code1 [c2 code2] ...
+ Set the hyphenation code of character C1 to CODE1, that of C2 to
+ CODE2, and so on. A hyphenation code must be an ordinary character
+ (not a special character escape sequence) other than a digit or a
+ space. The request is ignored if given no arguments.
+
+ For hyphenation to work, hyphenation codes must be set up. At
+ startup, GNU 'troff' assigns hyphenation codes to the letters
+ 'a'-'z' (mapped to themselves), to the letters 'A'-'Z' (mapped to
+ 'a'-'z'), and zero to all other characters. Normally, hyphenation
+ patterns contain only lowercase letters which should be applied
+ regardless of case. In other words, they assume that the words
+ 'FOO' and 'Foo' should be hyphenated exactly as 'foo' is. The
+ 'hcode' request extends this principle to letters outside the
+ Unicode basic Latin alphabet; without it, words containing such
+ letters won't be hyphenated properly even if the corresponding
+ hyphenation patterns contain them.
+
+ For example, the following 'hcode' requests are necessary to assign
+ hyphenation codes to the letters 'ÄäÖöÜüß', needed for German.
+
+ .hcode ä ä Ä ä
+ .hcode ö ö Ö ö
+ .hcode ü ü Ü ü
+ .hcode ß ß
+
+ Without these assignments, GNU 'troff' treats the German word
+ 'Kindergärten' (the plural form of 'kindergarten') as two words
+ 'kinderg' and 'rten' because the hyphenation code of the umlaut a
+ is zero by default, just like a space. There is a German
+ hyphenation pattern that covers 'kinder', so GNU 'troff' finds the
+ hyphenation 'kin-der'. The other two hyphenation points
+ ('kin-der-gär-ten') are missed.
+
+ -- Request: .hla lang
+ -- Register: \n[.hla]
+ Set the hyphenation language to LANG. Hyphenation exceptions
+ specified with the 'hw' request and hyphenation patterns and
+ exceptions specified with the 'hpf' and 'hpfa' requests are
+ associated with the hyphenation language. The 'hla' request is
+ usually invoked by a localization file, which is turn loaded by the
+ 'troffrc' or 'troffrc-end' file; see the 'hpf' request above.
+
+ The hyphenation language is available in the read-only
+ string-valued register '.hla'; it is associated with the
+ environment (*note Environments::).
+
+ -- Request: .hlm [n]
+ -- Register: \n[.hlm]
+ -- Register: \n[.hlc]
+ Set the maximum quantity of consecutive hyphenated lines to N. If
+ N is negative, there is no maximum. If omitted, N is -1. This
+ value is associated with the environment (*note Environments::).
+ Only lines output from a given environment count toward the maximum
+ associated with that environment. Hyphens resulting from '\%' are
+ counted; explicit hyphens are not.
+
+ The '.hlm' read-only register stores this maximum. The count of
+ immediately preceding consecutive hyphenated lines is available in
+ the read-only register '.hlc'.
+
+ -- Request: .hym [length]
+ -- Register: \n[.hym]
+ Set the (right) hyphenation margin to LENGTH. If the adjustment
+ mode is not 'b' or 'n', the line is not hyphenated if it is shorter
+ than LENGTH. Without an argument, the hyphenation margin is reset
+ to its default value, 0. The default scaling unit is 'm'. The
+ hyphenation margin is associated with the environment (*note
+ Environments::).
+
+ A negative argument resets the hyphenation margin to zero, emitting
+ a warning in category 'range'.
+
+ The hyphenation margin is available in the '.hym' read-only
+ register.
+
+ -- Request: .hys [hyphenation-space]
+ -- Register: \n[.hys]
+ Suppress hyphenation of the line in adjustment modes 'b' or 'n' if
+ it can be justified by adding no more than HYPHENATION-SPACE extra
+ space to each inter-word space. Without an argument, the
+ hyphenation space adjustment threshold is set to its default value,
+ 0. The default scaling unit is 'm'. The hyphenation space
+ adjustment threshold is associated with the environment (*note
+ Environments::).
+
+ A negative argument resets the hyphenation space adjustment
+ threshold to zero, emitting a warning in category 'range'.
+
+ The hyphenation space adjustment threshold is available in the
+ '.hys' read-only register.
+
+
+File: groff.info, Node: Manipulating Hyphenation-Footnotes, Up: Manipulating Hyphenation
+
+ (1) Whether a perfect algorithm for this application is even possible
+is an unsolved problem in computer science:
+<https://tug.org/docs/liang/liang-thesis.pdf>.
+
+ (2) '\%' itself stops marking hyphenation points but still produces
+no output glyph.
+
+ (3) "Soft" because it appears in output only where a hyphenation
+break is performed; a "hard" hyphen, as in "long-term", always appears.
+
+ (4) The mode is a vector of Booleans encoded as an integer. To a
+programmer, this fact is easily deduced from the exclusive use of powers
+of two for the configuration parameters; they are computationally easy
+to "mask off" and compare to zero. To almost everyone else, the
+arrangement seems recondite and unfriendly.
+
+ (5) Hyphenation is prevented if the next page location trap is closer
+to the vertical drawing position than the next text baseline would be.
+*Note Page Location Traps::.
+
+ (6) For more on localization, see the 'groff_tmac(5)' man page.
+
+
+File: groff.info, Node: Manipulating Spacing, Next: Tabs and Fields, Prev: Manipulating Hyphenation, Up: GNU troff Reference
+
+5.11 Manipulating Spacing
+=========================
+
+A break causes the formatter to update the vertical drawing position at
+which the new text baseline is aligned. You can alter this location.
+
+ -- Request: .sp [distance]
+ Break and move the next text baseline down by DISTANCE, or until
+ springing a page location trap.(1) (*note Manipulating
+ Spacing-Footnote-1::) If invoked with the no-break control
+ character, 'sp' moves the pending output line's text baseline by
+ DISTANCE. A negative DISTANCE will not reduce the position of the
+ text baseline below zero. Inside a diversion, any DISTANCE
+ argument is ignored. The default scaling unit is 'v'. If DISTANCE
+ is not specified, '1v' is assumed.
+
+ .pl 5v \" Set page length to 5 vees.
+ .de xx
+ \-\-\-
+ . br
+ ..
+ .wh 0 xx \" Set a trap at the top of the page.
+ foo on page \n%
+ .sp 2v
+ bar on page \n%
+ .sp 50v \" This will cause a page break.
+ baz on page \n%
+ .pl \n(nlu \" Truncate page to current position.
+ => ---
+ => foo on page 1
+ =>
+ =>
+ => bar on page 1
+ => ---
+ => baz on page 2
+
+ You might use the following macros to set the baseline of the next
+ output text at a given distance from the top or the bottom of the
+ page. We subtract one line height ('\n[.v]') because the '|'
+ operator moves to one vee below the page top (recall *note Numeric
+ Expressions::).
+
+ .de y-from-top-down
+ . sp |\\$1-\\n[.v]u
+ ..
+ .
+ .de y-from-bot-up
+ . sp |\\n[.p]u-\\$1-\\n[.v]u
+ ..
+
+ A call to '.y-from-bot-up 10c' means that the next text baseline
+ will be 10 cm from the bottom edge of the paper.
+
+ -- Request: .ls [count]
+ -- Register: \n[.L]
+ Set the line spacing; add COUNT-1 blank lines after each line of
+ text. With no argument, GNU 'troff' uses the previous value before
+ the last 'ls' call. The default is '1'.
+
+ The read-only register '.L' contains the current line spacing; it
+ is associated with the environment (*note Environments::).
+
+ The 'ls' request is a coarse mechanism. *Note Changing the Type
+Size::, for the requests 'vs' and 'pvs' as alternatives to 'ls'.
+
+ -- Escape sequence: \x'spacing'
+ -- Register: \n[.a]
+ Sometimes, an output line requires additional vertical spacing, for
+ instance to allow room for a tall construct like an inline equation
+ with exponents or subscripts (particularly if they are iterated).
+ The '\x' escape sequence takes a delimited measurement (like
+ '\x'3p'') to increase the vertical spacing of the pending output
+ line. The default scaling unit is 'v'. If the measurement is
+ positive, extra vertical space is inserted below the current line;
+ a negative measurement adds space above. If '\x' is applied to the
+ pending output line multiple times, the maxima of the positive and
+ negative adjustments are separately applied. The delimiter need
+ not be a neutral apostrophe; see *note Delimiters::.
+
+ The '.a' read-only register contains the extra vertical spacing
+ _after_ the text baseline of the most recently emitted output line.
+ (In other words, it is the largest positive argument to '\x'
+ encountered on that line.) This quantity is exposed via a register
+ because if an output line requires this "extra post-vertical line
+ spacing", and the subsequent output line requires "extra
+ pre-vertical line spacing" (a negative argument to '\x'), then
+ applying both can lead to excessive spacing between the output
+ lines. Text that is piling high on line N might not require (as
+ much) extra pre-vertical line spacing if line N-1 carries extra
+ post-vertical line spacing.
+
+ Use of '\x' can be necessary in combination with the
+ bracket-building escape sequence '\b',(2) (*note Manipulating
+ Spacing-Footnote-2::) as the following example shows.
+
+ .nf
+ This is a test of \[rs]b (1).
+ This is a test of \[rs]b (2).
+ This is a test of \b'xyz'\x'-1m'\x'1m' (3).
+ This is a test of \[rs]b (4).
+ This is a test of \[rs]b (5).
+ => This is a test of \b (1).
+ => This is a test of \b (2).
+ => x
+ => This is a test of y (3).
+ => z
+ => This is a test of \b (4).
+ => This is a test of \b (5).
+
+Without '\x', the backslashes on the lines marked '(2)' and '(4)' would
+be overprinted.
+
+ -- Request: .ns
+ -- Request: .rs
+ -- Register: \n[.ns]
+ Enable "no-space mode". Vertical spacing, whether by 'sp' requests
+ or blank input lines, is disabled. The 'bp' request to advance to
+ the next page is also disabled, unless it is accompanied by a page
+ number (*note Page Control::). No-space mode ends automatically
+ when text(3) (*note Manipulating Spacing-Footnote-3::) is formatted
+ for output (4) (*note Manipulating Spacing-Footnote-4::) or the
+ 'rs' request is invoked, which ends no-space mode. The read-only
+ register '.ns' interpolates a Boolean value indicating the
+ enablement of no-space mode.
+
+ A paragraphing macro might ordinarily insert vertical space to
+ separate paragraphs. A section heading macro could invoke 'ns' to
+ suppress this spacing for the first paragraph in a section.
+
+
+File: groff.info, Node: Manipulating Spacing-Footnotes, Up: Manipulating Spacing
+
+ (1) *Note Page Location Traps::.
+
+ (2) *Note Drawing Geometric Objects::.
+
+ (3) or geometric objects; see *note Drawing Geometric Objects::
+
+ (4) to the top-level diversion; see *note Diversions::
+
+
+File: groff.info, Node: Tabs and Fields, Next: Character Translations, Prev: Manipulating Spacing, Up: GNU troff Reference
+
+5.12 Tabs and Fields
+====================
+
+A tab character (ISO code point 9, EBCDIC code point 5) causes a
+horizontal movement to the next tab stop, if any.
+
+ -- Escape sequence: \t
+ Interpolate a tab in copy mode; see *note Copy Mode::.
+
+ -- Request: .ta [[n1 n2 ... nn ]T r1 r2 ... rn]
+ -- Register: \n[.tabs]
+ Change tab stop positions. This request takes a series of tab
+ specifiers as arguments (optionally divided into two groups with
+ the letter 'T') that indicate where each tab stop is to be,
+ overriding any previous settings. The default scaling unit is 'm'.
+ Invoking 'ta' without an argument removes all tab stops. GNU
+ 'troff''s startup value is 'T 0.5i'.
+
+ Tab stops can be specified absolutely--as distances from the left
+ margin. The following example sets six tab stops, one every inch.
+
+ .ta 1i 2i 3i 4i 5i 6i
+
+ Tab stops can also be specified using a leading '+', which means
+ that the specified tab stop is set relative to the previous tab
+ stop. For example, the following is equivalent to the previous
+ example.
+
+ .ta 1i +1i +1i +1i +1i +1i
+
+ GNU 'troff' supports an extended syntax to specify repeating tab
+ stops. These stops appear after a 'T' argument. Their values are
+ always taken as distances relative to the previous tab stop. This
+ is the idiomatic way to specify tab stops at equal intervals in
+ 'groff'. The following is, yet again, the same as the previous
+ examples. It does more, in fact, since it defines an infinite
+ number of tab stops at one-inch intervals.
+
+ .ta T 1i
+
+ Now we are ready to interpret the full syntax given above. The
+ 'ta' request sets tabs at positions N1, N2, ..., NN, then at NN+R1,
+ NN+R2, ..., NN+RN, then at NN+RN+R1, NN+RN+R2, ..., NN+RN+RN, and
+ so on.
+
+ For example, '4c +6c T 3c 5c 2c' is equivalent to '4c 10c 13c 18c
+ 20c 23c 28c 30c ...'.
+
+ Text written to a tab column (i.e., between two tab stops, or
+ between a tab stop and an output line boundary) may be aligned to
+ the right or left, or centered in the column. This alignment is
+ determined by appending 'R', 'L', or 'C' to the tab specifier. The
+ default is 'L'.
+
+ .ta 1i 2iC 3iR
+
+ The beginning of an output line is not a tab stop; the text that
+ begins an output line is placed according to the configured
+ alignment and indentation; see *note Manipulating Filling and
+ Adjustment:: and *note Line Layout::.
+
+ A tab stop is converted into a non-breakable horizontal movement
+ that cannot be adjusted.
+
+ .ll 2i
+ .ds foo a\tb\tc
+ .ta T 1i
+ \*[foo]
+ error-> warning: cannot break line
+ => a b c
+
+ The above creates a single output line that is a bit longer than
+ two inches (we use a string to show exactly where the tab stops
+ are). Now consider the following.
+
+ .ll 2i
+ .ds bar a\tb c\td
+ .ta T 1i
+ \*[bar]
+ error-> warning: cannot adjust line
+ => a b
+ => c d
+
+ GNU 'troff' first converts the line's tab stops into unbreakable
+ horizontal movements, then breaks after 'b'. This usually isn't
+ what you want.
+
+ Superfluous tab characters--those that do not correspond to a tab
+ stop--are ignored except for the first, which delimits the
+ characters belonging to the last tab stop for right-alignment or
+ centering.
+
+ .ds Z foo\tbar\tbaz
+ .ds ZZ foo\tbar\tbazqux
+ .ds ZZZ foo\tbar\tbaz\tqux
+ .ta 2i 4iR
+ \*[Z]
+ .br
+ \*[ZZ]
+ .br
+ \*[ZZZ]
+ .br
+ => foo bar baz
+ => foo bar bazqux
+ => foo bar bazqux
+
+ The first line right-aligns "baz" within the second tab stop. The
+ second line right-aligns "bazqux" within it. The third line
+ right-aligns only "baz" because of the additional tab character,
+ which marks the end of the text occupying the last tab stop
+ defined.
+
+ Tab stops are associated with the environment (*note
+ Environments::).
+
+ The read-only register '.tabs' contains a string representation of
+ the current tab settings suitable for use as an argument to the
+ 'ta' request.(1) (*note Tabs and Fields-Footnote-1::)
+
+ .ds tab-string \n[.tabs]
+ \*[tab-string]
+ => T120u
+
+ -- Request: .tc [c]
+ Set the tab repetition character to the ordinary or special
+ character C; normally, no glyph is written when moving to a tab
+ stop (and some output devices may output space characters to
+ achieve this motion). A "tab repetition character" causes the
+ formatter to write as many instances of C as are necessary to
+ occupy the interval from the horizontal drawing position to the
+ next tab stop. With no argument, GNU 'troff' reverts to the
+ default behavior. The tab repetition character is associated with
+ the environment (*note Environments::). Only a single character of
+ C is recognized; any excess is ignored.
+
+ -- Request: .linetabs n
+ -- Register: \n[.linetabs]
+ If N is missing or non-zero, activate "line-tabs"; deactivate it
+ otherwise (the default). Active line-tabs cause GNU 'troff' to
+ compute tab distances relative to the start of the output line
+ instead of the input line.
+
+ .de Tabs
+ . ds x a\t\c
+ . ds y b\t\c
+ . ds z c
+ . ta 1i 3i
+ \\*x
+ \\*y
+ \\*z
+ ..
+ .Tabs
+ .br
+ .linetabs
+ .Tabs
+ => a b c
+ => a b c
+
+ Line-tabs activation is associated with the environment (*note
+ Environments::). The read-only register '.linetabs' interpolates 1
+ if line-tabs are active, and 0 otherwise.
+
+* Menu:
+
+* Leaders::
+* Fields::
+
+
+File: groff.info, Node: Tabs and Fields-Footnotes, Up: Tabs and Fields
+
+ (1) Plan 9 'troff' uses the register '.S' for this purpose.
+
+
+File: groff.info, Node: Leaders, Next: Fields, Prev: Tabs and Fields, Up: Tabs and Fields
+
+5.12.1 Leaders
+--------------
+
+Sometimes it is desirable to fill a tab stop with a given glyph, but
+also use tab stops normally on the same output line. An example is a
+table of contents entry that uses dots to bridge the entry name with its
+page number, which is itself aligned between tab stops. The 'roff'
+language provides "leaders" for this purpose.(1) (*note
+Leaders-Footnote-1::)
+
+ A leader character (ISO and EBCDIC code point 1, also known as SOH or
+"start of heading"), behaves similarly to a tab character: it moves to
+the next tab stop. The difference is that for this movement, the
+default fill character is a period '.'.
+
+ -- Escape sequence: \a
+ Interpolate a leader in copy mode; see *note Copy Mode::.
+
+ -- Request: .lc [c]
+ Set the leader repetition character to the ordinary or special
+ character C. Recall *note Tabs and Leaders::: when encountering a
+ leader character in the input, the formatter writes as many dots
+ '.' as are necessary until reaching the next tab stop; this is the
+ "leader definition character". Omitting C unsets the leader
+ character. With no argument, GNU 'troff' treats leaders the same
+ as tabs. The leader repetition character is associated with the
+ environment (*note Environments::). Only a single C is recognized;
+ any excess is ignored.
+
+ A table of contents, for example, may define tab stops after a
+section number, a title, and a gap to be filled with leader dots. The
+page number follows the leader, after a right-aligned final tab stop
+wide enough to house the largest page number occurring in the document.
+
+ .ds entry1 19.\tThe Prophet\a\t98
+ .ds entry2 20.\tAll Astir\a\t101
+ .ta .5i 4.5i +.5iR
+ .nf
+ \*[entry1]
+ \*[entry2]
+ => 19. The Prophet............................. 98
+ => 20. All Astir............................... 101
+
+
+File: groff.info, Node: Leaders-Footnotes, Up: Leaders
+
+ (1) This is pronounced to rhyme with "feeder", and refers to how the
+glyphs "lead" the eye across the page to the corresponding page number
+or other datum.
+
+
+File: groff.info, Node: Fields, Prev: Leaders, Up: Tabs and Fields
+
+5.12.2 Fields
+-------------
+
+"Fields" are a more general way of laying out tabular data. A field is
+defined as the data between a pair of "delimiting characters". It
+contains substrings that are separated by "padding characters". The
+width of a field is the distance on the _input_ line from the position
+where the field starts to the next tab stop. A padding character
+inserts an adjustable space similar to TeX's '\hss' command (thus it can
+even be negative) to make the sum of all substring lengths plus the
+adjustable space equal to the field width. If more than one padding
+character is inserted, the available space is evenly distributed among
+them.
+
+ -- Request: .fc [delim-char [padding-char]]
+ Define a delimiting and a padding character for fields. If the
+ latter is missing, the padding character defaults to a space
+ character. If there is no argument at all, the field mechanism is
+ disabled (which is the default). In contrast to, e.g., the tab
+ repetition character, delimiting and padding characters are _not_
+ associated with the environment (*note Environments::).
+
+ .fc # ^
+ .ta T 3i
+ #foo^bar^smurf#
+ .br
+ #foo^^bar^smurf#
+ => foo bar smurf
+ => foo bar smurf
+
+
+File: groff.info, Node: Character Translations, Next: troff and nroff Modes, Prev: Tabs and Fields, Up: GNU troff Reference
+
+5.13 Character Translations
+===========================
+
+A "translation" is a mapping of an input character to an output glyph.
+The mapping occurs at output time, i.e., the input character gets
+assigned the metric information of the mapped output character right
+before input tokens are converted to nodes (*note Gtroff Internals::,
+for more on this process).
+
+ -- Request: .tr abcd...
+ -- Request: .trin abcd...
+ Translate character A to glyph B, character C to glyph D, and so
+ on. If there is an odd number of characters in the argument, the
+ last one is translated to a fixed-width space (the same one
+ obtained by the '\<SP>' escape sequence).
+
+ The 'trin' request is identical to 'tr', but when you unformat a
+ diversion with 'asciify' it ignores the translation. *Note
+ Diversions::, for details about the 'asciify' request.
+
+ Some notes:
+
+ * Special characters ('\(XX', '\[XXX]', '\C'XXX'', '\'', '\`',
+ '\-', '\_'), glyphs defined with the 'char' request, and
+ numbered glyphs ('\N'XXX'') can be translated also.
+
+ * The '\e' escape can be translated also.
+
+ * Characters can be mapped onto the '\%' and '\~' escape
+ sequences (but '\%' and '\~' can't be mapped onto another
+ glyph).
+
+ * The following characters can't be translated: space (with one
+ exception, see below), backspace, newline, leader (and '\a'),
+ tab (and '\t').
+
+ * Translations are not considered for finding the soft hyphen
+ character set with the 'shc' request.
+
+ * The pair 'C\&' (an arbitrary character C followed by the dummy
+ character) maps this character to "nothing".
+
+ .tr a\&
+ foo bar
+ => foo br
+
+ Even the space character can be mapped to the dummy character.
+
+ .tr aa \&
+ foo bar
+ => foobar
+
+ As shown in the example, the space character can't be the
+ first character/glyph pair as an argument of 'tr'.
+ Additionally, it is not possible to map the space character to
+ any other glyph; requests like '.tr aa x' undo '.tr aa \&'
+ instead.
+
+ If justification is active, lines are justified in spite of
+ the 'empty' space character (but there is no minimal distance,
+ i.e., the space character, between words).
+
+ * After an output glyph has been constructed (this happens at
+ the moment immediately before the glyph is appended to an
+ output glyph list, either by direct output, in a macro,
+ diversion, or string), it is no longer affected by 'tr'.
+
+ * Translating character to glyphs where one of them or both are
+ undefined is possible also; 'tr' does not check whether the
+ elements of its argument exist.
+
+ *Note Gtroff Internals::.
+
+ * Without an argument, the 'tr' request is ignored.
+
+ -- Request: .trnt abcd...
+ 'trnt' is the same as the 'tr' request except that the translations
+ do not apply to text that is transparently throughput into a
+ diversion with '\!'. *Note Diversions::.
+
+ For example,
+
+ .tr ab
+ .di x
+ \!.tm a
+ .di
+ .x
+
+ prints 'b' to the standard error stream; if 'trnt' is used instead
+ of 'tr' it prints 'a'.
+
+
+File: groff.info, Node: troff and nroff Modes, Next: Line Layout, Prev: Character Translations, Up: GNU troff Reference
+
+5.14 'troff' and 'nroff' Modes
+==============================
+
+Historically, 'nroff' and 'troff' were two separate programs; the former
+for terminal output, the latter for typesetters. GNU 'troff' merges
+both functions into one executable(1) (*note troff and nroff
+Modes-Footnote-1::) that sends its output to a device driver ('grotty'
+for terminal devices, 'grops' for PostScript, and so on) which
+interprets this intermediate output format. When discussing AT&T
+'troff', it makes sense to talk about "'nroff' mode" and "'troff' mode"
+since the differences are hard-coded. GNU 'troff' takes information
+from device and font description files without handling requests
+specially if a terminal output device is used, so such a strong
+distinction is unnecessary.
+
+ Usually, a macro package can be used with all output devices.
+Nevertheless, it is sometimes necessary to make a distinction between
+terminal and non-terminal devices: GNU 'troff' provides two built-in
+conditions 'n' and 't' for the 'if', 'ie', and 'while' requests to
+decide whether GNU 'troff' shall behave like 'nroff' or like 'troff'.
+
+ -- Request: .troff
+ Make the 't' built-in condition true (and the 'n' built-in
+ condition false) for 'if', 'ie', and 'while' conditional requests.
+ This is the default if GNU 'troff' (_not_ 'groff') is started with
+ the '-R' switch to avoid loading of the startup files 'troffrc' and
+ 'troffrc-end'. Without '-R', GNU 'troff' stays in 'troff' mode if
+ the output device is not a terminal (e.g., 'ps').
+
+ -- Request: .nroff
+ Make the 'n' built-in condition true (and the 't' built-in
+ condition false) for 'if', 'ie', and 'while' conditional requests.
+ This is the default if GNU 'troff' uses a terminal output device;
+ the code for switching to 'nroff' mode is in the file 'tty.tmac',
+ which is loaded by the startup file 'troffrc'.
+
+ *Note Conditionals and Loops::, for more details on built-in
+conditions.
+
+
+File: groff.info, Node: troff and nroff Modes-Footnotes, Up: troff and nroff Modes
+
+ (1) A GNU 'nroff' program is available for convenience; it calls GNU
+'troff' to perform the formatting.
+
+
+File: groff.info, Node: Line Layout, Next: Line Continuation, Prev: troff and nroff Modes, Up: GNU troff Reference
+
+5.15 Line Layout
+================
+
+The following drawing shows the dimensions that 'gtroff' uses for
+placing a line of output onto the page. They are labeled with the
+request that manipulates each dimension.
+
+ -->| in |<--
+ |<-----------ll------------>|
+ +----+----+----------------------+----+
+ | : : : |
+ +----+----+----------------------+----+
+ -->| po |<--
+ |<--------paper width---------------->|
+
+These dimensions are:
+
+'po'
+ "Page offset"--this is the leftmost position of text on the final
+ output, defining the "left margin".
+
+'in'
+ "Indentation"--this is the distance from the left margin where text
+ is printed.
+
+'ll'
+ "Line length"--this is the distance from the left margin to right
+ margin.
+
+ The right margin is not explicitly configured; the combination of
+page offset and line length provides the information necessary to derive
+it.
+
+ A simple demonstration:
+
+ .ll 3i
+ This is text without indentation.
+ The line length has been set to 3\~inches.
+ .in +.5i
+ .ll -.5i
+ Now the left and right margins are both increased.
+ .in
+ .ll
+ Calling .in and .ll without parameters restores
+ the previous values.
+
+ => This is text without indenta-
+ => tion. The line length has
+ => been set to 3 inches.
+ => Now the left and
+ => right margins are
+ => both increased.
+ => Calling .in and .ll without
+ => parameters restores the previ-
+ => ous values.
+
+ -- Request: .po [offset]
+ -- Request: .po +offset
+ -- Request: .po -offset
+ -- Register: \n[.o]
+ Set page offset to OFFSET (or increment or decrement its current
+ value by OFFSET). If invoked without an argument, the page offset
+ is restored to the value before the previous 'po' request. This
+ request does not cause a break; the page offset in effect when an
+ output line is broken prevails (*note Manipulating Filling and
+ Adjustment::). The initial value is 1i and the default scaling
+ unit is 'm'. On terminal devices, the page offset is set to zero
+ by a driver-specific macro file, 'tty.tmac'. The current page
+ offset can be found in the read-only register '.o'. This request
+ is incorrectly documented in the AT&T 'troff' manual as using a
+ default scaling unit of 'v'.
+
+ .po 3i
+ \n[.o]
+ => 720
+ .po -1i
+ \n[.o]
+ => 480
+ .po
+ \n[.o]
+ => 720
+
+ -- Request: .in [indent]
+ -- Request: .in +indent
+ -- Request: .in -indent
+ -- Register: \n[.i]
+ Set indentation to INDENT (or increment or decrement the current
+ value by INDENT). This request causes a break. Initially, there
+ is no indentation.
+
+ If 'in' is called without an argument, the indentation is reset to
+ the previous value before the last call to 'in'. The default
+ scaling unit is 'm'.
+
+ If a negative indentation value is specified (which is not
+ allowed), 'gtroff' emits a warning in category 'range' and sets the
+ indentation to zero.
+
+ The effect of 'in' is delayed until a partially collected line (if
+ it exists) is output. A temporary indentation value is reset to
+ zero also.
+
+ The current indentation (as set by 'in') can be found in the
+ read-only register '.i'. The indentation is associated with the
+ environment (*note Environments::).
+
+ -- Request: .ti offset
+ -- Request: .ti +offset
+ -- Request: .ti -offset
+ -- Register: \n[.in]
+ Temporarily indent the next output line by OFFSET. If an increment
+ or decrement value is specified, adjust the temporary indentation
+ relative to the value set by the 'in' request.
+
+ This request causes a break; its value is associated with the
+ environment (*note Environments::). The default scaling unit is
+ 'm'. A call of 'ti' without an argument is ignored.
+
+ If the total indentation value is negative (which is not allowed),
+ 'gtroff' emits a warning in category 'range' and sets the temporary
+ indentation to zero. 'Total indentation' is either OFFSET if
+ specified as an absolute value, or the temporary plus normal
+ indentation, if OFFSET is given as a relative value.
+
+ The effect of 'ti' is delayed until a partially collected line (if
+ it exists) is output.
+
+ The read-only register '.in' is the indentation that applies to the
+ current output line.
+
+ The difference between '.i' and '.in' is that the latter takes into
+ account whether a partially collected line still uses the old
+ indentation value or a temporary indentation value is active.
+
+ -- Request: .ll [length]
+ -- Request: .ll +length
+ -- Request: .ll -length
+ -- Register: \n[.l]
+ -- Register: \n[.ll]
+ Set the line length to LENGTH (or increment or decrement the
+ current value by LENGTH). Initially, the line length is set to
+ 6.5i. The effect of 'll' is delayed until a partially collected
+ line (if it exists) is output. The default scaling unit is 'm'.
+
+ If 'll' is called without an argument, the line length is reset to
+ the previous value before the last call to 'll'. If a negative
+ line length is specified (which is not allowed), 'gtroff' emits a
+ warning in category 'range' and sets the line length to zero. The
+ line length is associated with the environment (*note
+ Environments::).
+
+ The current line length (as set by 'll') can be found in the
+ read-only register '.l'. The read-only register '.ll' is the line
+ length that applies to the current output line.
+
+ Similar to '.i' and '.in', the difference between '.l' and '.ll' is
+ that the latter takes into account whether a partially collected
+ line still uses the old line length value.
+
+
+File: groff.info, Node: Line Continuation, Next: Page Layout, Prev: Line Layout, Up: GNU troff Reference
+
+5.16 Line Continuation
+======================
+
+When filling is enabled, input and output line breaks generally do not
+correspond. The 'roff' language therefore distinguishes input and
+output line continuation.
+
+ -- Escape sequence: \<RET>
+ '\<RET>' (a backslash immediately followed by a newline) suppresses
+ the effects of that newline in the input. The next input line thus
+ retains the classification of its predecessor as a control or text
+ line. '\<RET>' is useful for managing line lengths in the input
+ during document maintenance; you can break an input line in the
+ middle of a request invocation, macro call, or escape sequence.
+ Input line continuation is invisible to the formatter, with two
+ exceptions: the '|' operator recognizes the new input line (*note
+ Numeric Expressions::), and the input line counter register '.c' is
+ incremented.
+
+ .ll 50n
+ .de I
+ . ft I
+ . nop \\$*
+ . ft
+ ..
+ Our film class watched
+ .I The Effect of Gamma Rays on Man-in-the-Moon
+ Marigolds. \" whoops, the input line wrapped
+ .br
+ .I My own opus begins on line \n[.c] \
+ and ends on line \n[.c].
+ => Our film class watched The Effect of Gamma Rays on
+ => Man-in-the-Moon Marigolds.
+ => My own opus begins on line 11 and ends on line 12.
+
+ -- Escape sequence: \c
+ -- Register: \n[.int]
+ '\c' continues an output line. Nothing after it on the input line
+ is formatted. In contrast to '\<RET>', a line after '\c' remains a
+ new input line, so a control character is recognized at its
+ beginning. The visual results depend on whether filling is
+ enabled; see *note Manipulating Filling and Adjustment::.
+
+ * If filling is enabled, a word interrupted with '\c' is
+ continued with the text on the next input text line, without
+ an intervening space.
+
+ This is a te\c
+ st.
+ => This is a test.
+
+ * If filling is disabled, the next input text line after '\c' is
+ handled as a continuation of the same input text line.
+
+ .nf
+ This is a \c
+ test.
+ => This is a test.
+
+ An intervening control line that causes a break overrides '\c',
+ flushing out the pending output line in the usual way.
+
+ The '.int' register contains a positive value if the last output
+ line was continued with '\c'; this datum is associated with the
+ environment (*note Environments::).(1) (*note Line
+ Continuation-Footnote-1::)
+
+
+File: groff.info, Node: Line Continuation-Footnotes, Up: Line Continuation
+
+ (1) Historically, the '\c' escape sequence has proven challenging to
+characterize. Some sources say it "connects the next input text" (to
+the input line on which it appears); others describe it as
+"interrupting" text, on the grounds that a text line is interrupted
+without breaking, perhaps to inject a request invocation or macro call.
+
+
+File: groff.info, Node: Page Layout, Next: Page Control, Prev: Line Continuation, Up: GNU troff Reference
+
+5.17 Page Layout
+================
+
+The formatter permits configuration of the page length and page number.
+
+ -- Request: .pl [length]
+ -- Request: .pl +length
+ -- Request: .pl -length
+ -- Register: \n[.p]
+ Change (increase or decrease) the page length per the numeric
+ expression LENGTH. The default scaling unit is 'v'. A negative
+ LENGTH is valid, but an uncommon application: it prevents page
+ location traps from being sprung,(1) (*note Page
+ Layout-Footnote-1::) and each output line is placed on a new page.
+ If LENGTH is invalid, GNU 'troff' emits a warning in category
+ 'number'. If LENGTH is absent or invalid, '11i' is assumed.
+
+ The read-only register '.p' interpolates the current page length.
+
+ -- Request: .pn num
+ -- Request: .pn +num
+ -- Request: .pn -num
+ -- Register: \n[.pn]
+ Change (increase or decrease) the page number of the _next_ page
+ per the numeric expression NUM. If NUM is invalid, GNU 'troff'
+ emits a warning in category 'number' and ignores the request.
+ Without an argument, 'pn' is ignored.
+
+ The read-only register '.pn' interpolates NUM if set by 'pn' on the
+ current page, or the current page number plus 1.
+
+ The formatter offers special support for typesetting headers and
+footers, collectively termed "titles". Titles have an independent line
+length, and their placement on the page is not restricted.
+
+ -- Request: .tl 'left'center'right'
+ Format an output line as a title consisting of LEFT, CENTER, and
+ RIGHT, each aligned accordingly. The delimiter need not be a
+ neutral apostrophe: 'tl' accepts the same delimiters as most escape
+ sequences; see *note Delimiters::. If not used as the delimiter,
+ any "page number character" character is replaced with the current
+ page number; the default is '%'; see the the 'pc' request below.
+ Without an argument, 'tl' is ignored. 'tl' writes the title line
+ immediately, ignoring any partially collected line.
+
+ It is not an error to omit delimiters after the first. For
+ example, '.tl /Thesis' is interpreted as '.tl /Thesis///': it sets
+ a title line comprising only the left-aligned word 'Thesis'.
+
+ -- Request: .lt [length]
+ -- Request: .lt +length
+ -- Request: .lt -length
+ -- Register: \n[.lt]
+ Change (increase or decrease) the line length used by titles per
+ the numeric expression LENGTH. The default scaling unit is 'm'.
+ If LENGTH is negative, GNU emits a warning in category 'range' and
+ treats LENGTH as '0'. If LENGTH is invalid, GNU 'troff' emits a
+ warning in category 'number' and ignores the request. The
+ formatter's default title length is '6.5i'. With no argument, the
+ title length is restored to the previous value. The title length
+ is is associated with the environment (*note Environments::).
+
+ The read-only register '.lt' interpolates the title line length.
+
+ -- Request: .pc [char]
+ Set the page number character to CHAR. With no argument, the page
+ number character is disabled. 'pc' does not affect the
+ register '%'.
+
+ The following example exercises title features.
+
+ .lt 50n
+ This is my partially collected
+ .tl 'Isomers 2023'%'Dextrose Edition'
+ line.
+ => Isomers 2023 1 Dextrose Edition
+ => This is my partially collected line.
+
+ We most often see titles used in page header and footer traps. *Note
+Traps::.
+
+
+File: groff.info, Node: Page Layout-Footnotes, Up: Page Layout
+
+ (1) *Note Traps::.
+
+
+File: groff.info, Node: Page Control, Next: Using Fonts, Prev: Page Layout, Up: GNU troff Reference
+
+5.18 Page Control
+=================
+
+Discretionary page breaks can prevent the unwanted separation of
+content. A new page number takes effect during page ejection; see *note
+The Implicit Page Trap::.
+
+ -- Request: .bp [page-number]
+ -- Request: .bp +page-number
+ -- Request: .bp -page-number
+ -- Register: \n[%]
+ Break the page and change (increase or decrease) the next page
+ number per the numeric expression PAGE-NUMBER. If PAGE-NUMBER is
+ invalid, GNU 'troff' emits a warning in category 'number' and
+ ignores the argument. This request causes a break. A page break
+ advances the vertical drawing position to the bottom of the page,
+ springing traps. *Note Page Location Traps::. 'bp' has effect
+ only if invoked within the top-level diversion.(1) (*note Page
+ Control-Footnote-1::) This request is incorrectly documented in the
+ AT&T 'troff' manual as having a default scaling unit of 'v'.
+
+ The register '%' interpolates the current page number.
+
+ .de BP
+ ' bp \" schedule page break once current line is output
+ ..
+
+ -- Request: .ne [space]
+ Force a page break if insufficient vertical space is available
+ (assert "needed" space). 'ne' tests the distance to the next page
+ location trap; see *note Page Location Traps::, and breaks the page
+ if that amount is less than SPACE. The default scaling unit is
+ 'v'. If SPACE is invalid, GNU 'troff' emits a warning in category
+ 'number' and ignores the argument. If SPACE is not specified, '1v'
+ is assumed.
+
+ We can require space for at least the first two output lines of a
+ paragraph, preventing its first line from being widowed at the page
+ bottom.
+
+ .ne 2v
+ Considering how common illness is,
+ how tremendous the spiritual change that it brings,
+ how astonishing,
+ when the lights of health go down,
+ the undiscovered countries that are then disclosed,
+ what wastes and deserts of the soul a slight attack
+ of influenza brings to view,
+
+ This method is reliable only if no output line is pending when 'ne'
+ is invoked. When macro packages are used, this is often not the
+ case: their paragraphing macros perform the break. You may need to
+ experiment with placing the 'ne' after the paragraphing macro, or
+ 'br' and 'ne' before it.
+
+ 'ne' is also useful to force grouping of section headings with
+ their subsequent paragraphs, or tables with their captions and/or
+ explanations. Macro packages often use 'ne' with diversions to
+ implement keeps and displays; see *note Diversions::. They may
+ also offer parameters for widow and orphan management.
+
+ -- Request: .sv [space]
+ -- Request: .os
+ Require vertical space as 'ne' does, but also save it for later
+ output by the 'os' request. If SPACE is available before the next
+ page location trap, it is output immediately. Both requests ignore
+ a partially collected line, taking effect at the next break. 'sv'
+ and 'os' ignore no-space mode (recall *note Manipulating
+ Spacing::). While the 'sv' request allows negative values for
+ SPACE, 'os' ignores them. The default scaling unit is 'v'. If
+ SPACE is not specified, '1v' is assumed.
+
+ -- Register: \n[nl]
+ 'nl' interpolates or sets the vertical drawing position. When the
+ formatter starts, the first page transition hasn't happened yet,
+ and 'nl' is negative. If a header trap has been planted on the
+ page (typically at vertical position '0'), you can assign a
+ negative value to 'nl' to spring it if that page has already
+ started (*note Page Location Traps::).
+
+ .de HD
+ . sp
+ . tl ''Goldbach Solution''
+ . sp
+ ..
+ .
+ First page.
+ .bp
+ .wh 0 HD \" plant header trap at top of page
+ .nr nl (-1)
+ Second page.
+ => First page.
+ =>
+ => (blank lines elided)
+ =>
+ => Goldbach Solution
+ =>
+ => (blank lines elided)
+ =>
+ => Second page.
+
+ Without resetting 'nl' to a negative value, the trap just planted
+ would be active beginning with the _next_ page, not the current
+ one.
+
+ *Note Diversions::, for a comparison of 'nl' with the '.h' and '.d'
+ registers.
+
+
+File: groff.info, Node: Page Control-Footnotes, Up: Page Control
+
+ (1) *Note Diversions::.
+
+
+File: groff.info, Node: Using Fonts, Next: Manipulating Type Size and Vertical Spacing, Prev: Page Control, Up: GNU troff Reference
+
+5.19 Using Fonts
+================
+
+In digital typography, a "font" is a collection of characters in a
+specific typeface that a device can render as glyphs at a desired
+size.(1) (*note Using Fonts-Footnote-1::) A 'roff' formatter can change
+typefaces at any point in the text. The basic faces are a set of
+"styles" combining upright and slanted shapes with normal and heavy
+stroke weights: 'R', 'I', 'B', and 'BI'--these stand for roman, italic,
+bold, and bold-italic. For linguistic text, GNU 'troff' groups
+typefaces into "families" containing each of these styles.(2) (*note
+Using Fonts-Footnote-2::) A "text font" is thus often a family combined
+with a style, but it need not be: consider the 'ps' and 'pdf' devices'
+'ZCMI' (Zapf Chancery Medium italic)--often, no other style of Zapf
+Chancery Medium is provided. On typesetting devices, at least one
+"special font" is available, comprising "unstyled" glyphs for
+mathematical operators and other purposes.
+
+ Like AT&T 'troff', GNU 'troff' does not itself load or manipulate a
+digital font file;(3) (*note Using Fonts-Footnote-3::) instead it works
+with a "font description file" that characterizes it, including its
+glyph repertoire and the "metrics" (dimensions) of each glyph.(4)
+(*note Using Fonts-Footnote-4::) This information permits the formatter
+to accurately place glyphs with respect to each other. Before using a
+font description, the formatter associates it with a "mounting
+position", a place in an ordered list of available typefaces. So that a
+document need not be strongly coupled to a specific font family, in GNU
+'troff' an output device can associate a style in the abstract sense
+with a mounting position. Thus the default family can be combined with
+a style dynamically, producing a "resolved font name".
+
+ Fonts often have trademarked names, and even Free Software fonts can
+require renaming upon modification. 'groff' maintains a convention that
+a device's serif font family is given the name 'T' ("Times"), its
+sans-serif family 'H' ("Helvetica"), and its monospaced family 'C'
+("Courier"). Historical inertia has driven 'groff''s font identifiers
+to short uppercase abbreviations of font names, as with 'TR', 'TI',
+'TB', 'TBI', and a special font 'S'.
+
+ The default family used with abstract styles can be changed at any
+time; initially, it is 'T'. Typically, abstract styles are arranged in
+the first four mounting positions in the order shown above. The default
+mounting position, and therefore style, is always '1' ('R'). By issuing
+appropriate formatter instructions, you can override these defaults
+before your document writes its first glyph.
+
+ Terminal output devices cannot change font families and lack special
+fonts. They support style changes by overstriking, or by altering
+ISO 6429/ECMA-48 "graphic renditions" (character cell attributes).
+
+* Menu:
+
+* Selecting Fonts::
+* Font Families::
+* Font Positions::
+* Using Symbols::
+* Character Classes::
+* Special Fonts::
+* Artificial Fonts::
+* Ligatures and Kerning::
+* Italic Corrections::
+* Dummy Characters::
+
+
+File: groff.info, Node: Using Fonts-Footnotes, Up: Using Fonts
+
+ (1) Terminals and some output devices have fonts that render at only
+one or two sizes. As examples of the latter, take the 'groff' 'lj4'
+device's Lineprinter, and 'lbp''s Courier and Elite faces.
+
+ (2) Font designers prepare families such that the styles share
+esthetic properties.
+
+ (3) Historically, the fonts 'troff's dealt with were not Free
+Software or, as with the Graphic Systems C/A/T, did not even exist in
+the digital domain.
+
+ (4) *Note Font Description File Format::.
+
diff --git a/doc/groff.info-2 b/doc/groff.info-2
new file mode 100644
index 0000000..44572a0
--- /dev/null
+++ b/doc/groff.info-2
@@ -0,0 +1,7529 @@
+This is groff.info, produced by makeinfo version 7.0.3 from groff.texi.
+
+This manual documents GNU 'troff' version 1.23.0.
+
+ Copyright © 1994-2023 Free Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts, and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+INFO-DIR-SECTION Typesetting
+START-INFO-DIR-ENTRY
+* Groff: (groff). The GNU roff document formatting system.
+END-INFO-DIR-ENTRY
+
+
+File: groff.info, Node: Selecting Fonts, Next: Font Families, Prev: Using Fonts, Up: Using Fonts
+
+5.19.1 Selecting Fonts
+----------------------
+
+We use "font" to refer to any of several means of identifying a font: by
+mounting position ('3'), by abstract style ('B'), or by its identifier
+('TB').
+
+ -- Request: .ft [font]
+ -- Escape sequence: \ff
+ -- Escape sequence: \f(fn
+ -- Escape sequence: \f[font]
+ -- Register: \n[.fn]
+ The 'ft' request selects the typeface FONT. If the argument is
+ absent or 'P', it selects the previously chosen font. If FONT is a
+ non-negative integer, it is interpreted as mounting position; the
+ font mounted there is selected. If that position refers to an
+ abstract style, it is combined with the default family (see 'fam'
+ and '\F' below) to make a resolved font name. If the mounting
+ position is not a style and no font is mounted there, GNU 'troff'
+ emits a warning in category 'font' and ignores the request.
+
+ If FONT matches a style name, it is combined with the current
+ family to make a resolved font name. Otherwise, FONT is assumed to
+ already be a resolved font name.
+
+ The resolved font name is subject to translation (see request 'ftr'
+ below). Next, the (possibly translated) font name's mounting
+ position is looked up; if not mounted, FONT is sought on the file
+ system as a font description file and, if located, automatically
+ mounted at the next available position (see register '.fp' below).
+ If the font was mounted using an identifier different from its font
+ description file name (see request 'fp' below), that file name is
+ then looked up. If a font description file for the resolved font
+ name is not found, GNU 'troff' emits a warning in category 'font'
+ and ignores the request.
+
+ The '\f' escape sequence is similar, using one-character name (or
+ mounting position) F, two-character name FN, or a name FONT of
+ arbitrary length. '\f[]' selects the previous font. The syntax
+ form '\fP' is supported for backward compatibility, and '\f[P]' for
+ consistency.
+
+ eggs, bacon,
+ .ft I
+ spam,
+ .ft
+ and sausage.
+ .br
+ eggs, bacon, \fIspam,\fP and sausage.
+ => eggs, bacon, spam, and sausage
+ => eggs, bacon, spam, and sausage
+
+ The current and previously selected fonts are properties of the
+ environment (*note Environments::).
+
+ The read-only string-valued register '.fn' contains the resolved
+ font name of the selected font.
+
+ '\f' doesn't produce an input token in GNU 'troff'; it thus can be
+ used in requests that expect a single-character argument. We can
+ assign a font to a margin character as follows (*note
+ Miscellaneous::).
+
+ .mc \f[I]x\f[]
+
+ -- Request: .ftr f [g]
+ Translate font F to font G. Whenever a font named F is referred to
+ in a '\f' escape sequence, in the 'F' and 'S' conditional
+ operators, or in the 'ft', 'ul', 'bd', 'cs', 'tkf', 'special',
+ 'fspecial', 'fp', or 'sty' requests, font G is used. If G is
+ missing or equal to F the translation is undone.
+
+ Font translations cannot be chained.
+
+ .ftr XXX TR
+ .ftr XXX YYY
+ .ft XXX
+ error-> warning: can't find font 'XXX'
+
+ -- Request: .fzoom f [zoom]
+ -- Register: \n[.zoom]
+ Set magnification of font F to factor ZOOM, which must be a
+ non-negative integer multiple of 1/1000th. This request is useful
+ to adjust the optical size of a font in relation to the others. In
+ the example below, font 'CR' is magnified by 10% (the zoom factor
+ is thus 1.1).
+
+ .fam P
+ .fzoom CR 1100
+ .ps 12
+ Palatino and \f[CR]Courier\f[]
+
+ A missing or zero value of ZOOM is the same as a value of 1000,
+ which means no magnification. F must be a resolved font name, not
+ an abstract style.
+
+ The magnification of a font is completely transparent to GNU
+ 'troff'; a change of the zoom factor doesn't cause any effect
+ except that the dimensions of glyphs, (word) spaces, kerns, etc.,
+ of the affected font are adjusted accordingly.
+
+ The zoom factor of the current font is available in the read-only
+ register '.zoom', in multiples of 1/1000th. It returns zero if
+ there is no magnification.
+
+
+File: groff.info, Node: Font Families, Next: Font Positions, Prev: Selecting Fonts, Up: Using Fonts
+
+5.19.2 Font Families
+--------------------
+
+To accommodate the wide variety of fonts available, GNU 'troff'
+distinguishes "font families" and "font styles". A resolved font name
+is the catenation of a font family and a style. Selecting an abstract
+style causes GNU 'troff' to combine it with the default font family.
+
+ You can thus compose a document using abstract styles exclusively for
+its body or running text, selecting a specific family only for titles or
+examples, for instance, and change the default family on the command
+line (recall *note Groff Options::).
+
+ Fonts for the devices 'ps', 'pdf', 'dvi', 'lj4', 'lbp', and the X11
+devices support this mechanism. By default, GNU 'troff' uses the Times
+family with the four styles 'R', 'I', 'B', and 'BI'.
+
+ -- Request: .fam [family]
+ -- Register: \n[.fam]
+ -- Escape sequence: \Ff
+ -- Escape sequence: \F(fm
+ -- Escape sequence: \F[family]
+ Set the default font family, used in combination with abstract
+ styles to construct a resolved font name, to FAMILY (one-character
+ name F, two-character name FM). If no argument is given, GNU
+ 'troff' selects the previous font family; if there none, is it
+ falls back to the device's default(1) (*note Font
+ Families-Footnote-1::) or its own ('T').
+
+ The '\F' escape sequence works similarly. In disanalogy to '\f',
+ '\FP' makes 'P' the default family. Use '\F[]' to select the
+ previous default family. The default font family is available in
+ the read-only string-valued register '.fam'; it is associated with
+ the environment (*note Environments::).
+
+ spam, \" startup defaults are T (Times) R (roman)
+ .fam H \" make Helvetica the default family
+ spam, \" family H + style R = HR
+ .ft B \" family H + style B = HB
+ spam,
+ .ft CR \" Courier roman (default family not changed)
+ spam,
+ .ft \" back to Helvetica bold
+ spam,
+ .fam T \" make Times the default family
+ spam, \" family T + style B = TB
+ .ft AR \" font AR (not a style)
+ baked beans,
+ .ft R \" family T + style R = TR
+ and spam.
+
+ '\F' doesn't produce an input token in GNU 'troff'. As a
+ consequence, it can be used in requests like 'mc' (which expects a
+ single character as an argument) to change the font family on the
+ fly.
+
+ .mc \F[P]x\F[]
+
+ -- Request: .sty n style
+ -- Register: \n[.sty]
+ Associate an abstract style STYLE with mounting position N, which
+ must be a non-negative integer. If the requests 'cs', 'bd', 'tkf',
+ 'uf', or 'fspecial' are applied to an abstract style, they are
+ instead applied to the member of the current family corresponding
+ to that style.
+
+ The default family can be set with the '-f' option (*note Groff
+ Options::). The 'styles' command in the 'DESC' file controls which
+ font positions (if any) are initially associated with abstract
+ styles rather than fonts.
+
+ *Caution:* The STYLE argument is not validated. Errors may occur
+ later, when the formatter attempts to construct a resolved font
+ name, or format a character for output.
+
+ .nr BarPos \n[.fp]
+ .sty \n[.fp] Bar
+ .fam Foo
+ .ft \n[BarPos]
+ .tm .f=\n[.f]
+ A
+ error-> error: no font family named 'Foo' exists
+ error-> .f=41
+ error-> error: cannot format glyph: no current font
+
+ When an abstract style has been selected, the read-only
+ string-valued register '.sty' interpolates its name; this datum is
+ associated with the environment (*note Environments::). Otherwise,
+ '.sty' interpolates nothing.
+
+
+File: groff.info, Node: Font Families-Footnotes, Up: Font Families
+
+ (1) *Note DESC File Format::.
+
+
+File: groff.info, Node: Font Positions, Next: Using Symbols, Prev: Font Families, Up: Using Fonts
+
+5.19.3 Font Positions
+---------------------
+
+To support typeface indirection through abstract styles, and for
+compatibility with AT&T 'troff', the formatter maintains a list of font
+"positions" at which fonts required by a document are "mounted". An
+output device's description file 'DESC' typically configures a set of
+pre-mounted fonts; see *note Device and Font Description Files::. A
+font need not be explicitly mounted before it is selected; GNU 'troff'
+will search 'GROFF_FONT_PATH' for it by name and mount it at the first
+free mounting position on demand.
+
+ -- Request: .fp pos id [font-description-file-name]
+ -- Register: \n[.f]
+ -- Register: \n[.fp]
+ Mount a font under the name ID at mounting position POS, a
+ non-negative integer. When the formatter starts up, it reads the
+ output device's description to mount an initial set of faces, and
+ selects font position 1. Position 0 is unused by default. Unless
+ the FONT-DESCRIPTION-FILE-NAME argument is given, ID should be the
+ name of a font description file stored in a directory corresponding
+ to the selected output device. GNU 'troff' does not traverse
+ directories to locate the font description file.
+
+ The optional third argument enables font names to be aliased, which
+ can be necessary in compatibility mode since AT&T 'troff' syntax
+ affords no means of identifying fonts with names longer than two
+ characters, like 'TBI' or 'ZCMI', in a font selection escape
+ sequence. *Note Compatibility Mode::. You can also alias fonts on
+ mounting for convenience or abstraction. (See below regarding the
+ '.fp' register.)
+
+ .fp \n[.fp] SC ZCMI
+ Send a \f(SChand-written\fP thank-you note.
+ .fp \n[.fp] Emph TI
+ .fp \n[.fp] Strong TB
+ Are \f[Emph]these names\f[] \f[Strong]comfortable\f[]?
+
+ 'DESC', 'P', and non-negative integers are not usable as font
+ identifiers.
+
+ The position of the currently selected font (or abstract style) is
+ available in the read-only register '.f'. It is associated with
+ the environment (*note Environments::).
+
+ You can copy the value of '.f' to another register to save it for
+ later use.
+
+ .nr saved-font \n[.f]
+ ... text involving many font changes ...
+ .ft \n[saved-font]
+
+ The index of the next (non-zero) free font position is available in
+ the read-only register '.fp'. Fonts not listed in the 'DESC' file
+ are automatically mounted at position '\n[.fp]' when selected with
+ the 'ft' request or '\f' escape sequence. When mounting a font at
+ a position explicitly with the 'fp' request, this same practice
+ should be followed, although GNU 'troff' does not enforce this
+ strictly.
+
+
+File: groff.info, Node: Using Symbols, Next: Character Classes, Prev: Font Positions, Up: Using Fonts
+
+5.19.4 Using Symbols
+--------------------
+
+A "glyph" is a graphical representation of a "character". While a
+character is an abstraction of semantic information, a glyph is
+something that can be seen on screen or paper. A character has many
+possible representation forms (for example, the character 'A' can be
+written in an upright or slanted typeface, producing distinct glyphs).
+Sometimes, a sequence of characters map to a single glyph: this is a
+"ligature"--the most common is 'fi'.
+
+ Space characters never become glyphs in GNU 'troff'. If not
+discarded (as when trailing on text lines), they are represented by
+horizontal motions in the output.
+
+ A "symbol" is simply a named glyph. Within 'gtroff', all glyph names
+of a particular font are defined in its font file. If the user requests
+a glyph not available in this font, 'gtroff' looks up an ordered list of
+"special fonts". By default, the PostScript output device supports the
+two special fonts 'SS' (slanted symbols) and 'S' (symbols) (the former
+is looked up before the latter). Other output devices use different
+names for special fonts. Fonts mounted with the 'fonts' keyword in the
+'DESC' file are globally available. To install additional special fonts
+locally (i.e., for a particular font), use the 'fspecial' request.
+
+ Here are the exact rules how 'gtroff' searches a given symbol:
+
+ * If the symbol has been defined with the 'char' request, use it.
+ This hides a symbol with the same name in the current font.
+
+ * Check the current font.
+
+ * If the symbol has been defined with the 'fchar' request, use it.
+
+ * Check whether the current font has a font-specific list of special
+ fonts; test all fonts in the order of appearance in the last
+ 'fspecial' call if appropriate.
+
+ * If the symbol has been defined with the 'fschar' request for the
+ current font, use it.
+
+ * Check all fonts in the order of appearance in the last 'special'
+ call.
+
+ * If the symbol has been defined with the 'schar' request, use it.
+
+ * As a last resort, consult all fonts loaded up to now for special
+ fonts and check them, starting with the lowest font number. This
+ can sometimes lead to surprising results since the 'fonts' line in
+ the 'DESC' file often contains empty positions, which are filled
+ later on. For example, consider the following:
+
+ fonts 3 0 0 FOO
+
+ This mounts font 'foo' at font position 3. We assume that 'FOO' is
+ a special font, containing glyph 'foo', and that no font has been
+ loaded yet. The line
+
+ .fspecial BAR BAZ
+
+ makes font 'BAZ' special only if font 'BAR' is active. We further
+ assume that 'BAZ' is really a special font, i.e., the font
+ description file contains the 'special' keyword, and that it also
+ contains glyph 'foo' with a special shape fitting to font 'BAR'.
+ After executing 'fspecial', font 'BAR' is loaded at font
+ position 1, and 'BAZ' at position 2.
+
+ We now switch to a new font 'XXX', trying to access glyph 'foo'
+ that is assumed to be missing. There are neither font-specific
+ special fonts for 'XXX' nor any other fonts made special with the
+ 'special' request, so 'gtroff' starts the search for special fonts
+ in the list of already mounted fonts, with increasing font
+ positions. Consequently, it finds 'BAZ' before 'FOO' even for
+ 'XXX', which is not the intended behaviour.
+
+ *Note Device and Font Description Files::, and *note Special Fonts::,
+for more details.
+
+ The 'groff_char(7)' man page houses a complete list of predefined
+special character names, but the availability of any as a glyph is
+device- and font-dependent. For example, say
+
+ man -Tdvi groff_char > groff_char.dvi
+
+to obtain those available with the DVI device and default font
+configuration.(1) (*note Using Symbols-Footnote-1::) If you want to use
+an additional macro package to change the fonts used, 'groff' (or
+'gtroff') must be run directly.
+
+ groff -Tdvi -mec -man groff_char.7 > groff_char.dvi
+
+ Special character names not listed in 'groff_char(7)' are derived
+algorithmically, using a simplified version of the Adobe Glyph List
+(AGL) algorithm, which is described in
+<https://github.com/adobe-type-tools/agl-aglfn>. The (frozen) set of
+names that can't be derived algorithmically is called the "'groff' glyph
+list (GGL)".
+
+ * A glyph for Unicode character U+XXXX[X[X]], which is not a
+ composite character is named 'uXXXX[X[X]]'. X must be an uppercase
+ hexadecimal digit. Examples: 'u1234', 'u008E', 'u12DB8'. The
+ largest Unicode value is 0x10FFFF. There must be at least four 'X'
+ digits; if necessary, add leading zeroes (after the 'u'). No zero
+ padding is allowed for character codes greater than 0xFFFF.
+ Surrogates (i.e., Unicode values greater than 0xFFFF represented
+ with character codes from the surrogate area U+D800-U+DFFF) are not
+ allowed either.
+
+ * A glyph representing more than a single input character is named
+
+ 'u' COMPONENT1 '_' COMPONENT2 '_' COMPONENT3 ...
+
+ Example: 'u0045_0302_0301'.
+
+ For simplicity, all Unicode characters that are composites must be
+ maximally decomposed to NFD;(2) (*note Using Symbols-Footnote-2::)
+ for example, 'u00CA_0301' is not a valid glyph name since U+00CA
+ (LATIN CAPITAL LETTER E WITH CIRCUMFLEX) can be further decomposed
+ into U+0045 (LATIN CAPITAL LETTER E) and U+0302 (COMBINING
+ CIRCUMFLEX ACCENT). 'u0045_0302_0301' is thus the glyph name for
+ U+1EBE, LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE.
+
+ * groff maintains a table to decompose all algorithmically derived
+ glyph names that are composites itself. For example, 'u0100'
+ (LATIN LETTER A WITH MACRON) is automatically decomposed into
+ 'u0041_0304'. Additionally, a glyph name of the GGL is preferred
+ to an algorithmically derived glyph name; 'groff' also
+ automatically does the mapping. Example: The glyph 'u0045_0302' is
+ mapped to '^E'.
+
+ * glyph names of the GGL can't be used in composite glyph names; for
+ example, '^E_u0301' is invalid.
+
+ -- Escape sequence: \(nm
+ -- Escape sequence: \[name]
+ -- Escape sequence: \[base-glyph combining-component ...]
+ Typeset a special character NAME (two-character name NM) or a
+ composite glyph consisting of BASE-GLYPH overlaid with one or more
+ COMBINING-COMPONENTs. For example, '\[A ho]' is a capital letter
+ "A" with a "hook accent" (ogonek).
+
+ There is no special syntax for one-character names--the analogous
+ form '\N' would collide with other escape sequences. However, the
+ four escape sequences '\'', '\-', '\_', and '\`', are translated on
+ input to the special character escape sequences '\[aa]', '\[-]',
+ '\[ul]', and '\[ga]', respectively.
+
+ A special character name of length one is not the same thing as an
+ ordinary character: that is, the character 'a' is not the same as
+ '\[a]'.
+
+ If NAME is undefined, a warning in category 'char' is produced and
+ the escape is ignored. *Note Warnings::, for information about the
+ enablement and suppression of warnings.
+
+ GNU 'troff' resolves '\[...]' with more than a single component as
+ follows:
+
+ * Any component that is found in the GGL is converted to the
+ 'uXXXX' form.
+
+ * Any component 'uXXXX' that is found in the list of
+ decomposable glyphs is decomposed.
+
+ * The resulting elements are then concatenated with '_' in
+ between, dropping the leading 'u' in all elements but the
+ first.
+
+ No check for the existence of any component (similar to 'tr'
+ request) is done.
+
+ Examples:
+
+ '\[A ho]'
+ 'A' maps to 'u0041', 'ho' maps to 'u02DB', thus the final
+ glyph name would be 'u0041_02DB'. This is not the expected
+ result: the ogonek glyph 'ho' is a spacing ogonek, but for a
+ proper composite a non-spacing ogonek (U+0328) is necessary.
+ Looking into the file 'composite.tmac', one can find
+ '.composite ho u0328', which changes the mapping of 'ho' while
+ a composite glyph name is constructed, causing the final glyph
+ name to be 'u0041_0328'.
+
+ '\[^E u0301]'
+ '\[^E aa]'
+ '\[E a^ aa]'
+ '\[E ^ ']'
+ '^E' maps to 'u0045_0302', thus the final glyph name is
+ 'u0045_0302_0301' in all forms (assuming proper calls of the
+ 'composite' request).
+
+ It is not possible to define glyphs with names like 'A ho' within a
+ 'groff' font file. This is not really a limitation; instead, you
+ have to define 'u0041_0328'.
+
+ -- Escape sequence: \C'xxx'
+ Typeset the glyph of the special character XXX. Normally, it is
+ more convenient to use '\[XXX]', but '\C' has some advantages: it
+ is compatible with AT&T device-independent 'troff' (and therefore
+ available in compatibility mode(3) (*note Using
+ Symbols-Footnote-3::)) and can interpolate special characters with
+ ']' in their names. The delimiter need not be a neutral
+ apostrophe; see *note Delimiters::.
+
+ -- Request: .composite id1 id2
+ Map special character name ID1 to ID2 if ID1 is used in '\[...]'
+ with more than one component. See above for examples. This is a
+ strict rewriting of the special character name; no check is
+ performed for the existence of a glyph for either. A set of
+ default mappings for many accents can be found in the file
+ 'composite.tmac', loaded by the default 'troffrc' at startup.
+
+ -- Escape sequence: \N'n'
+ Typeset the glyph with code N in the current font ('n' is _not_ the
+ input character code). The number N can be any non-negative
+ decimal integer. Most devices only have glyphs with codes between
+ 0 and 255; the Unicode output device uses codes in the range
+ 0-65535. If the current font does not contain a glyph with that
+ code, special fonts are _not_ searched. The '\N' escape sequence
+ can be conveniently used in conjunction with the 'char' request:
+
+ .char \[phone] \f[ZD]\N'37'
+
+ The code of each glyph is given in the fourth column in the font
+ description file after the 'charset' command. It is possible to
+ include unnamed glyphs in the font description file by using a name
+ of '---'; the '\N' escape sequence is the only way to use these.
+
+ No kerning is applied to glyphs accessed with '\N'. The delimiter
+ need not be a neutral apostrophe; see *note Delimiters::.
+
+ A few escape sequences are also special characters.
+
+ -- Escape sequence: \'
+ An escaped neutral apostrophe is a synonym for '\[aa]' (acute
+ accent).
+
+ -- Escape sequence: \`
+ An escaped grave accent is a synonym for '\[ga]' (grave accent).
+
+ -- Escape sequence: \-
+ An escaped hyphen-minus is a synonym for '\[-]' (minus sign).
+
+ -- Escape sequence: \_
+ An escaped underscore ("low line") is a synonym for '\[ul]'
+ (underrule). On typesetting devices, the underrule is
+ font-invariant and drawn lower than the underscore '_'.
+
+ -- Request: .cflags n c1 c2 ...
+ Assign properties encoded by the number N to characters C1, C2, and
+ so on.
+
+ Input characters, including special characters introduced by an
+ escape, have certain properties associated with them.(4) (*note
+ Using Symbols-Footnote-4::) These properties can be modified with
+ this request. The first argument is the sum of the desired flags
+ and the remaining arguments are the characters to be assigned those
+ properties. Spaces between the CN arguments are optional. Any
+ argument CN can be a character class defined with the 'class'
+ request rather than an individual character. *Note Character
+ Classes::.
+
+ The non-negative integer N is the sum of any of the following.
+ Some combinations are nonsensical, such as '33' (1 + 32).
+
+ '1'
+ Recognize the character as ending a sentence if followed by a
+ newline or two spaces. Initially, characters '.?!' have this
+ property.
+
+ '2'
+ Enable breaks before the character. A line is not broken at a
+ character with this property unless the characters on each
+ side both have non-zero hyphenation codes. This exception can
+ be overridden by adding 64. Initially, no characters have
+ this property.
+
+ '4'
+ Enable breaks after the character. A line is not broken at a
+ character with this property unless the characters on each
+ side both have non-zero hyphenation codes. This exception can
+ be overridden by adding 64. Initially, characters
+ '\-\[hy]\[em]' have this property.
+
+ '8'
+ Mark the glyph associated with this character as overlapping
+ other instances of itself horizontally. Initially, characters
+ '\[ul]\[rn]\[ru]\[radicalex]\[sqrtex]' have this property.
+
+ '16'
+ Mark the glyph associated with this character as overlapping
+ other instances of itself vertically. Initially, the
+ character '\[br]' has this property.
+
+ '32'
+ Mark the character as transparent for the purpose of
+ end-of-sentence recognition. In other words, an
+ end-of-sentence character followed by any number of characters
+ with this property is treated as the end of a sentence if
+ followed by a newline or two spaces. This is the same as
+ having a zero space factor in TeX. Initially, characters
+ '"')]*\[dg]\[dd]\[rq]\[cq]' have this property.
+
+ '64'
+ Ignore hyphenation codes of the surrounding characters. Use
+ this in combination with values 2 and 4 (initially, no
+ characters have this property).
+
+ For example, if you need an automatic break point after the
+ en-dash in numeric ranges like "3000-5000", insert
+
+ .cflags 68 \[en]
+
+ into your document. However, this practice can lead to bad
+ layout if done thoughtlessly; in most situations, a better
+ solution instead of changing the 'cflags' value is to insert
+ '\:' right after the hyphen at the places that really need a
+ break point.
+
+ The remaining values were implemented for East Asian language
+ support; those who use alphabetic scripts exclusively can disregard
+ them.
+
+ '128'
+ Prohibit a line break before the character, but allow a line
+ break after the character. This works only in combination
+ with flags 256 and 512 and has no effect otherwise.
+ Initially, no characters have this property.
+
+ '256'
+ Prohibit a line break after the character, but allow a line
+ break before the character. This works only in combination
+ with flags 128 and 512 and has no effect otherwise.
+ Initially, no characters have this property.
+
+ '512'
+ Allow line break before or after the character. This works
+ only in combination with flags 128 and 256 and has no effect
+ otherwise. Initially, no characters have this property.
+
+ In contrast to values 2 and 4, the values 128, 256, and 512 work
+ pairwise. If, for example, the left character has value 512, and
+ the right character 128, no break will be automatically inserted
+ between them. If we use value 6 instead for the left character, a
+ break after the character can't be suppressed since the neighboring
+ character on the right doesn't get examined.
+
+ -- Request: .char c [contents]
+ -- Request: .fchar c [contents]
+ -- Request: .fschar f c [contents]
+ -- Request: .schar c [contents]
+ Define a new character or glyph C to be CONTENTS, which can be
+ empty. More precisely, 'char' defines a 'groff' object (or
+ redefines an existing one) that is accessed with the name C on
+ input, and produces CONTENTS on output. Every time glyph C needs
+ to be printed, CONTENTS is processed in a temporary environment and
+ the result is wrapped up into a single object. Compatibility mode
+ is turned off and the escape character is set to '\' while CONTENTS
+ is processed. Any emboldening, constant spacing, or track kerning
+ is applied to this object rather than to individual glyphs in
+ CONTENTS.
+
+ An object defined by these requests can be used just like a normal
+ glyph provided by the output device. In particular, other
+ characters can be translated to it with the 'tr' or 'trin'
+ requests; it can be made the leader character with the 'lc'
+ request; repeated patterns can be drawn with it using the '\l' and
+ '\L' escape sequences; and words containing C can be hyphenated
+ correctly if the 'hcode' request is used to give the object a
+ hyphenation code.
+
+ There is a special anti-recursion feature: use of the object within
+ its own definition is handled like a normal character (not defined
+ with 'char').
+
+ The 'tr' and 'trin' requests take precedence if 'char' accesses the
+ same symbol.
+
+ .tr XY
+ X
+ => Y
+ .char X Z
+ X
+ => Y
+ .tr XX
+ X
+ => Z
+
+ The 'fchar' request defines a fallback glyph: 'gtroff' only checks
+ for glyphs defined with 'fchar' if it cannot find the glyph in the
+ current font. 'gtroff' carries out this test before checking
+ special fonts.
+
+ 'fschar' defines a fallback glyph for font F: 'gtroff' checks for
+ glyphs defined with 'fschar' after the list of fonts declared as
+ font-specific special fonts with the 'fspecial' request, but before
+ the list of fonts declared as global special fonts with the
+ 'special' request.
+
+ Finally, the 'schar' request defines a global fallback glyph:
+ 'gtroff' checks for glyphs defined with 'schar' after the list of
+ fonts declared as global special fonts with the 'special' request,
+ but before the already mounted special fonts.
+
+ *Note Character Classes::.
+
+ -- Request: .rchar c ...
+ -- Request: .rfschar f c ...
+ Remove definition of each ordinary or special character C, undoing
+ the effect of a 'char', 'fchar', or 'schar' request. Those
+ supplied by font description files cannot be removed. Spaces and
+ tabs may separate C arguments.
+
+ The request 'rfschar' removes glyph definitions defined with
+ 'fschar' for font F.
+
+
+File: groff.info, Node: Using Symbols-Footnotes, Up: Using Symbols
+
+ (1) Not all versions of the 'man' program support the '-T' option;
+use the subsequent example for an alternative.
+
+ (2) This is "Normalization Form D" as documented in Unicode Standard
+Annex #15 (<https://unicode.org/reports/tr15/>).
+
+ (3) *Note Compatibility Mode::.
+
+ (4) Output glyphs don't--to GNU 'troff', a glyph is simply a box with
+an index into a font, a given height above and depth below the baseline,
+and a width.
+
+
+File: groff.info, Node: Character Classes, Next: Special Fonts, Prev: Using Symbols, Up: Using Fonts
+
+5.19.5 Character Classes
+------------------------
+
+Classes are particularly useful for East Asian languages such as
+Chinese, Japanese, and Korean, where the number of needed characters is
+much larger than in European languages, and where large sets of
+characters share the same properties.
+
+ -- Request: .class name c1 c2 ...
+ Define a character class (or simply "class") NAME comprising the
+ characters C1, C2, and so on.
+
+ A class thus defined can then be referred to in lieu of listing all
+ the characters within it. Currently, only the 'cflags' request can
+ handle references to character classes.
+
+ In the request's simplest form, each CN is a character (or special
+ character).
+
+ .class [quotes] ' \[aq] \[dq] \[oq] \[cq] \[lq] \[rq]
+
+ Since class and glyph names share the same name space, it is
+ recommended to start and end the class name with '[' and ']',
+ respectively, to avoid collisions with existing character names
+ defined by GNU 'troff' or the user (with 'char' and related
+ requests). This practice applies the presence of ']' in the class
+ name to prevent the use of the special character escape form
+ '\[...]', thus you must use the '\C' escape to access a class with
+ such a name.
+
+ You can also use a character range notation consisting of a start
+ character followed by '-' and then an end character. Internally,
+ GNU 'troff' converts these two symbol names to Unicode code points
+ (according to the 'groff' glyph list [GGL]), which then give the
+ start and end value of the range. If that fails, the class
+ definition is skipped.
+
+ Furthermore, classes can be nested.
+
+ .class [prepunct] , : ; > }
+ .class [prepunctx] \C'[prepunct]' \[u2013]-\[u2016]
+
+ The class '[prepunctx]' thus contains the contents of the class
+ '[prepunct]' as defined above (the set ', : ; > }'), and characters
+ in the range between 'U+2013' and 'U+2016'.
+
+ If you want to include '-' in a class, it must be the first
+ character value in the argument list, otherwise it gets
+ misinterpreted as part of the range syntax.
+
+ It is not possible to use class names as end points of range
+ definitions.
+
+ A typical use of the 'class' request is to control line-breaking
+ and hyphenation rules as defined by the 'cflags' request. For
+ example, to inhibit line breaks before the characters belonging to
+ the 'prepunctx' class defined in the previous example, you can
+ write the following.
+
+ .cflags 2 \C'[prepunctx]'
+
+ See the 'cflags' request in *note Using Symbols::, for more
+ details.
+
+
+File: groff.info, Node: Special Fonts, Next: Artificial Fonts, Prev: Character Classes, Up: Using Fonts
+
+5.19.6 Special Fonts
+--------------------
+
+Special fonts are those that 'gtroff' searches when it cannot find the
+requested glyph in the current font. The Symbol font is usually a
+special font.
+
+ 'gtroff' provides the following two requests to add more special
+fonts. *Note Using Symbols::, for a detailed description of the glyph
+searching mechanism in 'gtroff'.
+
+ Usually, only non-TTY devices have special fonts.
+
+ -- Request: .special [s1 s2 ...]
+ -- Request: .fspecial f [s1 s2 ...]
+ Use the 'special' request to define special fonts. Initially, this
+ list is empty.
+
+ Use the 'fspecial' request to designate special fonts only when
+ font F is active. Initially, this list is empty.
+
+ Previous calls to 'special' or 'fspecial' are overwritten; without
+ arguments, the particular list of special fonts is set to empty.
+ Special fonts are searched in the order they appear as arguments.
+
+ All fonts that appear in a call to 'special' or 'fspecial' are
+ loaded.
+
+ *Note Using Symbols::, for the exact search order of glyphs.
+
+
+File: groff.info, Node: Artificial Fonts, Next: Ligatures and Kerning, Prev: Special Fonts, Up: Using Fonts
+
+5.19.7 Artificial Fonts
+-----------------------
+
+There are a number of requests and escape sequences for artificially
+creating fonts. These are largely vestiges of the days when output
+devices did not have a wide variety of fonts, and when 'nroff' and
+'troff' were separate programs. Most of them are no longer necessary in
+GNU 'troff'. Nevertheless, they are supported.
+
+ -- Escape sequence: \H'height'
+ -- Escape sequence: \H'+height'
+ -- Escape sequence: \H'-height'
+ -- Register: \n[.height]
+ Change (increment, decrement) the height of the current font, but
+ not the width. If HEIGHT is zero, restore the original height.
+ Default scaling unit is 'z'.
+
+ The read-only register '.height' contains the font height as set by
+ '\H'.
+
+ Currently, only the '-Tps' and '-Tpdf' devices support this
+ feature.
+
+ '\H' doesn't produce an input token in GNU 'troff'. As a
+ consequence, it can be used in requests like 'mc' (which expects a
+ single character as an argument) to change the font on the fly:
+
+ .mc \H'+5z'x\H'0'
+
+ In compatibility mode, 'gtroff' behaves differently: If an
+ increment or decrement is used, it is always taken relative to the
+ current type size and not relative to the previously selected font
+ height. Thus,
+
+ .cp 1
+ \H'+5'test \H'+5'test
+
+ prints the word 'test' twice with the same font height (five points
+ larger than the current font size).
+
+ -- Escape sequence: \S'slant'
+ -- Register: \n[.slant]
+ Slant the current font by SLANT degrees. Positive values slant to
+ the right. Only integer values are possible.
+
+ The read-only register '.slant' contains the font slant as set by
+ '\S'.
+
+ Currently, only the '-Tps' and '-Tpdf' devices support this
+ feature.
+
+ '\S' doesn't produce an input token in GNU 'troff'. As a
+ consequence, it can be used in requests like 'mc' (which expects a
+ single character as an argument) to change the font on the fly:
+
+ .mc \S'20'x\S'0'
+
+ This escape is incorrectly documented in the AT&T 'troff' manual;
+ the slant is always set to an absolute value.
+
+ -- Request: .ul [lines]
+ The 'ul' request normally underlines subsequent lines if a TTY
+ output device is used. Otherwise, the lines are printed in italics
+ (only the term 'underlined' is used in the following). The single
+ argument is the quantity of input lines to be underlined; with no
+ argument, the next line is underlined. If LINES is zero or
+ negative, stop the effects of 'ul' (if it was active). Requests
+ and empty lines do not count for computing the number of underlined
+ input lines, even if they produce some output like 'tl'. Lines
+ inserted by macros (e.g., invoked by a trap) do count.
+
+ At the beginning of 'ul', the current font is stored and the
+ underline font is activated. Within the span of a 'ul' request, it
+ is possible to change fonts, but after the last line affected by
+ 'ul' the saved font is restored.
+
+ This number of lines still to be underlined is associated with the
+ environment (*note Environments::). The underline font can be
+ changed with the 'uf' request.
+
+ The 'ul' request does not underline spaces.
+
+ -- Request: .cu [lines]
+ The 'cu' request is similar to 'ul' but underlines spaces as well
+ (if a TTY output device is used).
+
+ -- Request: .uf font
+ Set the underline font (globally) used by 'ul' and 'cu'. By
+ default, this is the font at position 2. FONT can be either a
+ non-negative font position or the name of a font.
+
+ -- Request: .bd font [offset]
+ -- Request: .bd font1 font2 [offset]
+ -- Register: \n[.b]
+ Embolden FONT by overstriking its glyphs offset by OFFSET units
+ minus one.
+
+ Two syntax forms are available.
+
+ * Imitate a bold font unconditionally. The first argument
+ specifies the font to embolden, and the second is the number
+ of basic units, minus one, by which the two glyphs are offset.
+ If the second argument is missing, emboldening is turned off.
+
+ FONT can be either a non-negative font position or the name of
+ a font.
+
+ OFFSET is available in the '.b' read-only register if a
+ special font is active; in the 'bd' request, its default unit
+ is 'u'.
+
+ * Imitate a bold form conditionally. Embolden FONT1 by OFFSET
+ only if font FONT2 is the current font. This request can be
+ issued repeatedly to set up different emboldening values for
+ different current fonts. If the second argument is missing,
+ emboldening is turned off for this particular current font.
+
+ This affects special fonts only (either set up with the
+ 'special' command in font files or with the 'fspecial'
+ request).
+
+ -- Request: .cs font [width [em-size]]
+ Switch to and from "constant glyph space mode". If activated, the
+ width of every glyph is WIDTH/36 ems. The em size is given
+ absolutely by EM-SIZE; if this argument is missing, the em value is
+ taken from the current font size (as set with the 'ps' request)
+ when the font is effectively in use. Without second and third
+ argument, constant glyph space mode is deactivated.
+
+ Default scaling unit for EM-SIZE is 'z'; WIDTH is an integer.
+
+
+File: groff.info, Node: Ligatures and Kerning, Next: Dummy Characters, Prev: Artificial Fonts, Up: Using Fonts
+
+5.19.8 Ligatures and Kerning
+----------------------------
+
+Ligatures are groups of characters that are run together, i.e, producing
+a single glyph. For example, the letters 'f' and 'i' can form a
+ligature 'fi' as in the word 'file'. This produces a cleaner look
+(albeit subtle) to the printed output. Usually, ligatures are not
+available in fonts for TTY output devices.
+
+ Most PostScript fonts support the fi and fl ligatures. The C/A/T
+typesetter that was the target of AT&T 'troff' also supported 'ff',
+'ffi', and 'ffl' ligatures. Advanced typesetters or 'expert' fonts may
+include ligatures for 'ft' and 'ct', although GNU 'troff' does not
+support these (yet).
+
+ Only the current font is checked for ligatures and kerns; neither
+special fonts nor special charcters defined with the 'char' request (and
+its siblings) are taken into account.
+
+ -- Request: .lg [flag]
+ -- Register: \n[.lg]
+ Switch the ligature mechanism on or off; if the parameter is
+ non-zero or missing, ligatures are enabled, otherwise disabled.
+ Default is on. The current ligature mode can be found in the
+ read-only register '.lg' (set to 1 or 2 if ligatures are enabled,
+ 0 otherwise).
+
+ Setting the ligature mode to 2 enables the two-character ligatures
+ (fi, fl, and ff) and disables the three-character ligatures (ffi
+ and ffl).
+
+ "Pairwise kerning" is another subtle typesetting mechanism that
+modifies the distance between a glyph pair to improve readability. In
+most cases (but not always) the distance is decreased. Typewriter-like
+fonts and fonts for terminals where all glyphs have the same width don't
+use kerning.
+
+ -- Request: .kern [flag]
+ -- Register: \n[.kern]
+ Switch kerning on or off. If the parameter is non-zero or missing,
+ enable pairwise kerning, otherwise disable it. The read-only
+ register '.kern' is set to 1 if pairwise kerning is enabled,
+ 0 otherwise.
+
+ If the font description file contains pairwise kerning information,
+ glyphs from that font are kerned. Kerning between two glyphs can
+ be inhibited by placing '\&' between them: 'V\&A'.
+
+ *Note Font Description File Format::.
+
+ "Track kerning" expands or reduces the space between glyphs. This
+can be handy, for example, if you need to squeeze a long word onto a
+single line or spread some text to fill a narrow column. It must be
+used with great care since it is usually considered bad typography if
+the reader notices the effect.
+
+ -- Request: .tkf f s1 n1 s2 n2
+ Enable track kerning for font F. If the current font is F the
+ width of every glyph is increased by an amount between N1 and N2
+ (N1, N2 can be negative); if the current type size is less than or
+ equal to S1 the width is increased by N1; if it is greater than or
+ equal to S2 the width is increased by N2; if the type size is
+ greater than or equal to S1 and less than or equal to S2 the
+ increase in width is a linear function of the type size.
+
+ The default scaling unit is 'z' for S1 and S2, 'p' for N1 and N2.
+
+ The track kerning amount is added even to the rightmost glyph in a
+ line; for large values it is thus recommended to increase the line
+ length by the same amount to compensate.
+
+
+File: groff.info, Node: Italic Corrections, Next: Dummy Characters, Prev: Ligatures and Kerning, Up: Using Fonts
+
+5.19.9 Italic Corrections
+-------------------------
+
+When typesetting adjacent glyphs from typefaces of different slants, the
+space between them may require adjustment.
+
+ -- Escape sequence: \/
+ Apply an "italic correction": modify the spacing of the preceding
+ glyph so that the distance between it and the following glyph is
+ correct if the latter is of upright shape. For example, if an
+ italic 'f' is followed immediately by a roman right parenthesis,
+ then in many fonts the top right portion of the 'f' overlaps the
+ top left of the right parenthesis, which is ugly. Use this escape
+ sequence whenever an oblique glyph is immediately followed by an
+ upright glyph without any intervening space.
+
+ -- Escape sequence: \,
+ Apply a "left italic correction": modify the spacing of the
+ following glyph so that the distance between it and the preceding
+ glyph is correct if the latter is of upright shape. For example,
+ if a roman left parenthesis is immediately followed by an
+ italic 'f', then in many fonts the bottom left portion of the 'f'
+ overlaps the bottom of the left parenthesis, which is ugly. Use
+ this escape sequence whenever an upright glyph is followed
+ immediately by an oblique glyph without any intervening space.
+
+
+File: groff.info, Node: Dummy Characters, Prev: Italic Corrections, Up: Using Fonts
+
+5.19.10 Dummy Characters
+------------------------
+
+As discussed in *note Requests and Macros::, the first character on an
+input line is treated specially. Further, formatting a glyph has many
+consequences on formatter state (*note Environments::). Occasionally,
+we want to escape this context or embrace some of those consequences
+without actually rendering a glyph to the output.
+
+ -- Escape sequence: \&
+ Interpolate a dummy character, which is constitutive of output but
+ invisible.(1) (*note Dummy Characters-Footnote-1::) Its presence
+ alters the interpretation context of a subsequent input character,
+ and enjoys several applications.
+
+ * Prevent insertion of extra space after an end-of-sentence
+ character.
+
+ Test.
+ Test.
+ => Test. Test.
+ Test.\&
+ Test.
+ => Test. Test.
+
+ * Prevent recognition of a control character.
+
+ .Test
+ error-> warning: macro 'Test' not defined
+ \&.Test
+ => .Test
+
+ * Prevent kerning between two glyphs.
+
+ * Translate a character to "nothing".
+
+ .tr JIjiK\&k\&UVuv
+ Post universitum, alea jacta est, OK?
+ => Post vniversitvm, alea iacta est, O?
+
+ The dummy character escape sequence sees use in macro definitions
+ as a means of ensuring that arguments are treated as text even if
+ they begin with spaces or control characters.
+
+ .de HD \" typeset a simple bold heading
+ . sp
+ . ft B
+ \&\\$1 \" exercise: remove the \&
+ . ft
+ . sp
+ ..
+ .HD .\|.\|.\|surprised?
+
+ One way to think about the dummy character is to imagine placing the
+symbol '&' in the input at a certain location; if doing so has all the
+side effects on formatting that you desire except for sticking an ugly
+ampersand in the midst of your text, the dummy character is what you
+want in its place.
+
+ -- Escape sequence: \)
+ Interpolate a transparent dummy character--one that is transparent
+ to end-of-sentence detection. It behaves as '\&', except that '\&'
+ is treated as letters and numerals normally are after '.', '?' and
+ '!'; '\&' cancels end-of-sentence detection, and '\)' does not.
+
+ .de Suffix-&
+ . nop \&\\$1
+ ..
+ .
+ .de Suffix-)
+ . nop \)\\$1
+ ..
+ .
+ Here's a sentence.\c
+ .Suffix-& '
+ Another one.\c
+ .Suffix-) '
+ And a third.
+ => Here's a sentence.' Another one.' And a third.
+
+
+File: groff.info, Node: Dummy Characters-Footnotes, Up: Dummy Characters
+
+ (1) Opinions of this escape sequence's name abound. "Zero-width
+space" is a popular misnomer: 'roff' formatters do not treat it like a
+space. Ossanna called it a "non-printing, zero-width character", but
+the character causes _output_ even though it does not "print". If no
+output line is pending, the dummy character starts one. Contrast an
+empty input document with one containing only '\&'. The former produces
+no output; the latter, a blank page.
+
+
+File: groff.info, Node: Manipulating Type Size and Vertical Spacing, Next: Colors, Prev: Using Fonts, Up: GNU troff Reference
+
+5.20 Manipulating Type Size and Vertical Spacing
+================================================
+
+These concepts were introduced in *note Page Geometry::. The height of
+a font's tallest glyph is one em, which is equal to the type size in
+points.(1) (*note Manipulating Type Size and Vertical
+Spacing-Footnote-1::) A vertical spacing of less than 120% of the type
+size can make a document hard to read. Larger proportions can be useful
+to spread the text for annotations or proofreader's marks. By default,
+GNU 'troff' uses 10 point type on 12 point spacing. Typographers call
+the difference between type size and vertical spacing "leading".(2)
+(*note Manipulating Type Size and Vertical Spacing-Footnote-2::)
+
+* Menu:
+
+* Changing the Type Size::
+* Changing the Vertical Spacing::
+* Using Fractional Type Sizes::
+
+
+File: groff.info, Node: Manipulating Type Size and Vertical Spacing-Footnotes, Up: Manipulating Type Size and Vertical Spacing
+
+ (1) In text fonts, the tallest glyphs are typically parentheses.
+Unfortunately, in many cases the actual dimensions of the glyphs in a
+font do not closely match its declared type size! For example, in the
+standard PostScript font families, 10-point Times sets better with
+9-point Helvetica and 11-point Courier than if all three were used at
+10 points.
+
+ (2) Rhyme with "sledding"; mechanical typography used lead metal
+(Latin _plumbum_).
+
+
+File: groff.info, Node: Changing the Type Size, Next: Changing the Vertical Spacing, Prev: Manipulating Type Size and Vertical Spacing, Up: Manipulating Type Size and Vertical Spacing
+
+5.20.1 Changing the Type Size
+-----------------------------
+
+ -- Request: .ps [size]
+ -- Request: .ps +size
+ -- Request: .ps -size
+ -- Escape sequence: \ssize
+ -- Register: \n[.s]
+ Use the 'ps' request or the '\s' escape sequence to change
+ (increase, decrease) the type size (in scaled points). Specify
+ SIZE as either an absolute type size, or as a relative change from
+ the current size. 'ps' with no argument restores the previous
+ size. The 'ps' request's default scaling unit is 'z'. The
+ requested size is rounded to the nearest valid size (with ties
+ rounding down) within the limits supported by the device. If the
+ requested size is non-positive, it is treated as 1u.
+
+ Type size alteration is incorrectly documented in the AT&T 'troff'
+ manual, which claims "if [the requested size] is invalid, the next
+ larger valid size will result, with a maximum of 36".(1) (*note
+ Changing the Type Size-Footnote-1::)
+
+ The read-only string-valued register '.s' interpolates the type
+ size in points as a decimal fraction; it is associated with the
+ environment (*note Environments::). To obtain the type size in
+ scaled points, interpolate the '.ps' register instead (*note Using
+ Fractional Type Sizes::).
+
+ The '\s' escape sequence supports a variety of syntax forms.
+
+ '\sN'
+ Set the type size to N points. N must be a single digit. If
+ N is 0, restore the previous size.
+
+ '\s+N'
+ '\s-N'
+ Increase or decrease the type size by N points. N must be
+ exactly one digit.
+
+ '\s(NN'
+ Set the type size to NN points. NN must be exactly two
+ digits.
+
+ '\s+(NN'
+ '\s-(NN'
+ '\s(+NN'
+ '\s(-NN'
+ Alter the type size in points by the two-digit value NN.
+
+ *Note Using Fractional Type Sizes::, for further syntactical forms
+ of the '\s' escape sequence that additionally accept decimal
+ fractions.
+
+ snap, snap,
+ .ps +2
+ grin, grin,
+ .ps +2
+ wink, wink, \s+2nudge, nudge,\s+8 say no more!
+ .ps 10
+
+ The '\s' escape sequence affects the environment immediately and
+doesn't produce an input token. Consequently, it can be used in
+requests like 'mc', which expects a single character as an argument, to
+change the type size on the fly.
+
+ .mc \s[20]x\s[0]
+
+ -- Request: .sizes s1 s2 ... sn [0]
+ The 'DESC' file specifies which type sizes are allowed by the
+ output device; see *note DESC File Format::. Use the 'sizes'
+ request to change this set of permissible sizes. Arguments are in
+ scaled points; see *note Using Fractional Type Sizes::. Each can
+ be a single type size (such as '12000'), or a range of sizes (such
+ as '4000-72000'). You can optionally end the list with a '0'.
+
+
+File: groff.info, Node: Changing the Type Size-Footnotes, Up: Changing the Type Size
+
+ (1) The claim appears to have been true of Ossanna 'troff' for the
+C/A/T device; Kernighan made device-independent 'troff' more flexible.
+
+
+File: groff.info, Node: Changing the Vertical Spacing, Next: Using Fractional Type Sizes, Prev: Changing the Type Size, Up: Manipulating Type Size and Vertical Spacing
+
+5.20.2 Changing the Vertical Spacing
+------------------------------------
+
+ -- Request: .vs [space]
+ -- Request: .vs +space
+ -- Request: .vs -space
+ -- Register: \n[.v]
+ Set the vertical spacing to, or alter it by, SPACE. The default
+ scaling unit is 'p'. If 'vs' is called without an argument, the
+ vertical spacing is reset to the previous value before the last
+ call to 'vs'. GNU 'troff' emits a warning in category 'range' if
+ SPACE is negative; the vertical spacing is then set to the smallest
+ possible positive value, the vertical motion quantum (as found in
+ the '.V' register).
+
+ '.vs 0' isn't saved in a diversion since it doesn't result in a
+ vertical motion. You must explicitly issue this request before
+ interpolating the diversion.
+
+ The read-only register '.v' contains the vertical spacing; it is
+ associated with the environment (*note Environments::).
+
+When a break occurs, GNU 'troff' performs the following procedure.
+
+ * Move the drawing position vertically by the "extra pre-vertical
+ line space", the minimum of all negative '\x' escape sequence
+ arguments in the pending output line.
+
+ * Move the drawing position vertically by the vertical line spacing.
+
+ * Write out the pending output line.
+
+ * Move the drawing position vertically by the "extra post-vertical
+ line space", the maximum of all positive '\x' escape sequence
+ arguments in the line that has just been output.
+
+ * Move the drawing position vertically by the "post-vertical line
+ spacing" (see below).
+
+ Prefer 'vs' or 'pvs' over 'ls' to produce double-spaced documents.
+'vs' and 'pvs' have finer granularity than 'ls'; moreover, some
+preprocessors assume single spacing. *Note Manipulating Spacing::,
+regarding the '\x' escape sequence and the 'ls' request.
+
+ -- Request: .pvs [space]
+ -- Request: .pvs +space
+ -- Request: .pvs -space
+ -- Register: \n[.pvs]
+ Set the post-vertical spacing to, or alter it by, SPACE. The
+ default scaling unit is 'p'. If 'pvs' is called without an
+ argument, the post-vertical spacing is reset to the previous value
+ before the last call to 'pvs'. GNU 'troff' emits a warning in
+ category 'range' if SPACE is negative; the post-vertical spacing is
+ then set to zero.
+
+ The read-only register '.pvs' contains the post-vertical spacing;
+ it is associated with the environment (*note Environments::).
+
+
+File: groff.info, Node: Using Fractional Type Sizes, Prev: Changing the Type Size, Up: Manipulating Type Size and Vertical Spacing
+
+5.20.3 Using Fractional Type Sizes
+----------------------------------
+
+AT&T 'troff' interpreted all type size measurements in points. Combined
+with integer arithmetic, this design choice made it impossible to
+support, for instance, ten and a half-point type. In GNU 'troff', an
+output device can select a scaling factor that subdivides a point into
+"scaled points". A type size expressed in scaled points can thus
+represent a non-integral type size.
+
+ A "scaled point" is equal to 1/SIZESCALE points, where SIZESCALE is
+specified in the device description file 'DESC', and defaults to 1.(1)
+(*note Using Fractional Type Sizes-Footnote-1::) Requests and escape
+sequences in GNU 'troff' interpret arguments that represent a type size
+in scaled points, which the formatter multiplies by SIZESCALE and
+converts to an integer. Arguments treated in this way comprise those to
+the escape sequences '\H' and '\s', to the request 'ps', the third
+argument to the 'cs' request, and the second and fourth arguments to the
+'tkf' request. Scaled points may be specified explicitly with the 'z'
+scaling unit.
+
+ For example, if SIZESCALE is 1000, then a scaled point is one
+thousandth of a point. The request '.ps 10.5' is synonymous with '.ps
+10.5z' and sets the type size to 10,500 scaled points, or 10.5 points.
+Consequently, in GNU 'troff', the register '.s' can interpolate a
+non-integral type size.
+
+ -- Register: \n[.ps]
+ This read-only register interpolates the type size in scaled
+ points; it is associated with the environment (*note
+ Environments::).
+
+ It makes no sense to use the 'z' scaling unit in a numeric expression
+whose default scaling unit is neither 'u' nor 'z', so GNU 'troff'
+disallows this. Similarly, it is nonsensical to use a scaling unit
+other than 'z' or 'u' in a numeric expression whose default scaling unit
+is 'z', and so GNU 'troff' disallows this as well.
+
+ Another GNU 'troff' scaling unit, 's', multiplies by the number of
+basic units in a scaled point. Thus, '\n[.ps]s' is equal to '1m' by
+definition. Do not confuse the 's' and 'z' scaling units.
+
+ -- Register: \n[.psr]
+ -- Register: \n[.sr]
+ Output devices may be limited in the type sizes they can employ.
+ The '.s' and '.ps' registers represent the type size selected by
+ the output driver as it understands a device's capability. The
+ last _requested_ type size is interpolated in scaled points by the
+ read-only register '.psr' and in points as a decimal fraction by
+ the read-only string-valued register '.sr'. Both are associated
+ with the environment (*note Environments::).
+
+ For example, if a type size of 10.95 points is requested, and the
+ nearest size permitted by a 'sizes' request (or by the 'sizes' or
+ 'sizescale' directives in the device's 'DESC' file) is 11 points,
+ the output driver uses the latter value.
+
+ The '\s' escape sequence offers the following syntax forms that work
+with fractional type sizes and accept scaling units. You may of course
+give them integral arguments. The delimited forms need not use the
+neutral apostrophe; see *note Delimiters::.
+
+'\s[N]'
+'\s'N''
+ Set the type size to N scaled points; N is a numeric expression
+ with a default scaling unit of 'z'.
+
+'\s[+N]'
+'\s[-N]'
+'\s+[N]'
+'\s-[N]'
+'\s'+N''
+'\s'-N''
+'\s+'N''
+'\s-'N''
+ Increase or decrease the type size by N scaled points; N is a
+ numeric expression (which may start with a minus sign) with a
+ default scaling unit of 'z'.
+
+
+File: groff.info, Node: Using Fractional Type Sizes-Footnotes, Up: Using Fractional Type Sizes
+
+ (1) *Note Device and Font Description Files::.
+
+
+File: groff.info, Node: Colors, Next: Strings, Prev: Manipulating Type Size and Vertical Spacing, Up: GNU troff Reference
+
+5.21 Colors
+===========
+
+GNU 'troff' supports color output with a variety of color spaces and up
+to 16 bits per channel. Some devices, particularly terminals, may be
+more limited. When color support is enabled, two colors are current at
+any given time: the "stroke color", with which glyphs, rules (lines),
+and geometric objects like circles and polygons are drawn, and the "fill
+color", which can be used to paint the interior of a closed geometric
+figure.
+
+ -- Request: .color [n]
+ -- Register: \n[.color]
+ If N is missing or non-zero, enable the output of color-related
+ device-independent output commands (this is the default);
+ otherwise, disable them. This request sets a global flag; it does
+ not produce an input token (*note Gtroff Internals::).
+
+ The read-only register '.color' is 1 if colors are enabled,
+ 0 otherwise.
+
+ Color can also be disabled with the '-c' command-line option.
+
+ -- Request: .defcolor ident scheme color-component ...
+ Define a color named IDENT. SCHEME selects a color space and
+ determines the quantity of required COLOR-COMPONENTs; it must be
+ one of 'rgb' (three components), 'cmy' (three), 'cmyk' (four), or
+ 'gray' (one). 'grey' is accepted as a synonym of 'gray'. The
+ color components can be encoded as a single hexadecimal value
+ starting with '#' or '##'. The former indicates that each
+ component is in the range 0-255 (0-FF), the latter the range
+ 0-65,535 (0-FFFF).
+
+ .defcolor half gray #7f
+ .defcolor pink rgb #FFC0CB
+ .defcolor magenta rgb ##ffff0000ffff
+
+ Alternatively, each color component can be specified as a decimal
+ fraction in the range 0-1, interpreted using a default scaling unit
+ of 'f', which multiplies its value by 65,536 (but clamps it at
+ 65,535).
+
+ .defcolor gray50 rgb 0.5 0.5 0.5
+ .defcolor darkgreen rgb 0.1f 0.5f 0.2f
+
+ Each output device has a color named 'default', which cannot be
+redefined. A device's default stroke and fill colors are not
+necessarily the same. For the 'dvi', 'html', 'pdf', 'ps', and 'xhtml'
+output devices, GNU 'troff' automatically loads a macro file defining
+many color names at startup. By the same mechanism, the devices
+supported by 'grotty' recognize the eight standard ISO 6429/EMCA-48
+color names.(1) (*note Colors-Footnote-1::)
+
+ -- Request: .gcolor [color]
+ -- Escape sequence: \mc
+ -- Escape sequence: \m(co
+ -- Escape sequence: \m[color]
+ -- Register: \n[.m]
+ Set the stroke color to COLOR.
+
+ .gcolor red
+ The next words
+ .gcolor
+ \m[red]are in red\m[]
+ and these words are in the previous color.
+
+ The escape sequence '\m[]' restores the previous stroke color, as
+ does a 'gcolor' request without an argument.
+
+ The name of the current stroke color is available in the read-only
+ string-valued register '.m'; it is associated with the environment
+ (*note Environments::). It interpolates nothing when the stroke
+ color is the default.
+
+ '\m' doesn't produce an input token in GNU 'troff' (*note Gtroff
+ Internals::). It therefore can be used in requests like 'mc'
+ (which expects a single character as an argument) to change the
+ color on the fly:
+
+ .mc \m[red]x\m[]
+
+ -- Request: .fcolor [color]
+ -- Escape sequence: \Mc
+ -- Escape sequence: \M(co
+ -- Escape sequence: \M[color]
+ -- Register: \n[.M]
+ Set the fill color for objects drawn with '\D'...'' escape
+ sequences. The escape sequence '\M[]' restores the previous fill
+ color, as does an 'fcolor' request without an argument.
+
+ The name of the current fill color is available in the read-only
+ string-valued register '.M'; it is associated with the environment
+ (*note Environments::). It interpolates nothing when the fill
+ color is the default. '\M' doesn't produce an input token in GNU
+ 'troff'.
+
+ Create an ellipse with a red interior as follows.
+
+ \M[red]\h'0.5i'\D'E 2i 1i'\M[]
+
+
+File: groff.info, Node: Colors-Footnotes, Up: Colors
+
+ (1) also known vulgarly as "ANSI colors"
+
+
+File: groff.info, Node: Strings, Next: Conditionals and Loops, Prev: Colors, Up: GNU troff Reference
+
+5.22 Strings
+============
+
+GNU 'troff' supports strings primarily for user convenience.
+Conventionally, if one would define a macro only to interpolate a small
+amount of text, without invoking requests or calling any other macros,
+one defines a string instead. Only one string is predefined by the
+language.
+
+ -- String: \*[.T]
+ Contains the name of the output device (for example, 'utf8' or
+ 'pdf').
+
+ The 'ds' request creates a string with a specified name and contents
+and the '\*' escape sequence dereferences its name, interpolating its
+contents. If the string named by the '\*' escape sequence does not
+exist, it is defined as empty, nothing is interpolated, and a warning in
+category 'mac' is emitted. *Note Warnings::, for information about the
+enablement and suppression of warnings.
+
+ -- Request: .ds name [contents]
+ -- Request: .ds1 name [contents]
+ -- Escape sequence: \*n
+ -- Escape sequence: \*(nm
+ -- Escape sequence: \*[name [arg1 arg2 ...]]
+ Define a string called NAME with contents CONTENTS. If NAME
+ already exists as an alias, the target of the alias is redefined;
+ see 'als' and 'rm' below. If 'ds' is called with only one
+ argument, NAME is defined as an empty string. Otherwise, GNU
+ 'troff' stores CONTENTS in copy mode.(1) (*note
+ Strings-Footnote-1::)
+
+ The '\*' escape sequence interpolates a previously defined string
+ variable NAME (one-character name N, two-character name NM). The
+ bracketed interpolation form accepts arguments that are handled as
+ macro arguments are; recall *note Calling Macros::. In contrast to
+ macro calls, however, if a closing bracket ']' occurs in a string
+ argument, that argument must be enclosed in double quotes. '\*' is
+ interpreted even in copy mode. When defining strings, argument
+ interpolations must be escaped if they are to reference parameters
+ from the calling context; *Note Parameters::.
+
+ .ds cite (\\$1, \\$2)
+ Gray codes are explored in \*[cite Morgan 1998].
+ => Gray codes are explored in (Morgan, 1998).
+
+ *Caution:* Unlike other requests, the second argument to the 'ds'
+ request consumes the remainder of the input line, including
+ trailing spaces. This means that comments on a line with such a
+ request can introduce unwanted space into a string when they are
+ set off from the material they annotate, as is conventional.
+
+ .ds H2O H\v'+.3m'\s'-2'2\v'-.3m'\s0O \" water
+
+ Instead, place the comment on another line or put the comment
+ escape sequence immediately adjacent to the last character of the
+ string.
+
+ .ds H2O H\v'+.3m'\s'-2'2\v'-.3m'\s0O\" water
+
+ Ending string definitions (and appendments) with a comment, even an
+ empty one, prevents unwanted space from creeping into them during
+ source document maintenance.
+
+ .ds author Alice Pleasance Liddell\"
+ .ds empty \" might be appended to later with .as
+
+ An initial neutral double quote '"' in CONTENTS is stripped to
+ allow embedding of leading spaces. Any other '"' is interpreted
+ literally, but it is wise to use the special character escape
+ sequence '\[dq]' instead if the string might be interpolated as
+ part of a macro argument; see *note Calling Macros::.
+
+ .ds salutation " Yours in a white wine sauce,\"
+ .ds c-var-defn " char mydate[]=\[dq]2020-07-29\[dq];\"
+
+ Strings are not limited to a single input line of text. '\<RET>'
+ works just as it does elsewhere. The resulting string is stored
+ _without_ the newlines. Care is therefore required when
+ interpolating strings while filling is disabled.
+
+ .ds foo This string contains \
+ text on multiple lines \
+ of input.
+
+ It is not possible to embed a newline in a string that will be
+ interpreted as such when the string is interpolated. To achieve
+ that effect, use '\*' to interpolate a macro instead; see *note
+ Punning Names::.
+
+ Because strings are similar to macros, they too can be defined so
+ as to suppress AT&T 'troff' compatibility mode when used; see *note
+ Writing Macros:: and *note Compatibility Mode::. The 'ds1' request
+ defines a string such that compatibility mode is off when the
+ string is later interpolated. To be more precise, a "compatibility
+ save" input token is inserted at the beginning of the string, and a
+ "compatibility restore" input token at the end.
+
+ .nr xxx 12345
+ .ds aa The value of xxx is \\n[xxx].
+ .ds1 bb The value of xxx is \\n[xxx].
+ .
+ .cp 1
+ .
+ \*(aa
+ error-> warning: register '[' not defined
+ => The value of xxx is 0xxx].
+ \*(bb
+ => The value of xxx is 12345.
+
+ -- Request: .as name [contents]
+ -- Request: .as1 name [contents]
+ The 'as' request is similar to 'ds' but appends CONTENTS to the
+ string stored as NAME instead of redefining it. If NAME doesn't
+ exist yet, it is created. If 'as' is called with only one
+ argument, no operation is performed (beyond dereferencing the
+ string).
+
+ .as salutation " with shallots, onions and garlic,\"
+
+ The 'as1' request is similar to 'as', but compatibility mode is
+ switched off when the appended portion of the string is later
+ interpolated. To be more precise, a "compatibility save" input
+ token is inserted at the beginning of the appended string, and a
+ "compatibility restore" input token at the end.
+
+ Several requests exist to perform rudimentary string operations.
+Strings can be queried ('length') and modified ('chop', 'substring',
+'stringup', 'stringdown'), and their names can be manipulated through
+renaming, removal, and aliasing ('rn', 'rm', 'als').
+
+ -- Request: .length reg anything
+ Compute the number of characters of ANYTHING and store the count in
+ the register REG. If REG doesn't exist, it is created. ANYTHING
+ is read in copy mode.
+
+ .ds xxx abcd\h'3i'efgh
+ .length yyy \*[xxx]
+ \n[yyy]
+ => 14
+
+ -- Request: .chop object
+ Remove the last character from the macro, string, or diversion
+ named OBJECT. This is useful for removing the newline from the end
+ of a diversion that is to be interpolated as a string. This
+ request can be used repeatedly on the same OBJECT; see *note Gtroff
+ Internals::, for details on nodes inserted additionally by GNU
+ 'troff'.
+
+ -- Request: .substring str start [end]
+ Replace the string named STR with its substring bounded by the
+ indices START and END, inclusively. The first character in the
+ string has index 0. If END is omitted, it is implicitly set to the
+ largest valid value (the string length minus one). Negative
+ indices count backward from the end of the string: the last
+ character has index -1, the character before the last has index -2,
+ and so on.
+
+ .ds xxx abcdefgh
+ .substring xxx 1 -4
+ \*[xxx]
+ => bcde
+ .substring xxx 2
+ \*[xxx]
+ => de
+
+ -- Request: .stringdown str
+ -- Request: .stringup str
+ Alter the string named STR by replacing each of its bytes with its
+ lowercase ('stringdown') or uppercase ('stringup') version (if one
+ exists). Special characters in the string will often transform in
+ the expected way due to the regular naming convention for accented
+ characters. When they do not, use substrings and/or catenation.
+
+ .ds resume R\['e]sum\['e]
+ \*[resume]
+ .stringdown resume
+ \*[resume]
+ .stringup resume
+ \*[resume]
+ => Résumé résumé RÉSUMÉ
+
+ (In practice, we would end the 'ds' request with a comment escape
+'\"' to prevent space from creeping into the definition during source
+document maintenance.)
+
+ -- Request: .rn old new
+ Rename the request, macro, diversion, or string OLD to NEW.
+
+ -- Request: .rm name
+ Remove the request, macro, diversion, or string NAME. GNU 'troff'
+ treats subsequent invocations as if the name had never been
+ defined.
+
+ -- Request: .als new old
+ Create an alias NEW for the existing request, string, macro, or
+ diversion object named OLD, causing the names to refer to the same
+ stored object. If OLD is undefined, a warning in category 'mac' is
+ produced, and the request is ignored. *Note Warnings::, for
+ information about the enablement and suppression of warnings.
+
+ To understand how the 'als' request works, consider two different
+ storage pools: one for objects (macros, strings, etc.), and another
+ for names. As soon as an object is defined, GNU 'troff' adds it to
+ the object pool, adds its name to the name pool, and creates a link
+ between them. When 'als' creates an alias, it adds a new name to
+ the name pool that gets linked to the same object as the old name.
+
+ Now consider this example.
+
+ .de foo
+ ..
+ .
+ .als bar foo
+ .
+ .de bar
+ . foo
+ ..
+ .
+ .bar
+ error-> input stack limit exceeded (probable infinite
+ error-> loop)
+
+ In the above, 'bar' remains an _alias_--another name for--the
+ object referred to by 'foo', which the second 'de' request
+ replaces. Alternatively, imagine that the 'de' request
+ _dereferences_ its argument before replacing it. Either way, the
+ result of calling 'bar' is a recursive loop that finally leads to
+ an error. *Note Writing Macros::.
+
+ To remove an alias, call 'rm' on its name. The object itself is
+ not destroyed until it has no more names.
+
+ When a request, macro, string, or diversion is aliased,
+ redefinitions and appendments "write through" alias names. To
+ replace an alias with a separately defined object, you must use the
+ 'rm' request on its name first.
+
+
+File: groff.info, Node: Strings-Footnotes, Up: Strings
+
+ (1) *Note Copy Mode::.
+
+
+File: groff.info, Node: Conditionals and Loops, Next: Writing Macros, Prev: Strings, Up: GNU troff Reference
+
+5.23 Conditionals and Loops
+===========================
+
+'groff' has 'if' and 'while' control structures like other languages.
+However, the syntax for grouping multiple input lines in the branches or
+bodies of these structures is unusual.
+
+* Menu:
+
+* Operators in Conditionals::
+* if-then::
+* if-else::
+* Conditional Blocks::
+* while::
+
+
+File: groff.info, Node: Operators in Conditionals, Next: if-then, Prev: Conditionals and Loops, Up: Conditionals and Loops
+
+5.23.1 Operators in Conditionals
+--------------------------------
+
+In 'if', 'ie', and 'while' requests, in addition to the numeric
+expressions described in *note Numeric Expressions::, several Boolean
+operators are available; the members of this expanded class are termed
+"conditional expressions".
+
+'c GLYPH'
+ True if GLYPH is available, where GLYPH is an ordinary character, a
+ special character '\(XX' or '\[XXX]', '\N'XXX'', or has been
+ defined by any of the 'char', 'fchar', 'fschar', or 'schar'
+ requests.
+
+'d NAME'
+ True if a string, macro, diversion, or request called NAME exists.
+
+'e'
+ True if the current page is even-numbered.
+
+'F FONT'
+ True if FONT exists. FONT is handled as if it were opened with the
+ 'ft' request (that is, font translation and styles are applied),
+ without actually mounting it.
+
+'m COLOR'
+ True if COLOR is defined.
+
+'n'
+ True if the document is being processed in 'nroff' mode. *Note
+ troff and nroff Modes::.
+
+'o'
+ True if the current page is odd-numbered.
+
+'r REGISTER'
+ True if REGISTER exists.
+
+'S STYLE'
+ True if STYLE is available for the current font family. Font
+ translation is applied.
+
+'t'
+ True if the document is being processed in 'troff' mode. *Note
+ troff and nroff Modes::.
+
+'v'
+ Always false. This condition is recognized only for compatibility
+ with certain other 'troff' implementations.(1) (*note Operators in
+ Conditionals-Footnote-1::)
+
+ If the first argument to an 'if', 'ie', or 'while' request begins
+with a non-alphanumeric character apart from '!' (see below); it
+performs an output comparison test. (2) (*note Operators in
+Conditionals-Footnote-2::)
+
+''XXX'YYY''
+ True if formatting the comparands XXX and YYY produces the same
+ output commands. The delimiter need not be a neutral apostrophe:
+ the output comparison operator accepts the same delimiters as most
+ escape sequences; see *note Delimiters::. This "output comparison
+ operator" formats XXX and YYY in separate environments; after the
+ comparison, the resulting data are discarded.
+
+ .ie "|"\fR|\fP" true
+ .el false
+ => true
+
+ The resulting glyph properties, including font family, style, size,
+ and slant, must match, but not necessarily the requests and/or
+ escape sequences used to obtain them. In the previous example, '|'
+ and '\fR|\fP' result in '|' glyphs in the same typefaces at the
+ same positions, so the comparands are equal. If '.ft I' had been
+ added before the '.ie', they would differ: the first '|' would
+ produce an italic '|', not a roman one. Motions must match in
+ orientation and magnitude to within the applicable horizontal and
+ vertical motion quanta of the device, after rounding. '.if
+ "\u\d"\v'0'"' is false even though both comparands result in zero
+ net motion, because motions are not interpreted or optimized but
+ sent as-is to the output.(3) (*note Operators in
+ Conditionals-Footnote-3::) On the other hand, '.if "\d"\v'0.5m'"'
+ is true, because '\d' is defined as a downward motion of one-half
+ em.(4) (*note Operators in Conditionals-Footnote-4::)
+
+ Surround the comparands with '\?' to avoid formatting them; this
+ causes them to be compared character by character, as with string
+ comparisons in other programming languages.
+
+ .ie "\?|\?"\?\fR|\fP\?" true
+ .el false
+ => false
+
+ Since comparands protected with '\?' are read in copy mode (*note
+ Copy Mode::), they need not even be valid 'groff' syntax. The
+ escape character is still lexically recognized, however, and
+ consumes the next character.
+
+ .ds a \[
+ .ds b \[
+ .if '\?\*a\?'\?\*b\?' a and b equivalent
+ .if '\?\\?'\?\\?' backslashes equivalent
+ => a and b equivalent
+
+ The above operators can't be combined with most others, but a leading
+'!', not followed immediately by spaces or tabs, complements an
+expression.
+
+ .nr x 1
+ .ie !r x register x is not defined
+ .el register x is defined
+ => register x is defined
+
+ Spaces and tabs are optional immediately after the 'c', 'd', 'F',
+'m', 'r', and 'S' operators, but right after '!', they end the predicate
+and the conditional evaluates true.(5) (*note Operators in
+Conditionals-Footnote-5::)
+
+ .nr x 1
+ .ie ! r x register x is not defined
+ .el register x is defined
+ => r x register x is not defined
+
+The unexpected 'r x' in the output is a clue that our conditional was
+not interpreted as we planned, but matters may not always be so obvious.
+
+
+File: groff.info, Node: Operators in Conditionals-Footnotes, Up: Operators in Conditionals
+
+ (1) This refers to 'vtroff', a translator that would convert the
+C/A/T output from early-vintage AT&T 'troff' to a form suitable for
+Versatec and Benson-Varian plotters.
+
+ (2) Strictly, letters not otherwise recognized _are_ treated as
+output comparison delimiters. For portability, it is wise to avoid
+using letters not in the list above; for example, Plan 9 'troff' uses
+'h' to test a mode it calls 'htmlroff', and GNU 'troff' may provide
+additional operators in the future.
+
+ (3) Because formatting of the comparands takes place in a dummy
+environment, vertical motions within them cannot spring traps.
+
+ (4) All of this is to say that the lists of output nodes created by
+formatting XXX and YYY must be identical. *Note Gtroff Internals::.
+
+ (5) This bizarre behavior maintains compatibility with AT&T 'troff'.
+
+
+File: groff.info, Node: if-then, Next: if-else, Prev: Operators in Conditionals, Up: Conditionals and Loops
+
+5.23.2 if-then
+--------------
+
+ -- Request: .if cond-expr anything
+ Evaluate the conditional expression COND-EXPR, and if it evaluates
+ true (or to a positive value), interpret the remainder of the line
+ ANYTHING as if it were an input line. Recall from *note Invoking
+ Requests:: that any quantity of spaces between arguments to
+ requests serves only to separate them; leading spaces in ANYTHING
+ are thus not seen. ANYTHING effectively _cannot_ be omitted; if
+ COND-EXPR is true and ANYTHING is empty, the newline at the end of
+ the control line is interpreted as a blank input line (and
+ therefore a blank text line).
+
+ super\c
+ tanker
+ .nr force-word-break 1
+ super\c
+ .if ((\n[force-word-break] = 1) & \n[.int])
+ tanker
+ => supertanker super tanker
+
+ -- Request: .nop anything
+ Interpret ANYTHING as if it were an input line. This is similar to
+ '.if 1'. 'nop' is not really "no operation"; its argument _is_
+ processed--unconditionally. It can be used to cause text lines to
+ share indentation with surrounding control lines.
+
+ .als real-MAC MAC
+ .de wrapped-MAC
+ . tm MAC: called with arguments \\$@
+ . nop \\*[real-MAC]\\
+ ..
+ .als MAC wrapped-MAC
+ \# Later...
+ .als MAC real-MAC
+
+ In the above, we've used aliasing, 'nop', and the interpolation of
+ a macro as a string to interpose a wrapper around the macro 'MAC'
+ (perhaps to debug it).
+
+
+File: groff.info, Node: if-else, Next: while, Prev: Operators in Conditionals, Up: Conditionals and Loops
+
+5.23.3 if-else
+--------------
+
+ -- Request: .ie cond-expr anything
+ -- Request: .el anything
+ Use the 'ie' and 'el' requests to write an if-then-else. The first
+ request is the "if" part and the latter is the "else" part.
+ Unusually among programming languages, any number of
+ non-conditional requests may be interposed between the 'ie' branch
+ and the 'el' branch.
+
+ .nr a 0
+ .ie \na a is non-zero.
+ .nr a +1
+ .el a was not positive but is now \na.
+ => a was not positive but is now 1.
+
+ Another way in which 'el' is an ordinary request is that it does
+ not lexically "bind" more tightly to its 'ie' counterpart than it
+ does to any other request. This fact can surprise C programmers.
+
+ .nr a 1
+ .nr z 0
+ .ie \nz \
+ . ie \na a is true
+ . el a is false
+ .el z is false
+ error-> warning: unbalanced 'el' request
+ => a is false
+
+ To conveniently nest conditionals, keep reading.
+
+
+File: groff.info, Node: Conditional Blocks, Next: while, Prev: Operators in Conditionals, Up: Conditionals and Loops
+
+5.23.4 Conditional Blocks
+-------------------------
+
+It is frequently desirable for a control structure to govern more than
+one request, macro call, text line, or a combination of the foregoing.
+The opening and closing brace escape sequences '\{' and '\}' define such
+groups. These "conditional blocks" can furthermore be nested.
+
+ -- Escape sequence: \{
+ -- Escape sequence: \}
+ '\{' begins a conditional block; it must appear (after optional
+ spaces and tabs) immediately subsequent to the conditional
+ expression of an 'if', 'ie', or 'while' request,(1) (*note
+ Conditional Blocks-Footnote-1::) or as the argument to an 'el'
+ request.
+
+ '\}' ends a condition block and should appear on a line with other
+ occurrences of itself as necessary to match '\{' sequences. It can
+ be preceded by a control character, spaces, and tabs. Input after
+ any quantity of '\}' sequences on the same line is processed only
+ if all of the preceding conditions to which they correspond are
+ true. Furthermore, a '\}' closing the body of a 'while' request
+ must be the last such escape sequence on an input line.
+
+ Brace escape sequences outside of control structures have no
+ meaning and produce no output.
+
+ *Caution:* Input lines using '\{' often end with '\RET', especially
+ in macros that consist primarily of control lines. Forgetting to
+ use '\RET' on an input line after '\{' is a common source of error.
+
+ We might write the following in a page header macro. If we delete
+'\RET', the header will carry an unwanted extra empty line (except on
+page 1).
+
+ .if (\\n[%] != 1) \{\
+ . ie ((\\n[%] % 2) = 0) .tl \\*[even-numbered-page-title]
+ . el .tl \\*[odd-numbered-page-title]
+ .\}
+
+ Let us take a closer look at how conditional blocks nest.
+
+ A
+ .if 0 \{ B
+ C
+ D
+ \}E
+ F
+ => A F
+
+ N
+ .if 1 \{ O
+ . if 0 \{ P
+ Q
+ R\} S\} T
+ U
+ => N O U
+
+ The above behavior may challenge the intuition; it was implemented to
+retain compatibility with AT&T 'troff'. For clarity, it is idiomatic to
+end input lines with '\{' (followed by '\<RET>' if appropriate), and to
+precede '\}' on an input line with nothing more than a control
+character, spaces, tabs, and other instances of itself.
+
+ We can use 'ie', 'el', and conditional blocks to simulate the
+multi-way "switch" or "case" control structures of other languages. The
+following example is adapted from the 'groff' 'man' package.
+Indentation is used to clarify the logic.
+
+ .\" Simulate switch/case in roff.
+ . ie '\\$2'1' .ds title General Commands\"
+ .el \{.ie '\\$2'2' .ds title System Calls\"
+ .el \{.ie '\\$2'3' .ds title Library Functions\"
+ .el \{.ie '\\$2'4' .ds title Kernel Interfaces\"
+ .el \{.ie '\\$2'5' .ds title File Formats\"
+ .el \{.ie '\\$2'6' .ds title Games\"
+ .el \{.ie '\\$2'7' .ds title Miscellaneous Information\"
+ .el \{.ie '\\$2'8' .ds title System Management\"
+ .el \{.ie '\\$2'9' .ds title Kernel Development\"
+ .el .ds title \" empty
+ .\}\}\}\}\}\}\}\}
+
+
+File: groff.info, Node: Conditional Blocks-Footnotes, Up: Conditional Blocks
+
+ (1) *Note while::.
+
+
+File: groff.info, Node: while, Prev: if-else, Up: Conditionals and Loops
+
+5.23.5 while
+------------
+
+'groff' provides a looping construct: the 'while' request. Its syntax
+matches the 'if' request.
+
+ -- Request: .while cond-expr anything
+ Evaluate the conditional expression COND-EXPR, and repeatedly
+ execute ANYTHING unless and until COND-EXPR evaluates false.
+ ANYTHING, which is often a conditional block, is referred to as the
+ 'while' request's "body".
+
+ .nr a 0 1
+ .while (\na < 9) \{\
+ \n+a,
+ .\}
+ \n+a
+ => 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
+
+ GNU 'troff' treats the body of a 'while' request similarly to that
+ of a 'de' request (albeit one not read in copy mode(1) (*note
+ while-Footnote-1::)), but stores it under an internal name and
+ deletes it when the loop finishes. The operation of a macro
+ containing a 'while' request can slow significantly if the 'while'
+ body is large. Each time the macro is executed, the 'while' body
+ is parsed and stored again.
+
+ .de xxx
+ . nr num 10
+ . while (\\n[num] > 0) \{\
+ . \" many lines of code
+ . nr num -1
+ . \}
+ ..
+
+ An often better solution--and one that is more portable, since AT&T
+ 'troff' lacked the 'while' request--is to instead write a recursive
+ macro. It will be parsed only once.(2) (*note while-Footnote-2::)
+
+ .de yyy
+ . if (\\n[num] > 0) \{\
+ . \" many lines of code
+ . nr num -1
+ . yyy
+ . \}
+ ..
+ .
+ .de xxx
+ . nr num 10
+ . yyy
+ ..
+
+ To prevent infinite loops, the default number of available
+ recursion levels is 1,000 or somewhat less.(3) (*note
+ while-Footnote-3::) You can disable this protective measure, or
+ raise the limit, by setting the 'slimit' register. *Note
+ Debugging::.
+
+ As noted above, if a 'while' body begins with a conditional block,
+ its closing brace must end an input line.
+
+ .if 1 \{\
+ . nr a 0 1
+ . while (\n[a] < 10) \{\
+ . nop \n+[a]
+ .\}\}
+ error-> unbalanced brace escape sequences
+
+ -- Request: .break
+ Exit a 'while' loop. Do not confuse this request with a
+ typographical break or the 'br' request.
+
+ -- Request: .continue
+ Skip the remainder of a 'while' loop's body, immediately starting
+ the next iteration.
+
+
+File: groff.info, Node: while-Footnotes, Up: while
+
+ (1) *Note Copy Mode::.
+
+ (2) unless you redefine it
+
+ (3) "somewhat less" because things other than macro calls can be on
+the input stack
+
+
+File: groff.info, Node: Writing Macros, Next: Page Motions, Prev: Conditionals and Loops, Up: GNU troff Reference
+
+5.24 Writing Macros
+===================
+
+A "macro" is a stored collection of text and control lines that can be
+interpolated multiple times. Use macros to define common operations.
+Macros are called in the same way that requests are invoked. While
+requests exist for the purpose of creating macros, simply calling an
+undefined macro, or interpolating it as a string, will cause it to be
+defined as empty. *Note Identifiers::.
+
+ -- Request: .de name [end]
+ Define a macro NAME, replacing the definition of any existing
+ request, macro, string, or diversion called NAME. If NAME already
+ exists as an alias, the target of the alias is redefined; recall
+ *note Strings::. GNU 'troff' enters copy mode,(1) (*note Writing
+ Macros-Footnote-1::) storing subsequent input lines as the macro
+ definition. If the optional second argument is not specified, the
+ definition ends with the control line '..' (two dots).
+ Alternatively, END identifies a macro whose call syntax at the
+ start of a control line ends the definition of NAME; END is then
+ called normally. A macro definition must end in the same
+ conditional block (if any) in which it began (*note Conditional
+ Blocks::). Spaces or tabs are permitted after the control
+ character in the line containing this ending token (either '.' or
+ 'END'), but a tab immediately after the token prevents its
+ recognition as the end of a macro definition. The macro END can be
+ called with arguments.(2) (*note Writing Macros-Footnote-2::)
+
+ Here is a small example macro called 'P' that causes a break and
+ inserts some vertical space. It could be used to separate
+ paragraphs.
+
+ .de P
+ . br
+ . sp .8v
+ ..
+
+ We can define one macro within another. Attempting to nest '..'
+ naïvely will end the outer definition because the inner definition
+ isn't interpreted as such until the outer macro is later
+ interpolated. We can use an end macro instead. Each level of
+ nesting should use a unique end macro.
+
+ An end macro need not be defined until it is called. This fact
+ enables a nested macro definition to begin inside one macro and end
+ inside another. Consider the following example.(3) (*note Writing
+ Macros-Footnote-3::)
+
+ .de m1
+ . de m2 m3
+ you
+ ..
+ .de m3
+ Hello,
+ Joe.
+ ..
+ .de m4
+ do
+ ..
+ .m1
+ know?
+ . m3
+ What
+ .m4
+ .m2
+ => Hello, Joe. What do you know?
+
+ A nested macro definition _can_ be terminated with '..' and nested
+ macros _can_ reuse end macros, but these control lines must be
+ escaped multiple times for each level of nesting. The necessity of
+ this escaping and the utility of nested macro definitions will
+ become clearer when we employ macro parameters and consider the
+ behavior of copy mode in detail.
+
+ 'de' defines a macro that inherits the compatibility mode enablement
+status of its context (*note Implementation Differences::). Often it is
+desirable to make a macro that uses 'groff' features callable from
+contexts where compatibility mode is on; for instance, when writing
+extensions to a historical macro package. To achieve this,
+compatibility mode needs to be switched off while such a macro is
+interpreted--without disturbing that state when it is finished.
+
+ -- Request: .de1 name [end]
+ The 'de1' request defines a macro to be interpreted with
+ compatibility mode disabled. When NAME is called, compatibility
+ mode enablement status is saved; it is restored when the call
+ completes. Observe the extra backlash before the interpolation of
+ register 'xxx'; we'll explore this subject in *note Copy Mode::.
+
+ .nr xxx 12345
+ .de aa
+ The value of xxx is \\n[xxx].
+ . br
+ ..
+ .de1 bb
+ The value of xxx is \\n[xxx].
+ ..
+ .cp 1
+ .aa
+ error-> warning: register '[' not defined
+ => The value of xxx is 0xxx].
+ .bb
+ => The value of xxx is 12345.
+
+ -- Request: .dei name [end]
+ -- Request: .dei1 name [end]
+ The 'dei' request defines a macro with its name and end macro
+ indirected through strings. That is, it interpolates strings named
+ NAME and END before performing the definition.
+
+ The following examples are equivalent.
+
+ .ds xx aa
+ .ds yy bb
+ .dei xx yy
+
+ .de aa bb
+
+ The 'dei1' request bears the same relationship to 'dei' as 'de1'
+ does to 'de'; it temporarily turns compatibility mode off when NAME
+ is called.
+
+ -- Request: .am name [end]
+ -- Request: .am1 name [end]
+ -- Request: .ami name [end]
+ -- Request: .ami1 name [end]
+ 'am' appends subsequent input lines to macro NAME, extending its
+ definition, and otherwise working as 'de' does.
+
+ To make the previously defined 'P' macro set indented instead of
+ block paragraphs, add the necessary code to the existing macro.
+
+ .am P
+ .ti +5n
+ ..
+
+ The other requests are analogous to their 'de' counterparts. The
+ 'am1' request turns off compatibility mode during interpretation of
+ the appendment. The 'ami' request appends indirectly, meaning that
+ strings NAME and END are interpolated with the resulting names used
+ before appending. The 'ami1' request is similar to 'ami',
+ disabling compatibility mode during interpretation of the appended
+ lines.
+
+ Using 'trace.tmac', you can trace calls to 'de', 'de1', 'am', and
+'am1'. You can also use the 'backtrace' request at any point desired to
+troubleshoot tricky spots (*note Debugging::).
+
+ *Note Strings::, for the 'als', 'rm', and 'rn' requests to create an
+alias of, remove, and rename a macro, respectively.
+
+ Macro identifiers share their name space with requests, strings, and
+diversions; see *note Identifiers::. The 'am', 'as', 'da', 'de', 'di',
+and 'ds' requests (together with their variants) create a new object
+only if the name of the macro, diversion, or string is currently
+undefined or if it is defined as a request; normally, they modify the
+value of an existing object. *Note the description of the 'als'
+request: als, for pitfalls when redefining a macro that is aliased.
+
+ -- Request: .return [anything]
+ Exit a macro, immediately returning to the caller. If called with
+ an argument ANYTHING, exit twice--the current macro and the macro
+ one level higher. This is used to define a wrapper macro for
+ 'return' in 'trace.tmac'.
+
+* Menu:
+
+* Parameters::
+* Copy Mode::
+
+
+File: groff.info, Node: Writing Macros-Footnotes, Up: Writing Macros
+
+ (1) *Note Copy Mode::.
+
+ (2) While it is possible to define and call a macro '.', you can't
+use it as an end macro: during a macro definition, '..' is never handled
+as calling '.', even if '.de NAME .' explicitly precedes it.
+
+ (3) Its structure is adapted from, and isomorphic to, part of a
+solution by Tadziu Hoffman to the problem of reflowing text multiple
+times to find an optimal configuration for it.
+<https://lists.gnu.org/archive/html/groff/2008-12/msg00006.html>
+
+
+File: groff.info, Node: Parameters, Next: Copy Mode, Prev: Writing Macros, Up: Writing Macros
+
+5.24.1 Parameters
+-----------------
+
+Macro calls and string interpolations optionally accept a list of
+arguments; recall *note Calling Macros::. At the time such an
+interpolation takes place, these "parameters" can be examined using a
+register and a variety of escape sequences starting with '\$'. All such
+escape sequences are interpreted even in copy mode, a fact we shall
+motivate and explain below (*note Copy Mode::).
+
+ -- Register: \n[.$]
+ The count of parameters available to a macro or string is kept in
+ this read-only register. The 'shift' request can change its value.
+
+ Any individual parameter can be accessed by its position in the list
+of arguments to the macro call, numbered from left to right starting at
+1, with one of the following escape sequences.
+
+ -- Escape sequence: \$n
+ -- Escape sequence: \$(nn
+ -- Escape sequence: \$[nnn]
+ Interpolate the Nth, NNth, or NNNth parameter. The first form
+ expects only a single digit (1<=N<=9)), the second two digits
+ (01<=NN<=99)), and the third any positive integer NNN. Macros and
+ strings accept an unlimited number of parameters.
+
+ -- Request: .shift [n]
+ Shift the parameters N places (1 by default). This is a "left
+ shift": what was parameter I becomes parameter I-N. The parameters
+ formerly in positions 1 to N are no longer available. Shifting by
+ a non-positive amount performs no operation. The register '.$' is
+ adjusted accordingly.
+
+ In practice, parameter interpolations are usually seen prefixed with
+an extra escape character. This is because the '\$' family of escape
+sequences is interpreted even in copy mode.(1) (*note
+Parameters-Footnote-1::)
+
+ -- Escape sequence: \$*
+ -- Escape sequence: \$@
+ -- Escape sequence: \$^
+ In some cases it is convenient to interpolate all of the parameters
+ at once (to pass them to a request, for instance). The '\$*'
+ escape concatenates the parameters, separating them with spaces.
+ '\$@' is similar, concatenating the parameters, surrounding each
+ with double quotes and separating them with spaces. If not in
+ compatibility mode, the interpolation depth of double quotes is
+ preserved (*note Calling Macros::). '\$^' interpolates all
+ parameters as if they were arguments to the 'ds' request.
+
+ .de foo
+ . tm $1='\\$1'
+ . tm $2='\\$2'
+ . tm $*='\\$*'
+ . tm $@='\\$@'
+ . tm $^='\\$^'
+ ..
+ .foo " This is a "test"
+ error-> $1=' This is a '
+ error-> $2='test"'
+ error-> $*=' This is a test"'
+ error-> $@='" This is a " "test""'
+ error-> $^='" This is a "test"'
+
+ '\$*' is useful when writing a macro that doesn't need to
+ distinguish its arguments, or even to not interpret them; examples
+ include macros that produce diagnostic messages by wrapping the
+ 'tm' or 'ab' requests. Use '\$@' when writing a macro that may
+ need to shift its parameters and/or wrap a macro or request that
+ finds the count significant. If in doubt, prefer '\$@' to '\$*'.
+ An application of '\$^' is seen in 'trace.tmac', which redefines
+ some requests and macros for debugging purposes.
+
+ -- Escape sequence: \$0
+ Interpolate the name by which the macro being interpreted was
+ called. The 'als' request can cause a macro to have more than one
+ name. Applying string interpolation to a macro does not change
+ this name.
+
+ .de foo
+ . tm \\$0
+ ..
+ .als bar foo
+ .
+ .de aaa
+ . foo
+ ..
+ .de bbb
+ . bar
+ ..
+ .de ccc
+ \\*[foo]\\
+ ..
+ .de ddd
+ \\*[bar]\\
+ ..
+ .
+ .aaa
+ error-> foo
+ .bbb
+ error-> bar
+ .ccc
+ error-> ccc
+ .ddd
+ error-> ddd
+
+
+File: groff.info, Node: Parameters-Footnotes, Up: Parameters
+
+ (1) If they were not, parameter interpolations would be similar to
+command-line parameters--fixed for the entire duration of a 'roff'
+program's run. The advantage of interpolating '\$' escape sequences
+even in copy mode is that they can interpolate different contents from
+one call to the next, like function parameters in a procedural language.
+The additional escape character is the price of this power.
+
+
+File: groff.info, Node: Copy Mode, Prev: Parameters, Up: Writing Macros
+
+5.24.2 Copy Mode
+----------------
+
+When GNU 'troff' processes certain requests, most importantly those
+which define or append to a macro or string, it does so in "copy mode":
+it copies the characters of the definition into a dedicated storage
+region, interpolating the escape sequences '\n', '\g', '\$', '\*', '\V',
+and '\?' normally; interpreting '\<RET>' immediately; discarding
+comments '\"' and '\#'; interpolating the current leader, escape, or tab
+character with '\a', '\e', and '\t', respectively; and storing all other
+escape sequences in an encoded form.
+
+ The complement of copy mode--a 'roff' formatter's behavior when not
+defining or appending to a macro, string, or diversion--where all macros
+are interpolated, requests invoked, and valid escape sequences processed
+immediately upon recognition, can be termed "interpretation mode".
+
+ -- Escape sequence: \\
+ The escape character, '\' by default, can escape itself. This
+ enables you to control whether a given '\n', '\g', '\$', '\*',
+ '\V', or '\?' escape sequence is interpreted at the time the macro
+ containing it is defined, or later when the macro is called.(1)
+ (*note Copy Mode-Footnote-1::)
+
+ .nr x 20
+ .de y
+ .nr x 10
+ \&\nx
+ \&\\nx
+ ..
+ .y
+ => 20 10
+
+ You can think of '\\' as a "delayed" backslash; it is the escape
+ character followed by a backslash from which the escape character
+ has removed its special meaning. Consequently, '\\' is not an
+ escape sequence in the usual sense. In any escape sequence '\X'
+ that GNU 'troff' does not recognize, the escape character is
+ ignored and X is output. An unrecognized escape sequence causes a
+ warning in category 'escape', with two exceptions--'\\' is the
+ first.
+
+ -- Escape sequence: \.
+ '\.' escapes the control character. It is similar to '\\' in that
+ it isn't a true escape sequence. It is used to permit nested macro
+ definitions to end without a named macro call to conclude them.
+ Without a syntax for escaping the control character, this would not
+ be possible.
+
+ .de m1
+ foo
+ .
+ . de m2
+ bar
+ \\..
+ .
+ ..
+ .m1
+ .m2
+ => foo bar
+
+ The first backslash is consumed while the macro is read, and the
+ second is interpreted when macro 'm1' is called.
+
+ 'roff' documents should not use the '\\' or '\.' character sequences
+outside of copy mode; they serve only to obfuscate the input. Use '\e'
+to represent the escape character, '\[rs]' to obtain a backslash glyph,
+and '\&' before '.' and ''' where GNU 'troff' expects them as control
+characters if you mean to use them literally (recall *note Requests and
+Macros::).
+
+ Macro definitions can be nested to arbitrary depth. The mechanics of
+parsing the escape character have significant consequences for this
+practice.
+
+ .de M1
+ \\$1
+ . de M2
+ \\\\$1
+ . de M3
+ \\\\\\\\$1
+ \\\\..
+ . M3 hand.
+ \\..
+ . M2 of
+ ..
+ This understeer is getting
+ .M1 out
+ => This understeer is getting out of hand.
+
+ Each escape character is interpreted twice--once in copy mode, when
+the macro is defined, and once in interpretation mode, when the macro is
+called. As seen above, this fact leads to exponential growth in the
+quantity of escape characters required to delay interpolation of '\n',
+'\g', '\$', '\*', '\V', and '\?' at each nesting level, which can be
+daunting. GNU 'troff' offers a solution.
+
+ -- Escape sequence: \E
+ '\E' represents an escape character that is not interpreted in copy
+ mode. You can use it to ease the writing of nested macro
+ definitions.
+
+ .de M1
+ . nop \E$1
+ . de M2
+ . nop \E$1
+ . de M3
+ . nop \E$1
+ \\\\..
+ . M3 better.
+ \\..
+ . M2 bit
+ ..
+ This vehicle handles
+ .M1 a
+ => This vehicle handles a bit better.
+
+ Observe that because '\.' is not a true escape sequence, we can't
+ use '\E' to keep '..' from ending a macro definition prematurely.
+ If the multiplicity of backslashes complicates maintenance, use end
+ macros.
+
+ '\E' is also convenient to define strings containing escape
+ sequences that need to work when used in copy mode (for example, as
+ macro arguments), or which will be interpolated at varying macro
+ nesting depths. We might define strings to begin and end
+ superscripting as follows.(2) (*note Copy Mode-Footnote-2::)
+
+ .ds { \v'-.9m\s'\En[.s]*7u/10u'+.7m'
+ .ds } \v'-.7m\s0+.9m'
+
+ When the 'ec' request is used to redefine the escape character,
+ '\E' also makes it easier to distinguish the semantics of an escape
+ character from the other meaning(s) its character might have.
+ Consider the use of an unusual escape character, '-'.
+
+ .nr a 1
+ .ec -
+ .de xx
+ --na
+ ..
+ .xx
+ => -na
+
+ This result may surprise you; some people expect '1' to be output
+ since register 'a' has clearly been defined with that value. What
+ has happened? The robotic replacement of '\' with '-' has led us
+ astray. You might recognize the sequence '--' more readily with
+ the default escape character as '\-', the special character escape
+ sequence for the minus sign glyph.
+
+ .nr a 1
+ .ec -
+ .de xx
+ -Ena
+ ..
+ .xx
+ => 1
+
+
+File: groff.info, Node: Copy Mode-Footnotes, Up: Copy Mode
+
+ (1) Compare this to the '\def' and '\edef' commands in TeX.
+
+ (2) These are lightly adapted from the 'groff' implementation of the
+'ms' macros.
+
+
+File: groff.info, Node: Page Motions, Next: Drawing Geometric Objects, Prev: Writing Macros, Up: GNU troff Reference
+
+5.25 Page Motions
+=================
+
+*Note Manipulating Spacing::, for a discussion of the most commonly used
+request for vertical motion, 'sp', which spaces downward by one vee.
+
+ -- Request: .mk [reg]
+ -- Request: .rt [dist]
+ You can "mark" a location on a page for subsequent "return". 'mk'
+ takes an argument, a register name in which to store the current
+ page location. If given no argument, it stores the location in an
+ internal register. This location can be used later by the 'rt' or
+ the 'sp' requests (or the '\v' escape).
+
+ The 'rt' request returns _upward_ to the location marked with the
+ last 'mk' request. If used with an argument, it returns to a
+ vertical position DIST from the top of the page (no previous call
+ to 'mk' is necessary in this case). The default scaling unit is
+ 'v'.
+
+ If a page break occurs between a 'mk' request and its matching 'rt'
+ request, the 'rt' request is silently ignored.
+
+ A simple implementation of a macro to set text in two columns
+ follows.
+
+ .nr column-length 1.5i
+ .nr column-gap 4m
+ .nr bottom-margin 1m
+ .
+ .de 2c
+ . br
+ . mk
+ . ll \\n[column-length]u
+ . wh -\\n[bottom-margin]u 2c-trap
+ . nr right-side 0
+ ..
+ .
+ .de 2c-trap
+ . ie \\n[right-side] \{\
+ . nr right-side 0
+ . po -(\\n[column-length]u + \\n[column-gap]u)
+ . \" remove trap
+ . wh -\\n[bottom-margin]u
+ . \}
+ . el \{\
+ . \" switch to right side
+ . nr right-side 1
+ . po +(\\n[column-length]u + \\n[column-gap]u)
+ . rt
+ . \}
+ ..
+
+ Now let us apply our two-column macro.
+
+ .pl 1.5i
+ .ll 4i
+ This is a small test that shows how the
+ rt request works in combination with mk.
+
+ .2c
+ Starting here, text is typeset in two columns.
+ Note that this implementation isn't robust
+ and thus not suited for a real two-column
+ macro.
+ => This is a small test that shows how the
+ => rt request works in combination with mk.
+ =>
+ => Starting here, isn't robust
+ => text is typeset and thus not
+ => in two columns. suited for a
+ => Note that this real two-column
+ => implementation macro.
+
+ Several escape sequences enable fine control of movement about the
+page.
+
+ -- Escape sequence: \v'expr'
+ Vertically move the drawing position. EXPR indicates the magnitude
+ of motion: positive is downward and and negative upward. The
+ default scaling unit is 'v'. The motion is relative to the current
+ drawing position unless EXPR begins with the boundary-relative
+ motion operator '|'. *Note Numeric Expressions::.
+
+ Text processing continues at the new drawing position; usually,
+ vertical motions should be in balanced pairs to avoid a confusing
+ page layout.
+
+ '\v' will not spring a vertical position trap. This can be useful;
+ for example, consider a page bottom trap macro that prints a marker
+ in the margin to indicate continuation of a footnote. *Note
+ Traps::.
+
+ A few escape sequences that produce vertical motion are unusual.
+They are thought to originate early in AT&T 'nroff' history to achieve
+super- and subscripting by half-line motions on line printers and
+teletypewriters before the phototypesetter made more precise positioning
+available. They are reckoned in ems--not vees--to maintain continuity
+with their original purpose of moving relative to the size of the type
+rather than the distance between text baselines (vees).(1) (*note Page
+Motions-Footnote-1::)
+
+ -- Escape sequence: \r
+ -- Escape sequence: \u
+ -- Escape sequence: \d
+ Move upward 1m, upward .5m, and downward .5m, respectively.
+
+Let us see these escape sequences in use.
+
+ Obtain 100 cm\u3\d of \ka\d\092\h'|\nau'\r233\dU.
+
+ In the foregoing we have paired '\u' and '\d' to typeset a
+superscript, and later a full em negative ("reverse") motion to place a
+superscript above a subscript. A numeral-width horizontal motion escape
+sequence aligns the proton and nucleon numbers, while '\k' marks a
+horizontal position to which '\h' returns so that we could stack them.
+(We shall discuss these horizontal motion escape sequences presently.)
+In serious applications, we often want to alter the type size of the
+-scripts and to fine-tune the vertical motions, as the 'groff' 'ms'
+package does with its super- and subscripting string definitions.
+
+ -- Escape sequence: \h'expr'
+ Horizontally move the drawing position. EXPR indicates the
+ magnitude of motion: positive is rightward and negative leftward.
+ The default scaling unit is 'm'. The motion is relative to the
+ current drawing position unless EXPR begins with the
+ boundary-relative motion operator '|'. *Note Numeric
+ Expressions::.
+
+ The following string definition sets the TeX logo.(2) (*note Page
+Motions-Footnote-2::)
+
+ .ds TeX T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X\"
+
+ There are a number of special-case escape sequences for horizontal
+motion.
+
+ -- Escape sequence: \<SP>
+ Move right one word space. (The input is a backslash followed by a
+ space.) This escape sequence can be thought of as a
+ non-adjustable, unbreakable space. Usually you want '\~' instead;
+ see *note Manipulating Filling and Adjustment::.
+
+ -- Escape sequence: \|
+ Move one-sixth em to the right on typesetting output devices. If a
+ glyph named '\|' is defined in the current font, its width is used
+ instead, even on terminal output devices.
+
+ -- Escape sequence: \^
+ Move one-twelfth em to the right on typesetting output devices. If
+ a glyph named '\^' is defined in the current font, its width is
+ used instead, even on terminal output devices.
+
+ -- Escape sequence: \0
+ Move right by the width of a numeral in the current font.
+
+ Horizontal motions are not discarded at the end of an output line as
+word spaces are. *Note Breaking::.
+
+ -- Escape sequence: \w'anything'
+ -- Register: \n[st]
+ -- Register: \n[sb]
+ -- Register: \n[rst]
+ -- Register: \n[rsb]
+ -- Register: \n[ct]
+ -- Register: \n[ssc]
+ -- Register: \n[skw]
+ Interpolate the width of ANYTHING in basic units. This escape
+ sequence allows several properties of formatted output to be
+ measured without writing it out.
+
+ The length of the string 'abc' is \w'abc'u.
+ => The length of the string 'abc' is 72u.
+
+ ANYTHING is processed in a dummy environment: this means that font
+ and type size changes, for example, may occur within it without
+ affecting subsequent output.
+
+ After each use, '\w' sets several registers.
+
+ 'st'
+ 'sb'
+ The maximum vertical displacements of the text baseline above
+ and below, respectively. The sign convention is opposite that
+ of relative vertical motions; that is, depth below the
+ (original) baseline is negative. These registers are
+ incorrectly documented in the AT&T 'troff' manual as "the
+ highest and lowest extent of [the argument to '\w'] relative
+ to the baseline".
+
+ 'rst'
+ 'rsb'
+ Like 'st' and 'sb', but taking account of the heights and
+ depths of glyphs. In other words, these registers store the
+ highest and lowest vertical positions attained by ANYTHING,
+ doing what AT&T 'troff' documented 'st' and 'sb' as doing.
+
+ 'ct'
+ Characterizes the geometry of glyphs occurring in ANYTHING.
+
+ 0
+ only short glyphs, no descenders or tall glyphs
+
+ 1
+ at least one descender
+
+ 2
+ at least one tall glyph
+
+ 3
+ at least one each of a descender and a tall glyph
+
+ 'ssc'
+ The amount of horizontal space (possibly negative) that should
+ be added to the last glyph before a subscript.
+
+ 'skw'
+ How far to right of the center of the last glyph in the '\w'
+ argument, the center of an accent from a roman font should be
+ placed over that glyph.
+
+ -- Escape sequence: \kp
+ -- Escape sequence: \k(ps
+ -- Escape sequence: \k[position]
+ Store the current horizontal position in the _input_ line in a
+ register with the name POSITION (one-character name P,
+ two-character name PS). Use this, for example, to return to the
+ beginning of a string for highlighting or other decoration.
+
+ -- Register: \n[hp]
+ The current horizontal position at the input line.
+
+ -- Register: \n[.k]
+ A read-only register containing the current horizontal output
+ position (relative to the current indentation).
+
+ -- Escape sequence: \o'abc...'
+ Overstrike the glyphs of characters A, B, C, ...; the glyphs are
+ centered, written, and the drawing position advanced by the widest
+ of the glyphs.
+
+ -- Escape sequence: \zc
+ Format the character C with zero width; that is, without advancing
+ the drawing position. Use '\z' to overstrike glyphs aligned to
+ their left edges, in contrast to '\o''s centering.
+
+ -- Escape sequence: \Z'anything'
+ Save the drawing position, format ANYTHING, then restore it. Tabs
+ and leaders in the argument are ignored with an error diagnostic.
+
+ We might implement a strike-through macro thus.
+
+ .de ST
+ .nr width \w'\\$1'
+ \Z@\v'-.25m'\l'\\n[width]u'@\\$1
+ ..
+ .
+ This is
+ .ST "a test"
+ an actual emergency!
+
+
+File: groff.info, Node: Page Motions-Footnotes, Up: Page Motions
+
+ (1) At the 'grops' defaults of 10-point type on 12-point vertical
+spacing, the difference between half a vee and half an em can be subtle:
+large spacings like '.vs .5i' make it obvious.
+
+ (2) *Note Strings::, for an explanation of the trailing '\"'.
+
+
+File: groff.info, Node: Drawing Geometric Objects, Next: Traps, Prev: Page Motions, Up: GNU troff Reference
+
+5.26 Drawing Geometric Objects
+==============================
+
+A few of the formatter's escape sequences draw lines and other geometric
+objects. Combined with each other and with page motion commands (*note
+Page Motions::), a wide variety of figures is possible. For complex
+drawings, these operations can be cumbersome; the preprocessors 'gpic'
+or 'ggrn' are typically used instead.
+
+ The '\l' and '\L' escape sequences draw horizontal and vertical
+sequences of glyphs, respectively. Even the simplest of output devices
+supports them.
+
+ -- Escape sequence: \l'l'
+ -- Escape sequence: \l'lc'
+ Draw a horizontal line of length L from the drawing position.
+ Rightward motion is positive. Afterward, the drawing position is
+ at the right end of the line. The default scaling unit is 'm'.
+
+ The optional second parameter C is a character with which to draw
+ the line. The default is the baseline rule special character,
+ '\[ru]'.
+
+ If C is a valid scaling unit, put '\&' after L to disambiguate the
+ input.
+
+ .de textbox
+ \[br]\\$*\[br]\l'|0\[rn]'\l'|0\[ul]'
+ ..
+
+ The foregoing outputs a box rule (a vertical line), the text
+ argument(s), and another box rule. We employ the boundary-relative
+ motion operator '|'. Finally, the line-drawing escape sequences
+ draw a radical extender (a form of overline) and an underline from
+ the drawing position to the position coresponding to beginning of
+ the _input_ line. The drawing position returns to just after the
+ right-hand box rule because the lengths of the drawn lines are
+ negative, as noted above.
+
+ -- Escape sequence: \L'l'
+ -- Escape sequence: \L'lc'
+ Draw a vertical line of length L from the drawing position.
+ Downward motion is positive. The default scaling unit is 'v'. The
+ default character is the box rule, '\[br]'. As with vertical
+ motion escape sequences, text processing continues where the line
+ ends. '\L' is otherwise similar to '\l'.
+
+ $ nroff <<EOF
+ This is a \L'3v'test.
+ EOF
+ => This is a
+ => |
+ => |
+ => |test.
+
+ When writing text, the drawing position is at the text baseline;
+ recall *note Page Geometry::.
+
+ The '\D' escape sequence provides "drawing commands" that direct the
+output device to render geometrical objects rather than glyphs.
+Specific devices may support only a subset, or may feature additional
+ones; consult the man page for the output driver in use. Terminal
+devices in particular implement almost none. *Note Graphics Commands::.
+
+ Rendering starts at the drawing position; when finished, the drawing
+position is left at the rightmost point of the object, even for closed
+figures, except where noted. GNU 'troff' draws stroked (outlined)
+objects with the stroke color, and shades filled ones with the fill
+color. *Note Colors::. Coordinates H and V are horizontal and vertical
+motions relative to the drawing position or previous point in the
+command. The default scaling unit for horizontal measurements (and
+diameters of circles) is 'm'; for vertical ones, 'v'.
+
+ Circles, ellipses, and polygons can be drawn filled or stroked.
+These are independent properties; if you want a filled, stroked figure,
+you must draw the same figure twice using each drawing command. A
+filled figure is always smaller than an outlined one because the former
+is drawn only within its defined area, whereas strokes have a line
+thickness (set with '\D't'').
+
+ \h'1i'\v'1i'\
+ \# increase line thickness
+ \Z'\D't 5p''\
+ \# draw stroked (unfilled) polygon
+ \Z'\D'p 3 3 -6 0''\
+ \# draw filled (solid) polygon
+ \Z'\D'P 3 3 -6 0''
+
+ -- Escape sequence: \D'command argument ...'
+ Drawing command escape sequence parameters begin with an ordinary
+ character, COMMAND, selecting the type of object to be drawn,
+ followed by ARGUMENTs whose meaning is determined by COMMAND.
+
+ '\D'~ H1 V1 ... HN VN''
+ Draw a B-spline to each point in sequence, leaving the drawing
+ position at (HN, VN).
+
+ '\D'a HC VC H V''
+ Draw a circular arc centered at (HC, VC) counterclockwise from
+ the drawing position to a point (H, V) relative to the center.
+ (1) (*note Drawing Geometric Objects-Footnote-1::)
+
+ '\D'c D''
+ Draw a circle of diameter D with its leftmost point at the
+ drawing position.
+
+ '\D'C D''
+ As '\D'C ...'', but the circle is filled.
+
+ '\D'e H V''
+ Draw an ellipse of width H and height V with its leftmost
+ point at the drawing position.
+
+ '\D'E X Y''
+ As '\D'e ...'', but the ellipse is filled.
+
+ '\D'l DX DY''
+ Draw line from the drawing position to (H, V).
+
+ The following is a macro for drawing a box around a text
+ argument; for simplicity, the box margin is a fixed at 0.2m.
+
+ .de TEXTBOX
+ . nr @wd \w'\\$1'
+ \h'.2m'\
+ \h'-.2m'\v'(.2m - \\n[rsb]u)'\
+ \D'l 0 -(\\n[rst]u - \\n[rsb]u + .4m)'\
+ \D'l (\\n[@wd]u + .4m) 0'\
+ \D'l 0 (\\n[rst]u - \\n[rsb]u + .4m)'\
+ \D'l -(\\n[@wd]u + .4m) 0'\
+ \h'.2m'\v'-(.2m - \\n[rsb]u)'\
+ \\$1\
+ \h'.2m'
+ ..
+
+ The argument is measured with the '\w' escape sequence. Its
+ width is stored in register '@wd'. '\w' also sets the
+ registers 'rst' and 'rsb'; these contain its maximum vertical
+ extents of the argument. Then, four lines are drawn to form a
+ box, offset by the box margin.
+
+ '\D'p H1 V1 ... HN VN''
+ Draw polygon with vertices at drawing position and each point
+ in sequence. GNU 'troff' closes the polygon by drawing a line
+ from (HN, VN) back to the initial drawing position.
+ Afterward, the drawing position is left at (HN, VN).
+
+ '\D'P DX1 DY1 DX2 DY2 ...''
+ As '\D'P ...'', but the polygon is filled.
+
+ The following macro is like the '\D'l'' example, but shades
+ the box. We draw the box before writing the text because
+ colors in GNU 'troff' have no transparency; in othe opposite
+ order, the filled polygon would occlude the text.
+
+ .de TEXTBOX
+ . nr @wd \w'\\$1'
+ \h'.2m'\
+ \h'-.2m'\v'(.2m - \\n[rsb]u)'\
+ \M[lightcyan]\
+ \D'P 0 -(\\n[rst]u - \\n[rsb]u + .4m) \
+ (\\n[@wd]u + .4m) 0 \
+ 0 (\\n[rst]u - \\n[rsb]u + .4m) \
+ -(\\n[@wd]u + .4m) 0'\
+ \h'.2m'\v'-(.2m - \\n[rsb]u)'\
+ \M[]\
+ \\$1\
+ \h'.2m'
+ ..
+
+ '\D't N''
+ Set the stroke thickness of geometric objects to N basic
+ units. A zero N selects the minimal supported thickness. A
+ negative N selects a thickness proportional to the type size;
+ this is the default.
+
+ In a hazy penumbra between text rendering and drawing commands we
+locate the bracket-building escape sequence, '\b'. It can assemble
+apparently large glyphs by vertically stacking ordinary ones.
+
+ -- Escape sequence: \b'contents'
+ Pile and center a sequence of glyphs vertically on the output line.
+ "Piling" stacks glyphs corresponding to each character in CONTENTS,
+ read from left to right, and placed from top to bottom. GNU
+ 'troff' separates the glyphs vertically by 1m, and the pile itself
+ is centered 0.5m above the text baseline. The horizontal drawing
+ position is then advanced by the width of the widest glyph in the
+ pile.
+
+ This rather inflexible positioning algorithm doesn't work with the
+ 'dvi' output device since its bracket pieces vary in height.
+ Instead, use the 'geqn' preprocessor.
+
+ *note Manipulating Spacing:: describes how to adjust the vertical
+ spacing of the output line with the '\x' escape sequence.
+
+ The application of '\b' that lends its name is construction of
+ brackets, braces, and parentheses when typesetting mathematics. We
+ might construct a large opening (left) brace as follows.
+
+ \b'\[lt]\[bv]\[lk]\[bv]\[lb]'
+
+ See 'groff_char(7)' for a list of special character identifiers.
+
+
+File: groff.info, Node: Drawing Geometric Objects-Footnotes, Up: Drawing Geometric Objects
+
+ (1) (HC, VC) is adjusted to the point nearest the perpendicular
+bisector of the arc's chord.
+
+
+File: groff.info, Node: Deferring Output, Next: Traps, Prev: Drawing Geometric Objects, Up: GNU troff Reference
+
+5.27 Deferring Output
+=====================
+
+A few 'roff' language elements are generally not used in simple
+documents, but arise as page layouts become more sophisticated and
+demanding. "Environments" collect formatting parameters like line
+length and typeface. A "diversion" stores formatted output for later
+use. A "trap" is a condition on the input or output, tested
+automatically by the formatter, that is associated with a macro, causing
+it to be called when that condition is fulfilled.
+
+ Footnote support often exercises all three of the foregoing features.
+A simple implementation might work as follows. A pair of macros is
+defined: one starts a footnote and the other ends it. The author calls
+the first macro where a footnote marker is desired. The macro
+establishes a diversion so that the footnote text is collected at the
+place in the body text where its corresponding marker appears. An
+environment is created for the footnote so that it is set at a smaller
+typeface. The footnote text is formatted in the diversion using that
+environment, but it does not yet appear in the output. The document
+author calls the footnote end macro, which returns to the previous
+environment and ends the diversion. Later, after much more body text in
+the document, a trap, set a small distance above the page bottom, is
+sprung. The macro called by the trap draws a line across the page and
+emits the stored diversion. Thus, the footnote is rendered.
+
+ Diversions and traps make the text formatting process non-linear.
+Let us imagine a set of text lines or paragraphs labelled 'A', 'B', and
+so on. If we set up a trap that produces text 'T' (as a page footer,
+say), and we also use a diversion to store the formatted text 'D', then
+a document with input text in the order 'A B C D E F' might render as 'A
+B C E T F'. The diversion 'D' will never be output if we do not call
+for it.
+
+ Environments of themselves are not a source of non-linearity in
+document formatting: environment switches have immediate effect. One
+could always write a macro to change as many formatting parameters as
+desired with a single convenient call. But because diversions can be
+nested and macros called by traps that are sprung by other trap-called
+macros, they may be called upon in varying contexts. For example,
+consider a page header that is always to be set in Helvetica. A
+document that uses Times for most of its body text, but Courier for
+displayed code examples, poses a challenge if a page break occurs in the
+middle of a code display; if the header trap assumes that the "previous
+font" is always Times, the rest of the example will be formatted in the
+wrong typeface. One could carefully save all formatting parameters upon
+entering the trap and restore them upon leaving it, but this is verbose,
+error-prone, and not future-proof as the 'groff' language develops.
+Environments save us considerable effort.
+
+
+File: groff.info, Node: Traps, Next: Diversions, Prev: Deferring Output, Up: GNU troff Reference
+
+5.28 Traps
+==========
+
+"Traps" are locations in the output or conditions on the input that,
+when reached or fulfilled, call a specified macro. These traps can
+occur at a given location on the page, at a given location in the
+current diversion (together, these are known as vertical position
+traps), at a blank line, at a line with leading space characters, after
+a quantity of input lines, or at the end of input. Macros called by
+traps are passed no arguments. Setting a trap is also called "planting"
+one. It is said that a trap is "sprung" if its condition is fulfilled.
+
+* Menu:
+
+* Vertical Position Traps::
+* Diversion Traps::
+* Input Line Traps::
+* Blank Line Traps::
+* Leading Space Traps::
+* End-of-input Traps::
+
+
+File: groff.info, Node: Vertical Position Traps, Next: Page Location Traps, Prev: Traps, Up: Traps
+
+5.28.1 Vertical Position Traps
+------------------------------
+
+A "vertical position trap" calls a macro when the formatter's vertical
+drawing position reaches or passes, in the downward direction, a certain
+location on the output page or in a diversion. Its applications include
+setting page headers and footers, body text in multiple columns, and
+footnotes.
+
+ -- Request: .vpt [flag]
+ -- Register: \n[.vpt]
+ Enable vertical position traps if FLAG is non-zero or absent;
+ disable them otherwise. Vertical position traps are those set by
+ the 'wh' request or by 'dt' within a diversion. The parameter that
+ controls whether vertical position traps are enabled is global.
+ Initially, vertical position traps are enabled. The current value
+ is stored in the '.vpt' read-only register.
+
+ A page can't be ejected if 'vpt' is set to zero; see *note The
+ Implicit Page Trap::.
+
+* Menu:
+
+* Page Location Traps::
+* The Implicit Page Trap::
+* Diversion Traps::
+
+
+File: groff.info, Node: Page Location Traps, Next: The Implicit Page Trap, Prev: Vertical Position Traps, Up: Vertical Position Traps
+
+5.28.1.1 Page Location Traps
+............................
+
+A "page location trap" is a vertical position trap that applies to the
+page; that is, to undiverted output. Many can be present; manage them
+with the 'wh' and 'ch' requests.
+
+ -- Request: .wh dist [name]
+ Plant macro NAME as page location trap at DIST. The default
+ scaling unit is 'v'. Non-negative values for DIST set the trap
+ relative to the top of the page; negative values set the trap
+ relative to the bottom of the page. It is not possible to plant a
+ trap less than one basic unit from the page bottom: a DIST of '-0'
+ is interpreted as '0', the top of the page.(1) (*note Page
+ Location Traps-Footnote-1::) An existing _visible_ trap (see below)
+ at DIST is removed; this is 'wh''s sole function if NAME is
+ missing.
+
+ A trap is sprung only if it is "visible", meaning that its location
+ is reachable on the page(2) (*note Page Location
+ Traps-Footnote-2::) and it is not hidden by another trap at the
+ same location already planted there.
+
+ A macro package might set headers and footers as follows; this
+ example configures vertical margins of one inch to the body text,
+ and one half-inch to the titles. Observe the use of the no-break
+ control character with 'sp' request to position our text baselines,
+ and the page number character '%' used with the 'tl' request.
+
+ .\" hdfo.roff
+ .de hd \" page header
+ ' sp .5i
+ ' tl '\\*(Ti''\\*(Da' \" title and date strings
+ ' sp .5i
+ ..
+ .de fo \" page footer
+ ' sp .5i
+ . tl ''%''
+ . bp
+ ..
+ .wh 0 hd \" trap at top of the page
+ .wh -1i fo \" trap 1 inch from bottom
+
+ To use these traps, copy the above (or load it from a file with the
+ 'so' or 'mso' requests), then set up the strings it uses.
+
+ .so hdfo.roff
+ .ds Ti Final Report\"
+ .ds Da 21 May 2023\"
+ .ti
+ On 5 August of last year,
+ this committee tasked me with the investigation of the
+ CFIT (controlled flight into terrain) incident of
+ .\" ...and so on...
+
+ A trap above the top or at or below the bottom of the page can be
+ made visible by either moving it into the page area or increasing
+ the page length so that the trap is on the page. Negative trap
+ values always use the _current_ page length; they are not converted
+ to an absolute vertical position. We can use the 'ptr' request to
+ dump our page location traps to the standard error stream (*note
+ Debugging::). Their positions are reported in basic units; an
+ 'nroff' device example follows.
+
+ .pl 5i
+ .wh -1i xx
+ .ptr
+ error-> xx -240
+ .pl 100i
+ .ptr
+ error-> xx -240
+
+ It is possible to have more than one trap at the same location
+ (although only one at a time can be visible); to achieve this, the
+ traps must be defined at different locations, then moved to the
+ same place with the 'ch' request. In the following example, the
+ many empty lines caused by the 'bp' request are not shown in the
+ output.
+
+ .de a
+ . nop a
+ ..
+ .de b
+ . nop b
+ ..
+ .de c
+ . nop c
+ ..
+ .
+ .wh 1i a
+ .wh 2i b
+ .wh 3i c
+ .bp
+ => a b c
+ .ch b 1i
+ .ch c 1i
+ .bp
+ => a
+ .ch a 0.5i
+ .bp
+ => a b
+
+ -- Register: \n[.t]
+ The read-only register '.t' holds the distance to the next vertical
+ position trap. If there are no traps between the current position
+ and the bottom of the page, it contains the distance to the page
+ bottom. Within a diversion, in the absence of a diversion trap,
+ this distance is the largest representable integer in basic
+ units--effectively infinite.
+
+ -- Request: .ch name [dist]
+ Change the location of a trap by moving macro NAME to new location
+ DIST, or by unplanting it altogether if DIST is absent. The
+ default scaling unit is 'v'. Parameters to 'ch' are specified in
+ the opposite order from 'wh'. If NAME is the earliest planted
+ macro of multiple traps at the same location, (re)moving it from
+ that location exposes the macro next least recently planted at the
+ same place.(3) (*note Page Location Traps-Footnote-3::)
+
+ Changing a trap's location is useful for building up footnotes in a
+ diversion to allow more space at the bottom of the page for them.
+
+ The same macro can be installed simultaneously at multiple locations;
+however, only the earliest-planted instance--that has not yet been
+deleted with 'wh'--will be moved by 'ch'. The following example (using
+an 'nroff' device) illustrates this behavior. Blank lines have been
+elided from the output.
+
+ .de T
+ Trap sprung at \\n(nlu.
+ .br
+ ..
+ .wh 1i T
+ .wh 2i T
+ foo
+ .sp 11i
+ .bp
+ .ch T 4i
+ bar
+ .sp 11i
+ .bp
+ .ch T 5i
+ baz
+ .sp 11i
+ .bp
+ .wh 5i
+ .ch T 6i
+ qux
+ .sp 11i
+ => foo
+ => Trap sprung at 240u.
+ => Trap sprung at 480u.
+ => bar
+ => Trap sprung at 480u.
+ => Trap sprung at 960u.
+ => baz
+ => Trap sprung at 480u.
+ => Trap sprung at 1200u.
+ => qux
+ => Trap sprung at 1440u.
+
+ -- Register: \n[.ne]
+ The read-only register '.ne' contains the amount of space that was
+ needed in the last 'ne' request that caused a trap to be sprung; it
+ is useful in conjunction with the '.trunc' register. *Note Page
+ Control::. Since the '.ne' register is set only by traps, it
+ doesn't make sense to interpolate it outside of macros called by
+ traps.
+
+ -- Register: \n[.trunc]
+ A read-only register containing the amount of vertical space
+ truncated from an 'sp' request by the most recently sprung vertical
+ position trap, or, if the trap was sprung by an 'ne' request, minus
+ the amount of vertical motion produced by the 'ne' request. In
+ other words, at the point a trap is sprung, it represents the
+ difference of what the vertical position would have been but for
+ the trap, and what the vertical position actually is. Since the
+ '.trunc' register is set only by traps, it doesn't make sense to
+ interpolate it outside of macros called by traps.
+
+ -- Register: \n[.pe]
+ This Boolean-valued, read-only register interpolates 1 while a page
+ is being ejected, and 0 otherwise.
+
+ In the following example, we plant the same trap at the top and the
+ bottom of the page. We also make the trap report its name and the
+ vertical drawing position.
+
+ .de T
+ .tm \\$0: page \\n%, nl=\\n[nl] .pe=\\n[.pe]
+ ..
+ .ll 46n
+ .wh 0 T
+ .wh -1v T
+ Those who can make you believe absurdities can make you
+ commit atrocities. \[em] Voltaire
+ error-> T: page 1, nl=0 .pe=0
+ error-> T: page 1, nl=2600 .pe=1
+ => Those who can make you believe absurdities can
+ => make you commit atrocities. -- Voltaire
+
+ When designing macros, keep in mind that diversions and traps do
+normally interact. For example, if a trap calls a header macro (while
+outputting a diversion) that tries to change the font on the current
+page, the effect is not visible before the diversion has completely been
+printed (except for input protected with '\!' or '\?') since the data in
+the diversion is already formatted. In most cases, this is not the
+expected behaviour.
+
+
+File: groff.info, Node: Page Location Traps-Footnotes, Up: Page Location Traps
+
+ (1) *Note The Implicit Page Trap::.
+
+ (2) A trap planted at '20i' or '-30i' will not be sprung on a page of
+length '11i'.
+
+ (3) It may help to think of each trap location as maintaining a
+queue; 'wh' operates on the head of the queue, and 'ch' operates on its
+tail. Only the trap at the head of the queue is visible.
+
+
+File: groff.info, Node: The Implicit Page Trap, Next: Diversion Traps, Prev: Page Location Traps, Up: Vertical Position Traps
+
+5.28.1.2 The Implicit Page Trap
+...............................
+
+If, after starting GNU 'troff' without loading a macro package, you use
+the 'ptr' request to dump a list of the active traps to the standard
+error stream,(1) (*note The Implicit Page Trap-Footnote-1::) nothing is
+reported. Yet the '.t' register will report a steadily decreasing value
+with every output line your document produces, and once the value of
+'.t' gets to within '.V' of zero, you will notice that something
+trap-like happens--the page is ejected, a new one begins, and the value
+of '.t' becomes large once more.
+
+ This "implicit page trap" always exists in the top-level
+diversion;(2) (*note The Implicit Page Trap-Footnote-2::) it works like
+a trap in some ways but not others. Its purpose is to eject the current
+page and start the next one. It has no name, so it cannot be moved or
+deleted with 'wh' or 'ch' requests. You cannot hide it by placing
+another trap at its location, and can move it only by redefining the
+page length with 'pl'. Its operation is suppressed when vertical page
+traps are disabled with GNU 'troff''s 'vpt' request.
+
+
+File: groff.info, Node: The Implicit Page Trap-Footnotes, Up: The Implicit Page Trap
+
+ (1) *Note Debugging::.
+
+ (2) *Note Diversions::.
+
+
+File: groff.info, Node: Diversion Traps, Next: Input Line Traps, Prev: The Implicit Page Trap, Up: Vertical Position Traps
+
+5.28.1.3 Diversion Traps
+........................
+
+A diversion is not formatted in the context of a page, so it lacks page
+location traps; instead it can have a "diversion trap". There can exist
+at most one such vertical position trap per diversion.
+
+ -- Request: .dt [dist name]
+ Set a trap _within_ a diversion at location DIST, which is
+ interpreted relative to diversion rather than page boundaries. If
+ invoked with fewer than two arguments, any diversion trap in the
+ current diversion is removed. The register '.t' works within
+ diversions. It is an error to invoke 'dt' in the top-level
+ diversion. *Note Diversions::.
+
+
+File: groff.info, Node: Input Line Traps, Next: Blank Line Traps, Prev: Diversion Traps, Up: Traps
+
+5.28.2 Input Line Traps
+-----------------------
+
+ -- Request: .it [n name]
+ -- Request: .itc [n name]
+ Set an input line trap, calling macro NAME after processing the
+ next N productive input lines (recall *note Manipulating Filling
+ and Adjustment::). Any existing input line trap in the environment
+ is replaced. Without arguments, 'it' and 'itc' clear any input
+ line trap that has not yet sprung.
+
+ Consider a macro '.ST S N' which sets the next N input lines in the
+ font style S.
+
+ .de ST \" Use style $1 for next $2 text lines.
+ . it \\$2 ES
+ . ft \\$1
+ ..
+ .de ES \" end ST
+ . ft R
+ ..
+ .ST I 1
+ oblique
+ face
+ .ST I 1
+ oblique\c
+ face
+ => oblique face obliqueface (second "face" upright)
+
+ Unlike the 'ce' and 'rj' requests, 'it' counts lines interrupted
+ with the '\c' escape sequence separately (*note Line
+ Continuation::); 'itc' does not. To see the difference, let's
+ change the previous example to use 'itc' instead.
+
+ ...
+ . itc \\$2 ES
+ ...
+ => oblique face obliqueface (second "face" oblique)
+
+ You can think of the 'ce' and 'rj' requests as implicitly creating
+ an input line trap with 'itc' that schedules a break when the trap
+ is sprung.
+
+ .de BR
+ . br
+ . internal: disable centering-without-filling
+ ..
+ .
+ .de ce
+ . if \\n[.br] .br
+ . itc \\$1 BR
+ . internal: enable centering-without-filling
+ ..
+
+ Let us consider in more detail the sorts of input lines that are or
+ are not "productive".
+
+ .de Trap
+ TRAP SPRUNG
+ ..
+ .de Mac
+ .if r a \l'5n'
+ ..
+ .it 2 Trap
+ .
+ foo
+ .Mac
+ bar
+ baz
+ .it 1 Trap
+ .sp \" moves, but does not write or draw
+ qux
+ .itc 1 Trap
+ \h'5n'\c \" moves, but does not write or draw
+ jat
+
+ When 'Trap' gets called depends on whether the 'a' register is
+ defined; the control line with the 'if' request may or may not
+ produce written output. We also see that the spacing request 'sp',
+ while certainly affecting the output, does not spring the input
+ line trap. Similarly, the horizontal motion escape sequence '\h'
+ also affected the output, but was not "written". Observe that we
+ had to follow it with '\c' and use 'itc' to prevent the newline at
+ the end of the text line from causing a word break, which, like an
+ ordinary space character, counts as written output.
+
+ $ groff -Tascii input-trap-example.groff
+ => foo bar TRAP SPRUNG baz
+ =>
+ => qux TRAP SPRUNG jat TRAP SPRUNG
+ $ groff -Tascii -ra1 input-trap-example.groff
+ => foo _____ TRAP SPRUNG bar baz
+ =>
+ => qux TRAP SPRUNG jat TRAP SPRUNG
+
+ Input line traps are associated with the environment (*note
+Environments::); switching to another environment suspends the current
+input line trap, and going back resumes it, restoring the count of
+qualifying lines enumerated in that environment.
+
+
+File: groff.info, Node: Blank Line Traps, Next: Leading Space Traps, Prev: Input Line Traps, Up: Traps
+
+5.28.3 Blank Line Traps
+-----------------------
+
+ -- Request: .blm [name]
+ Set a blank line trap, calling the macro NAME when GNU 'troff'
+ encounters a blank line in an input file, instead of the usual
+ behavior (*note Breaking::). A line consisting only of spaces is
+ also treated as blank and subject to this trap. If no argument is
+ supplied, the default blank line behavior is (re-)established.
+
+
+File: groff.info, Node: Leading Space Traps, Next: End-of-input Traps, Prev: Blank Line Traps, Up: Traps
+
+5.28.4 Leading Space Traps
+--------------------------
+
+ -- Request: .lsm [name]
+ -- Register: \n[lsn]
+ -- Register: \n[lss]
+ Set a leading space trap, calling the macro NAME when GNU 'troff'
+ encounters leading spaces in an input line; the implicit line break
+ that normally happens in this case is suppressed. If no argument
+ is supplied, the default leading space behavior is (re-)established
+ (*note Breaking::).
+
+ The count of leading spaces on an input line is stored in register
+ 'lsn', and the amount of corresponding horizontal motion in
+ register 'lss', irrespective of whether a leading space trap is
+ set. When it is, the leading spaces are removed from the input
+ line, and no motion is produced before calling NAME.
+
+
+File: groff.info, Node: End-of-input Traps, Prev: Leading Space Traps, Up: Traps
+
+5.28.5 End-of-input Traps
+-------------------------
+
+ -- Request: .em [name]
+ Set a trap at the end of input, calling macro NAME after the last
+ line of the last input file has been processed. If no argument is
+ given, any existing end-of-input trap is removed.
+
+ For example, if the document had to have a section at the bottom of
+ the last page for someone to approve it, the 'em' request could be
+ used.
+
+ .de approval
+ \c
+ . ne 3v
+ . sp (\\n[.t]u - 3v)
+ . in +4i
+ . lc _
+ . br
+ Approved:\t\a
+ . sp
+ Date:\t\t\a
+ ..
+ .
+ .em approval
+
+ The '\c' in the above example needs explanation. For historical
+ reasons (compatibility with AT&T 'troff'), the end-of-input macro
+ exits as soon as it causes a page break if no partially collected
+ line remains.(1) (*note End-of-input Traps-Footnote-1::)
+
+ Let us assume that there is no '\c' in the above 'approval' macro,
+ that the page is full, and last output line has been broken with,
+ say, a 'br' request. Because there is no more room, a 'ne' request
+ at this point causes a page ejection, which in turn makes 'troff'
+ exit immediately as just described. In most situations, this is
+ not desired; people generally want to format the input after 'ne'.
+
+ To force processing of the whole end-of-input macro independently
+ of this behavior, it is thus advisable to (invisibly) ensure the
+ existence of a partially collected line ('\c') whenever there is a
+ chance that a page break can happen. In the above example,
+ invoking the 'ne' request ensures that there is room for the
+ subsequent formatted output on the same page, so we need insert
+ '\c' only once.
+
+ The next example shows how to append three lines, then start a new
+ page unconditionally. Since '.ne 1' doesn't give the desired
+ effect--there is always one line available or we are already at the
+ beginning of the next page--we temporarily increase the page length
+ by one line so that we can use '.ne 2'.
+
+ .de EM
+ .pl +1v
+ \c
+ .ne 2
+ line one
+ .br
+ \c
+ .ne 2
+ line two
+ .br
+ \c
+ .ne 2
+ line three
+ .br
+ .pl -1v
+ \c
+ 'bp
+ ..
+ .em EM
+
+ This specific feature affects only the first potential page break
+ caused by the end-of-input macro; further page breaks emitted by
+ the macro are handled normally.
+
+ Another possible use of the 'em' request is to make GNU 'troff'
+ emit a single large page instead of multiple pages. For example,
+ one may want to produce a long plain text file for reading in a
+ terminal or emulator without page footers and headers interrupting
+ the body of the document. One approach is to set the page length
+ at the beginning of the document to a very large value to hold all
+ the text,(2) (*note End-of-input Traps-Footnote-2::) and
+ automatically adjust it to the exact height of the document after
+ the text has been output.
+
+ .de adjust-page-length
+ . br
+ . pl \\n[nl]u \" \n[nl]: current vertical position
+ ..
+ .
+ .de single-page-mode
+ . pl 99999
+ . em adjust-page-length
+ ..
+ .
+ .\" Activate the above code if configured.
+ .if \n[do-continuous-rendering] \
+ . single-page-mode
+
+ Since only one end-of-input trap exists and another macro package
+ may already use it, care must be taken not to break the mechanism.
+ A simple solution would be to append the above macro to the macro
+ package's end-of-input macro using the 'am' request.
+
+
+File: groff.info, Node: End-of-input Traps-Footnotes, Up: End-of-input Traps
+
+ (1) While processing an end-of-input macro, the formatter assumes
+that the next page break must be the last; it goes into "sudden death
+overtime".
+
+ (2) Another, taken by the 'groff' 'man' macros, is to intercept 'ne'
+requests and wrap 'bp' ones.
+
+
+File: groff.info, Node: Diversions, Next: Punning Names, Prev: Traps, Up: GNU troff Reference
+
+5.29 Diversions
+===============
+
+In 'roff' systems it is possible to format text as if for output, but
+instead of writing it immediately, one can "divert" the formatted text
+into a named storage area. It is retrieved later by specifying its name
+after a control character. The same name space is used for such
+diversions as for strings and macros; see *note Identifiers::. Such
+text is sometimes said to be "stored in a macro", but this coinage
+obscures the important distinction between macros and strings on one
+hand and diversions on the other; the former store _unformatted_ input
+text, and the latter capture _formatted_ output. Diversions also do not
+interpret arguments. Applications of diversions include "keeps"
+(preventing a page break from occurring at an inconvenient place by
+forcing a set of output lines to be set as a group), footnotes, tables
+of contents, and indices. For orthogonality it is said that GNU 'troff'
+is in the "top-level diversion" if no diversion is active (that is,
+formatted output is being "diverted" immediately to the output device).
+
+ Dereferencing an undefined diversion will create an empty one of that
+name and cause a warning in category 'mac' to be emitted. *Note
+Warnings::, for information about the enablement and suppression of
+warnings. A diversion does not exist for the purpose of testing with
+the 'd' conditional operator until its initial definition ends (*note
+Operators in Conditionals::). The following requests are used to create
+and alter diversions.
+
+ -- Request: .di [name]
+ -- Request: .da [name]
+ Start collecting formatted output in a diversion called NAME. The
+ 'da' request appends to a diversion called NAME, creating it if
+ necessary. If NAME already exists as an alias, the target of the
+ alias is replaced or appended to; recall *note Strings::. The
+ pending output line is diverted as well. Switching to another
+ environment (with the 'ev' request) before invoking 'di' or 'da'
+ avoids including any pending output line in the diversion; see
+ *note Environments::.
+
+ Invoking 'di' or 'da' without an argument stops diverting output to
+ the diversion named by the most recent corresponding request. If
+ 'di' or 'da' is called without an argument when there is no current
+ diversion, a warning in category 'di' is produced. *Note
+ Warnings::, for information about the enablement and suppression of
+ warnings.
+
+ Before the diversion.
+ .di yyy
+ In the diversion.
+ .br
+ .di
+ After the diversion.
+ .br
+ => After the diversion.
+ .yyy
+ => Before the diversion. In the diversion.
+
+ GNU 'troff' supports "box" requests to exclude a partially collected
+line from a diversion, as this is often desirable.
+
+ -- Request: .box [name]
+ -- Request: .boxa [name]
+ Divert (or append) output to NAME, similarly to the 'di' and 'da'
+ requests, respectively. Any pending output line is _not_ included
+ in the diversion. Without an argument, stop diverting output; any
+ pending output line inside the diversion is discarded.
+
+ Before the box.
+ .box xxx
+ In the box.
+ .br
+ Hidden treasure.
+ .box
+ After the box.
+ .br
+ => Before the box. After the box.
+ .xxx
+ => In the box.
+
+ Apart from pending output line inclusion and the request names that
+populate them, boxes are handled exactly as diversions are. All of the
+following 'groff' language elements can be used with them
+interchangeably.
+
+ -- Register: \n[.z]
+ -- Register: \n[.d]
+ Diversions may be nested. The read-only string-valued register
+ '.z' contains the name of the current diversion. The read-only
+ register '.d' contains the current vertical place in the diversion.
+ If the input text is not being diverted, '.d' reports the same
+ location as the register 'nl'.
+
+ -- Register: \n[.h]
+ The read-only register '.h' stores the "high-water mark" on the
+ current page or in the current diversion. It corresponds to the
+ text baseline of the lowest line on the page.(1) (*note
+ Diversions-Footnote-1::)
+
+ .tm .h==\n[.h], nl==\n[nl]
+ => .h==0, nl==-1
+ This is a test.
+ .br
+ .sp 2
+ .tm .h==\n[.h], nl==\n[nl]
+ => .h==40, nl==120
+
+ As implied by the example, vertical motion does not produce text
+ baselines and thus does not increase the value interpolated by
+ '\n[.h]'.
+
+ -- Register: \n[dn]
+ -- Register: \n[dl]
+ After completing a diversion, the writable registers 'dn' and 'dl'
+ contain its vertical and horizontal sizes. Only the lines just
+ processed are counted: for the computation of 'dn' and 'dl', the
+ requests 'da' and 'boxa' are handled as if 'di' and 'box' had been
+ used, respectively--lines that have been already stored in the
+ diversion (box) are not taken into account.
+
+ .\" Center text both horizontally and vertically.
+ .\" Macro .(c starts centering mode; .)c terminates it.
+ .
+ .\" Disable the escape character with .eo so that we
+ .\" don't have to double backslashes on the "\n"s.
+ .eo
+ .de (c
+ . br
+ . ev (c
+ . evc 0
+ . in 0
+ . nf
+ . di @c
+ ..
+ .de )c
+ . br
+ . ev
+ . di
+ . nr @s (((\n[.t]u - \n[dn]u) / 2u) - 1v)
+ . sp \n[@s]u
+ . ce 1000
+ . @c
+ . ce 0
+ . sp \n[@s]u
+ . br
+ . fi
+ . rr @s
+ . rm @c
+ ..
+ .ec
+
+ -- Escape sequence: \!anything
+ -- Escape sequence: \?anything\?
+ "Transparently" embed ANYTHING into the current diversion,
+ preventing requests, macro calls, and escape sequences from being
+ interpreted when read into a diversion. This is useful for
+ preventing them from taking effect until the diverted text is
+ actually output. The '\!' escape sequence transparently embeds
+ input up to and including the end of the line. The '\?' escape
+ sequence transparently embeds input until its own next occurrence.
+
+ ANYTHING may not contain newlines; use '\!' by itself to embed
+ newlines in a diversion. The escape sequence '\?' is also
+ recognized in copy mode and turned into a single internal code; it
+ is this code that terminates ANYTHING. Thus the following example
+ prints 4.
+
+ .nr x 1
+ .nf
+ .di d
+ \?\\?\\\\?\\\\\\\\nx\\\\?\\?\?
+ .di
+ .nr x 2
+ .di e
+ .d
+ .di
+ .nr x 3
+ .di f
+ .e
+ .di
+ .nr x 4
+ .f
+
+ Both escape sequences read the data in copy mode.
+
+ If '\!' is used in the top-level diversion, its argument is
+ directly embedded into GNU 'troff''s intermediate output. This can
+ be used, for example, to control a postprocessor that processes the
+ data before it is sent to an output driver.
+
+ The '\?' escape used in the top-level diversion produces no output
+ at all; its argument is simply ignored.
+
+ -- Request: .output contents
+ Emit CONTENTS directly to GNU 'troff''s intermediate output
+ (subject to copy mode interpretation); this is similar to '\!' used
+ at the top level. An initial neutral double quote in CONTENTS is
+ stripped to allow embedding of leading spaces.
+
+ This request can't be used before the first page has started--if
+ you get an error, simply insert '.br' before the 'output' request.
+
+ Use with caution! It is normally only needed for mark-up used by a
+ postprocessor that does something with the output before sending it
+ to the output device, filtering out CONTENTS again.
+
+ -- Request: .asciify div
+ "Unformat" the diversion DIV in a way such that Unicode basic Latin
+ (ASCII) characters, characters translated with the 'trin' request,
+ space characters, and some escape sequences, that were formatted
+ and diverted into DIV are treated like ordinary input characters
+ when DIV is reread. Doing so can be useful in conjunction with the
+ 'writem' request. 'asciify' can be also used for gross hacks; for
+ example, the following sets register 'n' to 1.
+
+ .tr @.
+ .di x
+ @nr n 1
+ .br
+ .di
+ .tr @@
+ .asciify x
+ .x
+
+ 'asciify' cannot return all items in a diversion to their source
+ equivalent: nodes such as those produced by the '\N' escape
+ sequence will remain nodes, so the result cannot be guaranteed to
+ be a pure string. *Note Copy Mode::. Glyph parameters such as the
+ type face and size are not preserved; use 'unformat' to achieve
+ that.
+
+ -- Request: .unformat div
+ Like 'asciify', unformat the diversion DIV. However, 'unformat'
+ handles only tabs and spaces between words, the latter usually
+ arising from spaces or newlines in the input. Tabs are treated as
+ input tokens, and spaces become adjustable again. The vertical
+ sizes of lines are not preserved, but glyph information (font, type
+ size, space width, and so on) is retained.
+
+
+File: groff.info, Node: Diversions-Footnotes, Up: Diversions
+
+ (1) Thus, the "water" gets "higher" proceeding _down_ the page.
+
+
+File: groff.info, Node: Punning Names, Next: Environments, Prev: Diversions, Up: GNU troff Reference
+
+5.30 Punning Names
+==================
+
+Macros, strings, and diversions share a name space; recall *note
+Identifiers::. Internally, the same mechanism is used to store them.
+You can thus call a macro with string interpolation syntax and vice
+versa.
+
+ .de subject
+ Typesetting
+ ..
+ .de predicate
+ rewards attention to detail
+ ..
+ \*[subject] \*[predicate].
+ Truly.
+ => Typesetting
+ => rewards attention to detail Truly.
+
+What went wrong? Strings don't contain newlines, but macros do. String
+interpolation placed a newline at the end of '\*[subject]', and the next
+thing on the input was a space. Then when '\*[predicate]' was
+interpolated, it was followed by the empty request '.' on a line by
+itself. If we want to use macros as strings, we must take interpolation
+behavior into account.
+
+ .de subject
+ Typesetting\\
+ ..
+ .de predicate
+ rewards attention to detail\\
+ ..
+ \*[subject] \*[predicate].
+ Truly.
+ => Typesetting rewards attention to detail. Truly.
+
+By ending each text line of the macros with an escaped '\<RET>', we get
+the desired effect (*note Line Continuation::).(1) (*note Punning
+Names-Footnote-1::) What would have happened if we had used only one
+backslash at a time instead?
+
+ Interpolating a string does not hide existing macro arguments. We
+can also place the escaped newline outside the string interpolation
+instead of within the string definition. Thus, in a macro, a more
+efficient way of doing
+
+ .xx \\$@
+
+is
+
+ \\*[xx]\\
+
+The latter calling syntax doesn't change the value of '\$0', which is
+then inherited from the calling macro (*note Parameters::).
+
+ Diversions can be also called with string syntax. It is sometimes
+convenient to copy one-line diversions to a string.
+
+ .di xx
+ the
+ .ft I
+ interpolation system
+ .ft
+ .br
+ .di
+ .ds yy This is a test of \*(xx\c
+ \*(yy.
+ => This is a test of the interpolation system.
+
+As the previous example shows, it is possible to store formatted output
+in strings. The '\c' escape sequence prevents the subsequent newline
+from being interpreted as a break (again, *note Line Continuation::).
+
+ Copying multi-output line diversions produces unexpected results.
+
+ .di xxx
+ a funny
+ .br
+ test
+ .br
+ .di
+ .ds yyy This is \*[xxx]\c
+ \*[yyy].
+ => test This is a funny.
+
+ Usually, it is not predictable whether a diversion contains one or
+more output lines, so this mechanism should be avoided. With AT&T
+'troff', this was the only solution to strip off a final newline from a
+diversion. Another disadvantage is that the spaces in the copied string
+are already formatted, preventing their adjustment. This can cause ugly
+results.
+
+ A clean solution to this problem is available in GNU 'troff', using
+the requests 'chop' to remove the final newline of a diversion, and
+'unformat' to make the horizontal spaces adjustable again.
+
+ .box xxx
+ a funny
+ .br
+ test
+ .br
+ .box
+ .chop xxx
+ .unformat xxx
+ This is \*[xxx].
+ => This is a funny test.
+
+ *Note Gtroff Internals::.
+
+
+File: groff.info, Node: Punning Names-Footnotes, Up: Punning Names
+
+ (1) The backslash is doubled. *Note Copy Mode::.
+
+
+File: groff.info, Node: Environments, Next: Suppressing Output, Prev: Diversions, Up: GNU troff Reference
+
+5.31 Environments
+=================
+
+As discussed in *note Deferring Output::, environments store most of the
+parameters that determine the appearance of text. A default environment
+named '0' exists when GNU 'troff' starts up; it is modified by
+formatting-related requests and escape sequences.
+
+ You can create new environments and switch among them. Only one is
+current at any given time. Active environments are managed using a
+"stack", a data structure supporting "push" and "pop" operations. The
+current environment is at the top of the stack. The same environment
+name can be pushed onto the stack multiple times, possibly interleaved
+with others. Popping the environment stack does not destroy the current
+environment; it remains accessible by name and can be made current again
+by pushing it at any time. Environments cannot be renamed or deleted,
+and can only be modified when current. To inspect the environment
+stack, use the 'pev' request; see *note Debugging::.
+
+ Environments store the following information.
+
+ * a partially collected line, if any
+
+ * data about the most recently output glyph and line (registers
+ '.cdp', '.cht', '.csk', '.n', '.w')
+
+ * typeface parameters (size, family, style, height and slant,
+ inter-word and inter-sentence space sizes)
+
+ * page parameters (line length, title length, vertical spacing, line
+ spacing, indentation, line numbering, centering, right-alignment,
+ underlining, hyphenation parameters)
+
+ * filling enablement; adjustment enablement and mode
+
+ * tab stops; tab, leader, escape, control, no-break control,
+ hyphenation, and margin characters
+
+ * input line traps
+
+ * stroke and fill colors
+
+ -- Request: .ev [ident]
+ -- Register: \n[.ev]
+ Enter the environment IDENT, which is created if it does not
+ already exist, using the same parameters as for the default
+ environment used at startup. With no argument, GNU 'troff'
+ switches to the previous environment.
+
+ Invoking 'ev' with an argument puts environment IDENT onto the top
+ of the environment stack. (If it isn't already present in the
+ stack, this is a proper push.) Without an argument, 'ev' pops the
+ environment stack, making the previous environment current. It is
+ an error to pop the environment stack with no previous environment
+ available. The read-only string-valued register '.ev' contains the
+ name of the current environment--the one at the top of the stack.
+
+ .ev footnote-env
+ .fam N
+ .ps 6
+ .vs 8
+ .ll -.5i
+ .ev
+
+ ...
+
+ .ev footnote-env
+ \[dg] Observe the smaller text and vertical spacing.
+ .ev
+
+ We can familiarize ourselves with stack behavior by wrapping the
+ 'ev' request with a macro that reports the contents of the '.ev'
+ register to the standard error stream.
+
+ .de EV
+ . ev \\$1
+ . tm environment is now \\n[.ev]
+ ..
+ .
+ .EV foo
+ .EV bar
+ .EV
+ .EV baz
+ .EV
+ .EV
+ .EV
+
+ error-> environment is now foo
+ error-> environment is now bar
+ error-> environment is now foo
+ error-> environment is now baz
+ error-> environment is now foo
+ error-> environment is now 0
+ error-> error: environment stack underflow
+ error-> environment is now 0
+
+ -- Request: .evc environment
+ Copy the contents of ENVIRONMENT to the current environment.
+
+ The following environment data are not copied.
+
+ * a partially collected line, if present;
+
+ * the interruption status of the previous input line (due to use
+ of the '\c' escape sequence);
+
+ * the count of remaining lines to center, to right-justify, or
+ to underline (with or without underlined spaces)--these are
+ set to zero;
+
+ * the activation status of temporary indentation;
+
+ * input line traps and their associated data;
+
+ * the activation status of line numbering (which can be
+ reactivated with '.nm +0'); and
+
+ * the count of consecutive hyphenated lines (set to zero).
+
+ -- Register: \n[.w]
+ -- Register: \n[.cht]
+ -- Register: \n[.cdp]
+ -- Register: \n[.csk]
+ The '\n[.w]' register contains the width of the last glyph
+ formatted in the environment.
+
+ The '\n[.cht]' register contains the height of the last glyph
+ formatted in the environment.
+
+ The '\n[.cdp]' register contains the depth of the last glyph
+ formatted in the environment. It is positive for glyphs extending
+ below the baseline.
+
+ The '\n[.csk]' register contains the "skew" (how far to the right
+ of the glyph's center that GNU 'troff' should place an accent) of
+ the last glyph formatted in the environment.
+
+ -- Register: \n[.n]
+ The '\n[.n]' register contains the length of the previous output
+ line emitted in the environment.
+
+
+File: groff.info, Node: Suppressing Output, Next: Colors, Prev: Environments, Up: GNU troff Reference
+
+5.32 Suppressing Output
+=======================
+
+ -- Escape sequence: \O[num]
+ Suppress GNU 'troff' output of glyphs and geometric objects. The
+ sequences '\O2', '\O3', '\O4', and '\O5' are intended for internal
+ use by 'grohtml'.
+
+ '\O0'
+ Disable the emission of glyphs and geometric objects to the
+ output driver, provided that this sequence occurs at the
+ outermost suppression level (see '\O3' and '\04' below).
+ Horizontal motions corresponding to non-overstruck glyph
+ widths still occur.
+
+ '\O1'
+ Enable the emission of glyphs and geometric objects to the
+ output driver, provided that this sequence occurs at the
+ outermost suppression level.
+
+ '\O0' and '\O1' also reset the four registers 'opminx', 'opminy',
+ 'opmaxx', and 'opmaxy' to -1. These four registers mark the top
+ left and bottom right hand corners of a box encompassing all
+ written or drawn output.
+
+ '\O2'
+ At the outermost suppression level, enable emission of glyphs
+ and geometric objects, and write to the standard error stream
+ the page number and values of the four aforementioned
+ registers encompassing glyphs written since the last
+ interpolation of a '\O' sequence, as well as the page offset,
+ line length, image file name (if any), horizontal and vertical
+ device motion quanta, and input file name. Numeric values are
+ in basic units.
+
+ '\O3'
+ Begin a nested suppression level. 'grohtml' uses this
+ mechanism to create images of output preprocessed with 'gpic',
+ 'geqn', and 'gtbl'. At startup, GNU 'troff' is at the
+ outermost suppression level. 'pre-grohtml' generates these
+ sequences when processing the document, using GNU 'troff' with
+ the 'ps' output device, Ghostscript, and the PNM tools to
+ produce images in PNG format. They start a new page if the
+ device is not 'html' or 'xhtml', to reduce the number of
+ images crossing a page boundary.
+
+ '\O4'
+ End a nested suppression level.
+
+ '\O[5PFILE]'
+ At the outermost suppression level, write the name 'file' to
+ the standard error stream at position P, which must be one of
+ 'l', 'r', 'c', or 'i', corresponding to left, right, centered,
+ and inline alignments within the document, respectively. FILE
+ is a name associated with the production of the next image.
+
+ -- Register: \n[.O]
+ Output suppression nesting level applied by '\O3' and '\O4' escape
+ sequences.
+
+
+File: groff.info, Node: I/O, Next: Postprocessor Access, Prev: Suppressing Output, Up: GNU troff Reference
+
+5.33 I/O
+========
+
+'gtroff' has several requests for including files:
+
+ -- Request: .so file
+ -- Request: .soquiet file
+ Replace the 'so' request's control line with the contents of the
+ file named by the argument, "sourcing" it. FILE is sought in the
+ directories specified by '-I' command-line option. If FILE does
+ not exist, a warning in category 'file' is produced and the request
+ has no further effect. *Note Warnings::, for information about the
+ enablement and suppression of warnings.
+
+ 'so' can be useful for large documents; e.g., allowing each chapter
+ of a book to be kept in a separate file. However, files
+ interpolated with 'so' are not preprocessed; to overcome this
+ limitation, see the 'gsoelim(1)' man page.
+
+ Since GNU 'troff' replaces the entire control line with the
+ contents of a file, it matters whether 'file' is terminated with a
+ newline or not. Assume that file 'xxx' contains only the word
+ 'foo' without a trailing newline.
+
+ $ printf 'foo' > xxx
+
+ The situation is
+ .so xxx
+ bar.
+ => The situation is foobar.
+
+ 'soquiet' works the same way, except that no warning diagnostic is
+ issued if FILE does not exist.
+
+ -- Request: .pso command
+ Read the standard output from the specified COMMAND and include it
+ in place of the 'pso' request.
+
+ It is an error to use this request in safer mode, which is the
+ default. Invoke GNU 'troff' or a front end with the '-U' option to
+ enable unsafe mode.
+
+ The comment regarding a final newline for the 'so' request is valid
+ for 'pso' also.
+
+ -- Request: .mso file
+ -- Request: .msoquiet file
+ Identical to the 'so' and 'soquiet' requests, respectively, except
+ that 'gtroff' searches for the specified FILE in the same
+ directories as macro files for the '-m' command-line option. If
+ the file name to be included has the form 'NAME.tmac' and it isn't
+ found, these requests try to include 'tmac.NAME' and vice versa.
+
+ -- Request: .trf file
+ -- Request: .cf file
+ Transparently output the contents of FILE. Each line is output as
+ if it were preceded by '\!'; however, the lines are _not_ subject
+ to copy mode interpretation. If the file does not end with a
+ newline, 'trf' adds one. Both requests cause a break.
+
+ When used in a diversion, these requests embed a node (*note Gtroff
+ Internals::) in it that, when reread, causes the contents of FILE
+ to be transparently copied to the output. In AT&T 'troff', the
+ contents of FILE are immediately copied to the output regardless of
+ whether there is a current diversion; this behaviour is so
+ anomalous that it must be considered a bug.
+
+ While 'cf' copies the contents of FILE completely unprocessed,
+ 'trf' disallows characters such as NUL that are not valid 'gtroff'
+ input characters (*note Identifiers::).
+
+ For 'cf', within a diversion, "completely unprocessed" means that
+ each line of a file to be inserted is handled as if it were
+ preceded by '\!\\!'.
+
+ To define a macro 'x' containing the contents of file 'f', use
+
+ .ev 1
+ .di x
+ .trf f
+ .di
+ .ev
+
+ The calls to 'ev' prevent the partially collected output line from
+ becoming part of the diversion (*note Diversions::).
+
+ -- Request: .nx [file]
+ Force 'gtroff' to continue processing of the file specified as an
+ argument. If no argument is given, immediately jump to the end of
+ file.
+
+ -- Request: .rd [prompt [arg1 arg2 ...]]
+ Read from standard input, and include what is read as though it
+ were part of the input file. Text is read until a blank line is
+ encountered.
+
+ If standard input is a TTY input device (keyboard), write PROMPT to
+ standard error, followed by a colon (or send BEL for a beep if no
+ argument is given).
+
+ Arguments after PROMPT are available for the input. For example,
+ the line
+
+ .rd data foo bar
+
+ with the input 'This is \$2.' prints
+
+ This is bar.
+
+ Using the 'nx' and 'rd' requests, it is easy to set up form letters.
+The form letter template is constructed like this, putting the following
+lines into a file called 'repeat.let':
+
+ .ce
+ \*(td
+ .sp 2
+ .nf
+ .rd
+ .sp
+ .rd
+ .fi
+ Body of letter.
+ .bp
+ .nx repeat.let
+
+When this is run, a file containing the following lines should be
+redirected in. Requests included in this file are executed as though
+they were part of the form letter. The last block of input is the 'ex'
+request, which tells GNU 'troff' to stop processing. If this were not
+there, 'troff' would not know when to stop.
+
+ Trent A. Fisher
+ 708 NW 19th Av., #202
+ Portland, OR 97209
+
+ Dear Trent,
+
+ Len Adollar
+ 4315 Sierra Vista
+ San Diego, CA 92103
+
+ Dear Mr. Adollar,
+
+ .ex
+
+ -- Request: .pi pipe
+ Pipe the output of 'gtroff' to the shell command(s) specified by
+ PIPE. This request must occur before 'gtroff' has a chance to
+ print anything.
+
+ It is an error to use this request in safer mode, which is the
+ default. Invoke GNU 'troff' or a front end with the '-U' option to
+ enable unsafe mode.
+
+ Multiple calls to 'pi' are allowed, acting as a chain. For
+ example,
+
+ .pi foo
+ .pi bar
+ ...
+
+ is the same as '.pi foo | bar'.
+
+ The intermediate output format of GNU 'troff' is piped to the
+ specified commands. Consequently, calling 'groff' without the '-Z'
+ option normally causes a fatal error.
+
+ -- Request: .sy cmds
+ -- Register: \n[systat]
+ Execute the shell command(s) specified by CMDS. The output is not
+ saved anywhere, so it is up to the user to do so.
+
+ It is an error to use this request in safer mode; this is the
+ default. Give GNU 'troff' or a front end program the '-U' option
+ to enable unsafe mode.
+
+ The following code fragment introduces the current time into a
+ document.
+
+ .sy perl -e 'printf ".nr H %d\\n.nr M %d\\n.nr S %d\\n",\
+ (localtime(time))[2,1,0]' > /tmp/x\n[$$]
+ .so /tmp/x\n[$$]
+ .sy rm /tmp/x\n[$$]
+ \nH:\nM:\nS
+
+ This works by having the Perl script (run by 'sy') write 'nr'
+ requests that set the registers 'H', 'M', and 'S' to a temporary
+ file. The 'roff' document then reads the temporary file using the
+ 'so' request.
+
+ The registers 'seconds', 'minutes', and 'hours', initialized at
+ startup of GNU 'troff', should satisfy most requirements. Use the
+ 'af' request to format their values for output.
+
+ .af hours 00
+ .af minutes 00
+ .af seconds 00
+ \n[hours]:\n[minutes]:\n[seconds]
+ => 02:17:54
+
+ The writable register 'systat' contains the return value of the
+ 'system()' function executed by the last 'sy' request.
+
+ -- Request: .open stream file
+ -- Request: .opena stream file
+ Open the specified FILE for writing and associates the specified
+ STREAM with it.
+
+ The 'opena' request is like 'open', but if the file exists, append
+ to it instead of truncating it.
+
+ It is an error to use these requests in safer mode; this is the
+ default. Give GNU 'troff' or a front end program the '-U' option
+ to enable unsafe mode.
+
+ -- Request: .write stream data
+ -- Request: .writec stream data
+ Write to the file associated with the specified STREAM. The stream
+ must previously have been the subject of an open request. The
+ remainder of the line is interpreted as the 'ds' request reads its
+ second argument: an initial neutral double quote in CONTENTS is
+ stripped to allow embedding of leading spaces, and it is read in
+ copy mode.
+
+ The 'writec' request is like 'write', but only 'write' appends a
+ newline to the data.
+
+ -- Request: .writem stream xx
+ Write the contents of the macro or string XX to the file associated
+ with the specified STREAM.
+
+ XX is read in copy mode, i.e., already formatted elements are
+ ignored. Consequently, diversions must be unformatted with the
+ 'asciify' request before calling 'writem'. Usually, this means a
+ loss of information.
+
+ -- Request: .close stream
+ Close the specified STREAM; the stream is no longer an acceptable
+ argument to the 'write' request.
+
+ Here a simple macro to write an index entry.
+
+ .open idx test.idx
+ .
+ .de IX
+ . write idx \\n[%] \\$*
+ ..
+ .
+ .IX test entry
+ .
+ .close idx
+
+ -- Escape sequence: \Ve
+ -- Escape sequence: \V(ev
+ -- Escape sequence: \V[env]
+ Interpolate the contents of the specified environment variable ENV
+ (one-character name E, two-character name EV) as returned by the
+ function 'getenv(3)'. '\V' is interpreted even in copy mode (*note
+ Copy Mode::).
+
+
+File: groff.info, Node: Postprocessor Access, Next: Miscellaneous, Prev: I/O, Up: GNU troff Reference
+
+5.34 Postprocessor Access
+=========================
+
+Two escape sequences and two requests enable documents to pass
+information directly to a postprocessor. These are useful for
+exercising device-specific capabilities that the 'groff' language does
+not abstract or generalize; examples include the embedding of hyperlinks
+and image files. Device-specific functions are documented in each
+output driver's man page, such as 'gropdf(1)', 'grops(1)', or
+'grotty(1)'.
+
+ -- Request: .device xxx ...
+ -- Escape sequence: \X'xxx ...'
+ Embed all XXX arguments into GNU 'troff' output as parameters to a
+ device control command 'x X'. The meaning and interpretation of
+ such parameters is determined by the output driver or other
+ postprocessor.
+
+ The 'device' request processes its arguments in copy mode (*note
+ Copy Mode::). An initial neutral double quote in CONTENTS is
+ stripped to allow embedding of leading spaces. By contrast, within
+ '\X' arguments, the escape sequences '\&', '\)', '\%', and '\:' are
+ ignored; '\<SP>' and '\~' are converted to single space characters;
+ and '\\' has its escape character stripped. So that the basic
+ Latin subset of the Unicode character set(1) (*note Postprocessor
+ Access-Footnote-1::) can be reliably encoded in device control
+ commands, seven special character escape sequences ('\-', '\[aq]',
+ '\[dq]', '\[ga]', '\[ha]', '\[rs]', and '\[ti]',) are mapped to
+ basic Latin characters; see the 'groff_char(7)' man page. For this
+ transformation, character translations and special character
+ definitions are ignored.(2) (*note Postprocessor
+ Access-Footnote-2::) The use of any other escape sequence in '\X'
+ parameters is normally an error.
+
+ If the 'use_charnames_in_special' directive appears in the output
+ device's 'DESC' file, the use of special character escape sequences
+ is _not_ an error; they are simply output verbatim (with the
+ exception of the seven mapped to Unicode basic Latin characters,
+ discussed above). 'use_charnames_in_special' is currently employed
+ only by 'grohtml'.
+
+ -- Request: .devicem name
+ -- Escape sequence: \Yn
+ -- Escape sequence: \Y(nm
+ -- Escape sequence: \Y[name]
+ This is approximately equivalent to '\X'\*[NAME]'' (one-character
+ name N, two-character name NM). However, the contents of the
+ string or macro NAME are not interpreted; also it is permitted for
+ NAME to have been defined as a macro and thus contain newlines (it
+ is not permitted for the argument to '\X' to contain newlines).
+ The inclusion of newlines requires an extension to the AT&T 'troff'
+ output format, and confuses drivers that do not know about this
+ extension (*note Device Control Commands::).
+
+ -- Request: .tag name
+ -- Request: .taga name
+ Reserved for internal use.
+
+
+File: groff.info, Node: Postprocessor Access-Footnotes, Up: Postprocessor Access
+
+ (1) that is, ISO 646:1991-IRV or, popularly, "US-ASCII"
+
+ (2) They are bypassed because these parameters are not rendered as
+glyphs in the output; instead, they remain abstract characters--in a PDF
+bookmark or a URL, for example.
+
+
+File: groff.info, Node: Miscellaneous, Next: Gtroff Internals, Prev: Postprocessor Access, Up: GNU troff Reference
+
+5.35 Miscellaneous
+==================
+
+We document here GNU 'troff' features that fit poorly elsewhere.
+
+ -- Request: .nm [start [increment [space [indentation]]]]
+ -- Register: \n[ln]
+ -- Register: \n[.nm]
+ Begin (or, with no arguments, cease) numbering output lines. START
+ assigns the number of the _next_ output line. Only line numbers
+ divisible by INCREMENT are marked (default: '1'). SPACE configures
+ the horizontal spacing between the number and the text (default:
+ '1'). Any given INDENTATION is applied to the numbers (default:
+ '0'). The third and fourth arguments are reckoned in numeral
+ widths ('\0'). START must be non-negative and INCREMENT positive.
+
+ The formatter aligns the number to the right in a width of three
+ numeral spaces plus INDENTATION, then catenates SPACE and the
+ output line. The line length is _not_ reduced. Depending on the
+ value of the page offset,(1) (*note Miscellaneous-Footnote-1::)
+ numbers wider than the allocated space protrude into the left
+ margin, or shift the output line to the right.
+
+ Line numbering parameters corresponding to missing arguments are
+ not altered. After numbering is disabled, '.nm +0' resumes it
+ using the previously active parameters.
+
+ The parameters of 'nm' are associated with the environment (*note
+ Environments::).
+
+ While numbering is enabled, the output line number register 'ln' is
+ updated as each line is output, even if no line number is formatted
+ with it because it is being skipped (it is not a multiple of
+ INCREMENT) or because numbering is suppressed (see the 'nn' request
+ below).
+
+ The '.nm' register tracks the enablement status of numbering.
+ Temporary suspension of numbering with the 'nn' request does _not_
+ alter its value.
+
+ .po 5n
+ .ll 44n
+ Programming,
+ when stripped of all its circumstantial irrelevancies,
+ .nm 999 1 1 -4
+ boils down to no more and no less than
+ .nm +0 3
+ very effective thinking so as to avoid unmastered
+ .nn 2
+ complexity,
+ to very vigorous separation of your many
+ different concerns.
+ .br
+ \(em Edsger Dijkstra
+ .sp
+ .nm 1 1 1
+ This guy's arrogance takes your breath away.
+ .br
+ \(em John Backus
+ => Programming, when stripped of all its cir-
+ => 999 cumstantial irrelevancies, boils down to no
+ => more and no less than very effective think-
+ => ing so as to avoid unmastered complexity, to
+ => very vigorous separation of your many dif-
+ => ferent concerns.
+ => 1002 -- Edsger Dijkstra
+ =>
+ => 1 This guy's arrogance takes your breath away.
+ => 2 -- John Backus
+
+ -- Request: .nn [skip]
+ -- Register: \n[.nn]
+ Suppress numbering of the next SKIP output lines that would
+ otherwise be numbered. The default is 1. 'nn' can be invoked when
+ line numbering is not active; suppression of numbering will take
+ effect for SKIP lines once 'nm' enables it.
+
+ The '.nn' register stores the count of output lines still to have
+ their numbering suppressed.
+
+ This count is associated with the environment (*note
+ Environments::).
+
+ To test whether the current output line will be numbered, you must
+check both the '.nm' and '.nn' registers.
+
+ .de is-numbered
+ . nop This line
+ . ie (\\n[.nm] & (1-\\n[.nn])) IS
+ . el ISN'T
+ . nop numbered.
+ . br
+ ..
+ Test line numbering.
+ .is-numbered
+ .nm 1
+ .nn 1
+ .is-numbered
+ .is-numbered
+ .nm
+ .is-numbered
+ => Test line numbering. This line ISN'T numbered.
+ => This line ISN'T numbered.
+ => 1 This line IS numbered.
+ => This line ISN'T numbered.
+
+ -- Request: .mc [margin-character [distance]
+ Begin (or, with no arguments, cease) writing a "margin-character"
+ to the right of each output line. The DISTANCE argument separates
+ MARGIN-CHARACTER from the right margin. If absent, the most recent
+ value is used; the default is 10 points. If an output line exceeds
+ the line length, the margin character is appended to it. No margin
+ character is written on lines produced by the 'tl' request.
+
+ The margin character is a property of the output line; the margin
+ character last configured when the line is output controls. If the
+ margin character is disabled before an output line breaks, none is
+ output (but see below).
+
+ The margin character is associated with the environment (*note
+ Environments::).
+
+ .ll 5i
+ .nf
+ .mc \[br]
+ This paragraph is marked with a margin character.
+ .sp
+ As seen above, vertical space isn't thus marked.
+ \&
+ An output line that is present, but empty, is.
+ => This paragraph is marked with a margin character. |
+ =>
+ => As seen above, vertical space isn't thus marked. |
+ => |
+ => An output line that is present, but empty, is. |
+
+ For compatibility with AT&T 'troff', a call to 'mc' to set the margin
+character can't be undone immediately; at least one line gets a margin
+character.
+
+ .ll 10n
+ .nf
+ .mc |
+ .mc *
+ .mc
+ foo
+ bar
+ => foo *
+ => bar
+
+ The margin character mechanism is commonly used to annotate changes
+in documents. The 'groff' distribution ships a program, 'gdiffmk', to
+assist with this task.(2) (*note Miscellaneous-Footnote-2::)
+
+ -- Request: .psbb file
+ -- Register: \n[llx]
+ -- Register: \n[lly]
+ -- Register: \n[urx]
+ -- Register: \n[ury]
+ Retrieve the bounding box of the PostScript image found in FILE,
+ which must conform to Adobe's "Document Structuring Conventions"
+ (DSC), locate a '%%BoundingBox' comment, and store the (upper-,
+ lower-, -left, -right) values into the registers 'llx', 'lly',
+ 'urx', and 'ury'. If an error occurs (for example, if no
+ '%%BoundingBox' comment is present), the formatter sets these
+ registers to 0.
+
+ The search path for FILE can be controlled with the '-I'
+ command-line option.
+
+
+File: groff.info, Node: Miscellaneous-Footnotes, Up: Miscellaneous
+
+ (1) Recall *note Line Layout::.
+
+ (2) Historically, tools named 'nrchbar' and 'changebar' were
+developed for marking changes with margin characters and could be found
+in archives of the 'comp.sources.unix' USENET group. Some proprietary
+Unices also offer(ed) a 'diffmk' program.
+
+
+File: groff.info, Node: Gtroff Internals, Next: Debugging, Prev: Miscellaneous, Up: GNU troff Reference
+
+5.36 'gtroff' Internals
+=======================
+
+'gtroff' processes input in three steps. One or more input characters
+are converted to an "input token".(1) (*note Gtroff
+Internals-Footnote-1::) Then, one or more input tokens are converted to
+an "output node". Finally, output nodes are converted to the
+intermediate output language understood by all output devices.
+
+ Actually, before step one happens, 'gtroff' converts certain escape
+sequences into reserved input characters (not accessible by the user);
+such reserved characters are used for other internal processing also -
+this is the very reason why not all characters are valid input. *Note
+Identifiers::, for more on this topic.
+
+ For example, the input string 'fi\[:u]' is converted into a character
+token 'f', a character token 'i', and a special token ':u' (representing
+u umlaut). Later on, the character tokens 'f' and 'i' are merged to a
+single output node representing the ligature glyph 'fi' (provided the
+current font has a glyph for this ligature); the same happens with ':u'.
+All output glyph nodes are 'processed', which means that they are
+invariably associated with a given font, font size, advance width, etc.
+During the formatting process, 'gtroff' itself adds various nodes to
+control the data flow.
+
+ Macros, diversions, and strings collect elements in two chained
+lists: a list of input tokens that have been passed unprocessed, and a
+list of output nodes. Consider the following diversion.
+
+ .di xxx
+ a
+ \!b
+ c
+ .br
+ .di
+
+It contains these elements.
+
+node list token list element number
+
+line start node -- 1
+glyph node 'a' -- 2
+word space node -- 3
+-- 'b' 4
+-- '\n' 5
+glyph node 'c' -- 6
+vertical size node -- 7
+vertical size node -- 8
+-- '\n' 9
+
+Elements 1, 7, and 8 are inserted by 'gtroff'; the latter two (which are
+always present) specify the vertical extent of the last line, possibly
+modified by '\x'. The 'br' request finishes the pending output line,
+inserting a newline input token, which is subsequently converted to a
+space when the diversion is reread. Note that the word space node has a
+fixed width that isn't adjustable anymore. To convert horizontal space
+nodes back to input tokens, use the 'unformat' request.
+
+ Macros only contain elements in the token list (and the node list is
+empty); diversions and strings can contain elements in both lists.
+
+ The 'chop' request simply reduces the number of elements in a macro,
+string, or diversion by one. Exceptions are "compatibility save" and
+"compatibility ignore" input tokens, which are ignored. The 'substring'
+request also ignores those input tokens.
+
+ Some requests like 'tr' or 'cflags' work on glyph identifiers only;
+this means that the associated glyph can be changed without destroying
+this association. This can be very helpful for substituting glyphs. In
+the following example, we assume that glyph 'foo' isn't available by
+default, so we provide a substitution using the 'fchar' request and map
+it to input character 'x'.
+
+ .fchar \[foo] foo
+ .tr x \[foo]
+
+Now let us assume that we install an additional special font 'bar' that
+has glyph 'foo'.
+
+ .special bar
+ .rchar \[foo]
+
+Since glyphs defined with 'fchar' are searched before glyphs in special
+fonts, we must call 'rchar' to remove the definition of the fallback
+glyph. Anyway, the translation is still active; 'x' now maps to the
+real glyph 'foo'.
+
+ Macro and request arguments preserve compatibility mode enablement.
+
+ .cp 1 \" switch to compatibility mode
+ .de xx
+ \\$1
+ ..
+ .cp 0 \" switch compatibility mode off
+ .xx caf\['e]
+ => café
+
+Since compatibility mode is enabled while 'de' is invoked, the macro
+'xx' enables compatibility mode when it is called. Argument '$1' can
+still be handled properly because it inherits the compatibility mode
+enablement status that was active at the point where 'xx' was called.
+
+ After interpolation of the parameters, the compatibility save and
+restore tokens are removed.
+
+
+File: groff.info, Node: Gtroff Internals-Footnotes, Up: Gtroff Internals
+
+ (1) Except the escape sequences '\f', '\F', '\H', '\m', '\M', '\R',
+'\s', and '\S', which are processed immediately if not in copy mode.
+
+
+File: groff.info, Node: Debugging, Next: Implementation Differences, Prev: Gtroff Internals, Up: GNU troff Reference
+
+5.37 Debugging
+==============
+
+ Standard troff voodoo, just put a power of two backslashes in
+ front of it until it works and if you still have problems add a \c.
+ -- Ron Natalie
+
+ GNU 'troff' is not the easiest language to debug, in part thanks to
+its design features of recursive interpolation and the use of
+multi-stage pipeline processing in the surrounding system. Nevertheless
+there exist several features useful for troubleshooting.
+
+ Preprocessors use the 'lf' request to preserve the identity of the
+line numbers and names of input files. GNU 'troff' emits a variety of
+error diagnostics and supports several categories of warning; the output
+of these can be selectively suppressed. A trace of the formatter's
+input processing stack can be emitted when errors or warnings occur by
+means of GNU 'troff''s '-b' option, or produced on demand with the
+'backtrace' request. The 'tm' and related requests can be used to emit
+customized diagnostic messages or for instrumentation while
+troubleshooting. The 'ex' and 'ab' requests cause early termination
+with successful and error exit codes respectively, to halt further
+processing when continuing would be fruitless. Examine the state of the
+formatter with requests that write lists of defined names (macros,
+strings, and diversions), environments, registers, and page location
+traps to the standard error stream.
+
+ -- Request: .lf line [file]
+ Set the input line number (and, optionally, the file name) GNU
+ 'troff' shall use for error and warning messages. LINE is the
+ input line number of the _next_ line. Without an argument, the
+ request is ignored.
+
+ 'lf''s primary purpose is to aid the debugging of documents that
+ undergo preprocessing. Programs like 'tbl' that transform input in
+ their own languages into 'roff' requests use it so that any
+ diagnostic messages emitted by 'troff' correspond to the source
+ document.
+
+ -- Request: .tm message
+ -- Request: .tm1 message
+ -- Request: .tmc message
+ Send MESSAGE, which consumes the remainder of the input line and
+ cannot contain special characters, to the standard error stream,
+ followed by a newline. Leading spaces in MESSAGE are ignored.
+
+ 'tm1' is similar, but recognizes and strips a leading neutral
+ double quote from MESSAGE to allow the embedding of leading spaces.
+
+ 'tmc' works as 'tm1', but does not append a newline.
+
+ -- Request: .ab [message]
+ Write any MESSAGE to the standard error stream (like 'tm') and then
+ abort GNU 'troff'; that is, stop processing and terminate with a
+ failure status.
+
+ -- Request: .ex
+ Exit GNU 'troff'; that is, stop processing and terminate with a
+ successful status. To stop processing only the current file, use
+ the 'nx' request; see *note I/O::.
+
+ When doing something involved, it is useful to leave the debugging
+statements in the code and have them turned on by a command-line flag.
+
+ .if \n[DB] .tm debugging output
+
+To activate such statements, use the '-r' option to set the register.
+
+ groff -rDB=1 file
+
+ If it is known in advance that there are many errors and no useful
+output, GNU 'troff' can be forced to suppress formatted output with the
+'-z' option.
+
+ -- Request: .pev
+ Report the state of the current environment followed by that of all
+ other environments to the standard error stream.
+
+ -- Request: .pm
+ Report, to the standard error stream, the names of all defined
+ macros, strings, and diversions with their sizes in bytes.
+
+ -- Request: .pnr
+ Report the names and contents of all currently defined registers to
+ the standard error stream.
+
+ -- Request: .ptr
+ Report the names and positions of all page location traps to the
+ standard error stream. Empty slots in the list, where a trap has
+ been planted but subsequently (re)moved, are printed as well.
+
+ -- Request: .fl
+ Instruct 'gtroff' to flush its output immediately. The intent is
+ for interactive use, but this behaviour is currently not
+ implemented in 'gtroff'. Contrary to Unix 'troff', TTY output is
+ sent to a device driver also ('grotty'), making it non-trivial to
+ communicate interactively.
+
+ This request causes a line break.
+
+ -- Request: .backtrace
+ Write the state of the input stack to the standard error stream.
+
+ Consider the following in a file 'test'.
+
+ .de xxx
+ . backtrace
+ ..
+ .de yyy
+ . xxx
+ ..
+ .
+ .yyy
+ error-> troff: backtrace: 'test':2: macro 'xxx'
+ error-> troff: backtrace: 'test':5: macro 'yyy'
+ error-> troff: backtrace: file 'test':8
+
+ The '-b' option of GNU 'troff' causes a backtrace to be generated
+ on each error or warning. Some warnings have to be enabled; *Note
+ Warnings::.
+
+ -- Register: \n[slimit]
+ If greater than 0, sets the maximum quantity of objects on GNU
+ 'troff''s internal input stack. If less than or equal to 0, there
+ is no limit: recursion can continue until program memory is
+ exhausted. The default is 1,000.
+
+ -- Request: .warnscale su
+ Set the scaling unit used in certain warnings to SU, which can take
+ the values 'u', 'i', 'c', 'p', and 'P'. The default is 'i'.
+
+ -- Request: .spreadwarn [limit]
+ Emit a 'break' warning if the additional space inserted for each
+ space between words in an output line adjusted to both margins with
+ '.ad b' is larger than or equal to LIMIT. A negative value is
+ treated as zero; an absent argument toggles the warning on and off
+ without changing LIMIT. The default scaling unit is 'm'. At
+ startup, 'spreadwarn' is inactive and LIMIT is 3m.
+
+ For example,
+
+ .spreadwarn 0.2m
+
+ causes a warning if 'break' warnings are not suppressed and
+ 'gtroff' must add 0.2m or more for each inter-word space in a line.
+ *Note Warnings::.
+
+ GNU 'troff' has command-line options for reporting warnings ('-w')
+and backtraces ('-b') when a warning or an error occurs.
+
+ -- Request: .warn [n]
+ -- Register: \n[.warn]
+ Select the categories, or "types", of reported warnings. N is the
+ sum of the numeric codes associated with each warning category that
+ is to be enabled; all other categories are disabled. The
+ categories and their associated codes are listed in *note
+ Warnings::. For example, '.warn 0' disables all warnings, and
+ '.warn 1' disables all warnings except those about missing glyphs.
+ If no argument is given, all warning categories are enabled.
+
+ The read-only register '.warn' contains the sum of the numeric
+ codes of enabled warning categories.
+
+* Menu:
+
+* Warnings::
+
+
+File: groff.info, Node: Warnings, Prev: Debugging, Up: Debugging
+
+5.37.1 Warnings
+---------------
+
+Warning diagnostics emitted by GNU 'troff' are divided into named,
+numbered categories. The name associated with each warning category is
+used by the '-w' and '-W' options. Each category is also assigned a
+power of two; the sum of enabled category values is used by the 'warn'
+request and the '.warn' register.
+
+ Warnings of each category are produced under the following
+circumstances.
+
+'char'
+'1'
+ No mounted font defines a glyph for the requested character. This
+ category is enabled by default.
+
+'number'
+'2'
+ An invalid numeric expression was encountered. This category is
+ enabled by default. *Note Numeric Expressions::.
+
+'break'
+'4'
+ A filled output line could not be broken such that its length was
+ less than the output line length '\n[.l]'. This category is
+ enabled by default.
+
+'delim'
+'8'
+ The closing delimiter in an escape sequence was missing or
+ mismatched.
+
+'el'
+'16'
+ The 'el' request was encountered with no prior corresponding 'ie'
+ request. *Note if-else::.
+
+'scale'
+'32'
+ A scaling unit inappropriate to its context was used in a numeric
+ expression.
+
+'range'
+'64'
+ A numeric expression was out of range for its context.
+
+'syntax'
+'128'
+ A self-contradictory hyphenation mode was requested; an empty or
+ incomplete numeric expression was encountered; an operand to a
+ numeric operator was missing; an attempt was made to define a
+ recursive, empty, or nonsensical character class; or a 'groff'
+ extension conditional expression operator was used while in
+ compatibility mode.
+
+'di'
+'256'
+ A 'di', 'da', 'box', or 'boxa' request was invoked without an
+ argument when there was no current diversion.
+
+'mac'
+'512'
+ An undefined string, macro, or diversion was used. When such an
+ object is dereferenced, an empty one of that name is automatically
+ created. So, unless it is later deleted, at most one warning is
+ given for each.
+
+ This warning is also emitted upon an attempt to move an unplanted
+ trap macro (*note Page Location Traps::). In such cases, the
+ unplanted macro is _not_ dereferenced, so it is not created if it
+ does not exist.
+
+'reg'
+'1024'
+ An undefined register was used. When an undefined register is
+ dereferenced, it is automatically defined with a value of 0. So,
+ unless it is later deleted, at most one warning is given for each.
+
+'tab'
+'2048'
+ A tab character was encountered where a number was expected, or
+ appeared in an unquoted macro argument.
+
+'right-brace'
+'4096'
+ A right brace escape sequence '\}' was encountered where a number
+ was expected.
+
+'missing'
+'8192'
+ A request was invoked with a mandatory argument absent.
+
+'input'
+'16384'
+ An invalid character occurred on the input stream.
+
+'escape'
+'32768'
+ An unsupported escape sequence was encountered.
+
+'space'
+'65536'
+ A space was missing between a request or macro and its argument.
+ This warning is produced when an undefined name longer than two
+ characters is encountered and the first two characters of the name
+ constitute a defined name. No request is invoked, no macro called,
+ and an empty macro is not defined. This category is enabled by
+ default. It never occurs in compatibility mode.
+
+'font'
+'131072'
+ A non-existent font was selected, or the selection was ignored
+ because a font selection escape sequence was used after the output
+ line continuation escape sequence on an input line. This category
+ is enabled by default.
+
+'ig'
+'262144'
+ An invalid escape sequence occurred in input ignored using the 'ig'
+ request. This warning category diagnoses a condition that is an
+ error when it occurs in non-ignored input.
+
+'color'
+'524288'
+ An undefined color was selected, an attempt was made to define a
+ color using an unrecognized color space, an invalid component in a
+ color definition was encountered, or an attempt was made to
+ redefine a default color.
+
+'file'
+'1048576'
+ An attempt was made to load a file that does not exist. This
+ category is enabled by default.
+
+ Two warning names group other warning categories for convenience.
+
+'all'
+ All warning categories except 'di', 'mac' and 'reg'. This
+ shorthand is intended to produce all warnings that are useful with
+ macro packages written for AT&T 'troff' and its descendants, which
+ have less fastidious diagnostics than GNU 'troff'.
+
+'w'
+ All warning categories. Authors of documents and macro packages
+ targeting 'groff' are encouraged to use this setting.
+
+
+File: groff.info, Node: Implementation Differences, Next: Safer Mode, Prev: Debugging, Up: GNU troff Reference
+
+5.38 Implementation Differences
+===============================
+
+GNU 'troff' has a number of features that cause incompatibilities with
+documents written for other versions of 'troff'. Some GNU extensions to
+'troff' have become supported by other implementations.
+
+* Menu:
+
+* Safer Mode::
+* Compatibility Mode::
+* Other Differences::
+
+
+File: groff.info, Node: Safer Mode, Next: Compatibility Mode, Prev: Implementation Differences, Up: Implementation Differences
+
+5.38.1 Safer Mode
+-----------------
+
+The formatter operates in "safer" mode by default; to mitigate risks
+from untrusted input documents, the 'pi' and 'sy' requests are disabled.
+GNU 'troff''s '-U' option enables "unsafe mode", restoring their
+function and enabling additional 'groff' extension requests, 'open',
+'opena', and 'pso'. *Note I/O::.
+
+
+File: groff.info, Node: Compatibility Mode, Next: Safer Mode, Prev: Other Differences, Up: Implementation Differences
+
+5.38.2 Compatibility Mode
+-------------------------
+
+Long identifier names may be GNU 'troff''s most obvious innovation.
+AT&T 'troff' interprets '.dsabcd' as defining a string 'ab' with
+contents 'cd'. Normally, GNU 'troff' interprets this as a call of a
+macro named 'dsabcd'. AT&T 'troff' also interprets '\*[' and '\n[' as
+an interpolation of a string or register, respectively, named '['. In
+GNU 'troff', however, the '[' is normally interpreted as delimiting a
+long name. In compatibility mode, GNU 'troff' interprets names in the
+traditional way; they thus can be two characters long at most.
+
+ -- Request: .cp [n]
+ -- Register: \n[.C]
+ If N is missing or non-zero, turn on compatibility mode; otherwise,
+ turn it off.
+
+ The read-only register '.C' is 1 if compatibility mode is on,
+ 0 otherwise.
+
+ Compatibility mode can be also turned on with the '-C' command-line
+ option.
+
+ -- Request: .do name
+ -- Register: \n[.cp]
+ The 'do' request interprets the string, request, diversion, or
+ macro NAME (along with any further arguments) with compatibility
+ mode disabled. Compatibility mode is restored (only if it was
+ active) when the _expansion_ of NAME is interpreted; that is, the
+ restored compatibility state applies to the contents of the macro,
+ string, or diversion NAME as well as data read from files or pipes
+ if NAME is any of the 'so', 'soquiet', 'mso', 'msoquiet', or 'pso'
+ requests.
+
+ The following example illustrates several aspects of 'do' behavior.
+
+ .de mac1
+ FOO
+ ..
+ .de1 mac2
+ groff
+ .mac1
+ ..
+ .de mac3
+ compatibility
+ .mac1
+ ..
+ .de ma
+ \\$1
+ ..
+ .cp 1
+ .do mac1
+ .do mac2 \" mac2, defined with .de1, calls "mac1"
+ .do mac3 \" mac3 calls "ma" with argument "c1"
+ .do mac3 \[ti] \" groff syntax accepted in .do arguments
+ => FOO groff FOO compatibility c1 ~
+
+ The read-only register '.cp', meaningful only when dereferenced
+ from a 'do' request, is 1 if compatibility mode was on when the
+ 'do' request was encountered, and 0 if it was not. This register
+ is specialized and may require a statement of rationale.
+
+ When writing macro packages or documents that use GNU 'troff'
+ features and which may be mixed with other packages or documents
+ that do not--common scenarios include serial processing of man
+ pages or use of the 'so' or 'mso' requests--you may desire correct
+ operation regardless of compatibility mode enablement in the
+ surrounding context. It may occur to you to save the existing
+ value of '\n(.C' into a register, say, '_C', at the beginning of
+ your file, turn compatibility mode off with '.cp 0', then restore
+ it from that register at the end with '.cp \n(_C'. At the same
+ time, a modular design of a document or macro package may lead you
+ to multiple layers of inclusion. You cannot use the same register
+ name everywhere lest you "clobber" the value from a preceding or
+ enclosing context. The two-character register name space of AT&T
+ 'troff' is confining and mnemonically challenging; you may wish to
+ use the more capacious name space of GNU 'troff'. However,
+ attempting '.nr _my_saved_C \n(.C' will not work in compatibility
+ mode; the register name is too long. "This is exactly what 'do' is
+ for," you think, '.do nr _my_saved_C \n(.C'. The foregoing will
+ always save zero to your register, because 'do' turns compatibility
+ mode _off_ while it interprets its argument list.
+
+ To robustly save compatibility mode before switching it off, use
+
+ .do nr _my_saved_C \n[.cp]
+ .cp 0
+
+ at the beginning of your file, followed by
+
+ .cp \n[_my_saved_C]
+ .do rr _my_saved_C
+
+ at the end. As in the C language, we all have to share one big
+ name space, so choose a register name that is unlikely to collide
+ with other uses.
+
+ Normally, GNU 'troff' preserves the interpolation depth in delimited
+arguments, but not in compatibility mode.
+
+ .ds xx '
+ \w'abc\*(xxdef'
+ => 168 (normal mode on a terminal device)
+ => 72def' (compatibility mode on a terminal device)
+
+ Furthermore, the escape sequences '\f', '\H', '\m', '\M', '\R', '\s',
+and '\S' are transparent for the purpose of recognizing a control
+character at the beginning of a line only in compatibility mode. For
+example, this code produces bold output in both cases, but the text
+differs.
+
+ .de xx
+ Hello!
+ ..
+ \fB.xx\fP
+ => .xx (normal mode)
+ => Hello! (compatibility mode)
+
+ Normally, the syntax form '\s'N accepts only a single character (a
+digit) for N, consistently with other forms that originated in AT&T
+'troff', like '\*', '\$', '\f', '\g', '\k', '\n', and '\z'. In
+compatibility mode only, a non-zero N must be in the range 4-39. Legacy
+documents relying upon this quirk of parsing(1) (*note Compatibility
+Mode-Footnote-1::) should be migrated to another '\s' form.
+
+
+File: groff.info, Node: Compatibility Mode-Footnotes, Up: Compatibility Mode
+
+ (1) The Graphic Systems C/A/T phototypesetter (the original device
+target for AT&T 'troff') supported only a few discrete type sizes in the
+range 6-36 points, so Ossanna contrived a special case in the parser to
+do what the user must have meant. Kernighan warned of this in the 1992
+revision of CSTR #54 (§2.3), and more recently, McIlroy referred to it
+as a "living fossil".
+
+
+File: groff.info, Node: Other Differences, Prev: Compatibility Mode, Up: Implementation Differences
+
+5.38.3 Other Differences
+------------------------
+
+'groff' request names unrecognized by other 'troff' implementations will
+likely be ignored by them; escape sequences that are 'groff' extensions
+are liable to be interpreted as if the escape character were not
+present. For example, the adjustable, non-breaking escape sequence '\~'
+is also supported by Heirloom Doctools 'troff' 050915 (September 2005),
+'mandoc' 1.9.5 (2009-09-21), 'neatroff' (commit 1c6ab0f6e, 2016-09-13),
+and Plan 9 from User Space 'troff' (commit 93f8143600, 2022-08-12), but
+not by Solaris or Documenter's Workbench 'troff's. *Note Manipulating
+Filling and Adjustment::.
+
+ GNU 'troff' does not allow the use of the escape sequences '\|',
+'\^', '\&', '\{', '\}', '\<SP>', '\'', '\`', '\-', '\_', '\!', '\%', and
+'\c' in identifiers; AT&T 'troff' does. The '\A' escape sequence (*note
+Identifiers::) may be helpful in avoiding use of these escape sequences
+in names.
+
+ When adjusting to both margins, AT&T 'troff' at first adjusts spaces
+starting from the right; GNU 'troff' begins from the left. Both
+implementations adjust spaces from opposite ends on alternating output
+lines in this adjustment mode to prevent "rivers" in the text.
+
+ GNU 'troff' does not always hyphenate words as AT&T 'troff' does.
+The AT&T implementation uses a set of hard-coded rules specific to
+English, while GNU 'troff' uses language-specific hyphenation pattern
+files derived from TeX. Furthermore, in old versions of 'troff' there
+was a limited amount of space to store hyphenation exceptions (arguments
+to the 'hw' request); GNU 'troff' has no such restriction.
+
+ GNU 'troff' predefines a string '.T' containing the argument given to
+the '-T' command-line option, namely the current output device (for
+example, 'pdf' or 'utf8'). The existence of this string is a common
+feature of post-CSTR #54 'troff's(1) (*note Other
+Differences-Footnote-1::) but valid values are specific to each
+implementation.
+
+ AT&T 'troff' ignored attempts to remove read-only registers; GNU
+'troff' honors such requests. *Note Built-in Registers::.
+
+ The (read-only) register '.T' interpolates 1 if GNU 'troff' is called
+with the '-T' command-line option, and 0 otherwise. This behavior
+differs from AT&T 'troff', which interpolated 1 only if 'nroff' was the
+formatter and was called with '-T'.
+
+ AT&T 'troff' and other implementations handle the 'lf' request
+differently. For them, its LINE argument changes the line number of the
+_current_ line.
+
+ AT&T 'troff' had only environments named '0', '1', and '2'. In GNU
+'troff', any number of environments may exist, using any valid
+identifiers for their names (*note Identifiers::.)
+
+ Fractional type sizes cause one noteworthy incompatibility. In AT&T
+'troff' the 'ps' request ignores scaling units and thus '.ps 10u' sets
+the type size to 10 points, whereas in GNU 'troff' it sets the type size
+to 10 _scaled_ points. *Note Using Fractional Type Sizes::.
+
+ The 'ab' request differs from AT&T 'troff': GNU 'troff' writes no
+message to the standard error stream if no arguments are given, and it
+exits with a failure status instead of a successful one.
+
+ The 'bp' request differs from AT&T 'troff': GNU 'troff' does not
+accept a scaling unit on the argument, a page number; the former
+(somewhat uselessly) does.
+
+ The 'pm' request differs from AT&T 'troff': GNU 'troff' reports the
+sizes of macros, strings, and diversions in bytes and ignores an
+argument to report only the sum of the sizes.
+
+ Unlike AT&T 'troff', GNU 'troff' does not ignore the 'ss' request if
+the output is a terminal device; instead, the values of minimal
+inter-word and additional inter-sentence space are each rounded down to
+the nearest multiple of 12.
+
+ In GNU 'troff' there is a fundamental difference between
+(unformatted) characters and (formatted) glyphs. Everything that
+affects how a glyph is output is stored with the glyph node; once a
+glyph node has been constructed, it is unaffected by any subsequent
+requests that are executed, including 'bd', 'cs', 'tkf', 'tr', or 'fp'
+requests. Normally, glyphs are constructed from characters immediately
+before the glyph is added to an output line. Macros, diversions, and
+strings are all, in fact, the same type of object; they contain a
+sequence of intermixed character and glyph nodes. Special characters
+transform from one to the other: before being added to the output, they
+behave as characters; afterward, they are glyphs. A glyph node does not
+behave like a character node when it is processed by a macro: it does
+not inherit any of the special properties that the character from which
+it was constructed might have had. For example, the input
+
+ .di x
+ \\\\
+ .br
+ .di
+ .x
+
+produces '\\' in GNU 'troff'. Each pair of backslashes becomes one
+backslash _glyph_; the resulting backslashes are thus not interpreted as
+escape _characters_ when they are reread as the diversion is output.
+AT&T 'troff' _would_ interpret them as escape characters when rereading
+them and end up printing one '\'.
+
+ One correct way to obtain a printable backslash in most documents is
+to use the '\e' escape sequence; this always prints a single instance of
+the current escape character,(2) (*note Other Differences-Footnote-2::)
+regardless of whether or not it is used in a diversion; it also works in
+both GNU 'troff' and AT&T 'troff'.
+
+ The other correct way, appropriate in contexts independent of the
+backslash's common use as a 'troff' escape character--perhaps in
+discussion of character sets or other programming languages--is the
+character escape '\(rs' or '\[rs]', for "reverse solidus", from its name
+in the ECMA-6 (ISO/IEC 646) standard.(3) (*note Other
+Differences-Footnote-3::)
+
+ To store an escape sequence in a diversion that is interpreted when
+the diversion is reread, either use the traditional '\!' transparent
+output facility, or, if this is unsuitable, the new '\?' escape
+sequence. *Note Diversions:: and *note Gtroff Internals::.
+
+ In the somewhat pathological case where a diversion exists containing
+a partially collected line and a partially collected line at the
+top-level diversion has never existed, AT&T 'troff' will output the
+partially collected line at the end of input; GNU 'troff' will not.
+
+
+File: groff.info, Node: Other Differences-Footnotes, Up: Other Differences
+
+ (1) DWB 3.3, Solaris, Heirloom Doctools, and Plan 9 'troff' all
+support it.
+
+ (2) Naturally, if you've changed the escape character, you need to
+prefix the 'e' with whatever it is--and you'll likely get something
+other than a backslash in the output.
+
+ (3) The 'rs' special character identifier was not defined in AT&T
+'troff''s font description files, but is in those of its lineal
+descendant, Heirloom Doctools 'troff', as of the latter's 060716 release
+(July 2006).
+
+
+File: groff.info, Node: File Formats, Next: Copying This Manual, Prev: GNU troff Reference, Up: Top
+
+6 File Formats
+**************
+
+All files read and written by 'gtroff' are text files. The following
+two sections describe their format.
+
+* Menu:
+
+* gtroff Output::
+* Device and Font Description Files::
+
+
+File: groff.info, Node: gtroff Output, Next: Device and Font Description Files, Prev: File Formats, Up: File Formats
+
+6.1 'gtroff' Output
+===================
+
+This section describes the 'groff' intermediate output format produced
+by GNU 'troff'.
+
+ As 'groff' is a wrapper program around GNU 'troff' and automatically
+calls an output driver (or "postprocessor"), this output does not show
+up normally. This is why it is called _intermediate_. 'groff' provides
+the option '-Z' to inhibit postprocessing such that the produced
+intermediate output is sent to standard output just as it is when
+calling GNU 'troff' directly.
+
+ Here, the term "troff output" describes what is output by GNU
+'troff', while "intermediate output" refers to the language that is
+accepted by the parser that prepares this output for the output drivers.
+This parser handles whitespace more flexibly than AT&T's implementation
+and implements obsolete elements for compatibility; otherwise, both
+formats are the same.(1) (*note gtroff Output-Footnote-1::)
+
+ The main purpose of the intermediate output concept is to facilitate
+the development of postprocessors by providing a common programming
+interface for all devices. It has a language of its own that is
+completely different from the 'gtroff' language. While the 'gtroff'
+language is a high-level programming language for text processing, the
+intermediate output language is a kind of low-level assembler language
+by specifying all positions on the page for writing and drawing.
+
+ The intermediate output produced by 'gtroff' is fairly readable,
+while output from AT&T 'troff' is rather hard to understand because of
+strange habits that are still supported, but not used any longer by
+'gtroff'.
+
+* Menu:
+
+* Language Concepts::
+* Command Reference::
+* Intermediate Output Examples::
+* Output Language Compatibility::
+
+
+File: groff.info, Node: gtroff Output-Footnotes, Up: gtroff Output
+
+ (1) The parser and postprocessor for intermediate output can be found
+in the file
+'GROFF-SOURCE-DIR/src/libs/libdriver/input.cpp'.
+
+
+File: groff.info, Node: Language Concepts, Next: Command Reference, Prev: gtroff Output, Up: gtroff Output
+
+6.1.1 Language Concepts
+-----------------------
+
+The fundamental operation of the GNU 'troff' formatter is the
+translation of the 'groff' input language into a device-independent form
+primarily concerned with what has to be written or drawn at specific
+positions on the output device. This language is simple and imperative.
+In the following discussion, the term "command" always refers to this
+intermediate output language, and never to the 'groff' language intended
+for direct use by document authors. Intermediate output commands
+comprise several categories: glyph output; font, color, and text size
+selection; motion of the printing position; page advancement; drawing of
+geometric objects; and device control commands, a catch-all for
+operations not easily classified as any of the foregoing, such as
+directives to start and stop output, identify the intended output
+device, or place URL hyperlinks in supported output formats.
+
+* Menu:
+
+* Separation::
+* Argument Units::
+* Document Parts::
+
+
+File: groff.info, Node: Separation, Next: Argument Units, Prev: Language Concepts, Up: Language Concepts
+
+6.1.1.1 Separation
+..................
+
+AT&T 'troff' output has strange requirements regarding whitespace. The
+'gtroff' output parser, however, is more tolerant, making whitespace
+maximally optional. Such characters, i.e., the tab, space, and newline,
+always have a syntactical meaning. They are never printable because
+spacing within the output is always done by positioning commands.
+
+ Any sequence of space or tab characters is treated as a single
+"syntactical space". It separates commands and arguments, but is only
+required when there would occur a clashing between the command code and
+the arguments without the space. Most often, this happens when
+variable-length command names, arguments, argument lists, or command
+clusters meet. Commands and arguments with a known, fixed length need
+not be separated by syntactical space.
+
+ A line break is a syntactical element, too. Every command argument
+can be followed by whitespace, a comment, or a newline character. Thus
+a "syntactical line break" is defined to consist of optional syntactical
+space that is optionally followed by a comment, and a newline character.
+
+ The normal commands, those for positioning and text, consist of a
+single letter taking a fixed number of arguments. For historical
+reasons, the parser allows stacking of such commands on the same line,
+but fortunately, in 'gtroff''s intermediate output, every command with
+at least one argument is followed by a line break, thus providing
+excellent readability.
+
+ The other commands--those for drawing and device controlling--have a
+more complicated structure; some recognize long command names, and some
+take a variable number of arguments. So all 'D' and 'x' commands were
+designed to request a syntactical line break after their last argument.
+Only one command, 'x X', has an argument that can span several input
+lines; all other commands must have all of their arguments on the same
+line as the command, i.e., the arguments may not be split by a line
+break.
+
+ Empty lines (these are lines containing only space and/or a comment),
+can occur everywhere. They are just ignored.
+
+
+File: groff.info, Node: Argument Units, Next: Document Parts, Prev: Separation, Up: Language Concepts
+
+6.1.1.2 Argument Units
+......................
+
+Some commands take integer arguments that are assumed to represent
+values in a measurement unit, but the letter for the corresponding
+scaling unit is not written with the output command arguments. Most
+commands assume the scaling unit 'u', the basic unit of the device, some
+use 'z', the scaled point unit of the device, while others, such as the
+color commands, expect plain integers.
+
+ Single characters can have the eighth bit set, as can the names of
+fonts and special characters. The names of characters and fonts can be
+of arbitrary length. A character that is to be printed is always in the
+current font.
+
+ A string argument is always terminated by the next whitespace
+character (space, tab, or newline); an embedded '#' character is
+regarded as part of the argument, not as the beginning of a comment
+command. An integer argument is already terminated by the next
+non-digit character, which then is regarded as the first character of
+the next argument or command.
+
+
+File: groff.info, Node: Document Parts, Prev: Argument Units, Up: Language Concepts
+
+6.1.1.3 Document Parts
+......................
+
+A correct intermediate output document consists of two parts, the
+"prologue" and the "body".
+
+ The task of the prologue is to set the general device parameters
+using three exactly specified commands. 'gtroff''s prologue is
+guaranteed to consist of the following three lines (in that order):
+
+ x T DEVICE
+ x res N H V
+ x init
+
+with the arguments set as outlined in *note Device Control Commands::.
+The parser for the intermediate output format is able to interpret
+additional whitespace and comments as well even in the prologue.
+
+ The body is the main section for processing the document data.
+Syntactically, it is a sequence of any commands different from the ones
+used in the prologue. Processing is terminated as soon as the first
+'x stop' command is encountered; the last line of any 'gtroff'
+intermediate output always contains such a command.
+
+ Semantically, the body is page oriented. A new page is started by a
+'p' command. Positioning, writing, and drawing commands are always done
+within the current page, so they cannot occur before the first 'p'
+command. Absolute positioning (by the 'H' and 'V' commands) is done
+relative to the current page; all other positioning is done relative to
+the current location within this page.
+
+
+File: groff.info, Node: Command Reference, Next: Intermediate Output Examples, Prev: Language Concepts, Up: gtroff Output
+
+6.1.2 Command Reference
+-----------------------
+
+This section describes all intermediate output commands, both from AT&T
+'troff' as well as the 'gtroff' extensions.
+
+* Menu:
+
+* Comment Command::
+* Simple Commands::
+* Graphics Commands::
+* Device Control Commands::
+* Obsolete Command::
+
+
+File: groff.info, Node: Comment Command, Next: Simple Commands, Prev: Command Reference, Up: Command Reference
+
+6.1.2.1 Comment Command
+.......................
+
+'#ANYTHING<end of line>'
+ A comment. Ignore any characters from the '#' character up to the
+ next newline character.
+
+ This command is the only possibility for commenting in the
+ intermediate output. Each comment can be preceded by arbitrary
+ syntactical space; every command can be terminated by a comment.
+
+
+File: groff.info, Node: Simple Commands, Next: Graphics Commands, Prev: Comment Command, Up: Command Reference
+
+6.1.2.2 Simple Commands
+.......................
+
+The commands in this subsection have a command code consisting of a
+single character, taking a fixed number of arguments. Most of them are
+commands for positioning and text writing. These commands are tolerant
+of whitespace. Optionally, syntactical space can be inserted before,
+after, and between the command letter and its arguments. All of these
+commands are stackable; i.e., they can be preceded by other simple
+commands or followed by arbitrary other commands on the same line. A
+separating syntactical space is necessary only when two integer
+arguments would clash or if the preceding argument ends with a string
+argument.
+
+'C ID<whitespace>'
+ Typeset the glyph of the special character ID. Trailing
+ syntactical space is necessary to allow special character names of
+ arbitrary length. The drawing position is not advanced.
+
+'c G'
+ Typeset the glyph of the ordinary character C. The drawing
+ position is not advanced.
+
+'f N'
+ Select the font mounted at position N. N cannot be negative.
+
+'H N'
+ Horizontally move the drawing position to N basic units from the
+ left edge of the page. N cannot be negative.
+
+'h N'
+ Move the drawing position right N basic units. AT&T 'troff'
+ allowed negative N; GNU 'troff' does not produce such values, but
+ 'groff''s output driver library handles them.
+
+'m COLOR-SCHEME [COMPONENT ...]'
+ Select the stroke color using the COMPONENTs in the color space
+ SCHEME. Each COMPONENT is an integer between 0 and 65535. The
+ quantity of components and their meanings vary with each SCHEME.
+ This command is a 'groff' extension.
+
+ 'mc CYAN MAGENTA YELLOW'
+ Use the CMY color scheme with components cyan, magenta, and
+ yellow.
+
+ 'md'
+ Use the default color (no components; black in most cases).
+
+ 'mg GRAY'
+ Use a grayscale color scheme with a component ranging between
+ 0 (black) and 65535 (white).
+
+ 'mk CYAN MAGENTA YELLOW BLACK'
+ Use the CMYK color scheme with components cyan, magenta,
+ yellow, and black.
+
+ 'mr RED GREEN BLUE'
+ Use the RGB color scheme with components red, green, and blue.
+
+'N N'
+ Typeset the glyph with index N in the current font. N is normally
+ a non-negative integer. The drawing position is not advanced. The
+ 'html' and 'xhtml' devices use this command with negative N to
+ produce unbreakable space; the absolute value of N is taken and
+ interpreted in basic units.
+
+'n B A'
+ Indicate a break. No action is performed; the command is present
+ to make the output more easily parsed. The integers B and A
+ describe the vertical space amounts before and after the break,
+ respectively. GNU 'troff' issues this command but 'groff''s output
+ driver library ignores it. See 'v' and 'V' below.
+
+'p N'
+ Begin a new page, setting its number to N. Each page is
+ independent, even from those using the same number. The vertical
+ drawing position is set to 0. All positioning, writing, and
+ drawing commands are interpreted in the context of a page, so a
+ 'p' command must precede them.
+
+'s N'
+ Set type size to N scaled points (unit 'z' in GNU 'troff'. AT&T
+ 'troff' used unscaled points 'p' instead; see *note Output Language
+ Compatibility::.
+
+'t XYZ<whitespace>'
+'t XYZ DUMMY-ARG<whitespace>'
+ Typeset a word XYZ; that is, set a sequence of ordinary glyphs
+ named X, Y, Z, ..., terminated by a space character or a line
+ break; an optional second integer argument is ignored (this allows
+ the formatter to generate an even number of arguments). Each glyph
+ is set at the current drawing position, and the position is then
+ advanced horizontally by the glyph's width. A glyph's width is
+ read from its metrics in the font description file, scaled to the
+ current type size, and rounded to a multiple of the horizontal
+ motion quantum. Use the 'C' command to emplace glyphs of special
+ characters. The 't' command is a 'groff' extension and is output
+ only for devices whose 'DESC' file contains the 'tcommand'
+ directive; see *note DESC File Format::.
+
+'u N XYZ<whitespace>'
+ Typeset word XYZ with track kerning. As 't', but after placing
+ each glyph, the drawing position is further advanced horizontally
+ by N basic units ('u'). The 'u' command is a 'groff' extension and
+ is output only for devices whose 'DESC' file contains the
+ 'tcommand' directive; see *note DESC File Format::.
+
+'V N'
+ Vertically move the drawing position to N basic units from the top
+ edge of the page. N cannot be negative.
+
+'v N'
+ Move the drawing position down N basic units. AT&T 'troff' allowed
+ negative N; GNU 'troff' does not produce such values, but 'groff''s
+ output driver library handles them.
+
+'w'
+ Indicate an inter-word space. No action is performed; the command
+ is present to make the output more easily parsed. Only adjustable,
+ breakable inter-word spaces are thus described; those resulting
+ from '\~' or horizontal motion escape sequences are not. GNU
+ 'troff' issues this command but 'groff''s output driver library
+ ignores it. See 'h' and 'H' above.
+
+
+File: groff.info, Node: Graphics Commands, Next: Device Control Commands, Prev: Simple Commands, Up: Command Reference
+
+6.1.2.3 Graphics Commands
+.........................
+
+Each graphics or drawing command in the intermediate output starts with
+the letter 'D', followed by one or two characters that specify a
+subcommand; this is followed by a fixed or variable number of integer
+arguments that are separated by a single space character. A 'D' command
+may not be followed by another command on the same line (apart from a
+comment), so each 'D' command is terminated by a syntactical line break.
+
+ 'gtroff' output follows the classical spacing rules (no space between
+command and subcommand, all arguments are preceded by a single space
+character), but the parser allows optional space between the command
+letters and makes the space before the first argument optional. As
+usual, each space can be any sequence of tab and space characters.
+
+ Some graphics commands can take a variable number of arguments. In
+this case, they are integers representing a size measured in basic units
+'u'. The arguments called H1, H2, ..., HN stand for horizontal
+distances where positive means right, negative left. The arguments
+called V1, V2, ..., VN stand for vertical distances where positive means
+down, negative up. All these distances are offsets relative to the
+current location.
+
+ Each graphics command directly corresponds to a similar 'gtroff' '\D'
+escape sequence. *Note Drawing Geometric Objects::.
+
+ Unknown 'D' commands are assumed to be device-specific. Its
+arguments are parsed as strings; the whole information is then sent to
+the postprocessor.
+
+ In the following command reference, the syntax element <line break>
+means a syntactical line break as defined above.
+
+'D~ H1 V1 H2 V2 ... HN VN<line break>'
+ Draw B-spline from current position to offset (H1,V1), then to
+ offset (H2,V2), if given, etc., up to (HN,VN). This command takes
+ a variable number of argument pairs; the current position is moved
+ to the terminal point of the drawn curve.
+
+'Da H1 V1 H2 V2<line break>'
+ Draw arc from current position to (H1,V1)+(H2,V2) with center at
+ (H1,V1); then move the current position to the final point of the
+ arc.
+
+'DC D<line break>'
+'DC D DUMMY-ARG<line break>'
+ Draw a solid circle using the current fill color with diameter D
+ (integer in basic units 'u') with leftmost point at the current
+ position; then move the current position to the rightmost point of
+ the circle. An optional second integer argument is ignored (this
+ allows the formatter to generate an even number of arguments).
+ This command is a 'gtroff' extension.
+
+'Dc D<line break>'
+ Draw circle line with diameter D (integer in basic units 'u') with
+ leftmost point at the current position; then move the current
+ position to the rightmost point of the circle.
+
+'DE H V<line break>'
+ Draw a solid ellipse in the current fill color with a horizontal
+ diameter of H and a vertical diameter of V (both integers in basic
+ units 'u') with the leftmost point at the current position; then
+ move to the rightmost point of the ellipse. This command is a
+ 'gtroff' extension.
+
+'De H V<line break>'
+ Draw an outlined ellipse with a horizontal diameter of H and a
+ vertical diameter of V (both integers in basic units 'u') with the
+ leftmost point at current position; then move to the rightmost
+ point of the ellipse.
+
+'DF COLOR-SCHEME [COMPONENT ...]<line break>'
+ Set fill color for solid drawing objects using different color
+ schemes; the analogous command for setting the color of text, line
+ graphics, and the outline of graphic objects is 'm'. The color
+ components are specified as integer arguments between 0 and 65535.
+ The number of color components and their meaning vary for the
+ different color schemes. These commands are generated by
+ 'gtroff''s escape sequences '\D'F ...'' and '\M' (with no other
+ corresponding graphics commands). No position changing. This
+ command is a 'gtroff' extension.
+
+ 'DFc CYAN MAGENTA YELLOW<line break>'
+ Set fill color for solid drawing objects using the CMY color
+ scheme, having the 3 color components CYAN, MAGENTA, and
+ YELLOW.
+
+ 'DFd<line break>'
+ Set fill color for solid drawing objects to the default fill
+ color value (black in most cases). No component arguments.
+
+ 'DFg GRAY<line break>'
+ Set fill color for solid drawing objects to the shade of gray
+ given by the argument, an integer between 0 (black) and 65535
+ (white).
+
+ 'DFk CYAN MAGENTA YELLOW BLACK<line break>'
+ Set fill color for solid drawing objects using the CMYK color
+ scheme, having the 4 color components CYAN, MAGENTA, YELLOW,
+ and BLACK.
+
+ 'DFr RED GREEN BLUE<line break>'
+ Set fill color for solid drawing objects using the RGB color
+ scheme, having the 3 color components RED, GREEN, and BLUE.
+
+'Df N<line break>'
+ The argument N must be an integer in the range -32767 to 32767.
+
+ 0 <= N <= 1000
+ Set the color for filling solid drawing objects to a shade of
+ gray, where 0 corresponds to solid white, 1000 (the default)
+ to solid black, and values in between to intermediate shades
+ of gray; this is obsoleted by command 'DFg'.
+
+ N < 0 or N > 1000
+ Set the filling color to the color that is currently being
+ used for the text and the outline, see command 'm'. For
+ example, the command sequence
+
+ mg 0 0 65535
+ Df -1
+
+ sets all colors to blue.
+
+ No position changing. This command is a 'gtroff' extension.
+
+'Dl H V<line break>'
+ Draw line from current position to offset (H,V) (integers in basic
+ units 'u'); then set current position to the end of the drawn line.
+
+'Dp H1 V1 H2 V2 ... HN VN<line break>'
+ Draw a polygon line from current position to offset (H1,V1), from
+ there to offset (H2,V2), etc., up to offset (HN,VN), and from there
+ back to the starting position. For historical reasons, the
+ position is changed by adding the sum of all arguments with odd
+ index to the actual horizontal position and the even ones to the
+ vertical position. Although this doesn't make sense it is kept for
+ compatibility. This command is a 'gtroff' extension.
+
+'DP H1 V1 H2 V2 ... HN VN<line break>'
+ Draw a solid polygon in the current fill color rather than an
+ outlined polygon, using the same arguments and positioning as the
+ corresponding 'Dp' command. This command is a 'gtroff' extension.
+
+'Dt N<line break>'
+ Set the current line thickness to N (an integer in basic units 'u')
+ if N>0; if N=0 select the smallest available line thickness; if N<0
+ set the line thickness proportional to the type size (this is the
+ default before the first 'Dt' command was specified). For
+ historical reasons, the horizontal position is changed by adding
+ the argument to the actual horizontal position, while the vertical
+ position is not changed. Although this doesn't make sense it is
+ kept for compatibility. This command is a 'gtroff' extension.
+
+
+File: groff.info, Node: Device Control Commands, Next: Obsolete Command, Prev: Graphics Commands, Up: Command Reference
+
+6.1.2.4 Device Control Commands
+...............................
+
+Each device control command starts with the letter 'x', followed by a
+space character (optional or arbitrary space or tab in 'gtroff') and a
+subcommand letter or word; each argument (if any) must be preceded by a
+syntactical space. All 'x' commands are terminated by a syntactical
+line break; no device control command can be followed by another command
+on the same line (except a comment).
+
+ The subcommand is basically a single letter, but to increase
+readability, it can be written as a word, i.e., an arbitrary sequence of
+characters terminated by the next tab, space, or newline character. All
+characters of the subcommand word but the first are simply ignored. For
+example, 'gtroff' outputs the initialization command 'x i' as 'x init'
+and the resolution command 'x r' as 'x res'.
+
+ In the following, the syntax element <line break> means a syntactical
+line break (*note Separation::).
+
+'xF NAME<line break>'
+ The 'F' stands for FILENAME.
+
+ Use NAME as the intended name for the current file in error
+ reports. This is useful for remembering the original file name
+ when 'gtroff' uses an internal piping mechanism. The input file is
+ not changed by this command. This command is a 'gtroff' extension.
+
+'xf N S<line break>'
+ The 'f' stands for FONT.
+
+ Mount font position N (a non-negative integer) with font named S (a
+ text word). *Note Font Positions::.
+
+'xH N<line break>'
+ The 'H' stands for HEIGHT.
+
+ Set glyph height to N (a positive integer in scaled points 'z').
+ AT&T 'troff' uses the unit points ('p') instead. *Note Output
+ Language Compatibility::.
+
+'xi<line break>'
+ The 'i' stands for INIT.
+
+ Initialize device. This is the third command of the prologue.
+
+'xp<line break>'
+ The 'p' stands for PAUSE.
+
+ Parsed but ignored. The AT&T 'troff' manual documents this command
+ as
+
+ pause device, can be restarted
+
+ but GNU 'troff' output drivers do nothing with this command.
+
+'xr N H V<line break>'
+ The 'r' stands for RESOLUTION.
+
+ Resolution is N, while H is the minimal horizontal motion, and V
+ the minimal vertical motion possible with this device; all
+ arguments are positive integers in basic units 'u' per inch. This
+ is the second command of the prologue.
+
+'xS N<line break>'
+ The 'S' stands for SLANT.
+
+ Set slant to N (an integer in basic units 'u').
+
+'xs<line break>'
+ The 's' stands for STOP.
+
+ Terminates the processing of the current file; issued as the last
+ command of any intermediate 'troff' output.
+
+'xt<line break>'
+ The 't' stands for TRAILER.
+
+ Generate trailer information, if any. In GNU 'troff', this is
+ ignored.
+
+'xT XXX<line break>'
+ The 'T' stands for TYPESETTER.
+
+ Set the name of the output driver to XXX, a sequence of
+ non-whitespace characters terminated by whitespace. The possible
+ names correspond to those of 'groff''s '-T' option. This is the
+ first command of the prologue.
+
+'xu N<line break>'
+ The 'u' stands for UNDERLINE.
+
+ Configure underlining of spaces. If N is 1, start underlining of
+ spaces; if N is 0, stop underlining of spaces. This is needed for
+ the 'cu' request in 'nroff' mode and is ignored otherwise. This
+ command is a 'gtroff' extension.
+
+'xX ANYTHING<line break>'
+ The 'x' stands for X-ESCAPE.
+
+ Send string ANYTHING uninterpreted to the device. If the line
+ following this command starts with a '+' character this line is
+ interpreted as a continuation line in the following sense. The '+'
+ is ignored, but a newline character is sent instead to the device,
+ the rest of the line is sent uninterpreted. The same applies to
+ all following lines until the first character of a line is not a
+ '+' character. This command is generated by the 'gtroff' escape
+ sequence '\X'. The line-continuing feature is a 'gtroff'
+ extension.
+
+
+File: groff.info, Node: Obsolete Command, Prev: Device Control Commands, Up: Command Reference
+
+6.1.2.5 Obsolete Command
+........................
+
+In AT&T 'troff' output, the writing of a single glyph is mostly done by
+a very strange command that combines a horizontal move and a single
+character giving the glyph name. It doesn't have a command code, but is
+represented by a 3-character argument consisting of exactly 2 digits and
+a character.
+
+DDG
+ Move right DD (exactly two decimal digits) basic units 'u', then
+ print glyph G (represented as a single character).
+
+ In GNU 'troff', arbitrary syntactical space around and within this
+ command is allowed. Only when a preceding command on the same line
+ ends with an argument of variable length is a separating space
+ obligatory. In AT&T 'troff', large clusters of these and other
+ commands are used, mostly without spaces; this made such output
+ almost unreadable.
+
+ For modern high-resolution devices, this command does not make sense
+because the width of the glyphs can become much larger than two decimal
+digits. In 'gtroff', this is only used for the devices 'X75', 'X75-12',
+'X100', and 'X100-12'. For other devices, the commands 't' and 'u'
+provide a better functionality.
+
+
+File: groff.info, Node: Intermediate Output Examples, Next: Output Language Compatibility, Prev: Command Reference, Up: gtroff Output
+
+6.1.3 Intermediate Output Examples
+----------------------------------
+
+This section presents the intermediate output generated from the same
+input for three different devices. The input is the sentence 'hell
+world' fed into 'gtroff' on the command line.
+
+High-resolution device 'ps'
+
+ This is the standard output of 'gtroff' if no '-T' option is given.
+
+ shell> echo "hell world" | groff -Z -T ps
+
+ x T ps
+ x res 72000 1 1
+ x init
+ p1
+ x font 5 TR
+ f5
+ s10000
+ V12000
+ H72000
+ thell
+ wh2500
+ tw
+ H96620
+ torld
+ n12000 0
+ x trailer
+ V792000
+ x stop
+
+ This output can be fed into 'grops' to get its representation as a
+ PostScript file.
+
+Low-resolution device 'latin1'
+
+ This is similar to the high-resolution device except that the
+ positioning is done at a minor scale. Some comments (lines
+ starting with '#') were added for clarification; they were not
+ generated by the formatter.
+
+ shell> echo "hell world" | groff -Z -T latin1
+
+ # prologue
+ x T latin1
+ x res 240 24 40
+ x init
+ # begin a new page
+ p1
+ # font setup
+ x font 1 R
+ f1
+ s10
+ # initial positioning on the page
+ V40
+ H0
+ # write text 'hell'
+ thell
+ # inform about space, and issue a horizontal jump
+ wh24
+ # write text 'world'
+ tworld
+ # announce line break, but do nothing because...
+ n40 0
+ # ...the end of the document has been reached
+ x trailer
+ V2640
+ x stop
+
+ This output can be fed into 'grotty' to get a formatted text
+ document.
+
+AT&T 'troff' output
+ Since a computer monitor has a much lower resolution than modern
+ printers, the intermediate output for X11 devices can use the
+ jump-and-write command with its 2-digit displacements.
+
+ shell> echo "hell world" | groff -Z -T X100
+
+ x T X100
+ x res 100 1 1
+ x init
+ p1
+ x font 5 TR
+ f5
+ s10
+ V16
+ H100
+ # write text with jump-and-write commands
+ ch07e07l03lw06w11o07r05l03dh7
+ n16 0
+ x trailer
+ V1100
+ x stop
+
+ This output can be fed into 'xditview' or 'gxditview' for
+ displaying in X.
+
+ Due to the obsolete jump-and-write command, the text clusters in
+ the AT&T 'troff' output are almost unreadable.
+
+
+File: groff.info, Node: Output Language Compatibility, Prev: Intermediate Output Examples, Up: gtroff Output
+
+6.1.4 Output Language Compatibility
+-----------------------------------
+
+The intermediate output language of AT&T 'troff' was first documented in
+'A Typesetter-independent TROFF', by Brian Kernighan, and by 1992 the
+AT&T 'troff' manual was updated to incorprate a description of it.
+
+ The GNU 'troff' intermediate output format is compatible with this
+specification except for the following features.
+
+ * The classical quasi-device independence is not yet implemented.
+
+ * The old hardware was very different from what we use today. So the
+ 'groff' devices are also fundamentally different from the ones in
+ AT&T 'troff'. For example, the AT&T PostScript device is called
+ 'post' and has a resolution of only 720 units per inch, suitable
+ for printers 20 years ago, while 'groff''s 'ps' device has a
+ resolution of 72000 units per inch. Maybe, by implementing some
+ rescaling mechanism similar to the classical quasi-device
+ independence, 'groff' could emulate AT&T's 'post' device.
+
+ * The B-spline command 'D~' is correctly handled by the intermediate
+ output parser, but the drawing routines aren't implemented in some
+ of the postprocessor programs.
+
+ * The argument of the commands 's' and 'x H' has the implicit unit
+ scaled point 'z' in 'gtroff', while AT&T 'troff' has point ('p').
+ This isn't an incompatibility but a compatible extension, for both
+ units coincide for all devices without a 'sizescale' parameter in
+ the 'DESC' file, including all postprocessors from AT&T and
+ 'groff''s text devices. The few 'groff' devices with a 'sizescale'
+ parameter either do not exist for AT&T 'troff', have a different
+ name, or seem to have a different resolution. So conflicts are
+ very unlikely.
+
+ * The position changing after the commands 'Dp', 'DP', and 'Dt' is
+ illogical, but as old versions of 'gtroff' used this feature it is
+ kept for compatibility reasons.
+
+
+File: groff.info, Node: Device and Font Description Files, Prev: gtroff Output, Up: File Formats
+
+6.2 Device and Font Description Files
+=====================================
+
+The 'groff' font and output device description formats are slight
+extensions of those used by AT&T device-independent 'troff'. In
+distinction to the AT&T implementation, 'groff' lacks a binary format;
+all files are text files.(1) (*note Device and Font Description
+Files-Footnote-1::) The device and font description files for a device
+NAME are stored in a 'devNAME' directory. The device description file
+is called 'DESC', and, for each font supported by the device, a font
+description file is called 'F', where F is usually an abbreviation of a
+font's name and/or style. For example, the 'ps' (PostScript) device has
+'groff' font description files for Times roman ('TR') and Zapf Chancery
+Medium italic ('ZCMI'), among many others, while the 'utf8' device (for
+terminal emulators) has only font descriptions for the roman, italic,
+bold, and bold-italic styles ('R', 'I', 'B', and 'BI', respectively).
+
+ Device and font description files are read both by the formatter, GNU
+'troff', and by output drivers. The programs delegate these files'
+processing to an internal library, 'libgroff', ensuring their consistent
+interpretation.
+
+* Menu:
+
+* DESC File Format::
+* Font Description File Format::
+
+
+File: groff.info, Node: Device and Font Description Files-Footnotes, Up: Device and Font Description Files
+
+ (1) Plan 9 'troff' has also abandoned the binary format.
+
+
+File: groff.info, Node: DESC File Format, Next: Font Description File Format, Prev: Device and Font Description Files, Up: Device and Font Description Files
+
+6.2.1 'DESC' File Format
+------------------------
+
+The 'DESC' file contains a series of directives; each begins a line.
+Their order is not important, with two exceptions: (1) the 'res'
+directive must precede any 'papersize' directive; and (2) the 'charset'
+directive must come last (if at all). If a directive name is repeated,
+later entries in the file override previous ones (except that the paper
+dimensions are computed based on the 'res' directive last seen when
+'papersize' is encountered). Spaces and/or tabs separate words and are
+ignored at line boundaries. Comments start with the '#' character and
+extend to the end of a line. Empty lines are ignored.
+
+'family FAM'
+ The default font family is FAM.
+
+'fonts N F1 ... FN'
+ Fonts F1, ..., FN are mounted at font positions M+1, ..., M+N where
+ M is the number of 'styles' (see below). This directive may extend
+ over more than one line. A font name of '0' causes no font to be
+ mounted at the corresponding position.
+
+'hor N'
+ The horizontal motion quantum is N basic units. All horizontal
+ quantities are rounded to multiples of N.
+
+'image_generator PROGRAM'
+ Use PROGRAM to generate PNG images from PostScript input. Under
+ GNU/Linux, this is usually 'gs', but under other systems (notably
+ Cygwin) it might be set to another name. The 'grohtml' driver uses
+ this directive.
+
+'paperlength N'
+ The vertical dimension of the output medium is N basic units
+ (deprecated: use 'papersize' instead).
+
+'papersize FORMAT-OR-DIMENSION-PAIR-OR-FILE-NAME ...'
+ The dimensions of the output medium are as according to the
+ argument, which is either a standard paper format, a pair of
+ dimensions, or the name of a plain text file containing either of
+ the foregoing.
+
+ Recognized paper formats are the ISO and DIN formats 'A0'-'A7',
+ 'B0'-'B7', 'C0'-'C7', 'D0'-'D7'; the U.S. paper types 'letter',
+ 'legal', 'tabloid', 'ledger', 'statement', and 'executive'; and the
+ envelope formats 'com10', 'monarch', and 'DL'. Matching is
+ performed without regard for lettercase.
+
+ Alternatively, the argument can be a custom paper format in the
+ format 'LENGTH,WIDTH' (with no spaces before or after the comma).
+ Both LENGTH and WIDTH must have a unit appended; valid units are
+ 'i' for inches, 'c' for centimeters, 'p' for points, and 'P' for
+ picas. Example: '12c,235p'. An argument that starts with a digit
+ is always treated as a custom paper format.
+
+ Finally, the argument can be a file name (e.g., '/etc/papersize');
+ if the file can be opened, the first line is read and a match
+ attempted against each of the other forms. No comment syntax is
+ supported.
+
+ More than one argument can be specified; each is scanned in turn
+ and the first valid paper specification used.
+
+'paperwidth N'
+ The horizontal dimension of the output medium is N basic units
+ (deprecated: use 'papersize' instead).
+
+'pass_filenames'
+ Direct GNU 'troff' to emit the name of the source file being
+ processed. This is achieved with the intermediate output command
+ 'x F', which 'grohtml' interprets.
+
+'postpro PROGRAM'
+ Use PROGRAM as the postprocessor.
+
+'prepro PROGRAM'
+ Use PROGRAM as a preprocessor. The 'html' and 'xhtml' output
+ devices use this directive.
+
+'print PROGRAM'
+ Use PROGRAM as a spooler program for printing. If omitted, the
+ '-l' and '-L' options of 'groff' are ignored.
+
+'res N'
+ The device resolution is N basic units per inch.
+
+'sizes S1 ... SN 0'
+ The device has fonts at S1, ..., SN scaled points (see below). The
+ list of sizes must be terminated by '0'. Each SI can also be a
+ range of sizes M-N. The list can extend over more than one line.
+
+'sizescale N'
+ A typographical point is subdivided into N scaled points. The
+ default is '1'. *Note Using Fractional Type Sizes::.
+
+'styles S1 ... SM'
+ The first M mounting positions are associated with styles S1, ...,
+ SM.
+
+'tcommand'
+ The postprocessor can handle the 't' and 'u' intermediate output
+ commands.
+
+'unicode'
+ The output device supports the complete Unicode repertoire. This
+ directive is useful only for devices that produce character
+ entities instead of glyphs.
+
+ If 'unicode' is present, no 'charset' section is required in the
+ font description files since the Unicode handling built into
+ 'groff' is used. However, if there are entries in a font
+ description file's 'charset' section, they either override the
+ default mappings for those particular characters or add new
+ mappings (normally for composite characters).
+
+ The 'utf8', 'html', and 'xhtml' output devices use this directive.
+
+'unitwidth N'
+ Quantities in the font description files are in basic units for
+ fonts whose type size is N scaled points.
+
+'unscaled_charwidths'
+ Make the font handling module always return unscaled character
+ widths. The 'grohtml' driver uses this directive.
+
+'use_charnames_in_special'
+ GNU 'troff' should encode special characters inside device control
+ commands; see *note Postprocessor Access::. The 'grohtml' driver
+ uses this directive.
+
+'vert N'
+ The vertical motion quantum is N basic units. All vertical
+ quantities are rounded to multiples of N.
+
+'charset'
+ This line and everything following it in the file are ignored. It
+ is recognized for compatibility with other 'troff' implementations.
+ In GNU 'troff', character set repertoire is described on a per-font
+ basis.
+
+ GNU 'troff' recognizes but ignores the directives 'spare1', 'spare2',
+and 'biggestfont'.
+
+ The 'res', 'unitwidth', 'fonts', and 'sizes' lines are mandatory.
+Directives not listed above are ignored by GNU 'troff' but may be used
+by postprocessors to obtain further information about the device.
+
+
+File: groff.info, Node: Font Description File Format, Prev: DESC File Format, Up: Device and Font Description Files
+
+6.2.2 Font Description File Format
+----------------------------------
+
+On typesetting output devices, each font is typically available at
+multiple sizes. While paper measurements in the device description file
+are in absolute units, measurements applicable to fonts must be
+proportional to the type size. 'groff' achieves this using the
+precedent set by AT&T device-independent 'troff': one font size is
+chosen as a norm, and all others are scaled linearly relative to that
+basis. The "unit width" is the number of basic units per point when the
+font is rendered at this nominal size.
+
+ For instance, 'groff''s 'lbp' device uses a 'unitwidth' of 800. Its
+Times roman font 'TR' has a 'spacewidth' of 833; this is also the width
+of its comma, period, centered period, and mathematical asterisk, while
+its 'M' is 2,963 basic units. Thus, an 'M' on the 'lbp' device is 2,963
+basic units wide at a notional type size of 800 points.(1) (*note Font
+Description File Format-Footnote-1::)
+
+ A font description file has two sections. The first is a sequence of
+directives, and is parsed similarly to the 'DESC' file described above.
+Except for the directive names that begin the second section, their
+ordering is immaterial. Later directives of the same name override
+earlier ones, spaces and tabs are handled in the same way, and the same
+comment syntax is supported. Empty lines are ignored throughout.
+
+'name F'
+ The name of the font is F. 'DESC' is an invalid font name. Simple
+ integers are valid, but their use is discouraged.(2) (*note Font
+ Description File Format-Footnote-2::)
+
+'spacewidth N'
+ The width of an unadjusted inter-word space is N basic units.
+
+ The directives above must appear in the first section; those below
+are optional.
+
+'slant N'
+ The font's glyphs have a slant of N degrees; a positive N slants in
+ the direction of text flow.
+
+'ligatures LIG1 ... LIGN [0]'
+ Glyphs LIG1, ..., LIGN are ligatures; possible ligatures are 'ff',
+ 'fi', 'fl', 'ffi' and 'ffl'. For compatibility with other 'troff'
+ implementations, the list of ligatures may be terminated with
+ a '0'. The list of ligatures must not extend over more than one
+ line.
+
+'special'
+ The font is "special": when a glyph is requested that is not
+ present in the current font, it is sought in any mounted fonts that
+ bear this property.
+
+ Other directives in this section are ignored by GNU 'troff', but may
+be used by postprocessors to obtain further information about the font.
+
+ The second section contains one or two subsections. These can appear
+in either order; the first one encountered commences the second section.
+Each starts with a directive on a line by itself. A 'charset'
+subsection is mandatory unless the associated 'DESC' file contains the
+'unicode' directive. Another subsection, 'kernpairs', is optional.
+
+ The directive 'charset' starts the character set subsection.(3)
+(*note Font Description File Format-Footnote-3::) It precedes a series
+of glyph descriptions, one per line. Each such glyph description
+comprises a set of fields separated by spaces or tabs and organized as
+follows.
+
+ NAME METRICS TYPE CODE [ENTITY-NAME] ['--' COMMENT]
+
+NAME identifies the glyph: if NAME is a printable character C, it
+corresponds to the 'troff' ordinary character C. If NAME is a
+multi-character sequence not beginning with '\', it corresponds to the
+GNU 'troff' special character escape sequence '\[NAME]'. A name
+consisting of three minus signs, '---', is special and indicates that
+the glyph is unnamed: such glyphs can be accessed only by the '\N'
+escape sequence in 'troff'. A special character named '---' can still
+be defined using 'char' and similar requests. The NAME '\-' defines the
+minus sign glyph. Finally, NAME can be the unbreakable one-sixth and
+one-twelfth space escape sequences, '\|' and '\^' ("thin" and "hair"
+spaces, respectively), in which case only the width metric described
+below is interpreted; a font can thus customize the widths of these
+spaces.
+
+ The form of the METRICS field is as follows.
+
+ WIDTH[','[HEIGHT[','[DEPTH[','[ITALIC-CORRECTION
+ [','[LEFT-ITALIC-CORRECTION[','[SUBSCRIPT-CORRECTION]]]]]]]]]]
+
+There must not be any spaces, tabs, or newlines between these
+"subfields" (which have been split here into two lines only for better
+legibility). The subfields are in basic units expressed as decimal
+integers. Unspecified subfields default to '0'. Since there is no
+associated binary format, these values are not required to fit into the
+C language data type 'char' as they are in AT&T device-independent
+'troff'.
+
+ The WIDTH subfield gives the width of the glyph. The HEIGHT subfield
+gives the height of the glyph (upward is positive); if a glyph does not
+extend above the baseline, it should be given a zero height, rather than
+a negative height. The DEPTH subfield gives the depth of the glyph,
+that is, the distance below the baseline to which the glyph extends
+(downward is positive); if a glyph does not extend below the baseline,
+it should be given a zero depth, rather than a negative depth. Italic
+corrections are relevant to glyphs in italic or oblique styles. The
+ITALIC-CORRECTION is the amount of space that should be added after an
+oblique glyph to be followed immediately by an upright glyph. The
+LEFT-ITALIC-CORRECTION is the amount of space that should be added
+before an oblique glyph to be preceded immediately by an upright glyph.
+The SUBSCRIPT-CORRECTION is the amount of space that should be added
+after an oblique glyph to be followed by a subscript; it should be less
+than the italic correction.
+
+ For fonts used with typesetting devices, the TYPE field gives a
+featural description of the glyph: it is a bit mask recording whether
+the glyph is an ascender, descender, both, or neither. When a '\w'
+escape sequence is interpolated, these values are bitwise or-ed together
+for each glyph and stored in the 'nr' register. In font descriptions
+for terminal devices, all glyphs might have a type of zero, regardless
+of their appearance.
+
+'0'
+ means the glyph lies entirely between the baseline and a horizontal
+ line at the "x-height" of the font; typical examples are 'a', 'c',
+ and 'x';
+
+'1'
+ means the glyph descends below the baseline, like 'p';
+
+'2'
+ means the glyph ascends above the font's x-height, like 'A' or 'b';
+ and
+
+'3'
+ means the glyph is both an ascender and a descender--this is true
+ of parentheses in some fonts.
+
+ The CODE field gives a numeric identifier that the postprocessor uses
+to render the glyph. The glyph can be specified to 'troff' using this
+code by means of the '\N' escape sequence. CODE can be any integer.(4)
+(*note Font Description File Format-Footnote-4::)
+
+ The ENTITY-NAME field defines an identifier for the glyph that the
+postprocessor uses to print the GNU 'troff' glyph NAME. This field is
+optional; it was introduced so that the 'grohtml' output driver could
+encode its character set. For example, the glyph '\[Po]' is represented
+by '&pound;' in HTML 4.0. For efficiency, these data are now compiled
+directly into 'grohtml'. 'grops' uses the field to build sub-encoding
+arrays for PostScript fonts containing more than 256 glyphs. Anything
+on the line after the ENTITY-NAME field or '--' is ignored.
+
+ A line in the 'charset' section can also have the form
+
+ NAME "
+
+identifying NAME as another name for the glyph mentioned in the
+preceding line. Such aliases can be chained.
+
+ The directive 'kernpairs' starts a list of kerning adjustments to be
+made to adjacent glyph pairs from this font. It contains a sequence of
+lines formatted as follows.
+
+ G1 G2 N
+
+The foregoing means that when glyph G1 is typeset immediately before G2,
+the space between them should be increased by N. Most kerning pairs
+should have a negative value for N.
+
+
+File: groff.info, Node: Font Description File Format-Footnotes, Up: Font Description File Format
+
+ (1) 800-point type is not practical for most purposes, but using it
+enables the quantities in the font description files to be expressed as
+integers.
+
+ (2) 'groff' requests and escape sequences interpret non-negative font
+names as mounting positions instead. Further, a font named '0' cannot
+be automatically mounted by the 'fonts' directive of a 'DESC' file.
+
+ (3) For typesetter devices, this directive is misnamed since it
+starts a list of glyphs, not characters.
+
+ (4) that is, any integer parsable by the C standard library's
+'strtol(3)' function
+
+
+File: groff.info, Node: Copying This Manual, Next: Request Index, Prev: Font Description File Format, Up: Top
+
+Appendix A Copying This Manual
+******************************
+
+ Version 1.3, 3 November 2008
+
+ Copyright © 2000-2018 Free Software Foundation, Inc.
+ <http://fsf.org/>
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book. We
+ recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it can
+ be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You accept
+ the license if you copy, modify or distribute the work in a way
+ requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in the
+ notice that says that the Document is released under this License.
+ If a section does not fit the above definition of Secondary then it
+ is not allowed to be designated as Invariant. The Document may
+ contain zero Invariant Sections. If the Document does not identify
+ any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images composed
+ of pixels) generic paint programs or (for drawings) some widely
+ available drawing editor, and that is suitable for input to text
+ formatters or for automatic translation to a variety of formats
+ suitable for input to text formatters. A copy made in an otherwise
+ Transparent file format whose markup, or absence of markup, has
+ been arranged to thwart or discourage subsequent modification by
+ readers is not Transparent. An image format is not Transparent if
+ used for any substantial amount of text. A copy that is not
+ "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and standard-conforming
+ simple HTML, PostScript or PDF designed for human modification.
+ Examples of transparent image formats include PNG, XCF and JPG.
+ Opaque formats include proprietary formats that can be read and
+ edited only by proprietary word processors, SGML or XML for which
+ the DTD and/or processing tools are not generally available, and
+ the machine-generated HTML, PostScript or PDF produced by some word
+ processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ The "publisher" means any person or entity that distributes copies
+ of the Document to the public.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow the
+ conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the title
+ equally prominent and visible. You may add other material on the
+ covers in addition. Copying with changes limited to the covers, as
+ long as they preserve the title of the Document and satisfy these
+ conditions, can be treated as verbatim copying in other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a machine-readable
+ Transparent copy along with each Opaque copy, or state in or with
+ each Opaque copy a computer-network location from which the general
+ network-using public has access to download using public-standard
+ network protocols a complete Transparent copy of the Document, free
+ of added material. If you use the latter option, you must take
+ reasonably prudent steps, when you begin distribution of Opaque
+ copies in quantity, to ensure that this Transparent copy will
+ remain thus accessible at the stated location until at least one
+ year after the last time you distribute an Opaque copy (directly or
+ through your agents or retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of copies,
+ to give them a chance to provide you with an updated version of the
+ Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with the
+ Modified Version filling the role of the Document, thus licensing
+ distribution and modification of the Modified Version to whoever
+ possesses a copy of it. In addition, you must do these things in
+ the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of previous
+ versions (which should, if there were any, be listed in the
+ History section of the Document). You may use the same title
+ as a previous version if the original publisher of that
+ version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on the
+ Title Page. If there is no section Entitled "History" in the
+ Document, create one stating the title, year, authors, and
+ publisher of the Document as given on its Title Page, then add
+ an item describing the Modified Version as stated in the
+ previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in the
+ "History" section. You may omit a network location for a work
+ that was published at least four years before the Document
+ itself, or if the original publisher of the version it refers
+ to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section
+ all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document, unaltered
+ in their text and in their titles. Section numbers or the
+ equivalent are not considered part of the section titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option designate
+ some or all of these sections as invariant. To do this, add their
+ titles to the list of Invariant Sections in the Modified Version's
+ license notice. These titles must be distinct from any other
+ section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end of
+ the list of Cover Texts in the Modified Version. Only one passage
+ of Front-Cover Text and one of Back-Cover Text may be added by (or
+ through arrangements made by) any one entity. If the Document
+ already includes a cover text for the same cover, previously added
+ by you or by arrangement made by the same entity you are acting on
+ behalf of, you may not add another; but you may replace the old
+ one, on explicit permission from the previous publisher that added
+ the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination all
+ of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the documents
+ in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow this
+ License in all other respects regarding verbatim copying of that
+ document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of a
+ storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense, or distribute it is void,
+ and will automatically terminate your rights under this License.
+
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly and
+ finally terminates your license, and (b) permanently, if the
+ copyright holder fails to notify you of the violation by some
+ reasonable means prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from
+ that copyright holder, and you cure the violation prior to 30 days
+ after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate
+ the licenses of parties who have received copies or rights from you
+ under this License. If your rights have been terminated and not
+ permanently reinstated, receipt of a copy of some or all of the
+ same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ <http://www.gnu.org/copyleft/>.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If the
+ Document does not specify a version number of this License, you may
+ choose any version ever published (not as a draft) by the Free
+ Software Foundation. If the Document specifies that a proxy can
+ decide which future versions of this License can be used, that
+ proxy's public statement of acceptance of a version permanently
+ authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+ "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+ World Wide Web server that publishes copyrightable works and also
+ provides prominent facilities for anybody to edit those works. A
+ public wiki that anybody can edit is an example of such a server.
+ A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+ site means any set of copyrightable works thus published on the MMC
+ site.
+
+ "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+ license published by Creative Commons Corporation, a not-for-profit
+ corporation with a principal place of business in San Francisco,
+ California, as well as future copyleft versions of that license
+ published by that same organization.
+
+ "Incorporate" means to publish or republish a Document, in whole or
+ in part, as part of another Document.
+
+ An MMC is "eligible for relicensing" if it is licensed under this
+ License, and if all works that were first published under this
+ License somewhere other than this MMC, and subsequently
+ incorporated in whole or in part into the MMC, (1) had no cover
+ texts or invariant sections, and (2) were thus incorporated prior
+ to November 1, 2008.
+
+ The operator of an MMC Site may republish an MMC contained in the
+ site under CC-BY-SA on the same site at any time before August 1,
+ 2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of free
+software license, such as the GNU General Public License, to permit
+their use in free software.
+
+
+File: groff.info, Node: Request Index, Next: Escape Sequence Index, Prev: Copying This Manual, Up: Top
+
+Appendix B Request Index
+************************
+
+Request names appear without a leading control character; the defaults
+are '.' for the regular control character and ''' for the no-break
+control character.
+
+
+* Menu:
+
+* ab: Debugging. (line 55)
+* ad: Manipulating Filling and Adjustment.
+ (line 83)
+* af: Assigning Register Formats.
+ (line 12)
+* aln: Setting Registers. (line 110)
+* als: Strings. (line 198)
+* am: Writing Macros. (line 126)
+* am1: Writing Macros. (line 127)
+* ami: Writing Macros. (line 128)
+* ami1: Writing Macros. (line 129)
+* as: Strings. (line 114)
+* as1: Strings. (line 115)
+* asciify: Diversions. (line 208)
+* backtrace: Debugging. (line 104)
+* bd: Artificial Fonts. (line 95)
+* blm: Blank Line Traps. (line 7)
+* box: Diversions. (line 63)
+* boxa: Diversions. (line 64)
+* bp: Page Control. (line 11)
+* br: Manipulating Filling and Adjustment.
+ (line 39)
+* break: while. (line 72)
+* brp: Manipulating Filling and Adjustment.
+ (line 156)
+* c2: Control Characters. (line 29)
+* cc: Control Characters. (line 23)
+* ce: Manipulating Filling and Adjustment.
+ (line 208)
+* cf: I/O. (line 58)
+* cflags: Using Symbols. (line 252)
+* ch: Page Location Traps. (line 114)
+* char: Using Symbols. (line 351)
+* chop: Strings. (line 145)
+* class: Character Classes. (line 12)
+* close: I/O. (line 240)
+* color: Colors. (line 15)
+* composite: Using Symbols. (line 208)
+* continue: while. (line 76)
+* cp: Compatibility Mode. (line 16)
+* cs: Artificial Fonts. (line 125)
+* cu: Artificial Fonts. (line 86)
+* da: Diversions. (line 32)
+* de: Writing Macros. (line 14)
+* de1: Writing Macros. (line 86)
+* defcolor: Colors. (line 27)
+* dei: Writing Macros. (line 108)
+* dei1: Writing Macros. (line 109)
+* device: Postprocessor Access.
+ (line 15)
+* devicem: Postprocessor Access.
+ (line 45)
+* di: Diversions. (line 31)
+* do: Compatibility Mode. (line 27)
+* ds: ms Document Control Settings.
+ (line 15)
+* ds <1>: Strings. (line 24)
+* ds1: Strings. (line 25)
+* dt: Diversion Traps. (line 11)
+* ec: Using Escape Sequences.
+ (line 76)
+* ecr: Using Escape Sequences.
+ (line 102)
+* ecs: Using Escape Sequences.
+ (line 101)
+* el: if-else. (line 8)
+* em: End-of-input Traps. (line 7)
+* eo: Using Escape Sequences.
+ (line 71)
+* ev: Environments. (line 46)
+* evc: Environments. (line 100)
+* ex: Debugging. (line 60)
+* fam: Font Families. (line 21)
+* fc: Fields. (line 18)
+* fchar: Using Symbols. (line 352)
+* fcolor: Colors. (line 85)
+* fi: Manipulating Filling and Adjustment.
+ (line 66)
+* fl: Debugging. (line 95)
+* fp: Font Positions. (line 16)
+* fschar: Using Symbols. (line 353)
+* fspecial: Special Fonts. (line 18)
+* ft: Selecting Fonts. (line 11)
+* ftr: Selecting Fonts. (line 69)
+* fzoom: Selecting Fonts. (line 83)
+* gcolor: Colors. (line 57)
+* hc: Manipulating Hyphenation.
+ (line 88)
+* hcode: Manipulating Hyphenation.
+ (line 293)
+* hla: Manipulating Hyphenation.
+ (line 327)
+* hlm: Manipulating Hyphenation.
+ (line 340)
+* hpf: Manipulating Hyphenation.
+ (line 233)
+* hpfa: Manipulating Hyphenation.
+ (line 234)
+* hpfcode: Manipulating Hyphenation.
+ (line 235)
+* hw: Manipulating Hyphenation.
+ (line 22)
+* hy: Manipulating Hyphenation.
+ (line 120)
+* hym: Manipulating Hyphenation.
+ (line 354)
+* hys: Manipulating Hyphenation.
+ (line 369)
+* ie: if-else. (line 7)
+* if: if-then. (line 7)
+* ig: Comments. (line 54)
+* in: Line Layout. (line 86)
+* it: Input Line Traps. (line 7)
+* itc: Input Line Traps. (line 8)
+* kern: Ligatures and Kerning.
+ (line 41)
+* lc: Leaders. (line 22)
+* length: Strings. (line 135)
+* lf: Debugging. (line 31)
+* lg: Ligatures and Kerning.
+ (line 23)
+* linetabs: Tabs and Fields. (line 139)
+* ll: Line Layout. (line 138)
+* ls: Manipulating Spacing.
+ (line 57)
+* lsm: Leading Space Traps. (line 7)
+* lt: Page Layout. (line 53)
+* mc: Miscellaneous. (line 110)
+* mk: Page Motions. (line 10)
+* mso: I/O. (line 49)
+* msoquiet: I/O. (line 50)
+* na: Manipulating Filling and Adjustment.
+ (line 150)
+* ne: Page Control. (line 31)
+* nf: Manipulating Filling and Adjustment.
+ (line 74)
+* nh: Manipulating Hyphenation.
+ (line 228)
+* nm: Miscellaneous. (line 9)
+* nn: Miscellaneous. (line 74)
+* nop: if-then. (line 26)
+* nr: ms Document Control Settings.
+ (line 11)
+* nr <1>: Setting Registers. (line 10)
+* nr <2>: Setting Registers. (line 64)
+* nr <3>: Auto-increment. (line 14)
+* nroff: troff and nroff Modes.
+ (line 33)
+* ns: Manipulating Spacing.
+ (line 116)
+* nx: I/O. (line 90)
+* open: I/O. (line 207)
+* opena: I/O. (line 208)
+* os: Page Control. (line 66)
+* output: Diversions. (line 195)
+* pc: Page Layout. (line 68)
+* pev: Debugging. (line 78)
+* pi: I/O. (line 149)
+* pl: Page Layout. (line 9)
+* pm: Debugging. (line 82)
+* pn: Page Layout. (line 23)
+* pnr: Debugging. (line 86)
+* po: Line Layout. (line 60)
+* ps: Changing the Type Size.
+ (line 7)
+* psbb: Miscellaneous. (line 158)
+* pso: I/O. (line 38)
+* ptr: Debugging. (line 90)
+* pvs: Changing the Vertical Spacing.
+ (line 48)
+* rchar: Using Symbols. (line 410)
+* rd: I/O. (line 95)
+* return: Writing Macros. (line 163)
+* rfschar: Using Symbols. (line 411)
+* rj: Manipulating Filling and Adjustment.
+ (line 247)
+* rm: Strings. (line 193)
+* rn: Strings. (line 190)
+* rnn: Setting Registers. (line 105)
+* rr: Setting Registers. (line 99)
+* rs: Manipulating Spacing.
+ (line 117)
+* rt: Page Motions. (line 11)
+* schar: Using Symbols. (line 354)
+* shc: Manipulating Hyphenation.
+ (line 97)
+* shift: Parameters. (line 30)
+* sizes: Changing the Type Size.
+ (line 71)
+* so: I/O. (line 9)
+* soquiet: I/O. (line 10)
+* sp: Manipulating Spacing.
+ (line 10)
+* special: Special Fonts. (line 17)
+* spreadwarn: Debugging. (line 135)
+* ss: Manipulating Filling and Adjustment.
+ (line 267)
+* stringdown: Strings. (line 170)
+* stringup: Strings. (line 171)
+* sty: Font Families. (line 62)
+* substring: Strings. (line 153)
+* sv: Page Control. (line 65)
+* sy: I/O. (line 171)
+* ta: Tabs and Fields. (line 13)
+* tag: Postprocessor Access.
+ (line 58)
+* taga: Postprocessor Access.
+ (line 59)
+* tc: Tabs and Fields. (line 127)
+* ti: Line Layout. (line 110)
+* tkf: Ligatures and Kerning.
+ (line 60)
+* tl: Page Layout. (line 39)
+* tm: Debugging. (line 43)
+* tm1: Debugging. (line 44)
+* tmc: Debugging. (line 45)
+* tr: Character Translations.
+ (line 13)
+* trf: I/O. (line 57)
+* trin: Character Translations.
+ (line 14)
+* trnt: Character Translations.
+ (line 79)
+* troff: troff and nroff Modes.
+ (line 25)
+* uf: Artificial Fonts. (line 90)
+* ul: Artificial Fonts. (line 64)
+* unformat: Diversions. (line 233)
+* vpt: Vertical Position Traps.
+ (line 13)
+* vs: Changing the Vertical Spacing.
+ (line 7)
+* warn: Debugging. (line 154)
+* warnscale: Debugging. (line 131)
+* wh: Page Location Traps. (line 11)
+* while: while. (line 10)
+* write: I/O. (line 219)
+* writec: I/O. (line 220)
+* writem: I/O. (line 231)
+
diff --git a/doc/groff.info-3 b/doc/groff.info-3
new file mode 100644
index 0000000..151c796
--- /dev/null
+++ b/doc/groff.info-3
Binary files differ
diff --git a/doc/groff.pdf b/doc/groff.pdf
new file mode 100644
index 0000000..84e8422
--- /dev/null
+++ b/doc/groff.pdf
Binary files differ
diff --git a/doc/groff.texi b/doc/groff.texi
new file mode 100644
index 0000000..2a6635e
--- /dev/null
+++ b/doc/groff.texi
@@ -0,0 +1,18927 @@
+\input texinfo
+
+@c
+@c Please convert this manual with `texi2dvi -e groff.texi' due to
+@c problems in texinfo regarding expansion of user-defined macros.
+@c
+@c You need texinfo 5.0 or newer to format this document!
+@c
+
+@c %**start of header (This is for running Texinfo on a region.)
+@setfilename groff.info
+@settitle The GNU Troff Manual
+@setchapternewpage odd
+@footnotestyle separate
+@c %**end of header (This is for running Texinfo on a region.)
+
+@documentlanguage en
+@documentencoding ISO-8859-1
+
+
+@smallbook
+
+@finalout
+
+
+@copying
+This manual documents GNU @code{troff} version 1.23.0.
+
+Copyright @copyright{} 1994--2023 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled ``GNU Free
+Documentation License''.
+@end quotation
+@end copying
+
+
+@c We use the following indices:
+@c
+@c cindex: concepts
+@c rqindex: requests
+@c esindex: escape sequences
+@c vindex: registers
+@c kindex: commands in font files
+@c pindex: programs and files
+@c tindex: environment variables
+@c maindex: macros
+@c stindex: strings
+@c opindex: operators
+@c
+@c tindex and cindex are merged.
+
+@defcodeindex rq
+@defcodeindex es
+@defcodeindex ma
+@defcodeindex st
+@defcodeindex op
+@syncodeindex tp cp
+
+
+@c To avoid uppercasing in @deffn while converting to info, we define
+@c our special @Var{}.
+
+@macro Var{arg}
+@r{@slanted{\arg\}}
+@end macro
+
+
+@c To assure correct HTML translation, some ugly hacks are necessary.
+@c While processing a @def... request, the HTML translator looks at the
+@c next line to decide whether to start indentation, and if the line
+@c starts with @def... (e.g. @deffnx), indentation is started. We must
+@c therefore ensure that a @def... is seen, during macro expansion.
+@c
+@c The following macros have to be used:
+@c
+@c One item:
+@c
+@c @Def...
+@c
+@c Two items:
+@c
+@c @Def...List
+@c @Def...ListEnd
+@c
+@c More than two:
+@c
+@c @Def...List
+@c @Def...Item
+@c @Def...Item
+@c ...
+@c @Def...ListEnd
+@c
+@c The definition block must end with
+@c
+@c @endDef...
+@c
+@c The above is valid for texinfo 4.0f and above.
+@c
+@c By default, only the first item generates an index entry. To
+@c override this, use a variant with a trailing `x' (like
+@c `@DefmacItemx').
+
+
+@c a dummy macro to assure the `@def...'
+
+@macro defdummy
+@c
+@end macro
+
+
+@c definition of requests
+
+@macro Defreq{name, arg}
+@deffn Request @t{.\name\} \arg\
+@rqindex \name\
+@c
+@end macro
+
+@macro DefreqList{name, arg}
+@deffn Request @t{.\name\} \arg\
+@defdummy
+@rqindex \name\
+@c
+@end macro
+
+@macro DefreqItem{name, arg}
+@deffnx Request @t{.\name\} \arg\
+@defdummy
+@c
+@end macro
+
+@macro DefreqItemx{name, arg}
+@deffnx Request @t{.\name\} \arg\
+@defdummy
+@rqindex \name\
+@c
+@end macro
+
+@macro DefreqListEnd{name, arg}
+@deffnx Request @t{.\name\} \arg\
+@c
+@end macro
+
+@macro DefreqListEndx{name, arg}
+@deffnx Request @t{.\name\} \arg\
+@rqindex \name\
+@c
+@end macro
+
+@macro endDefreq
+@end deffn
+@end macro
+
+
+@c definition of escape sequences
+
+@macro Defesc{name, delimI, arg, delimII}
+@deffn Escape@tie{}sequence @t{\name\\delimI\}@Var{\arg\}@t{\delimII\}
+@esindex \name\
+@c
+@end macro
+
+@macro DefescList{name, delimI, arg, delimII}
+@deffn Escape@tie{}sequence @t{\name\\delimI\}@Var{\arg\}@t{\delimII\}
+@defdummy
+@esindex \name\
+@c
+@end macro
+
+@macro DefescItem{name, delimI, arg, delimII}
+@deffnx Escape@tie{}sequence @t{\name\\delimI\}@Var{\arg\}@t{\delimII\}
+@defdummy
+@c
+@end macro
+
+@macro DefescItemx{name, delimI, arg, delimII}
+@deffnx Escape@tie{}sequence @t{\name\\delimI\}@Var{\arg\}@t{\delimII\}
+@defdummy
+@esindex \name\
+@c
+@end macro
+
+@macro DefescListEnd{name, delimI, arg, delimII}
+@deffnx Escape@tie{}sequence @t{\name\\delimI\}@Var{\arg\}@t{\delimII\}
+@c
+@end macro
+
+@macro DefescListEndx{name, delimI, arg, delimII}
+@deffnx Escape@tie{}sequence @t{\name\\delimI\}@Var{\arg\}@t{\delimII\}
+@esindex \name\
+@c
+@end macro
+
+@macro endDefesc
+@end deffn
+@end macro
+
+
+@c definition of registers (built in to GNU troff)
+
+@macro Defreg{name}
+@deffn Register @t{\\n[\name\]}
+@vindex \name\
+@c
+@end macro
+
+@macro DefregList{name}
+@deffn Register @t{\\n[\name\]}
+@defdummy
+@vindex \name\
+@c
+@end macro
+
+@macro DefregItem{name}
+@deffnx Register @t{\\n[\name\]}
+@defdummy
+@c
+@end macro
+
+@macro DefregItemx{name}
+@deffnx Register @t{\\n[\name\]}
+@defdummy
+@vindex \name\
+@c
+@end macro
+
+@macro DefregListEnd{name}
+@deffnx Register @t{\\n[\name\]}
+@c
+@end macro
+
+@macro DefregListEndx{name}
+@deffnx Register @t{\\n[\name\]}
+@vindex \name\
+@c
+@end macro
+
+@macro endDefreg
+@end deffn
+@end macro
+
+
+@c string definitions (built in to GNU troff)
+
+@macro Defstr{name}
+@deffn String @t{\\*[\name\]}
+@stindex \name\
+@c
+@end macro
+
+@macro DefstrList{name}
+@deffn String @t{\\*[\name\]}
+@defdummy
+@stindex \name\
+@c
+@end macro
+
+@macro DefstrItem{name}
+@deffnx String @t{\\*[\name\]}
+@defdummy
+@c
+@end macro
+
+@macro DefstrItemx{name}
+@deffnx String @t{\\*[\name\]}
+@defdummy
+@stindex \name\
+@c
+@end macro
+
+@macro DefstrListEnd{name}
+@deffnx String @t{\\*[\name\]}
+@c
+@end macro
+
+@macro DefstrListEndx{name}
+@deffnx String @t{\\*[\name\]}
+@stindex \name\
+@c
+@end macro
+
+@macro endDefstr
+@end deffn
+@end macro
+
+
+@c register definitions specific to macro packages, preprocessors, ...
+
+@macro Defmpreg{name, package}
+@deffn Register @t{\\n[\name\]}
+@vindex \name\ @r{[}\package\@r{]}
+@c
+@end macro
+
+@macro DefmpregList{name, package}
+@deffn Register @t{\\n[\name\]}
+@defdummy
+@vindex \name\ @r{[}\package\@r{]}
+@c
+@end macro
+
+@macro DefmpregItem{name, package}
+@deffnx Register @t{\\n[\name\]}
+@defdummy
+@c
+@end macro
+
+@macro DefmpregItemx{name, package}
+@deffnx Register @t{\\n[\name\]}
+@defdummy
+@vindex \name\ @r{[}\package\@r{]}
+@c
+@end macro
+
+@macro DefmpregListEnd{name, package}
+@deffnx Register @t{\\n[\name\]}
+@c
+@end macro
+
+@macro DefmpregListEndx{name, package}
+@deffnx Register @t{\\n[\name\]}
+@vindex \name\ @r{[}\package\@r{]}
+@c
+@end macro
+
+@macro endDefmpreg
+@end deffn
+@end macro
+
+
+@c definition of macros
+
+@macro Defmac{name, arg, package}
+@defmac @t{.\name\} \arg\
+@maindex \name\ @r{[}\package\@r{]}
+@c
+@end macro
+
+@macro DefmacList{name, arg, package}
+@defmac @t{.\name\} \arg\
+@defdummy
+@maindex \name\ @r{[}\package\@r{]}
+@c
+@end macro
+
+@macro DefmacItem{name, arg, package}
+@defmacx @t{.\name\} \arg\
+@defdummy
+@c
+@end macro
+
+@macro DefmacItemx{name, arg, package}
+@defmacx @t{.\name\} \arg\
+@defdummy
+@maindex \name\ @r{[}\package\@r{]}
+@c
+@end macro
+
+@macro DefmacListEnd{name, arg, package}
+@defmacx @t{.\name\} \arg\
+@c
+@end macro
+
+@macro DefmacListEndx{name, arg, package}
+@defmacx @t{.\name\} \arg\
+@maindex \name\ @r{[}\package\@r{]}
+@c
+@end macro
+
+@macro endDefmac
+@end defmac
+@end macro
+
+
+@c string definitions specific to macro packages, preprocessors, ...
+
+@macro Defmpstr{name, package}
+@deffn String @t{\\*[\name\]}
+@stindex \name\ @r{[}\package\@r{]}
+@c
+@end macro
+
+@macro DefmpstrList{name, package}
+@deffn String @t{\\*[\name\]}
+@defdummy
+@stindex \name\ @r{[}\package\@r{]}
+@c
+@end macro
+
+@macro DefmpstrItem{name, package}
+@deffnx String @t{\\*[\name\]}
+@defdummy
+@c
+@end macro
+
+@macro DefmpstrItemx{name, package}
+@deffnx String @t{\\*[\name\]}
+@defdummy
+@stindex \name\ @r{[}\package\@r{]}
+@c
+@end macro
+
+@macro DefmpstrListEnd{name, package}
+@deffnx String @t{\\*[\name\]}
+@c
+@end macro
+
+@macro DefmpstrListEndx{name, package}
+@deffnx String @t{\\*[\name\]}
+@stindex \name\ @r{[}\package\@r{]}
+@c
+@end macro
+
+@macro endDefmpstr
+@end deffn
+@end macro
+
+
+@c our example macros
+
+@macro Example
+@example
+@group
+@end macro
+
+@macro endExample
+@end group
+@end example
+@end macro
+
+@macro CartoucheExample
+@cartouche
+@example
+@end macro
+
+@macro endCartoucheExample
+@end example
+@end cartouche
+@end macro
+
+
+@c Render text with angle brackets around it, as in <text>.
+
+@macro angles{text}
+@guilsinglleft{}@r{\text\}@guilsinglright{}
+@end macro
+
+
+@c Note: We say `Roman numerals' but `roman font'.
+
+
+@dircategory Typesetting
+@direntry
+* Groff: (groff). The GNU roff document formatting system.
+@end direntry
+
+
+@titlepage
+@title groff
+@subtitle The GNU implementation of @code{troff}
+@subtitle Edition 1.23.0
+@subtitle June 2023
+@author Trent@tie{}A.@: Fisher
+@author Werner Lemberg
+@author G.@tie{}Branden Robinson
+
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top, Introduction, (dir), (dir)
+@top GNU @code{troff}
+@end ifnottex
+
+@menu
+* Introduction::
+* Invoking groff::
+* Tutorial for Macro Users::
+* Major Macro Packages::
+* GNU troff Reference::
+* File Formats::
+* Copying This Manual::
+* Request Index::
+* Escape Sequence Index::
+* Operator Index::
+* Register Index::
+* Macro Index::
+* String Index::
+* File Keyword Index::
+* Program and File Index::
+* Concept Index::
+@end menu
+
+@ifnottex
+@insertcopying
+@end ifnottex
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@codequotebacktick on
+@codequoteundirected on
+
+@node Introduction, Invoking groff, Top, Top
+@chapter Introduction
+@cindex introduction
+
+GNU @code{roff} (or @code{groff}) is a programming system for
+typesetting documents. It is highly flexible and has been used
+extensively for over thirty years.
+
+@menu
+* Background::
+* What Is @code{groff}?::
+* @code{groff} Capabilities::
+* Macro Package Intro::
+* Preprocessor Intro::
+* Output Device Intro::
+* Conventions Used in This Manual::
+* Installation::
+* Credits::
+@end menu
+
+
+@c =====================================================================
+
+@node Background, What Is @code{groff}?, Introduction, Introduction
+@section Background
+@cindex background
+
+M.@: Douglas McIlroy, formerly of AT&T Bell Laboratories and present at
+the creation of the Unix operating system, offers an authoritative
+historical summary.
+
+@quotation
+The prime reason for Unix was the desire of Ken [Thompson], Dennis
+[Ritchie], and Joe Ossanna to have a pleasant environment for software
+development. The fig leaf that got the nod from @dots{}
+management was that an early use would be to develop a ``stand-alone''
+word-processing system for use in typing pools and secretarial offices.
+Perhaps they had in mind ``dedicated'', as distinct from
+``stand-alone''; that's what eventuated in various cases, most notably
+in the legal/patent department and in the AT&T CEO's office.
+
+Both those systems were targets of opportunity, not foreseen from the
+start. When Unix was up and running on the PDP-11, Joe got wind of
+the legal department having installed a commercial word processor.
+He went to pitch Unix as an alternative and clinched a trial by
+promising to make @code{roff} able to number lines by tomorrow in order
+to fulfill a patent-office requirement that the commercial system did
+not support.
+
+Modems were installed so legal-department secretaries could try the
+Research machine. They liked it and Joe's superb customer service.
+Soon the legal department got a system of their own. Joe went on to
+create @code{nroff} and @code{troff}. Document preparation became a
+widespread use of Unix, but no stand-alone word-processing system was
+ever undertaken.
+@end quotation
+@c https://minnie.tuhs.org/pipermail/tuhs/2022-March/025535.html
+
+A history relating @code{groff} to its predecessors @code{roff},
+@code{nroff}, and @code{troff} is available in the @cite{roff@r{(7)}}
+man page.
+
+
+@c =====================================================================
+
+@node What Is @code{groff}?, @code{groff} Capabilities, Introduction, Introduction
+@section What Is @code{groff}?
+@cindex what is @code{groff}?
+@cindex @code{groff}---what is it?
+
+@c BEGIN Keep parallel with groff(1), section "Description" (after the
+@c first sentence).
+@c This language is slightly expanded from that in the "ANNOUNCE" file
+@c and on the groff home page.
+@code{groff} (GNU @code{roff}) is a typesetting system that reads plain
+text input files that include formatting commands to produce output in
+PostScript, PDF, HTML, DVI, or other formats, or for display to a
+terminal. Formatting commands can be low-level typesetting primitives,
+macros from a supplied package, or user-defined macros. All three
+approaches can be combined.
+
+A reimplementation and extension of the typesetter from @acronym{AT&T}
+Unix, @code{groff} is present on most @acronym{POSIX} systems owing to
+its long association with Unix manuals (including man pages). It and
+its predecessor are notable for their production of several best-selling
+software engineering texts. @code{groff} is capable of producing
+typographically sophisticated documents while consuming minimal system
+resources.
+@c END Keep parallel with groff(1), section "Description" (after the
+@c first sentence).
+
+
+@c =====================================================================
+
+@node @code{groff} Capabilities, Macro Package Intro, What Is @code{groff}?, Introduction
+@section @code{groff} Capabilities
+@cindex @code{groff} capabilities
+@cindex capabilities of @code{groff}
+
+GNU @code{troff} is a typesetting document formatter; it provides a wide
+range of low-level text and page operations within the framework of a
+programming language. These operations compose to generate footnotes,
+tables of contents, mathematical equations, diagrams, multi-column text,
+and other elements of typeset works. Here is a survey of formatter
+features; all are under precise user control.
+
+@itemize @bullet
+@item
+text filling, breaking, alignment to the left or right margin; centering
+
+@item
+adjustment of inter-word space size to justify text, and of
+inter-sentence space size to suit local style conventions
+
+@item
+automatic and manual determination of hyphenation break points
+
+@item
+pagination
+
+@item
+selection of any font available to the output device
+
+@item
+adjustment of type size and vertical spacing (or ``leading'')
+
+@item
+configuration of line length and indentation amounts; columnation
+
+@item
+drawing of geometric primitives (lines, arcs, polygons, circles,
+@dots{})
+
+@item
+setup of stroke and fill colors (where supported by the output
+device)
+
+@item
+embedding of hyperlinks, images, document metadata, and other inclusions
+(where supported by the output device)
+@end itemize
+
+
+@c =====================================================================
+
+@node Macro Package Intro, Preprocessor Intro, @code{groff} Capabilities, Introduction
+@section Macro Packages
+@cindex macro package, introduction
+@cindex package, macro, introduction
+
+Elemental typesetting functions can be be challenging to use directly
+with complex documents. A @dfn{macro} facility specifies how certain
+routine operations, such as starting paragraphs, or printing headers and
+footers, should be performed in terms of those low-level instructions.
+Macros can be specific to one document or collected together into a
+@dfn{macro package} for use by many. Several macro packages available;
+the most widely used are provided with @code{groff}. They are
+@file{man}, @file{mdoc}, @file{me}, @file{mm}, @file{mom}, and
+@file{ms}.
+
+
+@c =====================================================================
+
+@node Preprocessor Intro, Output Device Intro, Macro Package Intro, Introduction
+@section Preprocessors
+@cindex preprocessors
+
+An alternative approach to complexity management, particularly when
+constructing tables, setting mathematics, or drawing diagrams, lies in
+preprocessing. A @dfn{preprocessor} employs a domian-specific language
+to ease the generation of tables, equations, and so forth in terms that
+are convenient for human entry. Each preprocessor reads a document and
+translates the parts of it that apply to it into GNU @code{troff} input.
+Command-line options to @command{groff} tell it which preprocessors to
+use.
+
+@code{groff} provides preprocessors for laying out tables
+(@command{gtbl}), typesetting equations (@command{geqn}), drawing
+diagrams (@command{gpic} and @command{ggrn}), inserting bibliographic
+references (@command{grefer}), and drawing chemical structures
+(@command{gchem}). An associated program that is useful when dealing
+with preprocessors is @command{gsoelim}.@footnote{The @samp{g} prefix is
+not used on all systems; see @ref{Invoking groff}.}
+
+@code{groff} also supports @code{grap}, a preprocessor for drawing
+graphs. A free implementation of it can be obtained separately.
+
+Unique to @code{groff} is the @code{preconv} preprocessor that enables
+@code{groff} to handle documents in a variety of input encodings.
+
+Other preprocessors exist, but no free implementations
+are known. An example is @command{ideal}, which draws diagrams using a
+mathematical constraint language.
+
+
+@c =====================================================================
+
+@node Output Device Intro, Installation, Preprocessor Intro, Introduction
+@section Output Devices
+@cindex postprocessors
+@cindex output devices
+@cindex devices for output
+
+GNU @code{troff}'s output is in a device-independent page description
+language, which is then read by an @dfn{output driver} that translates
+this language into a file format or byte stream that a piece of
+(possibly emulated) hardware understands. @code{groff} features output
+drivers for PostScript devices, terminal emulators (and other simple
+typewriter-like machines), X11 (for previewing), @TeX{} DVI, HP
+LaserJet@tie{}4/PCL5 and Canon LBP printers (which use @acronym{CaPSL}),
+@acronym{HTML}, @acronym{XHTML}, and @acronym{PDF}.
+
+
+@c =====================================================================
+
+@node Installation, Conventions Used in This Manual, Output Device Intro, Introduction
+@section Installation
+@cindex installation
+
+Locate installation instructions in the files @file{INSTALL},
+@file{INSTALL.extra}, and @file{INSTALL.REPO} in the @code{groff} source
+distribution. Being a GNU project, @code{groff} supports the familiar
+@samp{./configure && make} command sequence.
+
+
+@c =====================================================================
+
+@node Conventions Used in This Manual, Credits, Installation, Introduction
+@section Conventions Used in This Manual
+
+We apply the term ``groff'' to the language documented here, the GNU
+implementation of the overall system, the project that develops that
+system, and the command of that name. In the first sense, @code{groff}
+is an extended dialect of the @code{roff} language, for which many
+similar implementations exist.
+
+The @code{roff} language features several major categories for which
+many items are predefined. Presentations of these items feature the
+form in which the item is most commonly used on the left, and, aligned
+to the right margin, the name of the category in brackets.
+
+@deffn Register \n[example]
+The register @samp{example} is one that that @code{groff} @emph{doesn't}
+predefine. You can create it yourself, though; see @ref{Setting
+Registers}.
+@end deffn
+
+To make this document useful as a reference and not merely amiable
+bedtime reading, we tend to present these syntax items in exhaustive
+detail when they arise. References to topics discussed later in the
+text are frequent; skip material you don't understand yet.
+
+We use Texinfo's ``result'' (@result{}) and @error{} notations to
+present output written to the standard output and standard error
+streams, respectively. Diagnostic messages from the GNU @code{troff}
+formatter and other programs are examples of the latter, but the
+formatter can also be directed to write user-specified messages to the
+standard error stream. The notation then serves to identify the
+output stream and does not necessarily mean that an error has
+occurred.@footnote{Unix and related operating systems distinguish
+standard output and standard error streams @emph{because} of
+@code{troff}:@:
+@uref{https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html}.}
+
+@Example
+$ echo "Twelve o'clock and" | groff -Tascii | sed '/^$/d'
+ @result{} Twelve o'clock and
+$ echo '.tm all is well.' | groff > /dev/null
+ @error{} all is well.
+@endExample
+
+Sometimes we use @result{} somewhat abstractly to represent formatted
+text that you will need to use a PostScript or PDF viewer program (or a
+printer) to observe. While arguably an abuse of notation, we think this
+preferable to requiring the reader to understand the syntax of these
+page description languages.
+
+We also present diagnostic messages in an abbreviated form, often
+omitting the name of the program issuing them, the input file name, and
+line number or other positional information when such data do not serve
+to illuminate the topic under discussion.
+
+Most examples are of @code{roff} language input that would be placed in
+a text file. Occasionally, we start an example with a @samp{$}
+character to indicate a shell prompt, as seen above.
+
+You are encouraged to try the examples yourself, and to alter them to
+better learn @code{groff}'s behavior. Our examples frequently need to
+direct the formatter to set a line length (with @samp{.ll}) that will
+fit within the page margins of this manual. We mention this so that you
+know why it is there before we discuss the @code{ll} request
+formally.@footnote{@xref{Line Layout}.}
+
+
+@c =====================================================================
+
+@node Credits, , Conventions Used in This Manual, Introduction
+@section Credits
+@cindex credits
+
+We adapted portions of this manual from existing documents. James
+Clark's man pages were an essential resource; we have updated them in
+parallel with the development of this manual. We based the tutorial for
+macro users on Eric Allman's introduction to his @file{me} macro package
+(which we also provide, little altered from 4.4BSD). Larry Kollar
+contributed much of the material on the @file{ms} macro package.
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node Invoking groff, Tutorial for Macro Users, Introduction, Top
+@chapter Invoking @code{groff}
+@cindex invoking @code{groff}
+@cindex @code{groff} invocation
+
+This chapter focuses on how to invoke the @code{groff} front end. This
+front end takes care of the details of constructing the pipeline among
+the preprocessors, @code{gtroff} and the postprocessor.
+
+It has become a tradition that GNU programs get the prefix @samp{g} to
+distinguish them from their original counterparts provided by the host
+(@pxref{Environment}). Thus, for example, @code{geqn} is GNU
+@code{eqn}. On operating systems like GNU/Linux or the Hurd, which
+don't contain proprietary versions of @code{troff}, and on
+MS-DOS/MS-Windows, where @code{troff} and associated programs are not
+available at all, this prefix is omitted since GNU @code{troff} is the
+only incarnation of @code{troff} used. Exception: @samp{groff} is never
+replaced by @samp{roff}.
+
+In this document, we consequently say @samp{gtroff} when talking about
+the GNU @code{troff} program. @c XXX: Not for much longer... -- GBR
+All other implementations of @code{troff} are called @acronym{AT&T}
+@code{troff}, which is the common origin of almost all @code{troff}
+implementations@footnote{Besides @code{groff}, @code{neatroff} is an
+exception.} (with more or less compatible changes). Similarly, we say
+@samp{gpic}, @samp{geqn}, and so on.
+
+@menu
+* Groff Options::
+* Environment::
+* Macro Directories::
+* Font Directories::
+* Paper Format::
+* Invocation Examples::
+@end menu
+
+
+@c =====================================================================
+
+@node Groff Options, Environment, Invoking groff, Invoking groff
+@section Options
+@cindex options
+
+@pindex groff
+@pindex gtroff
+@pindex gpic
+@pindex geqn
+@pindex ggrn
+@pindex grap
+@pindex gtbl
+@pindex gchem
+@pindex grefer
+@pindex gsoelim
+@pindex preconv
+@code{groff} normally runs the @code{gtroff} program and a
+postprocessor appropriate for the selected device. The default device
+is @samp{ps} (but it can be changed when @code{groff} is configured and
+built). It can optionally preprocess with any of @code{gpic},
+@code{geqn}, @code{gtbl}, @code{ggrn}, @code{grap}, @code{gchem},
+@code{grefer}, @code{gsoelim}, or @code{preconv}.
+
+This section documents only options to the @code{groff} front end. Many
+of the arguments to @code{groff} are passed on to @code{gtroff};
+therefore, those are also included. Arguments to preprocessors and
+output drivers can be found in the man pages @cite{gpic@r{(1)}},
+@cite{geqn@r{(1)}}, @cite{gtbl@r{(1)}}, @cite{ggrn@r{(1)}},
+@cite{grefer@r{(1)}}, @cite{gchem@r{(1)}}, @cite{gsoelim@r{(1)}},
+@cite{preconv@r{(1)}}, @cite{grotty@r{(1)}}, @cite{grops@r{(1)}},
+@cite{gropdf@r{(1)}}, @cite{grohtml@r{(1)}}, @cite{grodvi@r{(1)}},
+@cite{grolj4@r{(1)}}, @cite{grolbp@r{(1)}}, and @cite{gxditview@r{(1)}}.
+
+The command-line format for @code{groff} is:
+
+@Example
+groff [ -abceghijklpstvzCEGNRSUVXZ ] [ -d@var{cs} ] [ -D@var{arg} ]
+ [ -f@var{fam} ] [ -F@var{dir} ] [ -I@var{dir} ] [ -K@var{arg} ]
+ [ -L@var{arg} ] [ -m@var{name} ] [ -M@var{dir} ] [ -n@var{num} ]
+ [ -o@var{list} ] [ -P@var{arg} ] [ -r@var{cn} ] [ -T@var{dev} ]
+ [ -w@var{name} ] [ -W@var{name} ] [ @var{files}@dots{} ]
+@endExample
+
+The command-line format for @code{gtroff} is as follows.
+
+@Example
+gtroff [ -abcivzCERU ] [ -d@var{cs} ] [ -f@var{fam} ] [ -F@var{dir} ]
+ [ -m@var{name} ] [ -M@var{dir} ] [ -n@var{num} ] [ -o@var{list} ]
+ [ -r@var{cn} ] [ -T@var{name} ] [ -w@var{name} ] [ -W@var{name} ]
+ [ @var{files}@dots{} ]
+@endExample
+
+@noindent
+Obviously, many of the options to @code{groff} are actually passed on to
+@code{gtroff}.
+
+Options without an argument can be grouped behind a
+single@tie{}@option{-}. A filename of@tie{}@file{-} denotes the
+standard input. Whitespace is permitted between an option and its
+argument.
+
+The @code{grog} command can be used to guess the correct @code{groff}
+command to format a file. See its man page @cite{grog@r{(1)}}; type
+@samp{man grog} at the command line to view it.
+
+@command{groff}'s command-line options are as follows.
+
+@cindex command-line options
+@table @samp
+@item -a
+@cindex plain text approximation output register (@code{.A})
+Generate a plain text approximation of the typeset output. The
+read-only register @code{.A} is set to@tie{}1. @xref{Built-in
+Registers}. This option produces a sort of abstract preview of the
+formatted output.
+
+@itemize @bullet
+@item
+Page breaks are marked by a phrase in angle brackets; for example,
+@samp{<beginning of page>}.
+
+@item
+Lines are broken where they would be in the formatted output.
+
+@item
+A horizontal motion of any size is represented as one space. Adjacent
+horizontal motions are not combined. Inter-sentence space nodes (those
+arising from the second argument to the @code{ss} request) are not
+represented.
+
+@item
+Vertical motions are not represented.
+
+@item
+Special characters are rendered in angle brackets; for example, the
+default soft hyphen character appears as @samp{<hy>}.
+@end itemize
+
+The above description should not be considered a specification; the
+details of @option{-a} output are subject to change.
+
+@item -b
+Write a backtrace reporting the state of @command{gtroff}'s input parser
+to the standard error stream with each diagnostic message. The line
+numbers given in the backtrace might not always be correct, because
+@command{gtroff}'s idea of line numbers can be confused by requests that
+append to
+@c XXX: strings or (??? strings never contain newlines)
+macros.
+
+@item -c
+Start with color output disabled.
+
+@item -C
+Enable AT&T @command{troff} compatibility mode; implies @option{-c}.
+@xref{Implementation Differences}, for the list of incompatibilities
+between @command{groff} and @acronym{AT&T} @command{troff}.
+
+@item -d@var{c}@var{text}
+@itemx -d@var{string}=@var{text}
+Define @code{roff} string @var{c} or @var{string} as@tie{}@var{t} or
+@var{text}. @var{c}@tie{}must be one character; @var{string} can be
+of arbitrary length. Such string assignments happen before any macro
+file is loaded, including the startup file. Due to @code{getopt_long}
+limitations, @var{c}@tie{}cannot be, and @var{string} cannot contain, an
+equals sign, even though that is a valid character in a @code{roff}
+identifier.
+
+@item -D@var{enc}
+Set fallback input encoding used by @command{preconv} to @var{enc};
+implies @option{-k}.
+
+@item -e
+Run @command{geqn} preprocessor.
+
+@item -E
+Inhibit @command{gtroff} error messages. This option does @emph{not}
+suppress messages sent to the standard error stream by documents or
+macro packages using @code{tm} or related requests.
+
+@item -f@var{fam}
+Use @var{fam} as the default font family. @xref{Font Families}.
+
+@item -F@var{dir}
+Search in directory @file{@var{dir}} for the selected output device's
+directory of device and font description files. See the description of
+@env{GROFF_FONT_PATH} in @ref{Environment} below for the default search
+locations and ordering.
+
+@item -g
+Run @command{ggrn} preprocessor.
+
+@item -G
+Run @command{grap} preprocessor; implies @option{-p}.
+
+@item -h
+Display a usage message and exit.
+
+@item -i
+Read the standard input after all the named input files have been
+processed.
+
+@item -I@var{dir}
+Search the directory @var{dir} for files named in several contexts;
+implies @option{-g} and @option{-s}.
+
+@itemize
+@item
+@command{gsoelim} replaces @code{so} requests with the contents of their
+file name arguments.
+
+@item
+@command{gtroff} searches for files named as operands in its command
+line and as arguments to @code{psbb}, @code{so}, and @code{soquiet}
+requests.
+
+@item
+Output drivers may search for files; for instance, @command{grops} looks
+for files named in @samp{\X'ps: import @r{@dots{}}'}, @samp{\X'ps: file
+@r{@dots{}}'}, and @samp{\X'pdf: pdfpic @r{@dots{}}'} device control
+escape sequences.
+@end itemize
+
+This option may be specified more than once; the directories are
+searched in the order specified. If you want to search the current
+directory before others, add @samp{-I .} at the desired place. The
+current working directory is otherwise searched last. @option{-I} works
+similarly to, and is named for, the ``include'' option of Unix C
+compilers.
+
+@option{-I} options are passed to @command{gsoelim}, @command{gtroff},
+and output drivers; with the flag letter changed to @option{-M}, they
+are also passed to @command{ggrn}.
+
+@item -j
+Run @command{gchem} preprocessor. Implies @option{-p}.
+
+@item -k
+Run @command{preconv} preprocessor. Refer to its man page for its
+behavior if neither of @command{groff}'s @option{-K} or @option{-D}
+options is also specified.
+
+@item -K@var{enc}
+Set input encoding used by @command{preconv} to @var{enc}; implies
+@option{-k}.
+
+@item -l
+Send the output to a spooler for printing. The @code{print} directive
+in the device description file specifies the default command to be used;
+see @ref{Device and Font Description Files}.
+@c XXX: This document is not parameterized in configuration variables.
+@c If no such directive is present for the output device,
+@c .ie '@PSPRINT@'' \{\
+@c this option is ignored.
+@c .\}
+@c .el \{\
+@c output is piped to
+@c .MR @PSPRINT@ 1 .
+@c .\}
+See options @option{-L} and @option{-X}.
+
+@item -L@var{arg}
+Pass @var{arg} to the print spooler program. If multiple @var{arg}s are
+required, pass each with a separate @option{-L} option. @command{groff}
+does not prefix an option dash to @var{arg} before passing it to the
+spooler program.
+
+@item -m@var{name}
+Process the file @file{@var{name}.tmac} prior to any input files.
+If not found, @file{tmac.@var{name}} is attempted. @var{name}
+(in both arrangements) is presumed to be a macro file; see the
+description of @env{GROFF_TMAC_PATH} in @ref{Environment} below for the
+default search locations and ordering. This option and its argument are
+also passed to @command{geqn}, @command{grap}, and @command{ggrn}.
+
+@item -M@var{dir}
+Search directory @file{@var{dir}} for macro files; see the description
+of @env{GROFF_TMAC_PATH} in @ref{Environment} below for the default
+search locations and ordering. This option and its argument are also
+passed to @command{geqn}, @command{grap}, and @command{ggrn}.
+
+@item -n@var{num}
+Number the first page @var{num}.
+
+@item -N
+Prohibit newlines between @code{eqn} delimiters:@: pass @option{-N} to
+@command{geqn}.
+
+@item -o@var{list}
+@cindex print current page register (@code{.P})
+Output only pages in @var{list}, which is a comma-separated list of page
+ranges; @samp{@var{n}} means page@tie{}@var{n}, @samp{@var{m}-@var{n}}
+means every page between @var{m} and@tie{}@var{n}, @samp{-@var{n}} means
+every page up to@tie{}@var{n}, @samp{@var{n}-} means every page from
+@var{n}@tie{}on. @command{gtroff} stops processing and exits after
+formatting the last page enumerated in @var{list}.
+
+@item -p
+Run @command{gpic} preprocessor.
+
+@item -P@var{arg}
+Pass @var{arg} to the postprocessor. If multiple @var{arg}s are
+required, pass each with a separate @option{-P} option. @command{groff}
+does not prefix an option dash to @var{arg} before passing it to the
+postprocessor.
+
+@item -r@var{c}@var{numeric-expression}
+@itemx -r@var{register}=@var{expr}
+Set @code{roff} register@tie{}@var{c} or @var{register} to the value
+@var{numeric-expression} (@pxref{Numeric Expressions}).
+@var{c}@tie{}must be one character; @var{register} can be of arbitrary
+length. Such register assignments happen before any macro file is
+loaded, including the startup file. Due to @code{getopt_long}
+limitations, @var{c}@tie{}cannot be, and @var{register} cannot contain,
+an equals sign, even though that is a valid character in a @code{roff}
+identifier.
+
+@item -R
+Run @command{grefer} preprocessor. No mechanism is provided for passing
+arguments to @command{grefer} because most @command{grefer} options have
+equivalent language elements that can be specified within the document.
+
+@pindex troffrc
+@pindex troffrc-end
+@command{gtroff} also accepts a @option{-R} option, which is not
+accessible via @command{groff}. This option prevents the loading of the
+@file{troffrc} and @file{troffrc-end} files.
+
+@item -s
+Run @command{gsoelim} preprocessor.
+
+@item -S
+@cindex @code{open} request, and safer mode
+@cindex @code{opena} request, and safer mode
+@cindex @code{pso} request, and safer mode
+@cindex @code{sy} request, and safer mode
+@cindex @code{pi} request, and safer mode
+@cindex safer mode
+@cindex mode, safer
+Operate in ``safer'' mode; see @option{-U} below for its opposite. For
+security reasons, safer mode is enabled by default.
+
+@item -t
+Run @command{gtbl} preprocessor.
+
+@item -T@var{dev}
+Direct @command{gtroff} to format the input for the output device
+@var{dev}. @command{groff} then calls an output driver to convert
+@command{gtroff}'s output to a form appropriate for @var{dev}. The
+following output devices are available.
+
+@table @code
+@item ps
+For PostScript printers and previewers.
+
+@item pdf
+For @acronym{PDF} viewers or printers.
+
+@item dvi
+For @TeX{} DVI format.
+
+@item X75
+For a 75@dmn{dpi} X11 previewer.
+
+@item X75-12
+For a 75@dmn{dpi} X11 previewer with a 12-point base font in the
+document.
+
+@item X100
+For a 100@dmn{dpi} X11 previewer.
+
+@item X100-12
+For a 100@dmn{dpi} X11 previewer with a 12-point base font in the
+document.
+
+@item ascii
+@cindex encoding, output, @acronym{ASCII}
+@cindex encoding, output, ISO@tie{}646
+@cindex @acronym{ASCII} output encoding
+@cindex ISO@tie{}646 output encoding
+@cindex output encoding, @acronym{ASCII}
+@cindex output encoding, ISO@tie{}646
+For typewriter-like devices using the (7-bit) @acronym{ASCII}
+(ISO@tie{}646) character set.
+
+@item latin1
+@cindex encoding, output, @w{Latin-1} (ISO @w{8859-1})
+@cindex @w{Latin-1} (ISO @w{8859-1}) output encoding
+@cindex ISO @w{8859-1} (@w{Latin-1}) output encoding
+@cindex output encoding, @w{Latin-1} (ISO @w{8859-1})
+For typewriter-like devices that support the @w{Latin-1}
+(ISO@tie{}@w{8859-1}) character set.
+
+@item utf8
+@cindex encoding, output, @w{UTF-8}
+@cindex @w{UTF-8} output encoding
+@cindex output encoding, @w{UTF-8}
+For typewriter-like devices that use the Unicode (ISO@tie{}10646)
+character set with @w{UTF-8} encoding.
+
+@item cp1047
+@cindex encoding, output, @acronym{EBCDIC}
+@cindex @acronym{EBCDIC} output encoding
+@cindex output encoding, @acronym{EBCDIC}
+@cindex encoding, output, code page 1047
+@cindex code page 1047 output encoding
+@cindex output encoding, code page 1047
+@cindex IBM code page 1047 output encoding
+@cindex CCSID 1047 output encoding (EBCDIC)
+For typewriter-like devices that use the @acronym{EBCDIC} encoding IBM
+code page 1047.
+
+@item lj4
+For HP LaserJet4-compatible (or other PCL5-compatible) printers.
+
+@item lbp
+For Canon @acronym{CaPSL} printers (@w{LBP-4} and @w{LBP-8} series laser
+printers).
+
+@pindex pre-grohtml
+@pindex post-grohtml
+@cindex @code{grohtml}, the program
+@item html
+@itemx xhtml
+To produce @acronym{HTML} and @acronym{XHTML} output, respectively.
+This driver consists of two parts, a preprocessor
+(@command{pre-grohtml}) and a postprocessor (@command{post-grohtml}).
+@end table
+
+@cindex output device name string (@code{.T})
+@cindex output device usage register (@code{.T})
+The predefined GNU @code{troff} string @code{.T} contains the name of
+the output device; the read-only register @code{.T} is set to@tie{}1 if
+this option is used (which is always true if @command{groff} is used to
+call GNU @command{troff}). @xref{Built-in Registers}.
+
+The postprocessor to be used for a device is specified by the
+@code{postpro} command in the device description file. (@xref{Device
+and Font Description Files}.) This can be overridden with the
+@option{-X} option.
+
+@item -U
+@cindex mode, unsafe
+@cindex unsafe mode
+Operate in @dfn{unsafe mode}, which enables the @code{open},
+@code{opena}, @code{pi}, @code{pso}, and @code{sy} requests. These
+requests are disabled by default because they allow an untrusted input
+document to write to arbitrary file names and run arbitrary commands.
+This option also adds the current directory to the macro package search
+path; see the @option{-m} option above. @option{-U} is passed to
+@command{gpic} and @command{gtroff}.
+
+@item -v
+Write version information for @command{groff} and all programs run by it
+to the standard output stream; that is, the given command line is
+processed in the usual way, passing @option{-v} to the formatter and any
+pre- or postprocessors invoked.
+
+@item -V
+Output the pipeline that would be run by @command{groff}
+(as a wrapper program) to the standard output stream, but do not execute
+it. If given more than once, the pipeline is both written to the
+standard error stream and run.
+
+@item -w@var{category}
+Enable warnings in @var{category}. Categories are listed in
+@ref{Warnings}.
+
+@item -W@var{category}
+Inhibit warnings in @var{category}. Categories are listed in
+@ref{Warnings}.
+
+@item -X
+Use @command{gxditview} instead of the usual postprocessor to (pre)view
+a document on an X11 display. Combining this option with
+@option{-Tps} uses the font metrics of the PostScript device, whereas
+the @option{-TX75} and @option{-TX100} options use the metrics of X11
+fonts.
+
+@item -z
+Suppress formatted output from @command{gtroff}.
+
+@item -Z
+Disable postprocessing. @command{gtroff} output will appear on the
+standard output stream (unless suppressed with @option{-z}; see
+@ref{gtroff Output} for a description of this format.
+@end table
+
+
+@c =====================================================================
+
+@node Environment, Macro Directories, Groff Options, Invoking groff
+@section Environment
+@cindex environment variables
+@cindex variables in environment
+
+There are also several environment variables (of the operating system,
+not within @code{gtroff}) that can modify the behavior of @code{groff}.
+
+@table @code
+@item GROFF_BIN_PATH
+@tindex GROFF_BIN_PATH@r{, environment variable}
+This search path, followed by @code{PATH}, is used for commands executed
+by @code{groff}.
+
+@item GROFF_COMMAND_PREFIX
+@tindex GROFF_COMMAND_PREFIX@r{, environment variable}
+@cindex command prefix
+@cindex prefix, for commands
+If this is set to@tie{}@var{X}, then @command{groff} runs
+@command{@var{X}troff} instead of @command{gtroff}. This also applies
+to @command{tbl}, @command{pic}, @command{eqn}, @command{grn},
+@command{chem}, @command{refer}, and @command{soelim}. It does not
+apply to @command{grops}, @command{grodvi}, @command{grotty},
+@command{pre-grohtml}, @command{post-grohtml}, @command{preconv},
+@command{grolj4}, @command{gropdf}, and @command{gxditview}.
+
+The default command prefix is determined during the installation
+process. If a non-GNU @code{troff} system is found, prefix @samp{g} is
+used, none otherwise.
+
+@item GROFF_ENCODING
+@tindex GROFF_ENCODING@r{, environment variable}
+The value of this variable is passed to the @code{preconv}
+preprocessor's @option{-e} option to select the character encoding of
+input files. This variable's existence implies the @code{groff} option
+@option{-k}. If set but empty, @code{groff} calls @code{preconv}
+without an @option{-e} option. @code{groff}'s @option{-K} option
+overrides @env{GROFF_ENCODING}. See the @cite{preconv@r{(7)}} man page;
+type @samp{man preconv} at the command line to view it.
+
+@item GROFF_FONT_PATH
+@tindex GROFF_FONT_PATH@r{, environment variable}
+A list of directories in which to seek the selected output device's
+directory of device and font description files. GNU @code{troff}
+will search directories given as arguments to any specified @option{-F}
+options before these, and a built-in list of directories after them.
+@xref{Font Directories} and the @cite{troff@r{(1)}} or
+@cite{gtroff@r{(1)}} man pages.
+
+@item GROFF_TMAC_PATH
+@tindex GROFF_TMAC_PATH@r{, environment variable}
+A list of directories in which to seek macro files. GNU @code{troff}
+will search directories given as arguments to any specified @option{-M}
+options before these, and a built-in list of directories after them.
+@xref{Macro Directories} and the @cite{troff@r{(1)}} or
+@cite{gtroff@r{(1)}} man pages.
+
+@item GROFF_TMPDIR
+@tindex GROFF_TMPDIR@r{, environment variable}
+@tindex TMPDIR@r{, environment variable}
+The directory in which @code{groff} creates temporary files. If this is
+not set and @env{TMPDIR} is set, temporary files are created in that
+directory. Otherwise temporary files are created in a system-dependent
+default directory (on Unix and GNU/Linux systems, this is usually
+@file{/tmp}). @code{grops}, @code{grefer}, @code{pre-grohtml}, and
+@code{post-grohtml} can create temporary files in this directory.
+
+@item GROFF_TYPESETTER
+@tindex GROFF_TYPESETTER@r{, environment variable}
+Sets the default output device. If empty or not set, a build-time
+default (often @code{ps}) is used. The @option{-T@var{dev}} option
+overrides @env{GROFF_TYPESETTER}.
+
+@item SOURCE_DATE_EPOCH
+@tindex SOURCE_DATE_EPOCH@r{, environment variable}
+A timestamp (expressed as seconds since the Unix epoch) to use as the
+output creation timestamp in place of the current time. The time is
+converted to human-readable form using @cite{localtime@r{(3)}} when the
+formatter starts up and stored in registers usable by documents and
+macro packages (@pxref{Built-in Registers}).
+
+@item TZ
+@tindex TZ@r{, environment variable}
+The time zone to use when converting the current time (or value of
+@env{SOURCE_DATE_EPOCH}) to human-readable form; see
+@cite{tzset@r{(3)}}.
+@end table
+
+MS-DOS and MS-Windows ports of @code{groff} use semicolons, rather than
+colons, to separate the directories in the lists described above.
+
+
+@c =====================================================================
+
+@node Macro Directories, Font Directories, Environment, Invoking groff
+@section Macro Directories
+@cindex macro directories
+@cindex directories for macros
+@cindex searching macros
+@cindex macros, searching
+
+A macro file must have a name in the form @code{@var{name}.tmac} or
+@code{tmac.@var{name}} and be placed in a @dfn{tmac directory} to be
+found by the @option{-m@var{name}} command-line option.@footnote{The
+@code{mso} request does not have these limitations. @xref{I/O}.}
+@cindex tmac, directory
+@cindex directory, for tmac files
+@cindex tmac, path
+@cindex path, for tmac files
+@cindex locating macro files
+@cindex macro file search path
+@cindex file, macro, search path
+@cindex locating macro packages
+@cindex macro package search path
+@cindex package, macro, search path
+Together, these directories constitute the @dfn{tmac path}. Each
+directory is searched in the following order until the desired macro
+file is found or the list is exhausted.
+
+@itemize @bullet
+@item
+Directories specified with GNU @code{troff}'s or @code{groff}'s
+@option{-M} command-line option.
+
+@item
+@tindex GROFF_TMAC_PATH@r{, environment variable}
+Directories listed in the @env{GROFF_TMAC_PATH} environment variable.
+
+@item
+@cindex safer mode
+@cindex mode, safer
+@cindex unsafe mode
+@cindex mode, unsafe
+@cindex current directory
+@cindex directory, current
+The current working directory (only if in unsafe mode using the
+@option{-U} command-line option).
+
+@item
+@cindex home directory
+@cindex directory, home
+The user's home directory, @env{HOME}.
+
+@item
+@cindex site-local directory
+@cindex directory, site-local
+@cindex platform-specific directory
+@cindex directory, platform-specific
+A platform-dependent directory, a site-local (platform-independent)
+directory, and the main @slanted{tmac} directory. The locations
+corresponding to your installation are listed in section ``Environment''
+of @cite{gtroff@r{(1)}}. If not otherwise configured, they are as
+follows.
+
+@Example
+/usr/local/lib/groff/site-tmac
+/usr/local/share/groff/site-tmac
+/usr/local/share/groff/1.23.0/tmac
+@endExample
+
+@noindent
+The foregoing assumes that the version of @code{groff} is 1.23.0, and
+that the installation prefix was @file{/usr/local}. It is possible to
+fine-tune these locations during the source configuration process.
+@end itemize
+
+
+@c =====================================================================
+
+@node Font Directories, Paper Format, Macro Directories, Invoking groff
+@section Font Directories
+@cindex font directories
+@cindex directories for fonts
+@cindex searching fonts
+@cindex fonts, searching
+
+@code{groff} enforces few restrictions on how font description files are
+named. For its family/style mechanism to work (@pxref{Font Families}),
+the names of fonts within a family should start with the family name,
+followed by the style. For example, the Times family uses @samp{T} for
+the family name and @samp{R}, @samp{B}, @samp{I}, and @samp{BI} to
+indicate the styles `roman', `bold', `italic', and `bold italic',
+respectively. Thus the final font names are @samp{TR}, @samp{TB},
+@samp{TI}, and @samp{TBI}.
+
+@cindex font path
+@cindex path, for font files
+Font description files are kept in @dfn{font directories}, which
+together constitute the @dfn{font path}. The search procedure
+always appends the directory @code{dev}@var{name}, where @var{name} is
+the name of the output device. Assuming @TeX{} DVI output, and
+@file{/foo/bar} as a font directory, the font description files for
+@command{grodvi} must be in @file{/foo/bar/devdvi}.
+Each directory in the font path is searched in the following order until
+the desired font description file is found or the list is exhausted.
+
+@itemize @bullet
+@item
+Directories specified with GNU @code{troff}'s or @code{groff}'s
+@option{-f} command-line option. All output drivers (and some
+preprocessors) support this option as well, because they require
+information about the glyphs to be rendered in the document.
+
+@item
+@tindex GROFF_FONT_PATH@r{, environment variable}
+Directories listed in the @env{GROFF_FONT_PATH} environment variable.
+
+@item
+@cindex site-local directory
+@cindex directory, site-local
+A site-local directory and the main font description directory.
+The locations corresponding to your installation are listed in section
+``Environment'' of @cite{gtroff@r{(1)}}. If not otherwise configured,
+they are as follows.
+
+@Example
+/usr/local/share/groff/site-font
+/usr/local/share/groff/1.23.0/font
+@endExample
+
+@noindent
+The foregoing assumes that the version of @code{groff} is 1.23.0, and
+that the installation prefix was @file{/usr/local}. It is possible to
+fine-tune these locations during the source configuration process.
+@end itemize
+
+
+@c =====================================================================
+
+@node Paper Format, Invocation Examples, Font Directories, Invoking groff
+@section Paper Format
+@cindex paper format
+@cindex format, paper
+@cindex paper size
+@cindex size, paper
+@cindex landscape page orientation
+@cindex orientation, landscape
+@cindex page orientation, landscape
+
+In @code{groff}, the page dimensions for the formatter GNU @code{troff}
+and for output devices are handled separately. @xref{Page Layout}, for
+vertical manipulation of the page size, and @xref{Line Layout}, for
+horizontal changes.
+@pindex papersize.tmac
+@pindex troffrc
+The @file{papersize} macro package, normally loaded by @file{troffrc} at
+startup, provides an interface for configuring page dimensions by
+convenient names, like @samp{letter} or @samp{a4}; see
+@cite{groff_tmac@r{(5)}}. The default used by the formatter depends on
+its build configuration, but is usually one of the foregoing, as
+geographically appropriate.
+@c groff(1), being generated, says what the default is.
+
+It is up to each macro package to respect the page dimensions configured
+in this way.
+
+For each output device, the size of the output medium can be set in its
+@file{DESC} file. Most output drivers also recognize a command-line
+option @option{-p} to override the default dimensions and an option
+@option{-l} to use landscape orientation. @xref{DESC File Format}, for
+a description of the @code{papersize} keyword, which takes an argument
+of the same form as @option{-p}. The output driver's man page, such as
+@cite{grops@r{(1)}}, may also be helpful.
+
+@code{groff} uses the command-line option @option{-P} to pass options to
+postprocessors; for example, use the following for PostScript output on
+A4 paper in landscape orientation.
+
+@Example
+groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
+@endExample
+
+
+@c =====================================================================
+
+@c BEGIN Keep parallel with groff(1), section "Examples".
+@node Invocation Examples, , Paper Format, Invoking groff
+@section Invocation Examples
+@cindex invocation examples
+@cindex examples of invocation
+
+@code{roff} systems are best known for formatting man pages. Once a
+@command{man} librarian program has located a man page, it may execute
+a @code{groff} command much like the following.
+
+@Example
+groff -t -man -Tutf8 /usr/share/man/man1/groff.1
+@endExample
+
+The librarian will also pipe the output through a pager, which might not
+interpret the SGR terminal escape sequences @command{groff} emits for
+boldface, underlining, or italics; see the @cite{grotty@r{(1)}} man page
+for a discussion.
+
+To process a @code{roff} input file using the preprocessors
+@command{gtbl} and @command{gpic} and the @file{me} macro package in the
+way to which AT&T @code{troff} users were accustomed, one would type (or
+script) a pipeline.
+
+@Example
+gpic foo.me | gtbl | gtroff -me -Tutf8 | grotty
+@endExample
+
+Using @command{groff}, this pipe can be shortened to an equivalent
+command.
+
+@Example
+groff -p -t -me -T utf8 foo.me
+@endExample
+
+An even easier way to do this is to use @command{grog} to guess the
+preprocessor and macro options and execute the result by using the
+command substitution feature of the shell.
+
+@Example
+$(grog -Tutf8 foo.me)
+@endExample
+
+Each command-line option to a postprocessor must be specified with any
+required leading dashes @samp{-}
+@c No GNU roff postprocessor uses long options for anything except
+@c --help or --version.
+@c or @samp{--}
+@c XXX: grolbp does.
+because @command{groff} passes the arguments as-is to the postprocessor;
+this permits arbitrary arguments to be transmitted. For example, to
+pass a title to the @command{gxditview} postprocessor,
+the shell commands
+
+@Example
+groff -X -P -title -P 'trial run' mydoc.t
+@endExample
+
+@noindent
+and
+
+@Example
+groff -X -Z mydoc.t | gxditview -title 'trial run' -
+@endExample
+
+@noindent
+are equivalent.
+@c END Keep parallel with groff(1), section "Examples".
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node Tutorial for Macro Users, Major Macro Packages, Invoking groff, Top
+@chapter Tutorial for Macro Users
+@cindex tutorial for macro users
+@cindex macros, tutorial for users
+@cindex user's tutorial for macros
+@cindex user's macro tutorial
+
+Most users of the @code{roff} language employ a macro package to format
+their documents. Successful macro packages ease the composition
+process; their users need not have mastered the full formatting
+language, nor understand features like diversions, traps, and
+environments. This chapter aims to familiarize you with basic concepts
+and mechanisms common to many macro packages (like ``displays''). If
+you prefer a meticulous and comprehensive presentation, try @ref{GNU
+troff Reference} instead.
+
+@menu
+* Basics::
+* Common Features::
+@end menu
+
+
+@c =====================================================================
+
+@node Basics, Common Features, Tutorial for Macro Users, Tutorial for Macro Users
+@section Basics
+@cindex basics of macro package usage
+@cindex macro package usage, basics of
+
+Let us first survey some basic concepts necessary to use a macro package
+fruitfully.@footnote{The remainder of this chapter is based on
+@cite{Writing Papers with nroff using -me} by Eric@tie{}P.@: Allman,
+which is distributed with @code{groff} as @file{meintro.me}.}
+References are made throughout to more detailed information.
+
+GNU @code{troff} reads an input file prepared by the user and outputs a
+formatted document suitable for publication or framing. The input
+consists of text, or words to be printed, and embedded commands
+(@slanted{requests} and @slanted{escape sequences}), which tell GNU
+@code{troff} how to format the output. @xref{Formatter Instructions}.
+
+The word @slanted{argument} is used in this chapter to mean a word or
+number that appears on the same line as a request, and which modifies
+the meaning of that request. For example, the request
+
+@Example
+.sp
+@endExample
+
+@noindent
+spaces one line, but
+
+@Example
+.sp 4
+@endExample
+
+@noindent
+spaces four lines. The number@tie{}4 is an argument to the @code{sp}
+request, which says to space four lines instead of one. Arguments are
+separated from the request and from each other by spaces (@emph{not}
+tabs). @xref{Invoking Requests}.
+
+The primary function of GNU @code{troff} is to collect words from input
+lines, fill output lines with those words, adjust the line to the
+right-hand margin by widening spaces, and output the result. For
+example, the input:
+
+@Example
+Now is the time
+for all good men
+to come to the aid
+of their party.
+Four score and seven
+years ago, etc.
+@endExample
+
+@noindent
+is read, packed onto output lines, and justified to produce:
+
+@Example
+ @result{} Now is the time for all good men to come to the aid of
+ @result{} their party. Four score and seven years ago, etc.
+@endExample
+
+Sometimes a new output line should be started even though the current
+line is not yet full---for example, at the end of a paragraph. To do
+this it is possible to force a @slanted{break}, starting a new output
+line. Some requests cause a break automatically, as do (normally) blank
+input lines and input lines beginning with a space or tab.
+
+Not all input lines are @slanted{text lines}---words to be formatted.
+Some are @slanted{control lines} that tell a macro package (or GNU
+@code{troff} directly) how to format the text. Control lines start with
+a dot (@samp{.}) or an apostrophe (@samp{'}) as the first character, and
+can be followed by a @slanted{macro call}.
+
+The formatter also does more complex things, such as automatically
+numbering pages, skipping over page boundaries, putting footnotes in the
+correct place, and so forth.
+
+Here are a few hints for preparing text for input to GNU @code{troff}.
+
+@itemize @bullet
+@item
+First, keep the input lines short. Short input lines are easier to
+edit, and GNU @code{troff} packs words onto longer lines anyhow.
+
+@item
+In keeping with this, it is helpful to begin a new line after every
+comma or phrase, since common corrections are to add or delete sentences
+or phrases.
+
+@item
+End each sentence with two spaces---or better, start each sentence on a
+new line. GNU @code{troff} recognizes characters that usually end a
+sentence, and inserts inter-sentence space accordingly.
+
+@item
+Do not hyphenate words at the end of lines---GNU @code{troff} is smart
+enough to hyphenate words as needed, but is not smart enough to take
+hyphens out and join a word back together. Also, words such as
+``mother-in-law'' should not be broken over a line, since then a space
+can occur where not wanted, such as ``@w{mother- in}-law''.
+@end itemize
+
+We offer further advice in @ref{Input Conventions}.
+
+@cindex vertical spacing (introduction)
+@cindex spacing, vertical (introduction)
+GNU @code{troff} permits alteration of the distance between lines of
+text. This is termed @slanted{vertical spacing} and is expressed in the
+same units as the type size---the point. The default is 10-point type
+on 12-point spacing. To get @slanted{double-spaced} text you would set
+the vertical spacing to 24 points. Some, but not all, macro packages
+expose a macro or register to configure the vertical spacing.
+
+A number of requests allow you to change the way the output is arranged
+on the page, sometimes called the @slanted{layout} of the output page.
+Most macro packages don't supply macros for performing these (at least
+not without performing other actions besides), as they are such basic
+operations. The macro packages for writing man pages, @file{man} and
+@file{mdoc}, don't encourage explicit use of these requests at all.
+
+@cindex spacing (introduction)
+The request @w{@samp{.sp @var{N}}} leaves @var{N}@tie{}lines of blank
+space. @var{N}@tie{}can be omitted (skipping a single line) or can
+be of the form @var{N}i (for @var{N}@tie{}inches) or @var{N}c (for
+@var{N}@tie{}centimeters). For example, the input:
+
+@Example
+.sp 1.5i
+My thoughts on the subject
+.sp
+@endExample
+
+@noindent
+leaves one and a half inches of space, followed by the line ``My
+thoughts on the subject'', followed by a single blank line (more
+measurement units are available; see @ref{Measurements}).
+
+If you seek precision in spacing, be advised when using a macro package
+that it might not honor @code{sp} requests as you expect; it can use a
+formatter feature called @slanted{no-space mode} to prevent excess space
+from accumulating. Macro packages typically offer registers to control
+spacing between paragraphs, before section headings, and around displays
+(discussed below); use these facilities preferentially.
+@xref{Manipulating Spacing}.
+
+@cindex centering lines (introduction)
+@cindex lines, centering (introduction)
+Text lines can be centered by using the @code{ce} request. The line
+after @code{ce} is centered (horizontally) on the page. To center more
+than one line, use @w{@samp{.ce @var{N}}} (where @var{N} is the number
+of lines to center), followed by the @var{N}@tie{}lines. To center many
+lines without counting them, type:
+
+@Example
+.ce 1000
+lines to center
+.ce 0
+@endExample
+
+@noindent
+The @w{@samp{.ce 0}} request tells GNU @code{troff} to center zero more
+lines, in other words, stop centering.
+
+@cindex right-aligning lines (introduction)
+@cindex lines, right-aligning (introduction)
+@cindex right-justifying lines (introduction)
+@cindex lines, right-justifying (introduction)
+GNU @code{troff} also offers the @code{rj} request for right-aligning
+text. It works analogously to @code{ce} and is convenient for setting
+epigraphs.
+
+@cindex page break (introduction)
+@cindex break, page (introduction)
+The @code{bp} request starts a new page; this necessarily implies an
+ordinary (line) break.
+
+@cindex break (introduction)
+@cindex line break (introduction)
+All of these requests cause a break; that is, they always start a new
+line. To start a new line without performing any other action, use
+@code{br}. If you invoke them with the apostrophe @samp{'}, the
+@slanted{no-break control character}, the (initial) break they normally
+perform is suppressed. @samp{'br} does nothing.
+
+
+@c =====================================================================
+
+@node Common Features, , Basics, Tutorial for Macro Users
+@section Common Features
+@cindex common features
+@cindex features, common
+
+GNU @code{troff} provides low-level operations for formatting a
+document. Many routine operations are undertaken in nearly all
+documents that require a series of such primitive operations to be
+performed. These common tasks are grouped into @slanted{macros}, which
+are then collected into a @slanted{macro package}.
+
+Macro packages come in two varieties:@: ``major'' or ``full-service''
+ones that manage page layout, and ``minor'' or ``auxiliary'' ones that
+do not, instead fulfilling narrow, specific tasks. Find a list in the
+@cite{groff_tmac@r{(5)}} man page. Type @samp{man groff_tmac} at the
+command line to view it.
+
+We survey several capabilities of full-service macro package below.
+Each package employs its own macros to exercise them. For details,
+consult its man page or, for @file{ms}, see @ref{ms}.
+
+@menu
+* Paragraphs::
+* Sections and Chapters::
+* Headers and Footers::
+* Page Layout Adjustment::
+* Displays and Keeps::
+* Footnotes and Endnotes::
+* Table of Contents::
+* Indexing::
+* Document Formats::
+* Columnation::
+* Font and Size Changes::
+* Predefined Text::
+* Preprocessor Support::
+* Configuration and Customization::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Paragraphs, Sections and Chapters, Common Features, Common Features
+@subsection Paragraphs
+@cindex paragraphs
+
+Paragraphs can be separated and indented in various ways. Some start
+with a blank line and have a first-line indentation, like most of the
+ones in this manual. Block paragraphs omit the indentation.
+
+@Example
+ @result{} Some men look at constitutions with sanctimonious
+ @result{} reverence, and deem them like the ark of the
+ @result{} covenant, too sacred to be touched.
+@endExample
+
+@cindex tags, paragraph
+@cindex tagged paragraphs
+@cindex lists
+@noindent
+We also frequently encounter @slanted{tagged} paragraphs, which begin
+with a tag or label at the left margin and indent the remaining text.
+
+@Example
+ @result{} one This is the first paragraph. Notice how the
+ @result{} first line of the resulting paragraph lines
+ @result{} up with the other lines in the paragraph.
+@endExample
+
+@noindent
+If the tag is too wide for the indentation, the line is broken.
+
+@Example
+ @result{} longlabel
+ @result{} The label does not align with the subsequent
+ @result{} lines, but they align with each other.
+@endExample
+
+@noindent
+A variation of the tagged paragraph is the itemized or enumerated
+paragraph, which might use punctuation or a digit for a tag,
+respectively. These are frequently used to construct lists.
+
+@Example
+ @result{} o This list item starts with a bullet. When
+ @result{} producing output for a device using the ASCII
+ @result{} character set, an 'o' is formatted instead.
+@endExample
+
+@noindent
+Often, use of the same macro without a tag continues such a discussion.
+
+@Example
+ @result{} -xyz This option is recognized but ignored.
+ @result{}
+ @result{} It had a security hole that we don't discuss.
+@endExample
+
+@c ---------------------------------------------------------------------
+
+@node Sections and Chapters, Headers and Footers, Paragraphs, Common Features
+@subsection Sections and Chapters
+
+The simplest kind of section heading is unnumbered, set in a bold or
+italic style, and occupies a line by itself. Others possess
+automatically numbered multi-level headings and/or different typeface
+styles or sizes at different levels. More sophisticated macro packages
+supply macros for designating chapters and appendices.
+
+@c ---------------------------------------------------------------------
+
+@node Headers and Footers, Page Layout Adjustment, Sections and Chapters, Common Features
+@subsection Headers and Footers
+
+@slanted{Headers} and @slanted{footers} occupy the top and bottom of
+each page, respectively, and contain data like the page number and the
+article or chapter title. Their appearance is not affected by the
+running text. Some packages allow for different titles on even- and
+odd-numbered pages (for printed, bound material).
+
+Headers and footers are together called @slanted{titles}, and comprise
+three parts:@: left-aligned, centered, and right-aligned. A @samp{%}
+character appearing anywhere in a title is automatically replaced by the
+page number. @xref{Page Layout}.
+
+@c ---------------------------------------------------------------------
+
+@node Page Layout Adjustment, Displays and Keeps, Headers and Footers, Common Features
+@subsection Page Layout
+
+Most macro packages let the user specify the size of the page margins.
+The top and bottom margins are typically handled differently than the
+left and right margins; the latter two are derived from the
+@slanted{page offset}, @slanted{indentation}, and @slanted{line length}.
+@xref{Line Layout}. Commonly, packages support registers to tune these
+values.
+
+@c ---------------------------------------------------------------------
+
+@node Displays and Keeps, Footnotes and Endnotes, Page Layout Adjustment, Common Features
+@subsection Displays and Keeps
+@cindex displays
+
+@slanted{Displays} are sections of text set off from the surrounding
+material (typically paragraphs), often differing in indentation, and/or
+spacing. Tables, block quotations, and figures are displayed.
+Equations and code examples, when not much shorter than an output line,
+often are. Lists may or may not be. Packages for setting man pages
+support example displays but not keeps.
+@c XXX: man, mdoc keep support planned
+
+@cindex keeps (introduction)
+A @slanted{keep} is a group of output lines, often a display, that is
+formatted on a single page if possible; it causes a page break to happen
+early so as to not interrupt the kept material.
+
+@cindex keep, floating
+@cindex floating keep
+@slanted{Floating keeps} can move, or ``float'', relative to the text
+around them in the input. They are useful for displays that are
+captioned and referred to by name, as with ``See figure@tie{}3''.
+Depending on the package, a floating keep appears at the bottom of the
+current page if it fits, and at the top of the next otherwise.
+Alternatively, floating keeps might be deferred to the end of a section.
+Using a floating keep can avoid the large vertical spaces that may
+precede a tall keep of the ordinary sort when it won't fit on the page.
+
+@c ---------------------------------------------------------------------
+
+@node Footnotes and Endnotes, Table of Contents, Displays and Keeps, Common Features
+@subsection Footnotes and Endnotes
+@cindex footnotes
+@cindex endnotes
+
+@slanted{Footnotes} and @slanted{endnotes} are forms of delayed
+formatting. They are recorded at their points of relevance in
+the input, but not formatted there. Instead, a @slanted{mark} cues the
+reader to check the ``foot'', or bottom, of the current page, or in the
+case of endnotes, an annotation list later in the document. Macro
+packages that support these features also supply a means of
+automatically numbering either type of annotation.
+
+@c ---------------------------------------------------------------------
+
+@node Table of Contents, Indexing, Footnotes and Endnotes, Common Features
+@subsection Table of Contents
+@cindex table of contents
+@cindex contents, table of
+
+A package may handle a @slanted{table of contents} by directing section
+heading macros to save section heading text and the page number where it
+occurs for use in a later @slanted{entry} for a table of contents. It
+writes the collected entries at the end of the document, once all are
+known, upon request. A row of dots (a @slanted{leader}) bridges the
+text on the left with its location on the right. Other collections
+might work in this manner, providing lists of figures or tables.
+
+A table of contents is often found at the end of a GNU @code{troff}
+document because the formatter processes the document in a single pass.
+The @command{gropdf} output driver supports a PDF feature that relocates
+pages at the time the document is rendered; see the @cite{gropdf@r{(1)}}
+man page. Type @samp{man gropdf} at the command line to view it.
+
+@c ---------------------------------------------------------------------
+
+@node Indexing, Document Formats, Table of Contents, Common Features
+@subsection Indexing
+@cindex index, in macro package
+
+@pindex makeindex
+An index is similar to a table of contents, in that entry labels and
+locations must be collected, but poses a greater challenge because it
+needs to be sorted before it is output. Here, processing the document
+in multiple passes is inescapable, and tools like the @code{makeindex}
+program are necessary.
+
+@c ---------------------------------------------------------------------
+
+@node Document Formats, Columnation, Indexing, Common Features
+@subsection Document Formats
+@cindex document formats
+
+Some macro packages supply stock configurations of certain documents,
+like business letters and memoranda. These often also have provision
+for a @slanted{cover sheet}, which may be rigid in its format. With
+these features, it is even more important to use the package's macros in
+preference to the formatter requests presented earlier, where possible.
+
+@c ---------------------------------------------------------------------
+
+@node Columnation, Font and Size Changes, Document Formats, Common Features
+@subsection Columnation
+
+Macro packages apart from @file{man} and @file{mdoc} for man page
+formatting offer a facility for setting multiple columns on the page.
+
+@c ---------------------------------------------------------------------
+
+@node Font and Size Changes, Predefined Text, Columnation, Common Features
+@subsection Font and Size Changes
+
+The formatter's requests and escape sequences for setting the typeface
+and size are not always intuitive, so all macro packages provide macros
+to make these operations simpler. They also make it more convenient to
+change typefaces in the middle of a word and can handle italic
+corrections automatically. @xref{Italic Corrections}.
+
+@c ---------------------------------------------------------------------
+
+@node Predefined Text, Preprocessor Support, Font and Size Changes, Common Features
+@subsection Predefined Text
+
+Most macro packages supply predefined strings to set prepared text like
+the date, or to perform operations like super- and subscripting.
+
+@c ---------------------------------------------------------------------
+
+@node Preprocessor Support, Configuration and Customization, Predefined Text, Common Features
+@subsection Preprocessor Support
+
+All macro packages provide support for various preprocessors and may
+extend their functionality by defining macros to set their contents in
+displays. Examples include @code{TS} and @code{TE} for @command{gtbl},
+@code{EQ} and @code{EN} for @command{geqn}, and @code{PS} and @code{PE}
+for @command{gpic}.
+
+@c ---------------------------------------------------------------------
+
+@node Configuration and Customization, , Preprocessor Support, Common Features
+@subsection Configuration and Customization
+
+Packages provide means of customizing many of the details of how the
+package behaves. These range from setting the default type size to
+changing the appearance of section headers.
+
+@codequotebacktick off
+@codequoteundirected off
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node Major Macro Packages, GNU troff Reference, Tutorial for Macro Users, Top
+@chapter Macro Packages
+@cindex major macro package
+@cindex package, macro, major
+@cindex macro package, major
+
+This chapter surveys the ``major'' macro packages that come with
+@code{groff}. One, @file{ms}, is presented in detail.
+
+@cindex full-service macro package
+@cindex package, macro, full-service
+@cindex macro package, full-service
+Major macro packages are also sometimes described as @dfn{full-service}
+due to the breadth of features they provide and because more than one
+cannot be used by the same document; for example
+
+@Example
+groff -m man foo.man -m ms bar.doc
+@endExample
+
+@noindent
+doesn't work. Option arguments are processed before non-option
+arguments; the above (failing) sample is thus reordered to
+
+@Example
+groff -m man -m ms foo.man bar.doc
+@endExample
+
+@cindex minor macro package
+@cindex package, macro, minor
+@cindex macro package, minor
+@cindex auxiliary macro package
+@cindex package, macro, auxiliary
+@cindex macro package, auxiliary
+Many auxiliary, or ``minor'', macro packages are also available. They
+may in general be used with any full-service macro package and handle a
+variety of tasks from character encoding selection, to language
+localization, to inlining of raster images. See the
+@cite{groff_tmac@r{(5)}} man page for a list. Type @samp{man
+groff_tmac} at the command line to view it.
+
+@menu
+* man::
+* mdoc::
+* me::
+* mm::
+* mom::
+* ms::
+@end menu
+
+
+@c =====================================================================
+
+@node man, mdoc, Major Macro Packages, Major Macro Packages
+@section @file{man}
+@cindex manual pages
+@cindex man pages
+@pindex an.tmac
+@pindex man.tmac
+
+The @code{man} macro package is the most widely used and probably the
+most important ever developed for @code{troff}. It is easy to use, and
+a vast majority of manual pages (``man pages'') are written in it.
+
+@code{groff}'s implementation is documented in the
+@cite{groff_man@r{(7)}} man page. Type @samp{man groff_man} at the
+command line to view it.
+
+@menu
+* Optional man extensions::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Optional man extensions, , , man
+@subsection Optional @file{man} extensions
+
+@pindex man.local
+Use the file @file{man.local} for local extensions to the @code{man}
+macros or for style changes.
+
+@unnumberedsubsubsec Custom headers and footers
+@cindex @code{man} macros, custom headers and footers
+
+In @code{groff} versions 1.18.2 and later, you can specify custom
+headers and footers by redefining the following macros in
+@file{man.local}.
+
+@Defmac {PT, , man}
+Control the content of the headers. Normally, the header prints the
+command name and section number on either side, and the optional fifth
+argument to @code{TH} in the center.
+@endDefmac
+
+@Defmac {BT, , man}
+Control the content of the footers. Normally, the footer prints the
+page number and the third and fourth arguments to @code{TH}.
+
+Use the @code{FT} register to specify the footer position. The default
+is @minus{}0.5@dmn{i}.
+@endDefmac
+
+@unnumberedsubsubsec Ultrix-specific man macros
+@cindex Ultrix-specific @code{man} macros
+@cindex @code{man} macros, Ultrix-specific
+
+@pindex man.ultrix
+The @code{groff} source distribution includes a file named
+@file{man.ultrix}, containing macros compatible with the Ultrix variant
+of @code{man}. Copy this file into @file{man.local} (or use the
+@code{mso} request to load it) to enable the following macros.
+
+@Defmac {CT, @Var{key}, man}
+Print @samp{<CTRL/@var{key}>}.
+@endDefmac
+
+@Defmac {CW, , man}
+Print subsequent text using a ``constant-width'' (monospaced) typeface
+(Courier roman).
+@endDefmac
+
+@Defmac {Ds, , man}
+Begin a non-filled display.
+@endDefmac
+
+@Defmac {De, , man}
+End a non-filled display started with @code{Ds}.
+@endDefmac
+
+@Defmac {EX, [@Var{indent}], man}
+Begin a non-filled display using a monospaced typeface (Courier roman).
+Use the optional @var{indent} argument to indent the display.
+@endDefmac
+
+@Defmac {EE, , man}
+End a non-filled display started with @code{EX}.
+@endDefmac
+
+@Defmac {G, [@Var{text}], man}
+Set @var{text} in Helvetica. If no text is present on the line where
+the macro is called, then the text of the next line appears in
+Helvetica.
+@endDefmac
+
+@Defmac {GL, [@Var{text}], man}
+Set @var{text} in Helvetica oblique. If no text is present on the line
+where the macro is called, then the text of the next line appears in
+Helvetica Oblique.
+@endDefmac
+
+@Defmac {HB, [@Var{text}], man}
+Set @var{text} in Helvetica bold. If no text is present on the line
+where the macro is called, then all text up to the next @code{HB}
+appears in Helvetica bold.
+@endDefmac
+
+@Defmac {TB, [@Var{text}], man}
+Identical to @code{HB}.
+@endDefmac
+
+@Defmac {MS, @Var{title} @Var{sect} [@Var{punct}], man}
+Set a man page reference in Ultrix format. The @var{title} is in
+Courier instead of italic. Optional punctuation follows the section
+number without an intervening space.
+@endDefmac
+
+@Defmac {NT, [@code{C}] [@Var{title}], man}
+Begin a note. Print the optional @Var{title}, or the word ``Note'',
+centered on the page. Text following the macro makes up the body of the
+note, and is indented on both sides. If the first argument is @code{C},
+the body of the note is printed centered (the second argument replaces
+the word ``Note'' if specified).
+@endDefmac
+
+@Defmac {NE, , man}
+End a note begun with @code{NT}.
+@endDefmac
+
+@Defmac {PN, @Var{path} [@Var{punct}], man}
+Set the path name in a monospaced typeface (Courier roman), followed by
+optional punctuation.
+@endDefmac
+
+@Defmac {Pn, [@Var{punct}] @Var{path} [@Var{punct}], man}
+If called with two arguments, identical to @code{PN}. If called with
+three arguments, set the second argument in a monospaced typeface
+(Courier roman), bracketed by the first and third arguments in the
+current font.
+@endDefmac
+
+@Defmac {R, , man}
+Switch to roman font and turn off any underlining in effect.
+@endDefmac
+
+@Defmac {RN, , man}
+Print the string @samp{<RETURN>}.
+@endDefmac
+
+@Defmac {VS, [@code{4}], man}
+Start printing a change bar in the margin if the number@tie{}@code{4} is
+specified. Otherwise, this macro does nothing.
+@endDefmac
+
+@Defmac {VE, , man}
+End printing the change bar begun by @code{VS}.
+@endDefmac
+
+@unnumberedsubsubsec Simple example
+
+The following example @file{man.local} file alters the @code{SH} macro
+to add some extra vertical space before printing the heading. Headings
+are printed in Helvetica bold.
+
+@Example
+.\" Make the heading fonts Helvetica
+.ds HF HB
+.
+.\" Put more space in front of headings.
+.rn SH SH-orig
+.de SH
+. if t .sp (u;\\n[PD]*2)
+. SH-orig \\$*
+..
+@endExample
+
+
+@c =====================================================================
+
+@node mdoc, me, man, Major Macro Packages
+@section @file{mdoc}
+@cindex @code{mdoc} macros
+
+@code{groff}'s implementation of the BSD @file{doc} package for man
+pages is documented in the @cite{groff_mdoc@r{(7)}} man page. Type
+@samp{man groff_mdoc} at the command line to view it.
+
+
+@c =====================================================================
+
+@node me, mm, mdoc, Major Macro Packages
+@section @file{me}
+@cindex @code{me} macro package
+
+@code{groff}'s implementation of the BSD @file{me} macro package is
+documented using itself. A tutorial, @file{meintro.me}, and reference,
+@file{meref.me}, are available in @code{groff}'s documentation
+directory. A @cite{groff_me@r{(7)}} man page is also available and
+identifies the installation path for these documents. Type @samp{man
+groff_me} at the command line to view it.
+
+A French translation of the tutorial is available as
+@file{meintro_fr.me} and installed parallel to the English version.
+
+
+@c =====================================================================
+
+@node mm, mom, me, Major Macro Packages
+@section @file{mm}
+@cindex @code{mm} macro package
+
+@code{groff}'s implementation of the @acronym{AT&T} memorandum macro
+package is documented in the @cite{groff_mm@r{(7)}} man page. Type
+@samp{man groff_mm} at the command line) to view it.
+
+A Swedish localization of @file{mm} is also available; see
+@cite{groff_mmse@r{(7)}}.
+
+
+@c =====================================================================
+
+@node mom, ms, mm, Major Macro Packages
+@section @file{mom}
+@cindex @code{mom} macro package
+
+The main documentation files for the @file{mom} macros are in
+@acronym{HTML} format. Additional, useful documentation is in
+@acronym{PDF} format. See the @cite{groff@r{(1)}} man page, section
+``Installation Directories'', for their location.
+
+@itemize @bullet
+@item
+@file{toc.html}
+@noindent
+Entry point to the full mom manual.
+
+@item
+@file{macrolist.html}
+@noindent
+Hyperlinked index of macros with brief descriptions, arranged by
+category.
+
+@item
+@file{mom-pdf.pdf}
+@noindent
+@acronym{PDF} features and usage.
+@end itemize
+
+The mom macros are in active development between @code{groff} releases.
+The most recent version, along with up-to-date documentation, is
+available at @uref{http://www.schaffter.ca/mom/mom-05.html}.
+
+The @cite{groff_mom@r{(7)}} man page (type @samp{man groff_mom} at
+the command line) contains a partial list of available macros, however
+their usage is best understood by consulting the @acronym{HTML}
+documentation.
+
+
+@c =====================================================================
+
+@codequotebacktick on
+@codequoteundirected on
+
+@node ms, , mom, Major Macro Packages
+@section @file{ms}
+@cindex @file{ms} macros
+
+The @file{ms} (``manuscript'') package is suitable for the preparation
+of letters, memoranda, reports, and books. These @code{groff}
+macros feature cover page and table of contents generation,
+automatically numbered headings, several paragraph styles, a variety of
+text styling options, footnotes, and multi-column page layouts.
+@file{ms} supports the @command{tbl}, @command{eqn}, @command{pic}, and
+@command{refer} preprocessors for inclusion of tables, mathematical
+equations, diagrams, and standardized bibliographic citations. This
+implementation is mostly compatible with the documented interface and
+behavior of AT&T Unix Version@tie{}7 @file{ms}. Many extensions from
+4.2BSD (Berkeley)
+@c Few changes were made in 4.3, Tahoe, Reno, or 4.4.
+and Tenth Edition Research Unix have been recreated.
+
+@menu
+* ms Introduction::
+* ms Document Structure::
+* ms Document Control Settings::
+* ms Document Description Macros::
+* ms Body Text::
+* ms Page Layout::
+* Differences from AT&T ms::
+* ms Legacy Features::
+* ms Naming Conventions::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node ms Introduction, ms Document Structure, ms, ms
+@subsection Introduction
+
+The @file{ms} macros are the oldest surviving package for @code{roff}
+systems.@footnote{While manual @emph{pages} are older, early ones used
+macros supplanted by the @file{man} package of Seventh Edition Unix
+(1979). @file{ms} shipped with Sixth Edition (1975) and was documented
+by Mike Lesk in a Bell Labs internal memorandum.} While the @file{man}
+package was designed for brief reference documents, the @file{ms} macros
+are also suitable for longer works intended for printing and possible
+publication.
+
+@menu
+* ms basic information::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node ms basic information, ms Document Structure, ms Introduction, ms Introduction
+@subsubsection Basic information
+
+@file{ms} documents are plain text files; prepare them with your
+preferred text editor. If you're in a hurry to start, know that
+@file{ms} needs one of its macros called at the beginning of a document
+so that it can initialize. A @dfn{macro} is a formatting instruction to
+@file{ms}. Put a macro call on a line by itself. Use @samp{.PP} if you
+want your paragraph's first line to be indented, or @samp{.LP} if you
+don't.
+
+After that, start typing normally. It is a good practice to start each
+sentence on a new line, or to put two spaces after sentence-ending
+punctuation, so that the formatter knows where the sentence boundaries
+are. You can separate paragraphs with further paragraphing macros, or
+with blank lines, and you can indent with tabs. When you need one of
+the features mentioned earlier (@pxref{ms}), return to this part of the
+manual.
+
+Format the document with the @command{groff} command. @command{nroff}
+can be useful for previewing.
+
+@CartoucheExample
+$ editor radical.ms
+$ nroff -ww -z -ms radical.ms # check for errors
+$ nroff -ms radical.ms | less -R
+$ groff -T ps -ms radical.ms > radical.ps
+$ see radical.ps
+@endCartoucheExample
+
+Our @file{radical.ms} document might look like this.
+
+@CartoucheExample
+.LP
+Radical novelties are so disturbing that they tend to be
+suppressed or ignored, to the extent that even the
+possibility of their existence in general is more often
+denied than admitted.
+
+@arrow{}That's what Dijkstra said, anyway.
+@endCartoucheExample
+
+@file{ms} exposes many aspects of document layout to user control via
+@code{groff}'s @dfn{registers} and @dfn{strings}, which store numbers
+and text, respectively. Measurements in @code{groff} are expressed with
+a suffix called a @dfn{scaling unit}.
+
+@table @code
+@item i
+inches
+
+@item c
+centimeters
+
+@item p
+points (1/72 inch)
+
+@item P
+picas (1/6 inch)
+
+@item v
+vees; current vertical spacing
+
+@item m
+ems; width of an ``M'' in the current font
+
+@item n
+ens; one-half em
+@end table
+
+Set registers with the @code{nr} request and strings with the @code{ds}
+request. @dfn{Requests} are like macro calls; they go on lines by
+themselves and start with the @dfn{control character}, a dot (@code{.}).
+The difference is that they directly instruct the formatter program,
+rather than the macro package. We'll discuss a few as applicable. It
+is wise to specify a scaling unit when setting any register that
+represents a length, size, or distance.
+
+@CartoucheExample
+.nr PS 10.5p \" Use 10.5-point type.
+.ds FAM P \" Use Palatino font family.
+@endCartoucheExample
+
+@noindent
+In the foregoing, we see that @code{\"} begins a comment. This is an
+example of an @dfn{escape sequence}, the other kind of formatting
+instruction. Escape sequences can appear anywhere. They begin with the
+escape character (@code{\}) and are followed by at least one more
+character. @file{ms} documents
+@c like this one
+tend to use only a few of @code{groff}'s many requests and escape
+sequences; see @ref{Request Index} and @ref{Escape Sequence Index} or
+the @cite{groff@r{(7)}} man page for complete lists.
+
+@table @code
+@item \"
+Begin comment; ignore remainder of line.
+
+@item \n[@var{reg}]
+Interpolate value of register @var{reg}.
+
+@item \*[@var{str}]
+Interpolate contents of string @var{str}.
+
+@item \*@var{s}
+abbreviation of @code{\*[@var{s}]}; the name @var{s} must be only one
+character
+
+@item \[@var{char}]
+Interpolate glyph of special character named @var{char}.
+
+@item \&
+dummy character
+
+@item \~
+Insert an unbreakable space that is adjustable like a normal space.
+
+@item \|
+Move horizontally by one-sixth em (``thin space'').
+@end table
+
+Prefix any words that start with a dot @samp{.} or neutral apostrophe
+@samp{'} with @code{\&} if they are at the beginning of an input line
+(or might become that way in editing) to prevent them from being
+interpreted as macro calls or requests. Suffix @samp{.}, @samp{?}, and
+@samp{!} with @code{\&} when needed to cancel end-of-sentence detection.
+
+@CartoucheExample
+My exposure was \&.5 to \&.6 Sv of neutrons, said Dr.\&
+Wallace after the criticality incident.
+@endCartoucheExample
+
+@c ---------------------------------------------------------------------
+
+@node ms Document Structure, ms Document Control Settings, ms Introduction, ms
+@subsection Document Structure
+@cindex @file{ms} macros, general structure
+
+The @file{ms} macro package expects a certain amount of structure:
+a well-formed document contains at least one paragraphing or heading
+macro call. Longer documents have a structure as follows.
+
+@table @strong
+@item Document type
+Calling the @code{RP} macro at the beginning of your document puts the
+document description (see below) on a cover page. Otherwise, @file{ms}
+places the information (if any) on the first page, followed immediately
+by the body text. Some document types found in other @file{ms}
+implementations are specific to @acronym{AT&T} or Berkeley, and are not
+supported by @code{groff} @file{ms}.
+
+@item Format and layout
+By setting registers and strings, you can configure your document's
+typeface, margins, spacing, headers and footers, and footnote
+arrangement. @xref{ms Document Control Settings}.
+
+@item Document description
+A document description consists of any of: a title, one or more authors'
+names and affiliated institutions, an abstract, and a date or other
+identifier. @xref{ms Document Description Macros}.
+
+@item Body text
+The main matter of your document follows its description (if any).
+@file{ms} supports highly structured text consisting of paragraphs
+interspersed with multi-level headings (chapters, sections, subsections,
+and so forth) and augmented by lists, footnotes, tables, diagrams, and
+similar material. @xref{ms Body Text}.
+
+@item Tables of contents
+Macros enable the collection of entries for a table of contents (or
+index) as the material they discuss appears in the document. You then
+call a macro to emit the table of contents at the end of your document.
+The table of contents must necessarily follow the rest of the text since
+GNU @code{troff} is a single-pass formatter; it thus cannot determine
+the page number of a division of the text until it has been set and
+output. Since @file{ms} was designed for the production of hard copy,
+the traditional procedure was to manually relocate the pages containing
+the table of contents between the cover page and the body text. Today,
+page resequencing is more often done in the digital domain. An index
+works similarly, but because it typically needs to be sorted after
+collection, its preparation requires separate processing.
+@end table
+
+@c ---------------------------------------------------------------------
+
+@node ms Document Control Settings, ms Document Description Macros, ms Document Structure, ms
+@subsection Document Control Settings
+@cindex @file{ms} macros, document control settings
+
+@file{ms} exposes many aspects of document layout to user control via
+@code{groff} requests. To use them, you must understand how to define
+registers and strings.
+
+@Defreq {nr, reg value}
+Set register @var{reg} to @var{value}. If @var{reg} doesn't exist, GNU
+@code{troff} creates it.
+@endDefreq
+
+@Defreq {ds, name contents}
+Set string @var{name} to @var{contents}.
+@endDefreq
+
+A list of document control registers and strings follows. For any
+parameter whose default is unsatisfactory, define its register or string
+before calling any @file{ms} macro other than @code{RP}.
+
+@unnumberedsubsubsec Margin settings
+
+@Defmpreg {PO, ms}
+Defines the page offset (i.e., the left margin).
+@c not in V6
+
+Effective: next page.
+
+Default: Varies by output device and paper format; 1@dmn{i} is used for
+typesetters using U.S.@: letter paper, and zero for terminals.
+@xref{Paper Format}.
+@endDefmpreg
+
+@Defmpreg {LL, ms}
+Defines the line length (i.e., the width of the body text).
+
+Effective: next paragraph.
+
+Default: Varies by output device and paper format; 6.5@dmn{i} is used
+for typesetters using U.S.@: letter paper (@pxref{Paper Format}) and
+65@dmn{n} on terminals.
+@endDefmpreg
+
+@Defmpreg {LT, ms}
+Defines the title line length (i.e., the header and footer width). This
+is usually the same as @code{LL}, but need not be.
+
+Effective: next paragraph.
+
+Default: Varies by output device and paper format; 6.5@dmn{i} is used
+for typesetters using U.S.@: letter paper (@pxref{Paper Format}) and
+65@dmn{n} on terminals.
+@endDefmpreg
+
+@Defmpreg {HM, ms}
+Defines the header margin height at the top of the page.
+@c not in V6
+
+Effective: next page.
+
+Default: 1@dmn{i}.
+@endDefmpreg
+
+@Defmpreg {FM, ms}
+Defines the footer margin height at the bottom of the page.
+@c not in V6
+
+Effective: next page.
+
+Default: 1@dmn{i}.
+@endDefmpreg
+
+@unnumberedsubsubsec Titles (headers, footers)
+
+@Defmpstr {LH, ms}
+Defines the text displayed in the left header position.
+
+Effective: next header.
+
+Default: empty.
+@endDefmpstr
+
+@Defmpstr {CH, ms}
+Defines the text displayed in the center header position.
+
+Effective: next header.
+
+Default: @samp{-\n[%]-}.
+@endDefmpstr
+
+@Defmpstr {RH, ms}
+Defines the text displayed in the right header position.
+
+Effective: next header.
+
+Default: empty.
+@endDefmpstr
+
+@Defmpstr {LF, ms}
+Defines the text displayed in the left footer position.
+
+Effective: next footer.
+
+Default: empty.
+@endDefmpstr
+
+@Defmpstr {CF, ms}
+Defines the text displayed in the center footer position.
+
+Effective: next footer.
+
+Default: empty.
+@endDefmpstr
+
+@Defmpstr {RF, ms}
+Defines the text displayed in the right footer position.
+
+Effective: next footer.
+
+Default: empty.
+@endDefmpstr
+
+@unnumberedsubsubsec Text settings
+
+@Defmpreg {PS, ms}
+Defines the type size of the body text.
+
+Effective: next paragraph.
+
+Default: 10@dmn{p}.
+@endDefmpreg
+
+@Defmpreg {VS, ms}
+Defines the vertical spacing (type size plus leading).
+
+Effective: next paragraph.
+
+Default: 12@dmn{p}.
+@endDefmpreg
+
+@Defmpreg {HY, ms}
+Defines the automatic hyphenation mode used with the @code{hy} request.
+Setting @code{HY} to@tie{}0 is equivalent to using the @code{nh}
+request. This is a Tenth Edition Research Unix extension.
+@c possibly 9th, but definitely not Berkeley
+
+Effective: next paragraph.
+
+Default: 6.
+@endDefmpreg
+
+@Defmpstr {FAM, ms}
+Defines the font family used to typeset the document. This is a GNU
+extension.
+
+Effective: next paragraph.
+
+Default: defined by the output device; often @samp{T} (@pxref{ms Body
+Text})
+@endDefmpstr
+
+@unnumberedsubsubsec Paragraph settings
+
+@Defmpreg {PI, ms}
+Defines the indentation amount used by the @code{PP}, @code{IP} (unless
+overridden by an optional argument), @code{XP}, and @code{RS} macros.
+@c not in V6
+
+Effective: next paragraph.
+
+Default: 5@dmn{n}.
+@endDefmpreg
+
+@Defmpreg {PD, ms}
+Defines the space between paragraphs.
+@c not in V6
+
+Effective: next paragraph.
+
+Default: 0.3@dmn{v} (1@dmn{v} on low-resolution devices).
+@endDefmpreg
+
+@Defmpreg {QI, ms}
+Defines the indentation amount used on both sides of a paragraph set
+with the @code{QP} or between the @code{QS} and @code{QE} macros.
+
+Effective: next paragraph.
+
+Default: 5@dmn{n}.
+@endDefmpreg
+
+@Defmpreg {PORPHANS, ms}
+Defines the minimum number of initial lines of any paragraph that must
+be kept together to avoid isolated lines at the bottom of a page. If a
+new paragraph is started close to the bottom of a page, and there is
+insufficient space to accommodate @code{PORPHANS} lines before an
+automatic page break, then a page break is forced before the start of
+the paragraph. This is a GNU extension.
+
+Effective: next paragraph.
+
+Default: 1.
+@endDefmpreg
+
+@unnumberedsubsubsec Heading settings
+
+@Defmpreg {PSINCR, ms}
+Defines an increment in type size to be applied to a heading at a
+lesser depth than that specified in @code{GROWPS}. The value of
+@code{PSINCR} should be specified in points with the @dmn{p} scaling
+unit and may include a fractional component; for example, @w{@samp{.nr
+PSINCR 1.5p}} sets a type size increment of 1.5@dmn{p}. This is a GNU
+extension.
+
+Effective: next heading.
+
+Default: 1@dmn{p}.
+@endDefmpreg
+
+@Defmpreg {GROWPS, ms}
+Defines the heading depth above which the type size increment set by
+@code{PSINCR} becomes effective. For each heading depth less than the
+value of @code{GROWPS}, the type size is increased by @code{PSINCR}.
+Setting @code{GROWPS} to any value less than@tie{}2 disables the
+incremental heading size feature. This is a GNU extension.
+
+Effective: next heading.
+
+Default: 0.
+@endDefmpreg
+
+@Defmpreg {HORPHANS, ms}
+Defines the minimum number of lines of an immediately succeeding
+paragraph that should be kept together with any heading introduced by
+the @code{NH} or @code{SH} macros. If a heading is placed close to the
+bottom of a page, and there is insufficient space to accommodate both
+the heading and at least @code{HORPHANS} lines of the following
+paragraph, before an automatic page break, then the page break is forced
+before the heading. This is a GNU extension.
+
+Effective: next paragraph.
+
+Default: 1.
+@endDefmpreg
+
+@Defmpstr {SN-STYLE, ms}
+Defines the style used to print numbered headings. @xref{Headings in
+ms}. This is a GNU extension.
+
+Effective: next heading.
+
+Default: alias of @code{SN-DOT}
+@endDefmpstr
+
+@unnumberedsubsubsec Footnote settings
+
+@Defmpreg {FI, ms}
+Defines the footnote indentation. This is a Berkeley extension.
+
+Effective: next footnote.
+
+Default: 2@dmn{n}.
+@endDefmpreg
+
+@Defmpreg {FF, ms}
+Defines the format of automatically numbered footnotes,
+and those for which the @code{FS} request is given a marker argument, at
+the bottom of a column or page. This is a Berkeley extension.
+@table @code
+@item 0
+Set an automatic number@footnote{defined in @ref{ms Footnotes}} as a
+superscript (on typesetter devices) or surrounded by square brackets (on
+terminals). The footnote paragraph is indented as with @code{PP} if
+there is an @code{FS} argument or an automatic number, and as with
+@code{LP} otherwise. This is the default.
+
+@item 1
+As @code{0}, but set the marker as regular text and follow an
+automatic number with a period.
+
+@item 2
+As @code{1}, but without indentation (like @code{LP}).
+
+@item 3
+As @code{1}, but set the footnote paragraph with the marker hanging
+(like @code{IP}).
+@end table
+
+Effective: next footnote.
+
+Default: 0.
+@endDefmpreg
+
+@Defmpreg {FPS, ms}
+Defines the footnote type size.
+
+Effective: next footnote.
+
+Default: @code{\n[PS] - 2p}.
+@endDefmpreg
+
+@Defmpreg {FVS, ms}
+Defines the footnote vertical spacing.
+
+Effective: next footnote.
+
+Default: @code{\n[FPS] + 2p}.
+@endDefmpreg
+
+@Defmpreg {FPD, ms}
+Defines the footnote paragraph spacing. This is a GNU extension.
+
+Effective: next footnote.
+
+Default: @code{\n[PD] / 2}.
+@endDefmpreg
+
+@Defmpstr {FR, ms}
+Defines the ratio of the footnote line length to the current line
+length. This is a GNU extension.
+
+Effective: next footnote in single-column arrangements, next page
+otherwise.
+
+Default: @code{11/12}.
+@endDefmpstr
+
+@unnumberedsubsubsec Display settings
+
+@Defmpreg {DD, ms}
+Sets the display distance---the vertical spacing before and after a
+display, a @code{tbl} table, an @code{eqn} equation, or a @code{pic}
+image. This is a Berkeley extension.
+
+Effective: next display boundary.
+
+Default: 0.5@dmn{v} (1@dmn{v} on low-resolution devices).
+@endDefmpreg
+
+@Defmpreg {DI, ms}
+Sets the default amount by which to indent a display started with
+@code{DS} and @code{ID} without arguments, to @samp{.DS@tie{}I} without
+an indentation argument, and to equations set with @samp{.EQ@tie{}I}.
+This is a GNU extension.
+
+Effective: next indented display.
+
+Default: 0.5@dmn{i}.
+@endDefmpreg
+
+@unnumberedsubsubsec Other settings
+
+@Defmpreg {MINGW, ms}
+Defines the default minimum width between columns in a multi-column
+document. This is a GNU extension.
+
+Effective: next page.
+
+Default: 2@dmn{n}.
+@endDefmpreg
+
+@Defmpreg {TC-MARGIN, ms}
+Defines the width of the field in which page numbers are set in a table
+of contents entry; the right margin thus moves inboard by this amount.
+This is a GNU extension.
+
+Effective: next @code{PX} call.
+
+Default: @code{\w'000'}
+@endDefmpreg
+
+@c XXX: Normally we'd have an entry for TC-LEADER here, but it's a
+@c special character and we have no custom Texinfo macros for defining
+@c (and indexing) these. There would be little point in an index for
+@c one item, and the plan is to drop this entire @section from this
+@c manual once doc/ms.ms is ready. See Savannah #60061.
+
+@c ---------------------------------------------------------------------
+
+@node ms Document Description Macros, ms Body Text, ms Document Control Settings, ms
+@subsection Document Description Macros
+@cindex @file{ms} macros, document description
+@cindex document description macros, [@file{ms}]
+
+Only the simplest document lacks a title.@footnote{Distinguish a
+document title from ``titles'', which are what @code{roff} systems call
+headers and footers collectively.} As its level of sophistication (or
+complexity) increases, it tends to acquire a date of revision,
+explicitly identified authors, sponsoring institutions for authors, and,
+at the rarefied heights, an abstract of its content. Define these
+data by calling the macros below in the order shown; @code{DA} or
+@code{ND} can be called to set the document date (or other identifier)
+at any time before (a) the abstract, if present, or (b) its information
+is required in a header or footer. Use of these macros is optional,
+except that @code{TL} is mandatory if any of @code{RP}, @code{AU},
+@code{AI}, or @code{AB} is called, and @code{AE} is mandatory if
+@code{AB} is called.
+
+@Defmac {RP, [@code{no-repeat-info}] [@code{no-renumber}], ms}
+Use the ``report'' (@acronym{AT&T}: ``released paper'') format for your
+document, creating a separate cover page. The default arrangement is to
+place most of the document description (title, author names and
+institutions, and abstract, but not the date) at the top of the first
+page. If the optional @code{no-repeat-info} argument is given,
+@file{ms} produces a cover page but does not repeat any of its
+information subsequently (but see the @code{DA} macro below regarding
+the date). Normally, @code{RP} sets the page number following the cover
+page to@tie{}1. Specifying the optional @code{no-renumber} argument
+suppresses this alteration. Optional arguments can occur in any order.
+@code{no} is recognized as a synonym of @code{no-repeat-info} for
+@code{AT&T} compatibility.
+@endDefmac
+
+@Defmac {TL, , ms}
+Specify the document title. @file{ms} collects text on input lines
+following this call into the title until reaching @code{AU}, @code{AB},
+or a heading or paragraphing macro call.
+@endDefmac
+
+@Defmac {AU, , ms}
+Specify an author's name. @file{ms} collects text on input lines
+following this call into the author's name until reaching @code{AI},
+@code{AB}, another @code{AU}, or a heading or paragraphing macro call.
+Call it repeatedly to specify multiple authors.
+@endDefmac
+
+@Defmac {AI, , ms}
+Specify the preceding author's institution. An @code{AU} call is
+usefully followed by at most one @code{AI} call; if there are more, the
+last @code{AI} call controls. @file{ms} collects text on input lines
+following this call into the author's institution until reaching
+@code{AU}, @code{AB}, or a heading or paragraphing macro call.
+@endDefmac
+
+@Defmac {DA, [@Var{x} @dots{}], ms}
+Typeset the current date, or any arguments @var{x}, in the center
+footer, and, if @code{RP} is also called, left-aligned at the end of the
+description information on the cover page.
+@endDefmac
+
+@Defmac {ND, [@Var{x} @dots{}], ms}
+Typeset the current date, or any arguments @var{x}, if @code{RP} is also
+called, left-aligned at the end of the document description on the cover
+page. This is @code{groff} @file{ms}'s default.
+@endDefmac
+
+@Defmac {AB, [@code{no}], ms}
+Begin the abstract. @file{ms} collects text on input lines following
+this call into the abstract until reaching an @code{AE} call. By
+default, @file{ms} places the word ``ABSTRACT'' centered and in italics
+above the text of the abstract. The optional argument @code{no}
+suppresses this heading.
+@endDefmac
+
+@Defmac {AE, , ms}
+End the abstract.
+@endDefmac
+
+An example document description, using a cover page, follows.
+@cindex cover page in [@file{ms}], example markup
+@cindex example markup, cover page in [@file{ms}]
+
+@CartoucheExample
+.RP
+.TL
+The Inevitability of Code Bloat
+in Commercial and Free Software
+.AU
+J.\& Random Luser
+.AI
+University of West Bumblefuzz
+.AB
+This report examines the long-term growth of the code
+bases in two large,
+popular software packages;
+the free Emacs and the commercial Microsoft Word.
+While differences appear in the type or order of
+features added,
+due to the different methodologies used,
+the results are the same in the end.
+.PP
+The free software approach is shown to be superior in
+that while free software can become as bloated as
+commercial offerings,
+free software tends to have fewer serious bugs and the
+added features are more in line with user demand.
+.AE
+
+@r{@dots{}the rest of the paper@dots{}}
+@endCartoucheExample
+
+@c ---------------------------------------------------------------------
+
+@node ms Body Text, ms Page Layout, ms Document Description Macros, ms
+@subsection Body Text
+@cindex @file{ms} macros, body text
+
+A variety of macros, registers, and strings can be used to structure and
+style the body of your document. They organize your text into
+paragraphs, headings, footnotes, and inclusions of material such as
+tables and figures.
+
+@menu
+* Text settings in ms::
+* Typographical symbols in ms::
+* Paragraphs in ms::
+* Headings in ms::
+* Typeface and decoration::
+* Lists in ms::
+* Indented regions in ms::
+* ms keeps and displays::
+* ms Insertions::
+* ms Footnotes::
+* ms language and localization::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Text settings in ms, Typographical symbols in ms, ms Body Text, ms Body Text
+@subsubsection Text settings
+@cindex @file{ms} macros, text settings
+
+The @code{FAM} string, a GNU extension, sets the font family for body
+text; the default is @samp{T}. The @code{PS} and @code{VS} registers
+set the type size and vertical spacing (distance between text
+baselines), respectively. The font family and type size are ignored on
+terminal devices. Setting these parameters before the first call of a
+heading, paragraphing, or (non-date) document description macro also
+applies them to headers, footers, and (for @code{FAM}) footnotes.
+
+Which font families are available depends on the output device; as a
+convention, @code{T} selects a serif family (``Times''), @code{H} a
+sans-serif family (``Helvetica''), and @code{C} a monospaced family
+(``Courier''). The man page for the output driver documents its font
+repertoire. Consult the @cite{groff@r{(1)}} man page for lists of
+available output devices and their drivers.
+
+The hyphenation mode (as used by the @code{hy} request) is set from the
+@code{HY} register. Setting @code{HY} to @samp{0} is equivalent to
+using the @code{nh} request. This is a Tenth Edition Research Unix
+extension.
+
+@c ---------------------------------------------------------------------
+
+@node Typographical symbols in ms, Paragraphs in ms, Text settings in ms, ms Body Text
+@subsubsection Typographical symbols
+@cindex @file{ms} macros, obtaining typographical symbols
+
+@file{ms} provides a few strings to obtain typographical symbols not
+easily entered with the keyboard. These and many others are available
+as special character escape sequences---see the @cite{groff_char@r{(7)}}
+man page.
+
+@Defmpstr {-, ms}
+Interpolate an em dash.
+@endDefmpstr
+
+@DefmpstrList {Q, ms}
+@DefmpstrListEndx {U, ms}
+Interpolate typographer's quotation marks where available, and neutral
+double quotes otherwise. @code{\*Q} is the left quote and @code{\*U}
+the right.
+@endDefmpstr
+
+@c ---------------------------------------------------------------------
+
+@node Paragraphs in ms, Headings in ms, Typographical symbols in ms, ms Body Text
+@subsubsection Paragraphs
+@cindex @file{ms} macros, paragraph handling
+
+Paragraphing macros @dfn{break}, or terminate, any pending output line
+so that a new paragraph can begin. Several paragraph types are
+available, differing in how indentation applies to them: to left, right,
+or both margins; to the first output line of the paragraph, all output
+lines, or all but the first. All paragraphing macro calls cause the
+insertion of vertical space in the amount stored in the @code{PD}
+register, except at page or column breaks. Alternatively, a blank input
+line breaks the output line and vertically spaces by one vee.
+
+@Defmac {LP, , ms}
+Set a paragraph without any (additional) indentation.
+@endDefmac
+
+@Defmac {PP, , ms}
+Set a paragraph with a first-line left indentation in the amount stored
+in the @code{PI} register.
+@endDefmac
+
+@Defmac {IP, [@Var{marker} [@Var{width}]], ms}
+Set a paragraph with a left indentation. The optional @var{marker} is
+not indented and is empty by default. It has several applications;
+see @ref{Lists in ms}. @var{width} overrides the indentation amount
+stored in the @code{PI} register; its default unit is @samp{n}. Once
+specified, @var{width} applies to further @code{IP} calls until
+specified again or a heading or different paragraphing macro is called.
+@endDefmac
+
+@Defmac {QP, , ms}
+Set a paragraph indented from both left and right margins by the amount
+stored in the @code{QI} register.
+@endDefmac
+
+@DefmacList {QS, , ms}
+@DefmacListEndx {QE, , ms}
+Begin (@code{QS}) and end (@code{QE}) a region where each paragraph is
+indented from both margins by the amount stored in the @code{QI}
+register. The text between @code{QS} and @code{QE} can be structured
+further by use of other paragraphing macros.
+@endDefmac
+
+@Defmac {XP, , ms}
+Set an ``exdented'' paragraph---one with a left indentation in the
+amount stored in the @code{PI} register on every line @emph{except} the
+first (also known as a hanging indent). This is a Berkeley extension.
+@endDefmac
+
+The following example illustrates the use of paragraphing macros.
+
+@CartoucheExample
+.NH 2
+Cases used in the 2001 study
+.LP
+Two software releases were considered for this report.
+.PP
+The first is commercial software;
+the second is free.
+.IP \[bu]
+Microsoft Word for Windows,
+starting with version 1.0 through the current version
+(Word 2000).
+.IP \[bu]
+GNU Emacs,
+from its first appearance as a standalone editor through
+the current version (v20).
+See [Bloggs 2002] for details.
+.QP
+Franklin's Law applied to software:
+software expands to outgrow both RAM and disk space over
+time.
+.SH
+Bibliography
+.XP
+Bloggs, Joseph R.,
+.I "Everyone's a Critic" ,
+Underground Press, March 2002.
+A definitive work that answers all questions and
+criticisms about the quality and usability of free
+software.
+@endCartoucheExample
+
+@c ---------------------------------------------------------------------
+
+@node Headings in ms, Typeface and decoration, Paragraphs in ms, ms Body Text
+@subsubsection Headings
+@cindex @file{ms} macros, headings
+
+Use headings to create a sequential or hierarchical structure for your
+document. The @file{ms} macros print headings in @strong{bold} using
+the same font family and, by default, type size as the body text.
+Headings are available with and without automatic numbering. Text on
+input lines following the macro call becomes the heading's title. Call
+a paragraphing macro to end the heading text and start the section's
+content.
+
+@DefmacList {NH, [@Var{depth}], ms}
+@DefmacListEnd {NH, @t{S} @Var{heading-depth-index} @dots{}, ms}
+Set an automatically numbered heading.
+
+@file{ms} produces a numbered heading the form @var{a.b.c@dots{}}, to
+any depth desired, with the numbering of each depth increasing
+automatically and being reset to zero when a more significant level is
+increased. ``1''@tie{}is the most significant or coarsest division of
+the document. Only non-zero values are output. If @var{depth} is
+omitted, it is taken to be @samp{1}.
+
+If you specify @var{depth} such that an ascending gap occurs relative to
+the previous @code{NH} call---that is, you ``skip a depth'', as by
+@samp{.NH 1} and then @samp{.NH 3}---@code{groff} @file{ms} emits a
+warning on the standard error stream.
+
+Alternatively, you can give @code{NH} a first argument of@tie{}@code{S},
+followed by integers to number the heading depths explicitly. Further
+automatic numbering, if used, resumes using the specified indices as
+their predecessors.
+@c Although undocumented in Tuthill's 4.2BSD ms.diffs paper...
+This feature is a Berkeley extension.
+@endDefmac
+
+An example may be illustrative.
+
+@CartoucheExample
+.NH 1
+Animalia
+.NH 2
+Arthropoda
+.NH 3
+Crustacea
+.NH 2
+Chordata
+.NH S 6 6 6
+Daimonia
+.NH 1
+Plantae
+@endCartoucheExample
+
+The above results in numbering as follows; the vertical space that
+normally precedes each heading is omitted.
+
+@Example
+1. Animalia
+1.1. Arthropoda
+1.1.1. Crustacea
+1.2. Chordata
+6.6.6. Daimonia
+7. Plantae
+@endExample
+
+@DefmpstrList {SN-STYLE, ms}
+@DefmpstrItemx {SN-DOT, ms}
+@DefmpstrItemx {SN-NO-DOT, ms}
+@DefmpstrListEndx {SN, ms}
+After @code{NH} is called, the assigned number is made available in the
+strings @code{SN-DOT} (as it appears in a printed heading with default
+formatting, followed by a terminating period) and @code{SN-NO-DOT} (with
+the terminating period omitted). These are GNU extensions.
+
+You can control the style used to print numbered headings by defining an
+appropriate alias for the string @code{SN-STYLE}. By default,
+@code{SN-STYLE} is aliased to @code{SN-DOT}. If you prefer to omit the
+terminating period from numbers appearing in numbered headings, you may
+define the alias as follows.
+
+@Example
+.als SN-STYLE SN-NO-DOT
+@endExample
+
+@noindent
+Any such change in numbering style becomes effective from the next use
+of @code{NH} following redefinition of the alias for @code{SN-STYLE}.
+The formatted number of the current heading is available in the
+@code{SN} string (a feature first documented by Berkeley), which
+facilitates its inclusion in, for example, table captions, equation
+labels, and @code{XS}/@code{XA}/@code{XE} table of contents entries.
+@endDefmpstr
+
+@Defmac {SH, [@Var{depth}], ms}
+Set an unnumbered heading.
+
+The optional @var{depth} argument is a GNU extension indicating the
+heading depth corresponding to the @var{depth} argument of @code{NH}.
+It matches the type size at which the heading is set to that of a
+numbered heading at the same depth when the @code{GROWPS} and
+@code{PSINCR} heading size adjustment mechanism is in effect.
+@endDefmac
+
+If the @code{GROWPS} register is set to a value greater than the
+@var{level} argument to @code{NH} or @code{SH}, the type size of a
+heading produced by these macros increases by @code{PSINCR} units over
+the size specified by @code{PS} multiplied by the difference of
+@code{GROWPS} and @var{level}. The value stored in @code{PSINCR} is
+interpreted in @code{groff} basic units; the @code{p} scaling unit
+should be employed when assigning a value specified in points. For
+example, the sequence
+
+@CartoucheExample
+.nr PS 10
+.nr GROWPS 3
+.nr PSINCR 1.5p
+.NH 1
+Carnivora
+.NH 2
+Felinae
+.NH 3
+Felis catus
+.SH 2
+Machairodontinae
+@endCartoucheExample
+
+@noindent
+will cause ``1. Carnivora'' to be printed in 13-point text, followed by
+``1.1. Felinae'' in 11.5-point text, while ``1.1.1. Felis catus'' and
+all more deeply nested heading levels will remain in the 10-point text
+specified by the @code{PS} register. ``Machairodontinae'' is printed at
+11.5 points, since it corresponds to heading level@tie{}2.
+
+The @code{HORPHANS} register operates in conjunction with the @code{NH}
+and @code{SH} macros to inhibit the printing of isolated headings at the
+bottom of a page; it specifies the minimum number of lines of an
+immediately subsequent paragraph that must be kept on the same page as
+the heading. If insufficient space remains on the current page to
+accommodate the heading and this number of lines of paragraph text, a
+page break is forced before the heading is printed. Any display macro
+call or @code{tbl}, @code{pic}, or @code{eqn} region between the heading
+and the subsequent paragraph suppresses this grouping. @xref{ms keeps
+and displays} and @ref{ms Insertions}.
+
+@c ---------------------------------------------------------------------
+
+@node Typeface and decoration, Lists in ms, Headings in ms, ms Body Text
+@subsubsection Typeface and decoration
+
+The @file{ms} macros provide a variety of ways to style text.
+Attend closely to the ordering of arguments labeled @var{pre} and
+@var{post}, which is not intuitive. Support for @var{pre}
+arguments is a GNU extension.@footnote{This idiosyncrasy arose through
+feature accretion; for example, the @code{B} macro in Version@tie{}6
+Unix @file{ms} (1975) accepted only one argument, the text to be set in
+boldface. By Version@tie{}7 (1979) it recognized a second argument; in
+1990, @code{groff} @file{ms} added a ``pre'' argument, placing it third
+to avoid breaking support for older documents.}
+
+@Defmac {B, [@Var{text} [@Var{post} [@Var{pre}]]], ms}
+Style @var{text} in @b{bold}, followed by @var{post} in the previous
+font style without intervening space, and preceded by @var{pre}
+similarly. Without arguments, @file{ms} styles subsequent text in bold
+until the next paragraphing, heading, or no-argument typeface macro
+call.
+@endDefmac
+
+@Defmac {R, [@Var{text} [@Var{post} [@Var{pre}]]], ms}
+As @code{B}, but use the roman style (upright text of normal weight)
+instead of bold. Argument recognition is a GNU extension.
+@endDefmac
+
+@Defmac {I, [@Var{text} [@Var{post} [@Var{pre}]]], ms}
+As @code{B}, but use an @i{italic} or oblique style instead of bold.
+@endDefmac
+
+@Defmac {BI, [@Var{text} [@Var{post} [@Var{pre}]]], ms}
+As @code{B}, but use a bold italic or bold oblique style instead of
+upright bold. This is a Tenth Edition Research Unix extension.
+@c possibly 9th, but definitely not Berkeley
+@endDefmac
+
+@Defmac {CW, [@Var{text} [@Var{post} [@Var{pre}]]], ms}
+As @code{B}, but use a @t{constant-width} (monospaced) roman typeface
+instead of bold. This is a Tenth Edition Research Unix extension.
+@c possibly 9th, but definitely not Berkeley
+@endDefmac
+
+@Defmac {BX, [@Var{text}], ms}
+Typeset @var{text} and draw a box around it. On terminal devices,
+reverse video is used instead. If you want @var{text} to contain space,
+use unbreakable space or horizontal motion escape sequences (@code{\~},
+@code{\@key{SP}}, @code{\^}, @code{\|}, @code{\0} or @code{\h}).
+@endDefmac
+
+@Defmac {UL, [@Var{text} [@Var{post}]], ms}
+Typeset @var{text} with an underline. @var{post}, if present, is set
+after @var{text} with no intervening space.
+@endDefmac
+
+@Defmac {LG, , ms}
+Set subsequent text in larger type (two points larger than the
+current size) until the next type size, paragraphing, or heading macro
+call. You can specify this macro multiple times to enlarge the type
+size as needed.
+@endDefmac
+
+@Defmac {SM, , ms}
+Set subsequent text in smaller type (two points smaller than the current
+size) until the next type size, paragraphing, or heading macro call.
+You can specify this macro multiple times to reduce the type size as
+needed.
+@endDefmac
+
+@Defmac {NL, , ms}
+Set subsequent text at the normal type size (the amount in the @code{PS}
+register).
+@endDefmac
+
+@var{pre} and @var{post} arguments are typically used to simplify the
+attachment of punctuation to styled words. When @var{pre} is used,
+a hyphenation control escape sequence @code{\%} that would ordinarily
+start @var{text} must start @var{pre} instead to have the desired
+effect.
+
+@CartoucheExample
+The CS course's students found one C language keyword
+.CW static ) \%(
+most troublesome.
+@endCartoucheExample
+
+The foregoing example produces output as follows.
+
+@CartoucheExample
+@r{The CS course's students found one C language keyword (@t{static})
+most troublesome.}
+@endCartoucheExample
+
+You can use the output line continuation escape sequence @code{\c} to
+achieve the same result (@pxref{Line Continuation}). It is also
+portable to older @file{ms} implementations.
+
+@CartoucheExample
+The CS course's students found one C language keyword
+\%(\c
+.CW \%static )
+most troublesome.
+@endCartoucheExample
+
+@code{groff} @file{ms} also offers strings to begin and end super- and
+subscripting. These are GNU extensions.
+
+@DefmpstrList {@lbracechar{}, ms}
+@DefmpstrListEndx {@rbracechar{}, ms}
+Begin and end superscripting, respectively.
+@endDefmpstr
+
+@DefmpstrList {<, ms}
+@DefmpstrListEndx {>, ms}
+Begin and end subscripting, respectively.
+@endDefmpstr
+
+Rather than calling the @code{CW} macro, in @code{groff} @file{ms} you
+might prefer to change the font family to Courier by setting the
+@code{FAM} string to @samp{C}. You can then use all four style macros
+above, returning to the default family (Times) with @samp{.ds FAM T}.
+Because changes to @code{FAM} take effect only at the next paragraph,
+@code{CW} remains useful to ``inline'' a change to the font family,
+similarly to the practice of this document in noting syntactical
+elements of @file{ms} and @code{groff}.
+
+@c ---------------------------------------------------------------------
+
+@node Lists in ms, Indented regions in ms, Typeface and decoration, ms Body Text
+@subsubsection Lists
+@cindex @file{ms} macros, lists
+
+The @var{marker} argument to the @code{IP} macro can be employed to
+present a variety of lists; for instance, you can use a bullet glyph
+(@code{\[bu]}) for unordered lists, a number (or auto-incrementing
+register) for numbered lists, or a word or phrase for glossary-style or
+definition lists. If you set the paragraph indentation register
+@code{PI} before calling @code{IP}, you can later reorder the items in
+the list without having to ensure that a @var{width} argument remains
+affixed to the first call.
+
+The following is an example of a bulleted list.
+@cindex example markup, bulleted list [@file{ms}]
+@cindex bulleted list, example markup [@file{ms}]
+
+@CartoucheExample
+.nr PI 2n
+A bulleted list:
+.IP \[bu]
+lawyers
+.IP \[bu]
+guns
+.IP \[bu]
+money
+@endCartoucheExample
+
+@Example
+A bulleted list:
+
+@bullet{} lawyers
+
+@bullet{} guns
+
+@bullet{} money
+@endExample
+
+The following is an example of a numbered list.
+@cindex example markup, numbered list [@file{ms}]
+@cindex numbered list, example markup [@file{ms}]
+
+@CartoucheExample
+.nr step 0 1
+.nr PI 3n
+A numbered list:
+.IP \n+[step]
+lawyers
+.IP \n+[step]
+guns
+.IP \n+[step]
+money
+@endCartoucheExample
+
+@Example
+A numbered list:
+
+1. lawyers
+
+2. guns
+
+3. money
+@endExample
+
+Here we have employed the @code{nr} request to create a register of our
+own, @samp{step}. We initialized it to zero and assigned it an
+auto-increment of 1. Each time we use the escape sequence
+@samp{\n+[PI]} (note the plus sign), the formatter applies the increment
+just before interpolating the register's value. Preparing the @code{PI}
+register as well enables us to rearrange the list without the tedium of
+updating macro calls.
+
+The next example illustrates a glossary-style list.
+@cindex example markup, glossary-style list [@file{ms}]
+@cindex glossary-style list, example markup [@file{ms}]
+
+@CartoucheExample
+A glossary-style list:
+.IP lawyers 0.4i
+Two or more attorneys.
+.IP guns
+Firearms,
+preferably large-caliber.
+.IP money
+Gotta pay for those
+lawyers and guns!
+@endCartoucheExample
+
+@Example
+A glossary-style list:
+
+lawyers
+ Two or more attorneys.
+
+guns Firearms, preferably large-caliber.
+
+money
+ Gotta pay for those lawyers and guns!
+@endExample
+
+In the previous example, observe how the @code{IP} macro places the
+definition on the same line as the term if it has enough space. If this
+is not what you want, there are a few workarounds we will illustrate by
+modifying the example. First, you can use a @code{br} request to force
+a break after printing the term or label.
+
+@CartoucheExample
+.IP guns
+.br
+Firearms,
+@endCartoucheExample
+
+Second, you could apply the @code{\p} escape sequence to force a break.
+The space following the escape sequence is important; if you omit it,
+@code{groff} prints the first word of the paragraph text on the same
+line as the term or label (if it fits) @emph{then} breaks the line.
+
+@CartoucheExample
+.IP guns
+\p Firearms,
+@endCartoucheExample
+
+Finally, you may append a horizontal motion to the marker with the
+@code{\h} escape sequence; using the same amount as the indentation will
+ensure that the marker is too wide for @code{groff} to treat it as
+``fitting'' on the same line as the paragraph text.
+
+@CartoucheExample
+.IP guns\h'0.4i'
+Firearms,
+@endCartoucheExample
+
+In each case, the result is the same.
+
+@Example
+A glossary-style list:
+
+lawyers
+ Two or more attorneys.
+
+guns
+ Firearms, preferably large-caliber.
+
+money
+ Gotta pay for those lawyers and guns!
+@endExample
+
+@c ---------------------------------------------------------------------
+
+@node Indented regions in ms, ms keeps and displays, Lists in ms, ms Body Text
+@subsubsection Indented regions
+
+You may need to indent a region of text while otherwise formatting it
+normally. Indented regions can be nested; you can change @code{\n[PI]}
+before each call to vary the amount of inset.
+
+@Defmac {RS, , ms}
+Begin a region where headings, paragraphs, and displays are indented
+(further) by the amount stored in the @code{PI} register.
+@endDefmac
+
+@Defmac {RE, , ms}
+End the (next) most recent indented region.
+@endDefmac
+
+This feature enables you to easily line up text under hanging and
+indented paragraphs.
+@cindex @file{ms} macros, nested lists
+@cindex nested lists [@file{ms}]
+For example, you may wish to structure lists hierarchically.
+
+@CartoucheExample
+.IP \[bu] 2
+Lawyers:
+.RS
+.IP \[bu]
+Dewey,
+.IP \[bu]
+Cheatham,
+and
+.IP \[bu]
+and Howe.
+.RE
+.IP \[bu]
+Guns
+@endCartoucheExample
+
+@Example
+@bullet{} Lawyers:
+
+ @bullet{} Dewey,
+
+ @bullet{} Cheatham, and
+
+ @bullet{} Howe.
+
+@bullet{} Guns
+@endExample
+
+@c ---------------------------------------------------------------------
+
+@node ms keeps and displays, ms Insertions, Indented regions in ms, ms Body Text
+@subsubsection Keeps, boxed keeps, and displays
+@cindex @file{ms} macros, displays
+@cindex @file{ms} macros, keeps
+@cindex keeps [@file{ms}]
+
+On occasion, you may want to @dfn{keep} several lines of text, or a
+region of a document, together on a single page, preventing an automatic
+page break within certain boundaries. This can cause a page break to
+occur earlier than it normally would. For example, you may want to keep
+two paragraphs together, or a paragraph that refers to a table, list, or
+figure adjacent to the item it discusses. @file{ms} provides the
+@code{KS} and @code{KE} macros for this purpose.
+
+You can alternatively specify a @dfn{floating keep}:@: if a keep cannot
+fit on the current page, @file{ms} holds its contents and
+allows material following the keep (in the source document) to fill the
+remainder of the current page. When the page breaks, whether by
+reaching the end or @code{bp} request, @file{ms} puts the floating keep
+at the beginning of the next page. This is useful for placing large
+graphics or tables that do not need to appear exactly where they occur
+in the source document.
+
+@DefmacList {KS, , ms}
+@DefmacItemx {KF, , ms}
+@DefmacListEndx {KE, , ms}
+@code{KS} begins a keep, @code{KF} a floating keep, and @code{KE} ends a
+keep of either kind.
+@endDefmac
+
+As an alternative to the keep mechanism, the @code{ne} request forces a
+page break if there is not at least the amount of vertical space
+specified in its argument remaining on the page (@pxref{Page Control}).
+One application of @code{ne} is to reserve space on the page for a
+figure or illustration to be included later.
+
+@cindex boxes [@file{ms}]
+A @dfn{boxed keep} has a frame drawn around it.
+
+@DefmacList {B1, , ms}
+@DefmacListEndx {B2, , ms}
+@code{B1} begins a keep with a box drawn around it. @code{B2} ends a
+boxed keep.
+@endDefmac
+
+Boxed keep macros cause breaks; if you need to box a word or phrase
+within a line, see the @code{BX} macro in @ref{Typeface and decoration}.
+Box lines are drawn as close as possible to the text they enclose so
+that they are usable within paragraphs. If you wish to box one or more
+paragraphs, you may improve the appearance by calling @code{B1} after
+the first paragraphing macro, and by adding a small amount of vertical
+space before calling @code{B2}.
+
+@c Wrap example at 58 columns.
+@CartoucheExample
+.LP
+.B1
+.I Warning:
+Happy Fun Ball may suddenly accelerate to dangerous
+speeds.
+.sp \n[PD]/2 \" space by half the inter-paragraph distance
+.B2
+@endCartoucheExample
+
+If you want a boxed keep to float, you will need to enclose the
+@code{B1} and @code{B2} calls within a pair of @code{KF} and @code{KE}
+calls.
+
+@cindex displays [@file{ms}]
+@dfn{Displays} turn off filling; lines of verse or program code are
+shown with their lines broken as in the source document without
+requiring @code{br} requests between lines. Displays can be kept on a
+single page or allowed to break across pages. The @code{DS} macro
+begins a kept display of the layout specified in its first argument;
+non-kept displays are begun with dedicated macros corresponding to their
+layout.
+
+@DefmacList {DS, @t{L}, ms}
+@DefmacListEndx {LD, , ms}
+Begin (@code{DS}:@: kept) left-aligned display.
+@endDefmac
+
+@DefmacList {DS, [@t{I} [@Var{indent}]], ms}
+@DefmacListEndx {ID, [@Var{indent}], ms}
+Begin (@code{DS}:@: kept) display indented by @var{indent} if specified,
+and by the amount of the @code{DI} register otherwise.
+@endDefmac
+
+@DefmacList {DS, @t{B}, ms}
+@DefmacListEndx {BD, , ms}
+Begin a (@code{DS}:@: kept) a block display:@: the entire display is
+left-aligned, but indented such that the longest line in the display
+is centered on the page.
+@endDefmac
+
+@DefmacList {DS, @t{C}, ms}
+@DefmacListEndx {CD, , ms}
+Begin a (@code{DS}:@: kept) centered display:@: each line in the display
+is centered.
+@endDefmac
+
+@DefmacList {DS, @t{R}, ms}
+@DefmacListEndx {RD, , ms}
+Begin a (@code{DS}:@: kept) right-aligned display. This is a GNU
+extension.
+@endDefmac
+
+@Defmac {DE, , ms}
+End any display.
+@endDefmac
+
+The distance stored in the @code{DD} register is inserted before and
+after each pair of display macros; this is a Berkeley extension. In
+@code{groff} @file{ms}, this distance replaces any adjacent
+inter-paragraph distance or subsequent spacing prior to a section
+heading. The @code{DI} register is a GNU extension; its value is an
+indentation applied to displays created with @samp{.DS} and @samp{.ID}
+without arguments, to @samp{.DS I} without an indentation argument, and
+to indented equations set with @samp{.EQ}. Changes to either register
+take effect at the next display boundary.
+
+@c ---------------------------------------------------------------------
+
+@node ms Insertions, ms Footnotes, ms keeps and displays, ms Body Text
+@subsubsection Tables, figures, equations, and references
+@cindex @file{ms} macros, tables
+@cindex @file{ms} macros, figures
+@cindex @file{ms} macros, equations
+@cindex @file{ms} macros, references
+@cindex tables [@file{ms}]
+@cindex figures [@file{ms}]
+@cindex equations [@file{ms}]
+@cindex references [@file{ms}]
+
+The @file{ms} package is often used with the @code{tbl}, @code{pic},
+@code{eqn}, and @code{refer} preprocessors.
+@pindex tbl
+@pindex pic
+@pindex eqn
+@pindex refer
+Mark text meant for preprocessors by enclosing it in pairs of tokens
+as follows, with nothing between the dot and the macro name. The
+preprocessors match these tokens only at the start of an input line.
+
+@DefmacList {TS, [@code{H}], ms}
+@DefmacListEndx {TE, , ms}
+Demarcate a table to be processed by the @code{tbl} preprocessor. The
+optional argument@tie{}@code{H} to @code{TS} instructs @file{ms} to
+repeat table rows (often column headings) at the top of each new page
+the table spans, if applicable; calling the @code{TH} macro marks the
+end of such rows. The GNU @cite{tbl@r{(1)}} man page provides a
+comprehensive reference to the preprocessor and offers examples of its
+use.
+@endDefmac
+
+@DefmacList {PS, , ms}
+@DefmacItemx {PE, , ms}
+@DefmacListEndx {PF, , ms}
+@code{PS} begins a picture to be processed by the @command{gpic}
+preprocessor; either of @code{PE} or @code{PF} ends it, the latter with
+``flyback'' to the vertical position at its top. You can create
+@code{pic} input manually or with a program such as @code{xfig}.
+@endDefmac
+
+@DefmacList {EQ, [@Var{align} [@Var{label}]], ms}
+@DefmacListEndx {EN, , ms}
+Demarcate an equation to be processed by the @code{eqn} preprocessor.
+The equation is centered by default; @var{align} can be @samp{C},
+@samp{L}, or @samp{I} to (explicitly) center, left-align, or indent it
+by the amount stored in the @code{DI} register, respectively. If
+specified, @var{label} is set right-aligned.
+@endDefmac
+
+@DefmacList {[, , ms}
+@DefmacListEndx {], , ms}
+Demarcate a bibliographic citation to be processed by the @code{refer}
+preprocessor. The GNU @cite{refer@r{(1)}} man page provides a
+comprehensive reference to the preprocessor and the format of its
+bibliographic database. Type @samp{man refer} at the command line to
+view it.
+@endDefmac
+
+When @code{refer} emits collected references (as might be done on a
+``Works Cited'' page), it interpolates the @code{REFERENCES} string as
+an unnumbered heading (@code{SH}).
+
+@cindex table, multi-page, example [@file{ms}]
+@cindex multi-page table example [@file{ms}]
+The following is an example of how to set up a table that may print
+across two or more pages.
+
+@CartoucheExample
+.TS H
+allbox;
+Cb | Cb .
+Part@arrow{}Description
+_
+.TH
+.T&
+GH-1978@arrow{}Fribulating gonkulator
+@r{@dots{}the rest of the table follows@dots{}}
+.TE
+@endCartoucheExample
+
+@noindent
+Attempting to place a multi-page table inside a keep can lead to
+unpleasant results, particularly if the @code{tbl} @code{allbox} option
+is used.
+
+@cindex equation example [@file{ms}]
+Mathematics can be typeset using the language of the @code{eqn}
+preprocessor.
+
+@CartoucheExample
+.EQ C (\*[SN-NO-DOT]a)
+p ~ = ~ q sqrt @{ ( 1 + ~ ( x / q sup 2 ) @}
+.EN
+@endCartoucheExample
+
+@noindent
+This input formats a labelled equation. We used the @code{SN-NO-DOT}
+string to base the equation label on the current heading number, giving
+us more flexibility to reorganize the document.
+
+Use @command{groff} options to run preprocessors on the input:@:
+@option{-e} for @command{geqn}, @option{-p} for @command{gpic},
+@option{-R} for @command{grefer}, and @option{-t} for @command{gtbl}.
+
+@c ---------------------------------------------------------------------
+
+@node ms Footnotes, , ms Insertions, ms Body Text
+@subsubsection Footnotes
+@cindex @file{ms} macros, footnotes
+@cindex footnotes [@file{ms}]
+
+@cindex footnote marker [@file{ms}]
+@cindex marker, footnote [@file{ms}]
+A footnote is typically anchored to a place in the text with a
+@dfn{marker}, which is a small integer, a symbol such as a dagger, or
+arbitrary user-specified text.
+
+@Defmpstr {*, ms}
+Place an @dfn{automatic number}, an automatically generated numeric
+footnote marker, in the text. Each time this string is interpolated,
+the number it produces increments by one. Automatic numbers start at 1.
+This is a Berkeley extension.
+@endDefesc
+
+Enclose the footnote text in @code{FS} and @code{FE} macro calls to set
+it at the nearest available ``foot'', or bottom, of a text column or
+page.
+
+@DefmacList {FS, [@Var{marker}], ms}
+@DefmacListEndx {FE, , ms}
+Begin (@code{FS}) and end (@code{FE}) a footnote. @code{FS} calls
+@code{FS-MARK} with any supplied @var{marker} argument, which is then
+also placed at the beginning of the footnote text. If @var{marker} is
+omitted, the next pending automatic footnote number enqueued by
+interpolation of the @code{*} string is used, and if none exists,
+nothing is prefixed.
+@endDefmac
+
+You may not desire automatically numbered footnotes in spite of their
+convenience. You can indicate a footnote with a symbol or other text by
+specifying its marker at the appropriate place (for example, by using
+@code{\[dg]} for the dagger glyph) @emph{and} as an argument to the
+@code{FS} macro. Such manual marks should be repeated as arguments to
+@code{FS} or as part of the footnote text to disambiguate their
+correspondence. You may wish to use @code{\*@{} and @code{\*@}} to
+superscript the marker at the anchor point, in the footnote text, or
+both.
+
+@code{groff} @file{ms} provides a hook macro, @code{FS-MARK}, for
+user-determined operations to be performed when the @code{FS} macro is
+called. It is passed the same arguments as @code{FS} itself. An
+application of @code{FS-MARK} is anchor placement for a hyperlink
+reference, so that a footnote can link back to its referential
+context.@footnote{``Portable Document Format Publishing with GNU
+Troff'', @file{pdfmark.ms} in the @code{groff} distribution, uses this
+technique.} By default, this macro has an empty definition.
+@code{FS-MARK} is a GNU extension.
+
+@cindex footnotes, and keeps [@file{ms}]
+@cindex keeps, and footnotes [@file{ms}]
+@cindex footnotes, and displays [@file{ms}]
+@cindex displays, and footnotes [@file{ms}]
+Footnotes can be safely used within keeps and displays, but you should
+avoid using automatically numbered footnotes within floating keeps. You
+can place a second @code{\**} interpolation between a @code{\**} and its
+corresponding @code{FS} call as long as each @code{FS} call occurs
+@emph{after} the corresponding @code{\**} and occurrences of @code{FS}
+are in the same order as corresponding occurrences of @code{\**}.
+
+Footnote text is formatted as paragraphs are, using analogous
+parameters. The registers @code{FI}, @code{FPD}, @code{FPS}, and
+@code{FVS} correspond to @code{PI}, @code{PD}, @code{PS}, and @code{CS},
+respectively; @code{FPD}, @code{FPS}, and @code{FVS} are GNU extensions.
+
+The @code{FF} register controls the formatting of automatically numbered
+footnote paragraphs and those for which @code{FS} is given a marker
+argument. @xref{ms Document Control Settings}.
+
+The default footnote line length is 11/12ths of the normal line length
+for compatibility with the expectations of historical @file{ms}
+documents; you may wish to set the @code{FR} string to @samp{1} to align
+with contemporary typesetting practices. In the
+past,@footnote{Unix Version@tie{}7 @file{ms}, its descendants, and GNU
+@file{ms} prior to @code{groff} version 1.23.0} an @code{FL} register
+was used for the line length in footnotes; however, setting this
+register at document initialization time had no effect on the footnote
+line length in multi-column arrangements.@footnote{You could reset it
+after each call to @code{.1C}, @code{.2C}, or @code{.MC}.}
+
+@code{FR} should be used in preference to the old @code{FL} register in
+contemporary documents. The footnote line length is effectively
+computed as @samp{@slanted{column-width} * \*[FR]}. If an absolute
+footnote line length is required, recall that arithmetic expressions in
+@code{roff} input are evaluated strictly from left to right, with no
+operator precedence (parentheses are honored).
+
+@Example
+.ds FR 0+3i \" Set footnote line length to 3 inches.
+@endExample
+
+@c ---------------------------------------------------------------------
+
+@node ms language and localization, ms Page Layout, ms Footnotes, ms Body Text
+@subsubsection Language and localization
+@cindex @file{ms} macros, language
+@cindex @file{ms} macros, localization
+@cindex language [@file{ms}]
+@cindex localization [@file{ms}]
+
+@code{groff} @file{ms} provides several strings that you can customize
+for your own purposes, or redefine to adapt the macro package to
+languages other than English. It is already localized for
+@c cs, de, fr, it, sv
+Czech, German, French, Italian, and Swedish. Load the desired
+localization macro package after @file{ms}; see the
+@cite{groff_tmac@r{(5)}} man page.
+
+@CartoucheExample
+$ groff -ms -mfr bienvenue.ms
+@endCartoucheExample
+
+The following strings are available.
+
+@Defmpstr {REFERENCES, ms}
+Contains the string printed at the beginning of a references
+(bibliography) page produced with GNU @cite{refer@r{(1)}}. The default
+is @samp{References}.
+@c XXX: Use of refer(1) with ms is insufficiently documented.
+@endDefmpstr
+
+@Defmpstr {ABSTRACT, ms}
+Contains the string printed at the beginning of the abstract. The
+default is @samp{\f[I]ABSTRACT\f[]}; it includes font selection escape
+sequences to set the word in italics.
+@endDefmpstr
+
+@Defmpstr {TOC, ms}
+Contains the string printed at the beginning of the table of contents.
+The default is @samp{Table of Contents}.
+@endDefmpstr
+
+@DefmpstrList {MONTH1, ms}
+@DefmpstrItemx {MONTH2, ms}
+@DefmpstrItemx {MONTH3, ms}
+@DefmpstrItemx {MONTH4, ms}
+@DefmpstrItemx {MONTH5, ms}
+@DefmpstrItemx {MONTH6, ms}
+@DefmpstrItemx {MONTH7, ms}
+@DefmpstrItemx {MONTH8, ms}
+@DefmpstrItemx {MONTH9, ms}
+@DefmpstrItemx {MONTH10, ms}
+@DefmpstrItemx {MONTH11, ms}
+@DefmpstrListEndx {MONTH12, ms}
+Contain the full names of the calendar months. The defaults are in
+English: @samp{January}, @samp{February}, and so on.
+@endDefmpstr
+
+@c ---------------------------------------------------------------------
+
+@node ms Page Layout, Differences from AT&T ms, ms Body Text, ms
+@subsection Page layout
+@cindex @file{ms} macros, page layout
+@cindex page layout [@file{ms}]
+
+@file{ms}'s default page layout arranges text in a single column with
+the page number between hyphens centered in a header on each page except
+the first, and produces no footers. You can customize this arrangement.
+
+@menu
+* ms Headers and Footers::
+* Tab Stops in ms::
+* ms Margins::
+* ms Multiple Columns::
+* ms TOC::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node ms Headers and Footers, Tab Stops in ms, ms Page Layout, ms Page Layout
+@subsubsection Headers and footers
+@cindex @file{ms} macros, headers
+@cindex @file{ms} macros, footers
+@cindex headers [@file{ms}]
+@cindex footers [@file{ms}]
+
+There are multiple ways to produce headers and footers. One is to
+define the strings @code{LH}, @code{CH}, and @code{RH} to set the left,
+center, and right headers, respectively; and @code{LF}, @code{CF}, and
+@code{RF} to set the left, center, and right footers. This approach
+suffices for documents that do not distinguish odd- and even-numbered
+pages.
+
+Another method is to call macros that set headers or footers for odd- or
+even-numbered pages. Each such macro takes a delimited argument
+separating the left, center, and right header or footer texts from each
+other. You can replace the neutral apostrophes (@code{'}) shown below
+with any character not appearing in the header or footer text. These
+macros are Berkeley extensions.
+
+@DefmacList {OH, @code{'}@Var{left}@code{'}@Var{center}@code{'}@Var{right}@code{'}, ms}
+@DefmacItemx {EH, @code{'}@Var{left}@code{'}@Var{center}@code{'}@Var{right}@code{'}, ms}
+@DefmacItemx {OF, @code{'}@Var{left}@code{'}@Var{center}@code{'}@Var{right}@code{'}, ms}
+@DefmacListEndx {EF, @code{'}@Var{left}@code{'}@Var{center}@code{'}@Var{right}@code{'}, ms}
+The @code{OH} and @code{EH} macros define headers for odd- (recto)
+and even-numbered (verso) pages, respectively; the @code{OF} and
+@code{EF} macros define footers for them.
+@endDefmac
+
+With either method, a percent sign @code{%} in header or footer text is
+replaced by the current page number. By default, @file{ms} places no
+header on a page numbered ``1'' (regardless of its number format).
+
+@Defmac {P1, , ms}
+Typeset the header even on page@tie{}1. To be effective, this macro
+must be called before the header trap is sprung on any page numbered
+``1''; in practice, unless your page numbering is unusual, this means
+that you should call it early, before @code{TL} or any heading or
+paragraphing macro. This is a Berkeley extension.
+@endDefmac
+
+For even greater flexibility, @file{ms} is designed to permit the
+redefinition of the macros that are called when the @code{groff} traps
+that ordinarily cause the headers and footers to be output are sprung.
+@code{PT} (``page trap'') is called by @file{ms} when the header is to
+be written, and @code{BT} (``bottom trap'') when the footer is to be.
+The @code{groff} page location trap that @file{ms} sets up to format the
+header also calls the (normally undefined) @code{HD} macro after
+@code{PT}; you can define @code{HD} if you need additional processing
+after setting the header (for example, to draw a line below it).
+@c Although undocumented in Tuthill's 4.2BSD ms.diffs paper...
+The @code{HD} hook is a Berkeley extension. Any such macros you
+(re)define must implement any desired specialization for odd-, even-, or
+first numbered pages.
+
+@c ---------------------------------------------------------------------
+
+@node Tab Stops in ms, ms Margins, ms Headers and Footers, ms Page Layout
+@subsubsection Tab stops
+
+Use the @code{ta} request to define tab stops as needed. @xref{Tabs and
+Fields}.
+
+@Defmac {TA, , ms}
+Reset the tab stops to the @file{ms} default (every 5 ens).
+Redefine this macro to create a different set of default tab stops.
+@endDefmac
+
+@c ---------------------------------------------------------------------
+
+@node ms Margins, ms Multiple Columns, Tab Stops in ms, ms Page Layout
+@subsubsection Margins
+@cindex @file{ms} macros, margins
+
+Control margins using the registers summarized in ``Margin settings'' in
+@ref{ms Document Control Settings} above. There is no setting for the
+right margin; the combination of page offset @code{\n[PO]} and line
+length @code{\n[LL]} determines it.
+
+@c ---------------------------------------------------------------------
+
+@node ms Multiple Columns, ms TOC, ms Margins, ms Page Layout
+@subsubsection Multiple columns
+@cindex @file{ms} macros, multiple columns
+@cindex multiple columns [@file{ms}]
+
+@file{ms} can set text in as many columns as reasonably fit on the page.
+The following macros force a page break if a multi-column layout is
+active when they are called. The @code{MINGW} register stores the
+default minimum gutter width; it is a GNU extension. When multiple
+columns are in use, keeps and the @code{HORPHANS} and @code{PORPHANS}
+registers work with respect to column breaks instead of page breaks.
+
+@Defmac {1C, , ms}
+Arrange page text in a single column (the default).
+@endDefmac
+
+@Defmac {2C, , ms}
+Arrange page text in two columns.
+@endDefmac
+
+@Defmac {MC, [@Var{column-width} [@Var{gutter-width}]], ms}
+Arrange page text in multiple columns. If you specify no arguments, it
+is equivalent to the @code{2C} macro. Otherwise, @var{column-width} is
+the width of each column and @var{gutter-width} is the minimum distance
+between columns.
+@endDefmac
+
+@c ---------------------------------------------------------------------
+
+@node ms TOC, Differences from AT&T ms, ms Multiple Columns, ms Page Layout
+@subsubsection Creating a table of contents
+@cindex @file{ms} macros, creating table of contents
+@cindex table of contents, creating [@file{ms}]
+
+Because @code{roff} formatters process their input in a single pass,
+material on page 50, for example, cannot influence what appears on
+page@tie{}1---this poses a challenge for a table of contents at its
+traditional location in front matter, if you wish to avoid manually
+maintaining it. @file{ms} enables the collection of material to be
+presented in the table of contents as it appears, saving its page number
+along with it, and then emitting the collected contents on demand toward
+the end of the document. The table of contents can then be resequenced
+to its desired location by physically rearranging the pages of a printed
+document, or as part of post-processing---with a @cite{sed@r{(1)}}
+script to reorder the pages in @command{troff}'s output, with
+@cite{pdfjam@r{(1)}}, or with @cite{gropdf@r{(1)}}'s
+@samp{.pdfswitchtopage} feature, for example.
+
+Define an entry to appear in the table of contents by bracketing its
+text between calls to the @code{XS} and @code{XE} macros. A typical
+application is to call them immediately after @code{NH} or @code{SH} and
+repeat the heading text within them. The @code{XA} macro, used within
+@samp{.XS}/@samp{.XE} pairs, supplements an entry---for instance, when
+it requires multiple output lines, whether because a heading is too long
+to fit or because style dictates that page numbers not be repeated. You
+may wish to indent the text thus wrapped to correspond to its heading
+depth; this can be done in the entry text by prefixing it with tabs or
+horizontal motion escape sequences, or by providing a second argument to
+the @code{XA} macro. @code{XS} and @code{XA} automatically associate
+the page number where they are called with the text following them, but
+they accept arguments to override this behavior. At the end of the
+document, call @code{TC} or @code{PX} to emit the table of contents;
+@code{TC} resets the page number to @samp{i} (Roman numeral one), and
+then calls @code{PX}. All of these macros are Berkeley extensions.
+
+@DefmacList {XS, [@Var{page-number}], ms}
+@DefmacItemx {XA, [@Var{page-number} [@Var{indentation}]], ms}
+@DefmacListEndx {XE, , ms}
+Begin, supplement, and end a table of contents entry. Each entry is
+associated with @var{page-number} (otherwise the current page number); a
+@var{page-number} of @samp{no} prevents a leader and page number from
+being emitted for that entry. Use of @code{XA} within
+@code{XS}/@code{XE} is optional; it can be repeated. If
+@var{indentation} is present, a supplemental entry is indented by that
+amount; ens are assumed if no unit is indicated. Text on input lines
+between @code{XS} and @code{XE} is stored for later recall by @code{PX}.
+@endDefmac
+
+@Defmac {PX, [@code{no}], ms}
+Switch to single-column layout. Unless @code{no} is specified, center
+and interpolate the @code{TOC} string in bold and two points larger than
+the body text. Emit the table of contents entries.
+@endDefmac
+
+@Defmac {TC, [@code{no}], ms}
+Set the page number to@tie{}1, the page number format to lowercase Roman
+numerals, and call @code{PX} (with a @code{no} argument, if present).
+@endDefmac
+
+Here's an example of typical @file{ms} table of contents preparation.
+We employ horizontal escape sequences @code{\h} to indent the entries by
+sectioning depth.
+
+@CartoucheExample
+.NH 1
+Introduction
+.XS
+Introduction
+.XE
+@r{@dots{}}
+.NH 2
+Methodology
+.XS
+\h'2n'Methodology
+.XA
+\h'4n'Fassbinder's Approach
+\h'4n'Kahiu's Approach
+.XE
+@r{@dots{}}
+.NH 1
+Findings
+.XS
+Findings
+.XE
+@r{@dots{}}
+.TC
+@endCartoucheExample
+
+The remaining features in this subsubsection are GNU extensions.
+@code{groff} @file{ms} obviates the need to repeat heading text after
+@code{XS} calls. Call @code{XN} and @code{XH} after @code{NH} and
+@code{SH}, respectively.
+
+@DefmacList {XN, @Var{heading-text}, ms}
+@DefmacListEndx {XH, @Var{depth} @Var{heading-text}, ms}
+Format @var{heading-text} and create a corresponding table of contents
+entry. @code{XN} computes the indentation from the depth of the
+preceding @code{NH} call; @code{XH} requires a @var{depth} argument to
+do so.
+@endDefmac
+
+@code{groff} @file{ms} encourages customization of table of contents
+entry production.
+
+@DefmacList {XN-REPLACEMENT, @Var{heading-text}, ms}
+@DefmacListEndx {XH-REPLACEMENT, @Var{depth} @Var{heading-text}, ms}
+These hook macros implement @code{XN} and @code{XH}, respectively.
+They call @code{XN-INIT} and pass their @var{heading-text} arguments to
+@code{XH-UPDATE-TOC}.
+@endDefmac
+
+@DefmacList {XN-INIT, , ms}
+@DefmacListEndx {XH-UPDATE-TOC, @Var{depth} @Var{heading-text}, ms}
+The @code{XN-INIT} hook macro does nothing by default.
+@code{XH-UPDATE-TOC} brackets @var{heading-text} with @code{XS} and
+@code{XE} calls, indenting it by 2 ens per level of @var{depth} beyond
+the first.
+@endDefmac
+
+We could therefore produce a table of contents similar to that in the
+previous example with fewer macro calls. (The difference is that this
+input follows the ``Approach'' entries with leaders and page numbers.)
+
+@CartoucheExample
+.NH 1
+.XN Introduction
+@r{@dots{}}
+.NH 2
+.XN Methodology
+.XH 3 "Fassbinder's Approach"
+.XH 3 "Kahiu's Approach"
+@r{@dots{}}
+.NH 1
+.XN Findings
+@r{@dots{}}
+@endCartoucheExample
+
+To get the section number of the numbered headings into the table of
+contents entries, we might define @code{XN-REPLACEMENT} as follows.
+(We obtain the heading depth from @code{groff} @file{ms}'s internal
+register @code{nh*hl}.)
+
+@CartoucheExample
+.de XN-REPLACEMENT
+.XN-INIT
+.XH-UPDATE-TOC \\n[nh*hl] \\$@@
+\&\\*[SN] \\$*
+..
+@endCartoucheExample
+
+You can change the style of the leader that bridges each table of
+contents entry with its page number; define the @code{TC-LEADER} special
+character by using the @code{char} request. A typical leader combines
+the dot glyph @samp{.} with a horizontal motion escape sequence to
+spread the dots. The width of the page number field is stored in the
+@code{TC-MARGIN} register.
+
+@c ---------------------------------------------------------------------
+
+@node Differences from AT&T ms, ms Naming Conventions, ms Page Layout, ms
+@subsection Differences from @acronym{AT&T} @file{ms}
+@cindex @file{ms} macros, @code{groff} differences from @acronym{AT&T}
+@cindex @acronym{AT&T} @file{ms}, macro package differences
+
+The @code{groff} @file{ms} macros are an independent reimplementation,
+using no @acronym{AT&T} code. Since they take advantage of the extended
+features of @code{groff}, they cannot be used with @acronym{AT&T}
+@code{troff}. @code{groff} @file{ms} supports features described above
+as Berkeley and Tenth Edition Research Unix extensions, and adds several
+of its own.
+
+@itemize @bullet
+@item
+The internals of @code{groff} @file{ms} differ from the internals of
+@acronym{AT&T} @file{ms}. Documents that depend upon implementation
+details of @acronym{AT&T} @file{ms} may not format properly with
+@code{groff} @file{ms}. Such details include macros whose function was
+not documented in the @acronym{AT&T} @file{ms}
+manual.@footnote{@cite{Typing Documents on the UNIX System: Using the
+-ms Macros with Troff and Nroff}, M.@tie{}E.@: Lesk, Bell Laboratories,
+1978}
+@c XXX: We support RT anyway; maybe we should stop?
+
+@item
+The error-handling policy of @code{groff} @file{ms} is to detect and
+report errors, rather than to ignore them silently.
+
+@item
+Tenth Edition @c possibly 9th
+Research Unix supported @code{P1}/@code{P2} macros to bracket code
+examples; @code{groff} @file{ms} does not.
+
+@item
+@code{groff} @file{ms} does not work in GNU @code{troff}'s
+@acronym{AT&T} compatibility mode. If loaded when that mode is enabled,
+it aborts processing with a diagnostic message.
+
+@item
+Multiple line spacing is not supported. Use a larger vertical spacing
+instead.
+
+@item
+@code{groff} @file{ms} uses the same header and footer defaults in both
+@code{nroff} and @code{troff} modes as @acronym{AT&T} @file{ms} does in
+@code{troff} mode; @acronym{AT&T}'s default in @code{nroff} mode is to
+put the date, in U.S.@: traditional format (e.g., ``January 1, 2021''),
+in the center footer (the @code{CF} string).
+
+@item
+Many @code{groff} @file{ms} macros, including those for paragraphs,
+headings, and displays, cause a reset of paragraph rendering parameters,
+and may change the indentation; they do so not by incrementing or
+decrementing it, but by setting it absolutely. This can cause problems
+for documents that define additional macros of their own that try to
+manipulate indentation. Use the @file{ms} @code{RS} and @code{RE}
+macros instead of the @code{in} request.
+
+@item
+@cindex fractional type sizes in @file{ms} macros
+@cindex @file{ms} macros, fractional type sizes in
+@acronym{AT&T} @file{ms} interpreted the values of the registers
+@code{PS} and @code{VS} in points, and did not support the use of
+scaling units with them. @code{groff} @file{ms} interprets values of
+the registers @code{PS}, @code{VS}, @code{FPS}, and @code{FVS} equal to
+or larger than@tie{}1,000 (one thousand) as decimal fractions multiplied
+by@tie{}1,000.@footnote{Register values are converted to and stored as
+basic units. @xref{Measurements}.} This threshold makes use of a
+scaling unit with these parameters practical for high-resolution
+devices while preserving backward compatibility. It also permits
+expression of non-integral type sizes. For example, @samp{groff
+-rPS=10.5p} at the shell prompt is equivalent to placing @samp{.nr PS
+10.5p} at the beginning of the document.
+
+@item
+@acronym{AT&T} @file{ms}'s @code{AU} macro supported arguments used with
+some document types; @code{groff} @file{ms} does not.
+
+@item
+Right-aligned displays are available. The @acronym{AT&T} @file{ms}
+manual observes that ``it is tempting to assume that @samp{.DS R} will
+right adjust lines, but it doesn't work''. In @code{groff} @file{ms},
+it does.
+
+@item
+To make @code{groff} @file{ms} use the default page offset (which also
+specifies the left margin), the @code{PO} register must stay undefined
+until the first @file{ms} macro is called.
+
+This implies that @samp{\n[PO]} should not be used early in the
+document, unless it is changed also: accessing an undefined register
+automatically defines it.
+
+@item
+@code{groff} @file{ms} supports the @code{PN} register, but it is not
+necessary; you can access the page number via the usual @code{%}
+register and invoke the @code{af} request to assign a different format
+to it if desired.@footnote{If you redefine the @file{ms} @code{PT} macro
+@c I wouldn't mention that, but Lesk 1978 encourages doing so. :-/
+and desire special treatment of certain page numbers (like @samp{1}),
+you may need to handle a non-Arabic page number format, as @code{groff}
+@file{ms}'s @code{PT} does; see the macro package source. @code{groff}
+@file{ms} aliases the @code{PN} register to @code{%}.}
+
+@item
+The @acronym{AT&T} @file{ms} manual documents registers @code{CW} and
+@code{GW} as setting the default column width and ``intercolumn gap'',
+respectively, and which applied when @code{MC} was called with fewer
+than two arguments. @code{groff} @file{ms} instead treats @code{MC}
+without arguments as synonymous with @code{2C}; there is thus no
+occasion for a default column width register. Further, the @code{MINGW}
+register and the second argument to @code{MC} specify a @emph{minimum}
+space between columns, not the fixed gutter width of @acronym{AT&T}
+@file{ms}.
+
+@item
+The @acronym{AT&T} @file{ms} manual did not document the @code{QI}
+register; Berkeley and @code{groff} @file{ms} do.
+@end itemize
+
+@Defmpreg {GS, ms}
+The register @code{GS} is set to@tie{}1 by the @code{groff} @file{ms}
+macros, but is not used by the @acronym{AT&T} @file{ms} package.
+Documents that need to determine whether they are being formatted with
+@code{groff} @file{ms} or another implementation should test this
+register.
+@endDefmpreg
+
+@menu
+* Missing Unix Version 7 ms Macros::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Missing Unix Version 7 ms Macros, , Differences from AT&T ms, Differences from AT&T ms
+@subsubsection Unix Version 7 @file{ms} macros not implemented by @code{groff} @file{ms}
+
+Several macros described in the Unix Version@tie{}7 @file{ms}
+documentation are unimplemented by @code{groff} @file{ms} because they
+are specific to the requirements of documents produced internally by
+Bell Laboratories, some of which also require a glyph for the Bell
+System logo that @code{groff} does not support. These macros
+implemented several document type formats
+(@code{EG}, @c engineer's notes
+@code{IM}, @c internal memorandum
+@code{MF}, @c memorandum for file
+@code{MR}, @c memorandum for record
+@code{TM}, @c technical memorandum
+@code{TR}), @c technical report
+were meaningful only in conjunction with the use of certain document
+types
+(@code{AT}, @c attachments
+@code{CS}, @c cover sheet info for `TM` documents
+@code{CT}, @c copies to
+@code{OK}, @c "other keywords" for `TM` documents
+@code{SG}), @c signatures for `TM` documents
+stored the postal addresses of Bell Labs sites
+(@code{HO}, @c Holmdel
+@code{IH}, @c Naperville
+@code{MH}, @c Murray Hill
+@code{PY}, @c Piscataway
+@code{WH}), @c Whippany
+or lacked a stable definition over time
+(@code{UX}). @c Unix; on 1st use, add footnote id'ing trademark owner
+To compatibly render historical @file{ms} documents using these macros,
+we advise your documents to invoke the @code{rm} request to remove any
+such macros it uses and then define replacements with an authentically
+typeset original at hand.@footnote{The removal beforehand is necessary
+because @code{groff} @file{ms} aliases these macros to a diagnostic
+macro, and you want to redefine the aliased name, not its target.} For
+informal purposes, a simple definition of @code{UX} should maintain the
+readability of the document's substance.
+
+@CartoucheExample
+.rm UX
+.ds UX Unix\"
+@endCartoucheExample
+
+@c ---------------------------------------------------------------------
+
+@node ms Legacy Features, ms Naming Conventions, Differences from AT&T ms, ms
+@subsection Legacy Features
+@cindex @file{ms} macros, strings
+@cindex @file{ms} macros, special characters
+@cindex @file{ms} macros, accent marks
+@cindex accent marks [@file{ms}]
+@cindex special characters [@file{ms}]
+@cindex strings [@file{ms}]
+
+@code{groff} @file{ms} retains some legacy features solely to support
+formatting of historical documents; contemporary ones should not use
+them because they can render poorly. See the @cite{groff_char@r{(7)}}
+man page.
+
+@unnumberedsubsubsec AT&T accent mark strings
+
+AT&T @file{ms} defined accent mark strings as follows.
+
+@Defmpstr {@code{'}, ms}
+Apply acute accent to subsequent glyph.
+@endDefmpstr
+
+@Defmpstr {@code{`}, ms}
+Apply grave accent to subsequent glyph.
+@endDefmpstr
+
+@Defmpstr {:, ms}
+Apply dieresis (umlaut) to subsequent glyph.
+@endDefmpstr
+
+@Defmpstr {^, ms}
+Apply circumflex accent to subsequent glyph.
+@endDefmpstr
+
+@Defmpstr {~, ms}
+Apply tilde accent to subsequent glyph.
+@endDefmpstr
+
+@Defmpstr {C, ms}
+Apply caron to subsequent glyph.
+@endDefmpstr
+
+@Defmpstr {\,, ms}
+Apply cedilla to subsequent glyph.
+@endDefmpstr
+
+@unnumberedsubsubsec Berkeley accent mark and glyph strings
+
+Berkeley @file{ms} offered an @code{AM} macro; calling it redefined the
+AT&T accent mark strings (except for @samp{\*C}), applied them to the
+@emph{preceding} glyph, and defined additional strings, some for spacing
+glyphs.
+
+@Defmac {AM, , ms}
+Enable alternative accent mark and glyph-producing strings.
+@endDefmac
+
+@Defmpstr {@code{'}, ms}
+Apply acute accent to preceding glyph.
+@endDefmpstr
+
+@Defmpstr {@code{`}, ms}
+Apply grave accent to preceding glyph.
+@endDefmpstr
+
+@Defmpstr {:, ms}
+Apply dieresis (umlaut) to preceding glyph.
+@endDefmpstr
+
+@Defmpstr {^, ms}
+Apply circumflex accent to preceding glyph.
+@endDefmpstr
+
+@Defmpstr {~, ms}
+Apply tilde accent to preceding glyph.
+@endDefmpstr
+
+@Defmpstr {\,, ms}
+Apply cedilla to preceding glyph.
+@endDefmpstr
+
+@Defmpstr {/, ms}
+Apply stroke (slash) to preceding glyph.
+@endDefmpstr
+
+@Defmpstr {v, ms}
+Apply caron to preceding glyph.
+@endDefmpstr
+
+@Defmpstr {_, ms}
+Apply macron to preceding glyph.
+@endDefmpstr
+
+@Defmpstr {., ms}
+Apply underdot to preceding glyph.
+@endDefmpstr
+
+@Defmpstr {o, ms}
+Apply ring accent to preceding glyph.
+@endDefmpstr
+
+@Defmpstr {?, ms}
+Interpolate inverted question mark.
+@endDefmpstr
+
+@Defmpstr {!, ms}
+Interpolate inverted exclamation mark.
+@endDefmpstr
+
+@Defmpstr {8, ms}
+Interpolate small letter sharp s.
+@endDefmpstr
+
+@Defmpstr {q, ms}
+Interpolate small letter o with hook accent (ogonek).
+@endDefmpstr
+
+@Defmpstr {3, ms}
+Interpolate small letter yogh.
+@endDefmpstr
+
+@Defmpstr {d-, ms}
+Interpolate small letter eth.
+@endDefmpstr
+
+@Defmpstr {D-, ms}
+Interpolate capital letter eth.
+@endDefmpstr
+
+@Defmpstr {th, ms}
+Interpolate small letter thorn.
+@endDefmpstr
+
+@Defmpstr {Th, ms}
+Interpolate capital letter thorn.
+@endDefmpstr
+
+@Defmpstr {ae, ms}
+Interpolate small æ ligature.
+@endDefmpstr
+
+@Defmpstr {Ae, ms}
+Interpolate capital Æ ligature.
+@endDefmpstr
+
+@Defmpstr {oe, ms}
+Interpolate small oe ligature.
+@endDefmpstr
+
+@Defmpstr {OE, ms}
+Interpolate capital OE ligature.
+@endDefmpstr
+
+@c ---------------------------------------------------------------------
+
+@node ms Naming Conventions, , ms Legacy Features, ms
+@subsection Naming Conventions
+@cindex @file{ms} macros, naming conventions
+@cindex naming conventions, @file{ms} macros
+
+The following conventions are used for names of macros, strings, and
+registers. External names available to documents that use the
+@code{groff} @file{ms} macros contain only uppercase letters and digits.
+
+Internally, the macros are divided into modules. Conventions for
+identifier names are as follows.
+
+@itemize @bullet
+@item
+Names used only within one module are of the form
+@var{module}@code{*}@var{name}.
+
+@item
+Names used outside the module in which they are defined are of the form
+@var{module}@code{@@}@var{name}.
+
+@item
+Names associated with a particular environment are of the form
+@var{environment}@code{:}@var{name}; these are used only within the
+@code{par} module.
+
+@item
+@var{name} does not have a module prefix.
+
+@item
+Constructed names used to implement arrays are of the form
+@var{array}@code{!}@var{index}.
+@end itemize
+
+Thus the @code{groff} @file{ms} macros reserve the following names.
+
+@itemize @bullet
+@item
+Names containing the characters @code{*}, @code{@@}, and@tie{}@code{:}.
+
+@item
+Names containing only uppercase letters and digits.
+@end itemize
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node GNU troff Reference, File Formats, Major Macro Packages, Top
+@chapter GNU @code{troff} Reference
+@cindex reference, @code{gtroff}
+@cindex @code{gtroff}, reference
+
+This chapter covers @emph{all} of the facilities of the GNU
+@code{troff} formatting engine. Users of macro packages may skip it if
+not interested in details.
+
+
+@menu
+* Text::
+* Page Geometry::
+* Measurements::
+* Numeric Expressions::
+* Identifiers::
+* Formatter Instructions::
+* Comments::
+* Registers::
+* Manipulating Filling and Adjustment::
+* Manipulating Hyphenation::
+* Manipulating Spacing::
+* Tabs and Fields::
+* Character Translations::
+* @code{troff} and @code{nroff} Modes::
+* Line Layout::
+* Line Continuation::
+* Page Layout::
+* Page Control::
+* Using Fonts::
+* Manipulating Type Size and Vertical Spacing::
+* Colors::
+* Strings::
+* Conditionals and Loops::
+* Writing Macros::
+* Page Motions::
+* Drawing Geometric Objects::
+* Deferring Output::
+* Traps::
+* Diversions::
+* Punning Names::
+* Environments::
+* Suppressing Output::
+* I/O::
+* Postprocessor Access::
+* Miscellaneous::
+* Gtroff Internals::
+* Debugging::
+* Implementation Differences::
+@end menu
+
+
+@c =====================================================================
+
+@c BEGIN Keep roughly parallel with roff(7) section "Concepts".
+@node Text, Measurements, GNU troff Reference, GNU troff Reference
+@section Text
+@cindex text, GNU @code{troff} processing
+
+@acronym{AT&T} @code{troff} was designed to take input as it would be
+composed on a typewriter, including the teletypewriters used as early
+computer terminals, and relieve the user drafting a document of concern
+with details like line length, hyphenation breaking, and the achievement
+of straight margins. Early in its development, the program gained the
+ability to prepare output for a phototypesetter; a document could then
+be prepared for output to either a teletypewriter, a phototypesetter, or
+both. GNU @code{troff} continues this tradition of permitting an author
+to compose a single master version of a document which can then be
+rendered for a variety of output formats or devices.
+
+@code{roff} input files contain text interspersed with instructions to
+control the formatter. Even in the absence of such instructions, GNU
+@code{troff} still processes its input in several ways, by filling,
+hyphenating, breaking, and adjusting it, and supplementing it with
+inter-sentence space.
+
+@menu
+* Filling::
+* Hyphenation::
+* Sentences::
+* Breaking::
+* Adjustment::
+* Tabs and Leaders::
+* Requests and Macros::
+* Macro Packages::
+* Input Encodings::
+* Input Conventions::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Filling, Sentences, Text, Text
+@subsection Filling
+
+When GNU @code{troff} starts up, it obtains information about the device
+for which it is preparing output.@footnote{@xref{Device and Font
+Description Files}.} An essential property is the length of the output
+line, such as ``6.5 inches''.
+
+@cindex word, definition of
+@cindex filling
+GNU @code{troff} interprets plain text files employing the Unix
+line-ending convention. It reads input a character at a time,
+collecting words as it goes, and fits as many words together on an
+output line as it can---this is known as @dfn{filling}. To GNU
+@code{troff}, a @dfn{word} is any sequence of one or more characters
+that aren't spaces or newlines. The exceptions separate
+words.@footnote{@slanted{Tabs} and @slanted{leaders} also separate
+words. @slanted{Escape sequences} can function as word characters, word
+separators, or neither---the last simply have no effect on GNU
+@code{troff}'s idea of whether an input character is within a word.
+We'll discuss all of these in due course.} To disable filling, see
+@ref{Manipulating Filling and Adjustment}.
+
+@Example
+It is a truth universally acknowledged
+that a single man in possession of a
+good fortune must be in want of a wife.
+ @result{} It is a truth universally acknowledged that a
+ @result{} single man in possession of a good fortune must
+ @result{} be in want of a wife.
+@endExample
+
+@c ---------------------------------------------------------------------
+
+@node Sentences, Hyphenation, Filling, Text
+@subsection Sentences
+@cindex sentences
+
+A passionate debate has raged for decades among writers of the English
+language over whether more space should appear between adjacent
+sentences than between words within a sentence, and if so, how much, and
+what other circumstances should influence this spacing.@footnote{A
+well-researched jeremiad appreciated by @code{groff} contributors on
+both sides of the sentence-spacing debate can be found at
+@uref{https://web.archive.org@//web@//20171217060354@//http://www.heracliteanriver.com@//?p=324}.}
+GNU @code{troff} follows the example of @acronym{AT&T} @code{troff};
+it attempts to detect the boundaries between sentences, and supplies
+additional inter-sentence space between them.
+
+@Example
+Hello, world!
+Welcome to groff.
+ @result{} Hello, world! Welcome to groff.
+@endExample
+
+@cindex end-of-sentence characters
+@cindex sentence space
+@cindex space between sentences
+@cindex French spacing
+GNU @code{troff} flags certain characters (normally @samp{!}, @samp{?},
+and @samp{.}) as potentially ending a sentence. When GNU @code{troff}
+encounters one of these @dfn{end-of-sentence characters} at the end of
+an input line, or one of them is followed by two (unescaped) spaces on
+the same input line, it appends an inter-word space followed by an
+inter-sentence space in the output.
+
+@Example
+R. Harper subscribes to a maxim of P. T. Barnum.
+ @result{} R. Harper subscribes to a maxim of P. T. Barnum.
+@endExample
+
+In the above example, inter-sentence space is not added after @samp{P.}
+or @samp{T.} because the periods do not occur at the end of an input
+line, nor are they followed by two or more spaces. Let's imagine that
+we've heard something about defamation from Mr.@: Harper's attorney,
+recast the sentence, and reflowed it in our text editor.
+
+@Example
+I submit that R. Harper subscribes to a maxim of P. T.
+Barnum.
+ @result{} I submit that R. Harper subscribes to a maxim of
+ @result{} P. T. Barnum.
+@endExample
+
+``Barnum'' doesn't begin a sentence! What to do? Let us meet our first
+@dfn{escape sequence}, a series of input characters that give
+instructions to GNU @code{troff} instead of being used to construct
+output device glyphs.@footnote{This statement oversimplifies; there are
+escape sequences whose purpose is precisely to produce glyphs on the
+output device, and input characters that @emph{aren't} part of escape
+sequences can undergo a great deal of processing before getting to the
+output.} An escape sequence begins with the backslash character @code{\}
+by default, an uncommon character in natural language text, and is
+@emph{always} followed by at least one other character, hence the term
+``sequence''.
+
+@cindex @code{\&}, at end of sentence
+The dummy character escape sequence @code{\&} can be used after an
+end-of-sentence character to defeat end-of-sentence detection on a
+per-instance basis. We can therefore rewrite our input more
+defensively.
+
+@Example
+I submit that R.\& Harper subscribes to a maxim of P.\&
+T.\& Barnum.
+ @result{} I submit that R. Harper subscribes to a maxim of
+ @result{} P. T. Barnum.
+@endExample
+
+Adding text caused our input to wrap; now, we don't need @code{\&} after
+@samp{T.} but we do after @samp{P.}. Consistent use of the escape
+sequence ensures that potential sentence boundaries are robust to
+editing activities. Further advice along these lines will follow in
+@ref{Input Conventions}.
+
+@cindex end-of-sentence transparent characters
+@cindex characters, end-of-sentence transparent
+@cindex @code{dg} glyph, at end of sentence
+@cindex @code{dd} glyph, at end of sentence
+@cindex @code{rq} glyph, at end of sentence
+@cindex @code{cq} glyph, at end of sentence
+@cindex @code{"}, at end of sentence
+@cindex @code{'}, at end of sentence
+@cindex @code{)}, at end of sentence
+@cindex @code{]}, at end of sentence
+@cindex @code{*}, at end of sentence
+@cindex special characters
+@cindex characters, special
+Normally, the occurrence of a visible non-end-of-sentence character (as
+opposed to a space or tab) immediately after an end-of-sentence
+character cancels detection of the end of a sentence. For example, it
+would be incorrect for GNU @code{troff} to infer the end of a sentence
+after the dot in @samp{3.14159}. However, several characters are
+treated @emph{transparently} after the occurrence of an end-of-sentence
+character. That is, GNU @code{troff} does not cancel end-of-sentence
+detection when it processes them. This is because such characters are
+often used as footnote markers or to close quotations and
+parentheticals. The default set is @samp{"}, @samp{'}, @samp{)},
+@samp{]}, @samp{*}, @code{\[dg]}, @code{\[dd]}, @code{\[rq]}, and
+@code{\[cq]}. The last four are examples of @dfn{special characters},
+escape sequences whose purpose is to obtain glyphs that are not easily
+typed at the keyboard, or which have special meaning to GNU @code{troff}
+(like @code{\} itself).@footnote{The mnemonics for the special
+characters shown here are ``dagger'', ``double dagger'', ``right
+(double) quote'', and ``closing (single) quote''. See the
+@cite{groff_char@r{(7)}} man page.}
+
+@Example
+\[lq]The idea that the poor should have leisure has always
+been shocking to the rich.\[rq]
+(Bertrand Russell, 1935)
+@c XXX: @iftex puts a blank line on the output. This seems like a bug.
+@c @newline works around it. But we need a weird inverse indent.
+@iftex @
+ @result{} @quotedblleft{}The idea that the poor should have
+ @result{} leisure has always been shocking to
+ @result{} the rich.@quotedblright{} (Bertrand Russell, 1935)
+@end iftex
+@ifnottex
+ @result{} "The idea that the poor should have
+ @result{} leisure has always been shocking to
+ @result{} the rich." (Bertrand Russell, 1935)
+@end ifnottex
+@endExample
+
+The sets of characters that potentially end sentences or are transparent
+to sentence endings are configurable. See the @code{cflags} request in
+@ref{Using Symbols}. To change the additional inter-sentence space
+amount---even to remove it entirely---see @ref{Manipulating Filling and
+Adjustment}.
+
+@c ---------------------------------------------------------------------
+
+@node Hyphenation, Breaking, Sentences, Text
+@subsection Hyphenation
+@cindex hyphenation
+
+When an output line is nearly full, it is uncommon for the next word
+collected from the input to exactly fill it---typically, there is room
+left over only for part of the next word. The process of splitting a
+word so that it appears partially on one line (with a hyphen to indicate
+to the reader that the word has been broken) with its remainder on the
+next is @dfn{hyphenation}. Hyphenation points can be manually
+specified; GNU @code{troff} also uses a hyphenation algorithm and
+language-specific pattern files (based on those used in @TeX{}) to
+decide which words can be hyphenated and where.
+
+Hyphenation does not always occur even when the hyphenation rules for a
+word allow it; it can be disabled, and when not disabled there are
+several parameters that can prevent it in certain circumstances.
+@xref{Manipulating Hyphenation}.
+
+@c ---------------------------------------------------------------------
+
+@node Breaking, Adjustment, Hyphenation, Text
+@subsection Breaking
+@cindex break
+@cindex implicit line break
+@cindex line break, output
+@cindex output line break
+
+Once an output line is full, the next word (or remainder of a hyphenated
+one) is placed on a different output line; this is called a @dfn{break}.
+In this manual and in @code{roff} discussions generally, a ``break'' if
+not further qualified always refers to the termination of an output
+line. When the formatter is filling text, it introduces breaks
+automatically to keep output lines from exceeding the configured line
+length. After an automatic break, GNU @code{troff} adjusts the line if
+applicable (see below), and then resumes collecting and filling text on
+the next output line.
+
+Sometimes, a line cannot be broken automatically. This usually does
+not happen with natural language text unless the output line length has
+been manipulated to be extremely short, but it can with specialized
+text like program source code. We can use @code{perl} at the shell
+prompt to contrive an example of failure to break the line. We also
+employ the @option{-z} option to suppress normal output.
+
+@Example
+$ perl -e 'print "#" x 80, "\n";' | nroff -z
+ @error{} warning: cannot break line
+@endExample
+
+The remedy for these cases is to tell GNU @code{troff} where the line
+may be broken without hyphens. This is done with the non-printing break
+point escape sequence @samp{\:}; see @ref{Manipulating Hyphenation}.
+
+@cindex blank line
+@cindex empty line
+@cindex line, blank
+@cindex blank line macro (@code{blm})
+What if the document author wants to stop filling lines temporarily, for
+instance to start a new paragraph? There are several solutions. A
+blank input line not only causes a break, but by default it also outputs
+a one-line vertical space (effectively a blank output line). This
+behavior can be modified; see @ref{Blank Line Traps}. Macro packages
+may discourage or disable the blank line method of paragraphing in favor
+of their own macros.
+
+@cindex leading spaces
+@cindex spaces, leading and trailing
+@cindex trailing spaces on text lines
+@cindex leading space macro (@code{lsm})
+A line that begins with one or more spaces causes a break. The spaces
+are output at the beginning of the next line without being
+@emph{adjusted} (see below); however, this behavior can be modified
+(@pxref{Leading Space Traps}). Again, macro packages may provide other
+methods of producing indented paragraphs. Trailing spaces on text lines
+are discarded.@footnote{``Text lines'' are defined in @ref{Requests and
+Macros}.}
+
+What if the file ends before enough words have been collected to fill an
+output line? Or the output line is exactly full but not yet broken, and
+there is no more input? GNU @code{troff} interprets the end of input as
+a break. Certain requests also cause breaks, implicitly or explicitly.
+This is discussed in @ref{Manipulating Filling and Adjustment}.
+
+@c ---------------------------------------------------------------------
+
+@node Adjustment, Tabs and Leaders, Breaking, Text
+@subsection Adjustment
+
+@cindex extra spaces between words
+After GNU @code{troff} performs an automatic break, it may then
+@dfn{adjust} the line, widening inter-word spaces until the text reaches
+the right margin. Extra spaces between words are preserved. Leading
+and trailing spaces are handled as noted above. Text can be aligned to
+the left or right margin only, or centered; see @ref{Manipulating
+Filling and Adjustment}.
+@c END Keep roughly parallel with roff(7) section "Concepts".
+
+@c ---------------------------------------------------------------------
+
+@node Tabs and Leaders, Input Conventions, Adjustment, Text
+@subsection Tabs and Leaders
+
+@cindex horizontal tab character
+@cindex tab character
+@cindex character, horizontal tab
+@cindex leader character
+@cindex character, leader
+@cindex tab stops
+@cindex stops, tab
+GNU @code{troff} translates input horizontal tab characters (``tabs'')
+and @key{Control+A} characters (``leaders'') into movements to the next
+tab stop. Tabs simply move to the next tab stop; leaders place enough
+periods to fill the space. Tab stops are by default located every half
+inch measured from the drawing position corresponding to the beginning
+of the input line; see @ref{Page Geometry}. Tabs and leaders do not
+cause breaks and therefore do not interrupt filling. Below, we use
+arrows @arrow{} and bullets @bullet{} to indicate input tabs and
+leaders, respectively.
+
+@Example
+1
+@arrow{} 2 @arrow{} 3 @bullet{} 4
+@arrow{} @bullet{} 5
+@result{} 1 2 3.......4 ........5
+@endExample
+
+Tabs and leaders lend themselves to table construction.@footnote{``Tab''
+is short for ``tabulation'', revealing the term's origin as a spacing
+mechanism for table arrangement.} The tab and leader glyphs can be
+configured, and further facilities for sophisticated table composition
+are available; see @ref{Tabs and Fields}. There are many details to
+track when using such low-level features, so most users turn to the
+@cite{tbl@r{(1)}} preprocessor to lay out tables.
+
+@c ---------------------------------------------------------------------
+
+@node Requests and Macros, Macro Packages, Tabs and Leaders, Text
+@subsection Requests and Macros
+
+We have now encountered almost all of the syntax there is in the
+@code{roff} language, with an exception already noted in passing.
+@cindex request
+@cindex control character (@code{.})
+@cindex character, control (@code{.})
+@cindex no-break control character (@code{'})
+@cindex character, no-break control (@code{'})
+@cindex control character, no-break (@code{'})
+A @dfn{request} is an instruction to the formatter that occurs after a
+@dfn{control character}, which is recognized at the beginning of an
+input line. The regular control character is a dot (@code{.}). Its
+counterpart, the @dfn{no-break control character}, a neutral apostrophe
+(@code{'}), suppresses the break that is implied by some requests.
+These characters were chosen because it is uncommon for lines of text in
+natural languages to begin with them.
+@cindex dummy character (@code{\&}), as control character suppressor
+@cindex character, dummy (@code{\&}), as control character suppressor
+If you require a formatted period or apostrophe (closing single
+quotation mark) where GNU @code{troff} is expecting a control character,
+prefix the dot or neutral apostrophe with the dummy character escape
+sequence, @samp{\&}.
+
+@cindex control line
+An input line beginning with a control character is called a
+@dfn{control line}.
+@cindex text line
+Every line of input that is not a control line is a @dfn{text
+line}.@footnote{The @code{\@key{RET}} escape sequence can alter how an
+input line is classified; see @ref{Line Continuation}.}
+
+@cindex argument
+Requests often take @dfn{arguments}, words (separated from the request
+name and each other by spaces) that specify details of the action GNU
+@code{troff} is expected to perform. If a request is meaningless
+without arguments, it is typically ignored.
+
+GNU @code{troff}'s requests and escape sequences comprise the control
+language of the formatter. Of key importance are the requests that
+define macros. Macros are invoked like requests, enabling the request
+repertoire to be extended or overridden.@footnote{Argument handling in
+macros is more flexible but also more complex. @xref{Calling Macros}.}
+
+@cindex macro
+@cindex calling a macro
+@cindex interpolation
+A @dfn{macro} can be thought of as an abbreviation you can define for a
+collection of control and text lines. When the macro is @dfn{called} by
+giving its name after a control character, it is replaced with what it
+stands for. The process of textual replacement is known as
+@dfn{interpolation}.@footnote{Some escape sequences undergo
+interpolation as well.} Interpolations are handled as soon as they are
+recognized, and once performed, a @code{roff} formatter scans the
+replacement for further requests, macro calls, and escape sequences.
+
+In @code{roff} systems, the @code{de} request defines a
+macro.@footnote{GNU @code{troff} offers additional ones. @xref{Writing
+Macros}.}
+
+@Example
+.de DATE
+2020-11-14
+..
+@endExample
+
+@noindent
+The foregoing input produces no output by itself; all we have done is
+store some information. Observe the pair of dots that ends the macro
+definition. This is a default; you can specify your own terminator for
+the macro definition as the second argument to the @code{de} request.
+
+@Example
+.de NAME ENDNAME
+Heywood Jabuzzoff
+.ENDNAME
+@endExample
+
+In fact, the ending marker is itself the name of a macro to be
+called, or a request to be invoked, if it is defined at the time its
+control line is read.
+
+@Example
+.de END
+Big Rip
+..
+.de START END
+Big Bang
+.END
+.START
+ @result{} Big Rip Big Bang
+@endExample
+
+@noindent
+In the foregoing example, ``Big Rip'' printed before ``Big Bang''
+because its macro was @emph{called} first. Consider what would happen
+if we dropped @code{END} from the @samp{.de START} line and added
+@code{..} after @code{.END}. Would the order change?
+
+Let us consider a more elaborate example.
+
+@Example
+.de DATE
+2020-10-05
+..
+.
+.de BOSS
+D.\& Kruger,
+J.\& Peterman
+..
+.
+.de NOTICE
+Approved:
+.DATE
+by
+.BOSS
+..
+.
+Insert tedious regulatory compliance paragraph here.
+
+.NOTICE
+
+Insert tedious liability disclaimer paragraph here.
+
+.NOTICE
+ @result{} Insert tedious regulatory compliance paragraph here.
+ @result{}
+ @result{} Approved: 2020-10-05 by D. Kruger, J. Peterman
+ @result{}
+ @result{} Insert tedious liability disclaimer paragraph here.
+ @result{}
+ @result{} Approved: 2020-10-05 by D. Kruger, J. Peterman
+@endExample
+
+@noindent
+The above document started with a series of control lines. Three macros
+were defined, with a @code{de} request declaring each macro's name, and
+the ``body'' of the macro starting on the next line and continuing until
+a line with two dots @samp{@code{..}} marked its end. The text proper
+began only after the macros were defined; this is a common pattern.
+Only the @code{NOTICE} macro was called ``directly'' by the document;
+@code{DATE} and @code{BOSS} were called only by @code{NOTICE} itself.
+Escape sequences were used in @code{BOSS}, two levels of macro
+interpolation deep.
+
+The advantage in typing and maintenance economy may not be obvious from
+such a short example, but imagine a much longer document with dozens of
+such paragraphs, each requiring a notice of managerial approval.
+Consider what must happen if you are in charge of generating a new
+version of such a document with a different date, for a different boss.
+With well-chosen macros, you only have to change each datum in one
+place.
+
+In practice, we would probably use strings (@pxref{Strings}) instead of
+macros for such simple interpolations; what is important here is to
+glimpse the potential of macros and the power of recursive
+interpolation.
+
+We could have defined @code{DATE} and @code{BOSS} in the opposite order;
+perhaps less obviously, we could also have defined them @emph{after}
+@code{NOTICE}. ``Forward references'' like this are acceptable because
+the body of a macro definition is not (completely) interpreted, but
+stored instead (@pxref{Copy Mode}). While a macro is being defined (or
+appended to), requests are not interpreted and macros not interpolated,
+whereas some commonly used escape sequences @emph{are} interpreted.
+@code{roff} systems also support recursive macro calls, as long as you
+have a way to break the recursion (@pxref{Conditionals and Loops}).
+Maintainable @code{roff} documents tend to arrange macro definitions to
+minimize forward references.
+
+@c ---------------------------------------------------------------------
+
+@node Macro Packages, Input Encodings, Requests and Macros, Text
+@subsection Macro Packages
+@cindex macro package
+@cindex package, macro
+
+@c TODO: Consider parallelizing with groff_tmac(5) "Description".
+Macro definitions can be collected into @dfn{macro files}, @code{roff}
+input files designed to produce no output themselves but instead ease
+the preparation of other @code{roff} documents. There is no syntactical
+difference between a macro file and any other @code{roff} document; only
+its purpose distinguishes it. When a macro file is installed at a
+standard location and suitable for use by a general audience, it is
+often termed a @dfn{macro package}.@footnote{Macro files and packages
+frequently define registers and strings as well.} Macro packages can be
+loaded by supplying the @option{-m} option to GNU @command{troff} or a
+@code{groff} front end. Alternatively, a document requiring a macro
+package can load it with the @code{mso} (``macro source'') request.
+
+@c ---------------------------------------------------------------------
+
+@c TODO: Move a lot of this node to the "Invoking groff" chapter. Some
+@c of the discussion is better placed in discussion of output drivers
+@c (e.g., what character encodings _they_ support for output and their
+@c responsibility for converting to them) as well.
+
+@node Input Encodings, Input Conventions, Macro Packages, Text
+@subsection Input Encodings
+
+The @command{groff} command's @option{-k} option calls the
+@command{preconv} preprocessor to perform input character encoding
+conversions. Input to the GNU @code{troff} formatter itself, on the
+other hand, must be in one of two encodings it can recognize.
+
+@table @code
+@item cp1047
+@cindex encoding, input, @acronym{EBCDIC}
+@cindex @acronym{EBCDIC}, input encoding
+@cindex input encoding, @acronym{EBCDIC}
+@cindex encoding, input, code page 1047
+@cindex code page 1047, input encoding
+@cindex input encoding, code page 1047
+@cindex IBM code page 1047 input encoding
+@pindex cp1047.tmac
+The code page 1047 input encoding works only on @acronym{EBCDIC}
+platforms (and conversely, the other input encodings don't work with
+@acronym{EBCDIC}); the file @file{cp1047.tmac} is loaded at startup.
+
+@item latin1
+@cindex encoding, input, @w{Latin-1} (ISO @w{8859-1})
+@cindex @w{Latin-1} (ISO @w{8859-1}), input encoding
+@cindex ISO @w{8859-1} (@w{Latin-1}), input encoding
+@cindex input encoding, @w{Latin-1} (ISO @w{8859-1})
+@pindex latin1.tmac
+ISO @w{Latin-1}, an encoding for Western European languages, is the
+default input encoding on non-@acronym{EBCDIC} platforms; the file
+@file{latin1.tmac} is loaded at startup.
+@end table
+
+@noindent
+Any document that is encoded in ISO 646:1991 (a descendant of USAS
+@w{X3.4-1968} or ``US-ASCII''), or, equivalently, uses only code points
+from the ``C0 Controls'' and ``Basic Latin'' parts of the Unicode
+character set is also a valid ISO @w{Latin-1} document; the standards
+are interchangeable in their first 128 code points.@footnote{The
+@emph{semantics} of certain punctuation code points have gotten stricter
+with the successive standards, a cause of some frustration among man
+page writers; see the @cite{groff_char@r{(7)}} man page.}
+
+Other encodings are supported by means of macro packages.
+
+@table @code
+@item latin2
+@cindex encoding, input, @w{Latin-2} (ISO @w{8859-2})
+@cindex @w{Latin-2} (ISO @w{8859-2}), input encoding
+@cindex ISO @w{8859-2} (@w{Latin-2}), input encoding
+@cindex input encoding, @w{Latin-2} (ISO @w{8859-2})
+@pindex latin2.tmac
+To use ISO @w{Latin-2}, an encoding for Central and Eastern European
+languages, invoke @w{@samp{.mso latin2.tmac}} at the beginning of your
+document or supply @samp{-mlatin2} as a command-line argument to
+@code{groff}.
+
+@item latin5
+@cindex encoding, input, @w{Latin-5} (ISO @w{8859-9})
+@cindex @w{Latin-5} (ISO @w{8859-9}), input encoding
+@cindex ISO @w{8859-9} (@w{Latin-5}), input encoding
+@cindex input encoding, @w{Latin-5} (ISO @w{8859-9})
+@pindex latin5.tmac
+To use ISO @w{Latin-5}, an encoding for the Turkish language, invoke
+@w{@samp{.mso latin5.tmac}} at the beginning of your document or
+supply @samp{-mlatin5} as a command-line argument to @code{groff}.
+
+@item latin9
+@cindex encoding, input, @w{Latin-9} (ISO @w{8859-15})
+@cindex @w{Latin-9} (ISO @w{8859-15}), input encoding
+@cindex ISO @w{8859-15} (@w{Latin-9}), input encoding
+@cindex input encoding, @w{Latin-9} (ISO @w{8859-15})
+@pindex latin9.tmac
+ISO @w{Latin-9} succeeds @w{Latin-1}; it includes a Euro sign and better
+glyph coverage for French. To use this encoding, invoke @w{@samp{.mso
+latin9.tmac}} at the beginning of your document or supply
+@samp{-mlatin9} as a command-line argument to @code{groff}.
+@end table
+
+Some characters from an input encoding may not be available with a
+particular output driver, or their glyphs may not have representation in
+the font used. For terminal devices, fallbacks are defined, like
+@samp{EUR} for the Euro sign and @samp{(C)} for the copyright sign. For
+typesetter devices, you may need to ``mount'' fonts that support glyphs
+required by the document. @xref{Font Positions}.
+
+@pindex freeeuro.pfa
+@pindex ec.tmac
+Because a Euro glyph was not historically defined in PostScript fonts,
+@code{groff} comes with a font called @file{freeeuro.pfa} that provides
+the Euro in several styles. Standard PostScript fonts contain the
+glyphs from @w{Latin-5} and @w{Latin-9} that @w{Latin-1} lacks, so these
+encodings are supported for the @option{ps} and @option{pdf} output
+devices as @code{groff} ships, while @w{Latin-2} is not.
+
+Unicode supports characters from all other input encodings; the
+@option{utf8} output driver for terminals therefore does as well. The
+DVI output driver supports the @w{Latin-2} and @w{Latin-9} encodings if
+the command-line option @option{-mec} is used as well. @footnote{The
+DVI output device defaults to using the Computer Modern (CM) fonts;
+@file{ec.tmac} loads the EC fonts instead, which provide Euro
+@samp{\[Eu]} and per mille @samp{\[%0]} glyphs.}
+
+@c ---------------------------------------------------------------------
+
+@node Input Conventions, , Input Encodings, Text
+@subsection Input Conventions
+@cindex input conventions
+@cindex conventions for input
+
+Since GNU @code{troff} fills text automatically, it is common practice
+in the @code{roff} language to avoid visual composition of text in input
+files: the esthetic appeal of the formatted output is what matters.
+Therefore, @code{roff} input should be arranged such that it is easy for
+authors and maintainers to compose and develop the document, understand
+the syntax of @code{roff} requests, macro calls, and preprocessor
+languages used, and predict the behavior of the formatter. Several
+traditions have accrued in service of these goals.
+
+@itemize @bullet
+@item
+Follow sentence endings in the input with newlines to ease their
+recognition (@pxref{Sentences}). It is frequently convenient to end
+text lines after colons and semicolons as well, as these typically
+precede independent clauses. Consider doing so after commas; they often
+occur in lists that become easy to scan when itemized by line, or
+constitute supplements to the sentence that are added, deleted, or
+updated to clarify it. Parenthetical and quoted phrases are also good
+candidates for placement on text lines by themselves.
+
+@item
+Set your text editor's line length to 72 characters or
+fewer.@footnote{Emacs: @code{fill-column: 72}; Vim: @code{textwidth=72}}
+This limit, combined with the previous item of advice, makes it less
+common that an input line will wrap in your text editor, and thus will
+help you perceive excessively long constructions in your text. Recall
+that natural languages originate in speech, not writing, and that
+punctuation is correlated with pauses for breathing and changes in
+prosody.
+
+@item
+Use @code{\&} after @samp{!}, @samp{?}, and @samp{.} if they are
+followed by space, tab, or newline characters and don't end a sentence.
+
+@item
+In filled text lines, use @code{\&} before @samp{.} and @samp{'} if they
+are preceded by space, so that reflowing the input doesn't turn them
+into control lines.
+
+@item
+Do not use spaces to perform indentation or align columns of a table.
+Leading spaces are reliable when text is not being filled.
+
+@item
+Comment your document. It is never too soon to apply comments to
+record information of use to future document maintainers (including your
+future self). We thus introduce another escape sequence, @code{\"},
+which causes GNU @code{troff} to ignore the remainder of the input line.
+
+@item
+Use the empty request---a control character followed immediately by a
+newline---to visually manage separation of material in input files.
+Many of the @code{groff} project's own documents use an empty request
+between sentences, after macro definitions, and where a break is
+expected, and two empty requests between paragraphs or other requests or
+macro calls that will introduce vertical space into the document.
+
+You can combine the empty request with the comment escape sequence to
+include whole-line comments in your document, and even ``comment out''
+sections of it.
+@end itemize
+
+We conclude this section with an example sufficiently long to illustrate
+most of the above suggestions in practice. For the purpose of fitting
+the example between the margins of this manual with the font used for
+its typeset version, we have shortened the input line length to 56
+columns. As before, an arrow @arrow{} indicates a tab character.
+
+@c Wrap example at 56 columns (not counting @arrow{}).
+@CartoucheExample
+.\" nroff this_file.roff | less
+.\" groff -T ps this_file.roff > this_file.ps
+@arrow{}The theory of relativity is intimately connected with
+the theory of space and time.
+.
+I shall therefore begin with a brief investigation of
+the origin of our ideas of space and time,
+although in doing so I know that I introduce a
+controversial subject. \" remainder of paragraph elided
+.
+.
+
+@arrow{}The experiences of an individual appear to us arranged
+in a series of events;
+in this series the single events which we remember
+appear to be ordered according to the criterion of
+\[lq]earlier\[rq] and \[lq]later\[rq], \" punct swapped
+which cannot be analysed further.
+.
+There exists,
+therefore,
+for the individual,
+an I-time,
+or subjective time.
+.
+This itself is not measurable.
+.
+I can,
+indeed,
+associate numbers with the events,
+in such a way that the greater number is associated with
+the later event than with an earlier one;
+but the nature of this association may be quite
+arbitrary.
+.
+This association I can define by means of a clock by
+comparing the order of events furnished by the clock
+with the order of a given series of events.
+.
+We understand by a clock something which provides a
+series of events which can be counted,
+and which has other properties of which we shall speak
+later.
+.\" Albert Einstein, _The Meaning of Relativity_, 1922
+@endCartoucheExample
+
+@node Page Geometry, Measurements, Text, GNU troff Reference
+@section Page Geometry
+@cindex page, geometry of
+@cindex geometry, page
+
+@code{roff} systems format text under certain assumptions about the size
+of the output medium, or page. For the formatter to correctly break a
+line it is filling, it must know the line length, which it derives from
+the page width (@pxref{Line Layout}). For it to decide whether to write
+an output line to the current page or wait until the next one, it must
+know the page length (@pxref{Page Layout}).
+
+@cindex device resolution
+@cindex resolution, device
+@cindex basic units
+@cindex units, basic
+@cindex machine units
+@cindex units, machine
+A device's @dfn{resolution} converts practical units like inches or
+centimeters to @dfn{basic units}, a convenient length measure for the
+output device or file format. The formatter and output driver use basic
+units to reckon page measurements. The device description file defines
+its resolution and page dimensions (@pxref{DESC File Format}).
+
+@cindex page
+A @dfn{page} is a two-dimensional structure upon which a @code{roff}
+system imposes a rectangular coordinate system with its upper left
+corner as the origin. Coordinate values are in basic units and increase
+down and to the right. Useful ones are therefore always positive and
+within numeric ranges corresponding to the page boundaries.
+
+@cindex drawing position
+@cindex position, drawing
+While the formatter (and, later, output driver) is processing a page, it
+keeps track of its @dfn{drawing position}, which is the location at
+which the next glyph will be written, from which the next motion will be
+measured, or where a geometric object will commence rendering.
+@cindex text baseline
+@cindex baseline, text
+Notionally, glyphs are drawn from the text baseline upward and to the
+right.@footnote{@code{groff} does not yet support right-to-left
+scripts.} The @dfn{text baseline} is a (usually invisible) line upon
+which the glyphs of a typeface are aligned. A glyph therefore
+``starts'' at its bottom-left corner. If drawn at the origin, a typical
+letter glyph would lie partially or wholly off the page, depending on
+whether, like ``g'', it features a descender below the baseline.
+
+@cindex page offset
+@cindex offset, page
+Such a situation is nearly always undesirable. It is furthermore
+conventional not to write or draw at the extreme edges of the page.
+Therefore the initial drawing position of a @code{roff} formatter is not
+at the origin, but below and to the right of it. This rightward shift
+from the left edge is known as the @dfn{page
+offset}.@footnote{@code{groff}'s terminal output devices have page
+offsets of zero.} The downward shift leaves room for a text output
+line.
+
+Text is arranged on a one-dimensional lattice of text baselines from the
+top to the bottom of the page.
+@cindex vertical spacing
+@cindex spacing, vertical
+@cindex vee
+@dfn{Vertical spacing} is the distance between adjacent text baselines.
+Typographic tradition sets this quantity to 120% of the type size. The
+initial drawing position is one unit of vertical spacing below the page
+top. Typographers term this unit a @slanted{vee}.
+
+@cindex page break
+@cindex break, page
+@cindex page ejection
+@cindex ejection, page
+Vertical spacing has an impact on page-breaking decisions. Generally,
+when a break occurs, the formatter moves the drawing position to the
+next text baseline automatically. If the formatter were already writing
+to the last line that would fit on the page, advancing by one vee would
+place the next text baseline off the page. Rather than let that happen,
+@code{roff} formatters instruct the output driver to eject the page,
+start a new one, and again set the drawing position to one vee below the
+page top; this is a @dfn{page break}.
+
+When the last line of input text corresponds to the last output line
+that fits on the page, the break caused by the end of input will also
+break the page, producing a useless blank one. Macro packages keep
+users from having to confront this difficulty by setting ``traps''
+(@pxref{Traps}); moreover, all but the simplest page layouts tend to
+have headers and footers, or at least bear vertical margins larger than
+one vee.
+
+
+@c =====================================================================
+@c TODO: Add a section here about interpolations and input processing.
+@c
+@c We need to level up the reader's macro brain from reasoning about
+@c interpolation at the scope of input lines to interpolations _within_
+@c lines. It is also a good time to introduce the \n and \* escape
+@c sequences to avoid painful, "WTF"-producing forward references later.
+@c Some materal from groff_mm(7) might be adaptable to this purpose.
+@c
+@c Earlier material from @Defesc{\\n}:
+@c "This means that the value of the register is expanded in place while
+@c GNU @code{troff} is parsing the input line. Nested assignments (also
+@c called indirect assignments) are possible."
+@c
+@c We can probably drop the term "indirect assignments"; there's nothing
+@c special about these--they are a consequence of *roffs' left-to-right
+@c parsing and they apply to escape sequences in general.
+@c =====================================================================
+
+@c BEGIN Keep (roughly) parallel with section "Measurements" of
+@c groff(7).
+@node Measurements, Numeric Expressions, Text, GNU troff Reference
+@section Measurements
+@cindex measurements
+@cindex scaling indicator
+@cindex indicator, scaling
+
+@cindex units of measurement
+@cindex measurement units
+The formatter sometimes requires the input of numeric parameters to
+specify measurements. These are specified as integers or decimal
+fractions with an optional @dfn{scaling unit} suffixed. A scaling unit
+is a letter that immediately follows the last digit of a number. Digits
+after the decimal point are optional. Measurement expressions include
+@samp{10.5p}, @samp{11i}, and @samp{3.c}.
+
+@cindex basic units, conversion to
+@cindex units, basic, conversion to
+@cindex conversion to basic units
+Measurements are scaled by the scaling unit and stored internally (with
+any fractional part discarded) in basic units.
+@cindex device resolution, obtaining in the formatter
+@cindex resolution, device, obtaining in the formatter
+The device resolution can therefore be obtained by storing a value of
+@samp{1i} to a register. The only constraint on the basic unit is that
+it is at least as small as any other unit.
+@c That's a fib. A device resolution of around 2^31 would surely also
+@c cause problems. But nobody does that.
+
+@table @code
+@cindex basic scaling unit (@code{u})
+@cindex @code{u} scaling unit
+@cindex unit, scaling, @code{u}
+@cindex scaling unit @code{u}
+@item u
+Basic unit.
+
+@item i
+@cindex inch scaling unit (@code{i})
+@cindex @code{i} scaling unit
+@cindex unit, scaling, @code{i}
+@cindex scaling unit @code{i}
+Inch; defined as 2.54@tie{}centimeters.
+
+@item c
+@cindex centimeter scaling unit (@code{c})
+@cindex @code{c} scaling unit
+@cindex unit, scaling, @code{c}
+@cindex scaling unit @code{c}
+Centimeter; a centimeter is about 0.3937@tie{}inches.
+
+@item p
+@cindex point scaling unit (@code{p})
+@cindex @code{p} scaling unit
+@cindex unit, scaling, @code{p}
+@cindex scaling unit @code{p}
+Point; a typesetter's unit used for measuring type size.
+There are 72@tie{}points to an inch.
+
+@item P
+@cindex pica scaling unit (@code{P})
+@cindex @code{P} scaling unit
+@cindex unit, scaling, @code{P}
+@cindex scaling unit @code{P}
+Pica; another typesetter's unit. There are 6@tie{}picas to an inch and
+12@tie{}points to a pica.
+
+@item s
+@itemx z
+@xref{Using Fractional Type Sizes}, for a discussion of these units.
+
+@item f
+GNU @code{troff} defines this unit to scale decimal fractions in the
+interval [0, 1] to 16-bit unsigned integers. It multiplies a quantity
+by 65,536. @xref{Colors}, for usage.
+@end table
+
+The magnitudes of other scaling units depend on the text formatting
+parameters in effect. These are useful when specifying measurements
+that need to scale with the typeface or vertical spacing.
+
+@table @code
+@item m
+@cindex em scaling unit (@code{m})
+@cindex @code{m} scaling unit
+@cindex unit, scaling, @code{m}
+@cindex scaling unit @code{m}
+Em; an em is equal to the current type size in points. It is named thus
+because it is approximately the width of the letter@tie{}@samp{M}.
+
+@item n
+@cindex en scaling unit (@code{n})
+@cindex @code{n} scaling unit
+@cindex unit, scaling, @code{n}
+@cindex scaling unit @code{n}
+En; an en is one-half em.
+
+@item v
+@cindex vertical space unit (@code{v})
+@cindex space, vertical, unit (@code{v})
+@cindex vee scaling unit (@code{v})
+@cindex @code{v} scaling unit
+@cindex unit, scaling, @code{v}
+@cindex scaling unit @code{v}
+Vee; recall @ref{Page Geometry}.
+
+@item M
+@cindex @code{M} scaling unit
+@cindex unit, scaling, @code{M}
+@cindex scaling unit @code{M}
+Hundredth of an em.
+@end table
+
+@menu
+* Motion Quanta::
+* Default Units::
+@end menu
+@c END Keep (roughly) parallel with section "Measurements" of groff(7).
+
+@c ---------------------------------------------------------------------
+
+@node Motion Quanta, Default Units, Measurements, Measurements
+@subsection Motion Quanta
+@cindex motion quanta
+@cindex quanta, motion
+
+@c BEGIN Keep (roughly) parallel with subsection "Motion quanta" of
+@c groff(7).
+An output device's basic unit @code{u} is not necessarily its smallest
+addressable length; @code{u} can be smaller to avoid problems with
+integer roundoff. The minimum distances that a device can work with in
+the horizontal and vertical directions are termed its @dfn{motion
+quanta}. Measurements are rounded to applicable motion quanta.
+Half-quantum fractions round toward zero.
+
+@cindex horizontal motion quantum register (@code{.H})
+@cindex motion quantum, horizontal, register (@code{.H})
+@cindex horizontal resolution register (@code{.H})
+@cindex resolution, horizontal, register (@code{.H})
+@DefregList {.H}
+@DefregListEndx {.V}
+These read-only registers interpolate the horizontal and vertical motion
+quanta, respectively, of the output device in basic units.
+@endDefreg
+
+For example, we might draw short baseline rules on a terminal device as
+follows. @xref{Drawing Geometric Objects}.
+
+@Example
+.tm \n[.H]
+ @error{} 24
+.nf
+\l'36u' 36u
+\l'37u' 37u
+ @result{} _ 36u
+ @result{} __ 37u
+@endExample
+@c END Keep (roughly) parallel with subsection "Motion quanta" of
+@c groff(7).
+
+@c ---------------------------------------------------------------------
+
+@node Default Units, , Motion Quanta, Measurements
+@subsection Default Units
+@cindex default units
+@cindex units, default
+
+@c BEGIN Keep (roughly) parallel with subsection "Default units" of
+@c groff(7).
+A general-purpose register (one created or updated with the @code{nr}
+request; see @pxref{Registers}) is implicitly dimensionless, or reckoned
+in basic units if interpreted in a measurement context. But it is
+convenient for many requests and escape sequences to infer a scaling
+unit for an argument if none is specified. An explicit scaling unit
+(not after a closing parenthesis) can override an undesirable default.
+Effectively, the default unit is suffixed to the expression if a scaling
+unit is not already present. GNU @code{troff}'s use of integer
+arithmetic should also be kept in mind (@pxref{Numeric Expressions}).
+
+The @code{ll} request interprets its argument in ems by default.
+Consider several attempts to set a line length of 3.5@tie{}inches when
+the type size is 10@tie{}points on a terminal device with a resolution
+of 240 basic units and horizontal motion quantum of 24. Some
+expressions become zero; the request clamps them to that quantum.
+
+@Example
+.ll 3.5i \" 3.5i (= 840u)
+.ll 7/2 \" 7u/2u -> 3u -> 3m -> 0, clamped to 24u
+.ll (7 / 2)u \" 7u/2u -> as above
+.ll 7/2i \" 7u/2i -> 7u/480u -> 0 -> as above
+.ll 7i/2 \" 7i/2u -> 1680u/2m -> 1680u/24u -> 35u
+.ll 7i/2u \" 3.5i (= 840u)
+@endExample
+
+@noindent
+@cindex measurements, specifying safely
+The safest way to specify measurements is to attach a scaling unit. To
+multiply or divide by a dimensionless quantity, use @samp{u} as its
+scaling unit.
+@c END Keep (roughly) parallel with subsection "Default units" of
+@c groff(7).
+
+
+@c =====================================================================
+
+@c BEGIN Keep (roughly) parallel with section "Numeric expressions" of
+@c groff(7).
+@node Numeric Expressions, Identifiers, Measurements, GNU troff Reference
+@section Numeric Expressions
+@cindex numeric expressions
+@cindex expressions, numeric
+
+A @dfn{numeric expression} evaluates to an integer:@: it can be as
+simple as a literal @samp{0} or it can be a complex sequence of register
+and string interpolations interleaved with measurements and operators.
+
+GNU @code{troff} provides a set of mathematical and logical operators
+familiar to programmers---as well as some unusual ones---but supports
+only integer arithmetic.@footnote{Provision is made for interpreting and
+reporting decimal fractions in certain cases.} The internal data type
+used for computing results is usually a 32-bit signed integer, which
+suffices to represent magnitudes within a range of ±2
+billion.@footnote{If that's not enough, see the @cite{groff_tmac@r{(5)}}
+man page for the @file{62bit.tmac} macro package.}
+
+@cindex arithmetic operators
+@cindex operators, arithmetic
+@cindex truncating division
+@cindex addition
+@cindex subtraction
+@cindex multiplication
+@cindex division, truncating
+@cindex modulus
+@opindex +
+@opindex -
+@opindex *
+@opindex /
+@opindex %
+Arithmetic infix operators perform a function on the numeric expressions
+to their left and right; they are @code{+} (addition), @code{-}
+(subtraction), @code{*} (multiplication), @code{/} (truncating
+division), and @code{%} (modulus). @dfn{Truncating division} rounds to
+the integer nearer to zero, no matter how large the fractional portion.
+Overflow and division (or modulus) by zero are errors and abort
+evaluation of a numeric expression.
+@cindex unary arithmetic operators
+@cindex operators, unary arithmetic
+@cindex negation
+@cindex assertion (arithmetic operator)
+@opindex -
+@opindex +
+@cindex @code{if} request, and the @samp{!} operator
+@cindex @code{while} request, and the @samp{!} operator
+
+Arithmetic unary operators operate on the numeric expression to their
+right; they are @code{-} (negation) and @code{+} (assertion---for
+completeness; it does nothing). The unary minus must often be used
+with parentheses to avoid confusion with the decrementation operator,
+discussed below.
+
+Observe the rounding behavior and effect of negative operands on the
+modulus and truncating division operators.
+
+@Example
+.nr T 199/100
+.nr U 5/2
+.nr V (-5)/2
+.nr W 5/-2
+.nr X 5%2
+.nr Y (-5)%2
+.nr Z 5%-2
+T=\n[T] U=\n[U] V=\n[V] W=\n[W] X=\n[X] Y=\n[Y] Z=\n[Z]
+ @result{} T=1 U=2 V=-2 W=-2 X=1 Y=-1 Z=1
+@endExample
+
+@noindent
+The sign of the modulus of operands of mixed signs is determined by the
+sign of the first. Division and modulus operators satisfy the following
+property:@: given a dividend@tie{}@var{a} and a divisor@tie{}@var{b}, a
+quotient@tie{}@var{q} formed by @samp{(a / b)} and a
+remainder@tie{}@var{r} by @samp{(a % b)}, then @math{qb + r = a}.
+
+@cindex scaling operator
+@cindex operator, scaling
+@opindex ;
+GNU @code{troff}'s scaling operator, used with parentheses as
+@code{(@var{c};@var{e})}, evaluates a numeric expression@tie{}@var{e}
+using@tie{}@var{c} as the default scaling unit. If @var{c} is omitted,
+scaling units are ignored in the evaluation of@tie{}@var{e}. This
+operator can save typing by avoiding the attachment of scaling units to
+every operand out of caution. Your macros can select a sensible default
+unit in case the user neglects to supply one.
+
+@Example
+.\" Indent by amount given in first argument; assume ens.
+.de Indent
+. in (n;\\$1)
+..
+@endExample
+
+@noindent
+Without the scaling operator, the foregoing macro would, if called with
+a unitless argument, cause indentation by the @code{in} request's
+default scaling unit (ems). The result would be twice as much
+indentation as expected.
+
+@cindex extremum operators (@code{>?}, @code{<?})
+@cindex operators, extremum (@code{>?}, @code{<?})
+@cindex maximum operator
+@cindex minimum operator
+@opindex >?
+@opindex <?
+GNU @code{troff} also provides a pair of operators to compute the
+extrema of two operands: @code{>?} (maximum) and @code{<?} (minimum).
+
+@Example
+.nr slots 5
+.nr candidates 3
+.nr salaries (\n[slots] <? \n[candidates])
+Looks like we'll end up paying \n[salaries] salaries.
+ @result{} Looks like we'll end up paying 3 salaries.
+@endExample
+
+@cindex comparison operators
+@cindex operators, comparison
+@cindex greater than (or equal to) operator
+@cindex less than (or equal to) operator
+@cindex equality operator
+@opindex <
+@opindex >
+@opindex >=
+@opindex <=
+@opindex =
+@opindex ==
+Comparison operators comprise @code{<} (less than), @code{>} (greater
+than), @code{<=} (less than or equal), @code{>=} (greater than or
+equal), and @code{=} (equal). @code{==} is a synonym for @code{=}.
+When evaluated, a comparison is replaced with @samp{0} if it is false
+and @samp{1} if true. In the @code{roff} language, positive values are
+true, others false.
+
+@cindex logical operators
+@cindex operators, logical
+@cindex logical ``and'' operator
+@cindex logical conjunction operator
+@cindex logical ``or'' operator
+@cindex logical disjunction operator
+@opindex &
+@ifnotinfo
+@opindex :
+@end ifnotinfo
+@ifinfo
+@opindex @r{<colon>}
+@end ifinfo
+We can operate on truth values with the logical operators @code{&}
+(logical conjunction or ``and'') and @code{:} (logical disjunction or
+``or''). They evaluate as comparison operators do.
+
+@opindex !
+@cindex complementation, logical
+@cindex logical complementation operator
+@cindex logical not, limitation in expression
+@cindex expression, limitation of logical not in
+A logical complementation (``not'') operator, @code{!}, works only
+within @code{if}, @code{ie}, and @code{while} requests.
+@c This is worded to avoid implying that the operator doesn't apply
+@c to conditional expressions in general, albeit without mentioning them
+@c because they're out of scope.
+Furthermore, @code{!} is recognized only at the beginning of a numeric
+expression not contained by another numeric expression. In other words,
+it must be the ``outermost'' operator. Including it elsewhere in the
+expression produces a warning in the @samp{number} category
+(@pxref{Warnings}), and its expression evaluates false. This
+unfortunate limitation maintains compatibility with @acronym{AT&T}
+@code{troff}. Test a numeric expression for falsity by
+comparing it to a false value.@footnote{@xref{Conditionals and Loops}.}
+
+@Example
+.nr X 1
+.nr Y 0
+.\" This does not work as expected.
+.if (\n[X])&(!\n[Y]) .nop A: X is true, Y is false
+.
+.\" Use this construct instead.
+.if (\n[X])&(\n[Y]<=0) .nop B: X is true, Y is false
+ @error{} warning: expected numeric expression, got '!'
+ @result{} B: X is true, Y is false
+@endExample
+
+@cindex parentheses
+@cindex order of evaluation in expressions
+@cindex expression, order of evaluation
+@opindex (
+@opindex )
+The @code{roff} language has no operator precedence:@: expressions are
+evaluated strictly from left to right, in contrast to schoolhouse
+arithmetic. Use parentheses @code{(} @code{)} to impose a desired
+precedence upon subexpressions.
+
+@Example
+.nr X 3+5*4
+.nr Y (3+5)*4
+.nr Z 3+(5*4)
+X=\n[X] Y=\n[Y] Z=\n[Z]
+ @result{} X=32 Y=32 Z=23
+@endExample
+
+@cindex @code{+}, and page motion
+@cindex @code{-}, and page motion
+@cindex motion operators
+@cindex operators, motion
+@opindex + @r{(unary)}
+@opindex - @r{(unary)}
+For many requests and escape sequences that cause motion on the page,
+the unary operators @code{+} and @code{-} work differently when leading
+a numeric expression. They then indicate a motion relative to the
+drawing position:@: positive is down in vertical contexts, right in
+horizontal ones.
+
+@cindex @code{bp} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{in} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{ll} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{lt} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{nm} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{nr} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{pl} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{pn} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{po} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{ps} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{pvs} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{rt} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{ti} request, using @code{+} and@tie{}@code{-} with
+@cindex @code{\H}, using @code{+} and@tie{}@code{-} with
+@cindex @code{\R}, using @code{+} and@tie{}@code{-} with
+@cindex @code{\s}, using @code{+} and@tie{}@code{-} with
+@code{+} and @code{-} are also treated differently by the following
+requests and escape sequences:@: @code{bp}, @code{in}, @code{ll},
+@code{lt}, @code{nm}, @code{nr}, @code{pl}, @code{pn}, @code{po},
+@code{ps}, @code{pvs}, @code{rt}, @code{ti}, @code{\H}, @code{\R}, and
+@code{\s}. Here, leading plus and minus signs serve as incrementation
+and decrementation operators, respectively. To negate an expression,
+subtract it from zero or include the unary minus in parentheses with its
+argument. @xref{Setting Registers}, for examples.
+
+@opindex |
+@cindex @code{|}, and page motion
+@cindex absolute @slanted{(sic)} position operator (@code{|})
+@cindex position, absolute @slanted{(sic)} operator (@code{|})
+@cindex boundary-relative motion operator (@code{|})
+@c "motion" and "operators" already indexed above
+A leading @code{|} operator indicates a motion relative not to the
+drawing position but to a boundary. For horizontal motions, the
+measurement specifies a distance relative to a drawing position
+corresponding to the beginning of the @emph{input} line. By default,
+tab stops reckon movements in this way. Most escape sequences do not;
+@c XXX: Which ones do?
+@code{|} tells them to do so.
+
+@Example
+Mind the \h'1.2i'gap.
+.br
+Mind the \h'|1.2i'gap.
+.br
+Mind the
+\h'|1.2i'gap.
+@c 13 spaces, 4 spaces, 13 spaces
+ @result{} Mind the gap.
+ @result{} Mind the gap.
+ @result{} Mind the gap.
+@endExample
+
+One use of this feature is to define macros whose scope is limited to
+the output they format.
+
+@Example
+.\" underline word $1 with trailing punctuation $2
+.de Underline
+. nop \\$1\l'|0\[ul]'\\$2
+..
+Typographical emphasis is best used
+.Underline sparingly .
+@endExample
+
+@noindent
+In the above example, @samp{|0} specifies a negative motion from the
+current position (at the end of the argument just emitted, @code{\$1})
+to the beginning of the input line. Thus, the @code{\l} escape sequence
+in this case draws a line from right to left. A macro call occurs at
+the beginning of an input line;@footnote{Control structure syntax
+creates an exception to this rule, but is designed to remain useful:@:
+recalling our example, @samp{.if 1 .Underline this} would underline only
+``this'', precisely. @xref{Conditionals and Loops}.} if the @code{|}
+operator were omitted, then the underline would be drawn at zero
+distance from the current position, producing device-dependent, and
+likely undesirable, results. On the @samp{ps} output device, it
+underlines the period.
+
+For vertical motions, the @code{|} operator specifies a distance from
+the first text baseline on the page or in the current
+diversion,@footnote{@xref{Diversions}.} using the current vertical
+spacing.
+
+@Example
+A
+.br
+B \Z'C'\v'|0'D
+ @result{} A D
+ @result{} B C
+@endExample
+
+In the foregoing example, we've used the @code{\Z} escape sequence
+(@pxref{Page Motions}) to restore the drawing position after formatting
+@samp{C}, then moved vertically to the first text baseline on the page.
+
+@Defesc {\\B, @code{'}, anything, @code{'}}
+@cindex numeric expression, valid
+@cindex valid numeric expression
+Interpolate@tie{}1 if @var{anything} is a valid numeric expression,
+and@tie{}0 otherwise. The delimiter need not be a neutral apostrophe;
+see @ref{Delimiters}.
+@endDefesc
+
+You might use @code{\B} along with the @code{if} request to filter out
+invalid macro or string arguments. @xref{Conditionals and Loops}.
+
+@Example
+.\" Indent by amount given in first argument; assume ens.
+.de Indent
+. if \B'\\$1' .in (n;\\$1)
+..
+@endExample
+
+A register interpolated as an operand in a numeric expression must have
+an Arabic format; luckily, this is the default. @xref{Assigning
+Register Formats}.
+
+@cindex space characters, in expressions
+@cindex expressions, and space characters
+Because spaces separate arguments to requests, spaces are not allowed in
+numeric expressions unless the (sub)expression containing them is
+surrounded by parentheses. @xref{Invoking Requests}, and
+@ref{Conditionals and Loops}.
+
+@Example
+.nf
+.nr a 1+2 + 2+1
+\na
+ @error{} expected numeric expression, got a space
+ @result{} 3
+.nr a 1+(2 + 2)+1
+\na
+ @result{} 6
+@endExample
+
+The @code{nr} request (@pxref{Setting Registers}) expects its second and
+optional third arguments to be numeric expressions; a bare @code{+} does
+not qualify, so our first attempt got a warning.
+@c END Keep (roughly) parallel with section "Numeric expressions" of
+@c groff(7).
+
+
+@c =====================================================================
+
+@c BEGIN Keep (roughly) parallel with section "Identifiers" of groff(7).
+@node Identifiers, Formatter Instructions, Numeric Expressions, GNU troff Reference
+@section Identifiers
+@cindex identifiers
+
+An @dfn{identifier} labels a GNU @code{troff} datum such as a register,
+name (macro, string, or diversion), typeface, color, special character,
+character class, environment, or stream. Valid identifiers consist of
+one or more ordinary characters.
+@cindex ordinary character
+@cindex character, ordinary
+An @slanted{ordinary character} is an input character that is not the
+escape character, a leader, tab, newline, or invalid as GNU @code{troff}
+input.
+
+@c XXX: We might move this discussion earlier since it is applicable to
+@c troff input in general, and include a reference to the `trin`
+@c request.
+@cindex invalid input characters
+@cindex input characters, invalid
+@cindex characters, invalid input
+@cindex Unicode
+Invalid input characters are a subset of control characters (from the
+sets ``C0 Controls'' and ``C1 Controls'' as Unicode describes them).
+When GNU @code{troff} encounters one in an identifier, it produces a
+warning in category @samp{input} (@pxref{Warnings}). They are removed
+during interpretation: an identifier @samp{foo}, followed by an invalid
+character and then @samp{bar}, is processed as @samp{foobar}.
+
+On a machine using the ISO 646, 8859, or 10646 character encodings,
+invalid input characters are @code{0x00}, @code{0x08}, @code{0x0B},
+@code{0x0D}--@code{0x1F}, and @code{0x80}--@code{0x9F}. On an
+@acronym{EBCDIC} host, they are @code{0x00}--@code{0x01}, @code{0x08},
+@code{0x09}, @code{0x0B}, @code{0x0D}--@code{0x14},
+@code{0x17}--@code{0x1F}, and
+@code{0x30}--@code{0x3F}.@footnote{Historically, control characters like
+ASCII STX, ETX, and BEL (@key{Control+B}, @key{Control+C}, and
+@key{Control+G}) have been observed in @code{roff} documents,
+particularly in macro packages employing them as delimiters with the
+output comparison operator to try to avoid collisions with the content
+of arbitrary user-supplied parameters (@pxref{Operators in
+Conditionals}). We discourage this expedient; in GNU @code{troff} it is
+unnecessary (outside of compatibility mode) because delimited arguments
+are parsed at a different input level than the surrounding context.
+@xref{Implementation Differences}.} Some of these code points are used
+by GNU @code{troff} internally, making it non-trivial to extend the
+program to accept UTF-8 or other encodings that use characters from
+these ranges.@footnote{Consider what happens when a C1 control
+@code{0x80}--@code{0x9F} is necessary as a continuation byte in a UTF-8
+sequence.}
+
+Thus, the identifiers @samp{br}, @samp{PP}, @samp{end-list},
+@samp{ref*normal-print}, @samp{|}, @samp{@@_}, and @samp{!"#$%'()*+,-./}
+are all valid. Discretion should be exercised to prevent confusion.
+Identifiers starting with @samp{(} or @samp{[} require care.
+
+@Example
+.nr x 9
+.nr y 1
+.nr (x 2
+.nr [y 3
+.nr sum1 (\n(x + \n[y])
+ @error{} a space character is not allowed in an escape
+ @error{} sequence parameter
+A:2+3=\n[sum1]
+.nr sum2 (\n((x + \n[[y])
+B:2+3=\n[sum2]
+.nr sum3 (\n[(x] + \n([y)
+C:2+3=\n[sum3]
+ @result{} A:2+3=1 B:2+3=5 C:2+3=5
+@endExample
+
+@cindex @code{]}, as part of an identifier
+@noindent
+An identifier with a closing bracket (@samp{]}) in its name can't be
+accessed with bracket-form escape sequences that expect an identifier as
+a parameter. For example, @samp{\[foo]]} accesses the glyph @samp{foo},
+followed by @samp{]} in whatever the surrounding context is, whereas
+@samp{\C'foo]'} formats a glyph named @samp{foo]}. Similarly, the
+identifier @samp{(} can't be interpolated @emph{except} with bracket
+forms.
+
+@cindex @code{refer}, and macro names starting with @code{[} or @code{]}
+@cindex @code{[}, macro names starting with, and @code{refer}
+@cindex @code{]}, macro names starting with, and @code{refer}
+@cindex macro names, starting with @code{[} or @code{]}, and @code{refer}
+If you begin a macro, string, or diversion name with either of the
+characters @samp{[} or @samp{]}, you foreclose use of the @code{grefer}
+preprocessor, which recognizes @samp{.[} and @samp{.]} as bibliographic
+reference delimiters.
+
+@Defesc {\\A, @code{'}, anything, @code{'}}
+Interpolate@tie{}1 if @var{anything} is a valid identifier, and@tie{}0
+otherwise. The delimiter need not be a neutral apostrophe; see
+@ref{Delimiters}. Because invalid input characters are removed (see
+above), invalid identifiers are empty or contain spaces, tabs, or
+newlines.
+
+You can employ @code{\A} to validate a macro argument before using it to
+construct another escape sequence or identifier.
+
+@Example
+.\" usage: .init-coordinate-pair name val1 val2
+.\" Create a coordinate pair where name!x=val1 and
+.\" name!y=val2.
+.de init-coordinate-pair
+. if \A'\\$1' \@{\
+. if \B'\\$2' .nr \\$1!x \\$2
+. if \B'\\$3' .nr \\$1!y \\$3
+. \@}
+..
+.init-coordinate-pair center 5 10
+The center is at (\n[center!x], \n[center!y]).
+.init-coordinate-pair "poi@arrow{}nt" trash garbage \" ignored
+.init-coordinate-pair point trash garbage \" ignored
+ @result{} The center is at (5, 10).
+@endExample
+
+@noindent
+In this example, we also validated the numeric arguments; the registers
+@samp{point!x} and @samp{point!y} remain undefined. @xref{Numeric
+Expressions} for the @code{\B} escape sequence.
+@endDefesc
+
+@cindex undefined identifiers
+@cindex identifiers, undefined
+How GNU @code{troff} handles the interpretation of an undefined
+identifier depends on the context. There is no way to invoke an
+undefined request; such syntax is interpreted as a macro call instead.
+If the identifier is interpreted as a string, macro, or diversion, GNU
+@code{troff} emits a warning in category @samp{mac}, defines it as
+empty, and interpolates nothing. If the identifier is interpreted as a
+register, GNU @code{troff} emits a warning in category @samp{reg},
+initializes it to zero, and interpolates that value. @xref{Warnings},
+@ref{Interpolating Registers}, and @ref{Strings}. Attempting to use an
+undefined typeface, special character, color, character class,
+environment, or stream generally provokes an error diagnostic.
+
+@need 1000
+@cindex name space, common, of macros, diversions, and strings
+@cindex common name space of macros, diversions, and strings
+@cindex macros, shared name space with strings and diversions
+@cindex strings, shared name space with macros and diversions
+@cindex diversions, shared name space with macros and strings
+Identifiers for requests, macros, strings, and diversions share one name
+space; special characters and character classes another. No other
+object types do.
+
+@Example
+.de xxx
+. nop foo
+..
+@c . slack line for pagination management
+.di xxx
+bar
+.br
+.di
+.
+.xxx
+ @result{} bar
+@endExample
+
+@noindent
+The foregoing example shows that GNU @code{troff} reuses the identifier
+@samp{xxx}, changing it from a macro to a diversion. No warning is
+emitted, and the previous contents of @samp{xxx} are lost.
+@c END Keep (roughly) parallel with section "Identifiers" of groff(7).
+
+
+@c =====================================================================
+
+@node Formatter Instructions, Registers, Identifiers, GNU troff Reference
+@section Formatter Instructions
+@cindex formatter instructions
+@cindex instructing the formatter
+
+To support documents that require more than filling, automatic line
+breaking and hyphenation, adjustment, and supplemental inter-sentence
+space, the @code{roff} language offers two means of embedding
+instructions to the formatter.
+
+@cindex request
+One is a @dfn{request}, which begins with a control character and takes
+up the remainder of the input line. Requests often perform relatively
+large-scale operations such as setting the page length, breaking the
+line, or starting a new page. They also conduct internal operations
+like defining macros.
+
+@cindex escape sequence
+@cindex sequence, escape
+The other is an @dfn{escape sequence}, which begins with the escape
+character and can be embedded anywhere in the input, even in arguments
+to requests and other escape sequences. Escape sequences interpolate
+special characters, strings, or registers, and handle comparatively
+minor formatting tasks like sub- and superscripting.
+
+Some operations, such as font selection and type size alteration, are
+available via both requests and escape sequences.
+
+@menu
+* Control Characters::
+* Invoking Requests::
+* Calling Macros::
+* Using Escape Sequences::
+* Delimiters::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Control Characters, Invoking Requests, Formatter Instructions, Formatter Instructions
+@subsection Control Characters
+@cindex control characters
+@cindex configuring control characters
+@cindex changing control characters
+
+The mechanism of using @code{roff}'s control characters to invoke
+requests and call macros was introduced in @ref{Requests and Macros}.
+Control characters are recognized only at the beginning of an input
+line, or at the beginning of the branch of a control structure request;
+see @ref{Conditionals and Loops}.
+
+A few requests cause a break implicitly; use the no-break control
+character to prevent the break. Break suppression is its sole
+behavioral distinction. Employing the no-break control character to
+invoke requests that don't cause breaks is harmless but poor style.
+@xref{Manipulating Filling and Adjustment}.
+
+@cindex control character, changing (@code{cc})
+@cindex character, control, changing (@code{cc})
+@cindex no-break control character, changing (@code{c2})
+@cindex character, no-break control, changing (@code{c2})
+@cindex control character, no-break, changing (@code{c2})
+The control @samp{.} and no-break control @samp{'} characters can each
+be changed to any ordinary character@footnote{Recall @ref{Identifiers}.}
+with the @code{cc} and @code{c2} requests, respectively.
+
+@Defreq {cc, [@Var{o}]}
+Recognize the ordinary character@tie{}@var{o} as the control character.
+If@tie{}@var{o} is absent or invalid, the default control character
+@samp{.} is selected. The identity of the control character is
+associated with the environment (@pxref{Environments}).
+@endDefreq
+
+@Defreq {c2, [@Var{o}]}
+Recognize the ordinary character@tie{}@var{o} as the no-break control
+character. If@tie{}@var{o} is absent or invalid, the default no-break
+control character @samp{'} is selected. The identity of the no-break
+control character is associated with the environment
+(@pxref{Environments}).
+@endDefreq
+
+When writing a macro, you might wish to know which control character was
+used to call it.
+
+@Defreg {.br}
+This read-only register interpolates@tie{}1 if the currently executing
+macro was called using the normal control character and@tie{}0
+otherwise. If a macro is interpolated as a string, the @code{.br}
+register's value is inherited from the context of the string
+interpolation. @xref{Strings}.
+
+@cindex intercepting requests
+@cindex requests, intercepting
+@cindex modifying requests
+@cindex requests, modifying
+Use this register to reliably intercept requests that imply breaks.
+
+@Example
+.als bp*orig bp
+.de bp
+. ie \\n[.br] .bp*orig
+. el 'bp*orig
+..
+@endExample
+
+Testing the @code{.br} register outside of a macro definition makes no
+sense.
+@endDefreg
+
+@c ---------------------------------------------------------------------
+
+@c BEGIN Keep (roughly) parallel with section "Requests" of groff(7).
+@node Invoking Requests, Calling Macros, Control Characters, Formatter Instructions
+@subsection Invoking Requests
+@cindex invoking requests
+@cindex requests, invoking
+
+A control character is optionally followed by tabs and/or spaces and
+then an identifier naming a request or macro. The invocation of an
+unrecognized request is interpreted as a macro call. Defining a macro
+with the same name as a request replaces the request. Deleting a
+request name with the @code{rm} request makes it unavailable. The
+@code{als} request can alias requests, permitting them to be wrapped or
+non-destructively replaced. @xref{Strings}.
+
+@cindex request arguments
+@cindex arguments to requests
+@cindex tabs, and macro arguments
+@cindex macro arguments, and tabs
+@cindex arguments to macros, and tabs
+@cindex tabs, and request arguments
+@cindex request arguments, and tabs
+@cindex arguments to requests, and tabs
+There is no inherent limit on argument length or quantity. Most
+requests take one or more arguments, and ignore any they do not expect.
+A request may be separated from its arguments by tabs or spaces, but
+only spaces can separate an argument from its successor. Only one
+between arguments is necessary; any excess is ignored. GNU @code{troff}
+does not allow tabs for argument separation.@footnote{In compatibility
+mode, a space is not necessary after a request or macro name of two
+characters' length. Also, Plan@tie{}9 @code{troff} allows tabs to
+separate arguments.}
+
+Generally, a space @emph{within} a request argument is not relevant, not
+meaningful, or is supported by bespoke provisions, as with the @code{tl}
+request's delimiters (@pxref{Page Layout}). Some requests, like
+@code{ds}, interpret the remainder of the control line as a single
+argument. @xref{Strings}.
+
+@need 1000
+@cindex structuring source code of documents or macro packages
+@cindex documents, structuring the source of
+@cindex macro package, structuring the source of
+@cindex package, package, structuring the source of
+@cindex indentation, of @code{roff} source code
+Spaces and tabs immediately after a control character are ignored.
+Commonly, authors structure the source of documents or macro files with
+them.
+
+@Example
+.de center
+. if \\n[.br] \
+. br
+. ce \\$1
+..
+.
+.
+.de right-align
+.@arrow{}if \\n[.br] \
+.@arrow{}@arrow{}br
+.@arrow{}rj \\$1
+..
+@endExample
+
+@cindex blank line trap (@code{blm})
+@cindex blank line macro (@code{blm})
+If you assign an empty blank line trap, you can separate macro
+definitions (or any input lines) with blank lines.
+
+@Example
+.de do-nothing
+..
+.blm do-nothing \" activate blank line trap
+
+.de center
+. if \\n[.br] \
+. br
+. ce \\$1
+..
+
+
+.de right-align
+.@arrow{}if \\n[.br] \
+.@arrow{}@arrow{}br
+.@arrow{}rj \\$1
+..
+
+.blm \" deactivate blank line trap
+@endExample
+
+@xref{Blank Line Traps}.
+@c END Keep (roughly) parallel with section "Requests" of groff(7).
+
+@c ---------------------------------------------------------------------
+
+@need 1000
+@node Calling Macros, Using Escape Sequences, Invoking Requests, Formatter Instructions
+@subsection Calling Macros
+@cindex calling macros
+@cindex macro arguments
+@cindex arguments to macros
+
+If a macro of the desired name does not exist when called, it is
+created, assigned an empty definition, and a warning in category
+@samp{mac} is emitted. Calling an undefined macro @emph{does} end a
+macro definition naming it as its end macro (@pxref{Writing Macros}).
+
+@cindex spaces, in a macro argument
+To embed spaces @emph{within} a macro argument, enclose the argument in
+neutral double quotes @code{"}. Horizontal motion escape sequences are
+sometimes a better choice for arguments to be formatted as text.
+
+Consider calls to a hypothetical section heading macro @samp{uh}.
+
+@Example
+.uh The Mouse Problem
+.uh "The Mouse Problem"
+.uh The\~Mouse\~Problem
+.uh The\ Mouse\ Problem
+@endExample
+
+@cindex @code{\~}, difference from @code{\@key{SP}}
+@cindex @code{\@key{SP}}, difference from @code{\~}
+@noindent
+The first line calls @code{uh} with three arguments: @samp{The},
+@samp{Mouse}, and @samp{Problem}. The remainder call the @code{uh}
+macro with one argument, @samp{The Mouse Problem}. The last solution,
+using escaped spaces, can be found in documents prepared for
+@acronym{AT&T} @code{troff}. It can cause surprise when text is
+adjusted, because @code{\@key{SP}} inserts a @emph{fixed-width},
+non-breaking space. GNU @code{troff}'s @code{\~} escape sequence
+inserts an adjustable, non-breaking space.@footnote{@code{\~} is fairly
+portable; see @ref{Other Differences}.}
+
+@cindex @code{"}, embedding in a macro argument
+@cindex double quote, embedding in a macro argument
+@cindex @code{\}, embedding in a macro argument
+@cindex backslash, embedding in a macro argument
+The foregoing raises the question of how to embed neutral double quotes
+or backslashes in macro arguments when @emph{those} characters are
+desired as literals. In GNU @code{troff}, the special character escape
+sequence @code{\[rs]} produces a backslash and @code{\[dq]} a neutral
+double quote.
+
+In GNU @code{troff}'s @acronym{AT&T} compatibility mode, these
+characters remain available as @code{\(rs} and @code{\(dq},
+respectively. @acronym{AT&T} @code{troff} did not consistently define
+these special characters,
+@c It seems that AT&T troff never recognized \(rs, though DWB 3.3
+@c defined \(bs as an alias of "\" on its "Latin1" device, in
+@c deliberate(?) collision with the Bell System logo identifier. It
+@c also defined \(dq for several devices (pcl, Latin1, nroff, ...) along
+@c with \(aq.
+but its descendants can be made to support them. @xref{Device and Font
+Description Files}.
+
+If even that is not feasible, options remain. To obtain a literal
+escape character in a macro argument, you can simply type it if you
+change or disable the escape character first. @xref{Using Escape
+Sequences}. Otherwise, you must escape the escape character repeatedly
+to a context-dependent extent. @xref{Copy Mode}.
+
+For the (neutral) double quote, you have recourse to an obscure
+syntactical feature of @acronym{AT&T} @code{troff}. Because a double
+quote can begin a macro argument, the formatter keeps track of whether
+the current argument was started thus, and doesn't require a space after
+the double quote that ends it.@footnote{Strictly, you can neglect to
+close the last quoted macro argument, relying on the end of the control
+line to do so. We consider this lethargic practice poor style.} In
+the argument list to a macro, a double quote that @emph{isn't} preceded
+by a space @emph{doesn't} start a macro argument. If not preceded by a
+double quote that began an argument, this double quote becomes part of
+the argument. Furthermore, within a quoted argument, a pair of adjacent
+double quotes becomes a literal double quote.
+
+@Example
+.de eq
+. tm arg1:\\$1 arg2:\\$2 arg3:\\$3
+. tm arg4:\\$4 arg5:\\$5 arg6:\\$6
+.. \" 4 backslashes on the next line
+.eq a" "b c" "de"f\\\\g" h""i "j""k"
+ @error{} arg1:a" arg2:b c arg3:de
+ @error{} arg4:f\g" arg5:h""i arg6:j"k
+@endExample
+
+Apart from the complexity of the rules, this traditional solution has
+the disadvantage that double quotes don't survive repeated argument
+expansion in @acronym{AT&T} @code{troff} or GNU @code{troff}'s
+compatibility mode. This can frustrate efforts to pass such arguments
+intact through multiple macro calls.
+
+@Example
+.cp 1
+.de eq
+. tm arg1:\\$1 arg2:\\$2 arg3:\\$3
+. tm arg4:\\$4 arg5:\\$5 arg6:\\$6
+..
+.de xe
+. eq \\$1 \\$2 \\$3 \\$4 \\$5 \\$6
+.. \" 8 backslashes on the next line
+.xe a" "b c" "de"f\\\\\\\\g" h""i "j""k"
+ @error{} arg1:a" arg2:b arg3:c
+ @error{} arg4:de arg5:f\g" arg6:h""i
+@endExample
+
+@cindex input level
+@cindex level, input
+@cindex interpolation depth
+@cindex depth, interpolation
+Outside of compatibility mode, GNU @code{troff} doesn't exhibit this
+problem because it tracks the nesting depth of interpolations.
+@xref{Implementation Differences}.
+
+@c ---------------------------------------------------------------------
+
+@c BEGIN Keep (roughly) parallel with section "Using escape sequences"
+@c of groff(7).
+@node Using Escape Sequences, Delimiters, Calling Macros, Formatter Instructions
+@subsection Using Escape Sequences
+@cindex using escape sequences
+@cindex escape sequences
+
+Whereas requests must occur on control lines, escape sequences can occur
+intermixed with text and may appear in arguments to requests, macros,
+and other escape sequences.
+@esindex \
+An escape sequence is introduced by the escape character, a backslash
+@code{\} (but see the @code{ec} request below). The next character
+selects the escape's function.
+
+Escape sequences vary in length. Some take an argument, and of those,
+some have different syntactical forms for a one-character,
+two-character, or arbitrary-length argument. Others accept @emph{only}
+an arbitrary-length argument. In the former scheme, a one-character
+argument follows the function character immediately, an opening
+parenthesis @samp{(} introduces a two-character argument (no closing
+parenthesis is used), and an argument of arbitrary length is enclosed in
+brackets @samp{[]}. In the latter scheme, the user selects a delimiter
+character. A few escape sequences are idiosyncratic, and support both
+of the foregoing conventions (@code{\s}), designate their own
+termination sequence (@code{\?}), consume input until the next newline
+(@code{\!}, @code{\"}, @code{\#}), or support an additional modifier
+character (@code{\s} again, and @code{\n}). As with requests, use of
+some escape sequences in source documents may interact poorly with a
+macro package you use; consult its documentation to learn of ``safe''
+sequences or alternative facilities it provides to achieve the desired
+result.
+
+If an escape character is followed by a character that does not
+identify a defined operation, the escape character is ignored (producing
+a diagnostic of the @samp{escape} warning category, which is not enabled
+by default) and the following character is processed normally.
+
+@Example
+$ groff -Tps -ww
+.nr N 12
+.ds co white
+.ds animal elephant
+I have \fI\nN \*(co \*[animal]s,\f[]
+said \P.\&\~Pseudo Pachyderm.
+ @error{} warning: escape character ignored before 'P'
+ @result{} I have @slanted{12 white elephants,} said P. Pseudo Pachyderm.
+@endExample
+
+Escape sequence interpolation is of higher precedence than escape
+sequence argument interpretation. This rule affords flexibility in
+using escape sequences to construct parameters to other escape
+sequences.
+@c END Keep (roughly) parallel with section "Escape sequences" of
+@c groff(7).
+
+@Example
+.ds family C\" Courier
+.ds style I\" oblique
+Choice a typeface \f(\*[family]\*[style]wisely.
+ @result{} Choose a typeface @slanted{wisely.}
+@endExample
+
+@noindent
+In the above, the syntax form @samp{\f(} accepts only two characters for
+an argument; the example works because the subsequent escape sequences
+are interpolated before the selection escape sequence argument is
+processed, and strings @code{family} and @code{style} interpolate one
+character each.@footnote{The omission of spaces before the comment
+escape sequences is necessary; see @ref{Strings}.}
+
+@c @need 1000
+The escape character is nearly always interpreted when encountered; it
+is therefore desirable to have a way to interpolate it, disable it, or
+change it.
+
+@cindex formatting the escape character (@code{\e})
+@cindex escape character, formatting (@code{\e})
+@Defesc {\\e, , , }
+Interpolate the escape character.
+@endDefesc
+
+@cindex formatting a backslash glyph (@code{\[rs]})
+@cindex backslash glyph, formatting (@code{\[rs]})
+The @code{\[rs]} special character escape sequence formats a backslash
+glyph. In macro and string definitions, the input sequences @code{\\}
+and @code{\E} defer interpretation of escape sequences. @xref{Copy
+Mode}.
+
+@Defreq {eo, }
+@cindex disabling @code{\} (@code{eo})
+@cindex @code{\}, disabling (@code{eo})
+Disable the escape mechanism except in copy mode. Once this request is
+invoked, no input character is recognized as starting an escape
+sequence in interpretation mode.
+@endDefreq
+
+@Defreq {ec, [@Var{o}]}
+@cindex escape character, changing (@code{ec})
+@cindex character, escape, changing (@code{ec})
+Recognize the ordinary character@tie{}@var{o} as the escape character.
+If@tie{}@var{o} is absent or invalid, the default escape character
+@samp{\} is selected.
+@endDefreq
+
+Switching escape sequence interpretation off to define a macro and back
+on afterward can obviate the need to double the escape character within
+the definition. @xref{Writing Macros}. This technique is not available
+if your macro needs to interpolate values at the time it is
+@emph{defined}---but many do not.
+
+@Example
+.\" simplified `BR` macro from the man(7) macro package
+.eo
+.de BR
+. ds result \&
+. while (\n[.$] >= 2) \@{\
+. as result \fB\$1\fR\$2\"
+. shift 2
+. \@}
+. if \n[.$] .as result \fB\$1\"
+\*[result]
+. rm result
+. ft R
+..
+.ec
+@endExample
+
+@DefreqList {ecs, }
+@DefreqListEndx {ecr, }
+The @code{ecs} request stores the escape character for recall with
+@code{ecr}. @code{ecr} sets the escape character to @samp{\} if none
+has been saved.
+
+Use these requests together to temporarily change the escape character.
+@endDefreq
+
+Using a different escape character, or disabling it, when calling macros
+not under your control will likely cause errors, since GNU @code{troff}
+has no mechanism to ``intern'' macros---that is, to convert a macro
+definition into a form independent of its
+representation.@footnote{@TeX{} does have such a mechanism.} When a
+macro is called, its contents are interpreted literally.
+@c XXX: all that stuff mapped into the C0 and C1 controls seems pretty
+@c close to an interning mechanism to me, though... --GBR
+
+@c XXX: Motivation? Why are we directing the reader to these?
+@c @xref{Diversions}, and @ref{Identifiers}.
+
+@c BEGIN Keep (roughly) parallel with subsection "Delimiters" of
+@c groff(7).
+@node Delimiters, , Using Escape Sequences, Formatter Instructions
+@subsection Delimiters
+@cindex delimiting escape sequence arguments
+@cindex escape sequence argument delimiters
+@cindex delimiters, for escape sequence arguments
+@cindex arguments, to escape sequences, delimiting
+
+@cindex @code{'}, as delimiter
+@cindex @code{"}, as delimiter
+Some escape sequences that require parameters use delimiters. The
+neutral apostrophe @code{'} is a popular choice and shown in this
+document. The neutral double quote @code{"} is also commonly seen.
+Letters, numerals, and leaders can be used. Punctuation characters
+are likely better choices, except for those defined as infix operators
+in numeric expressions; see below.
+
+@Example
+\l'1.5i\[bu]' \" draw 1.5 inches of bullet glyphs
+@endExample
+
+@cindex @code{\%}, as delimiter
+@cindex @code{\@key{SP}}, as delimiter
+@cindex @code{\|}, as delimiter
+@cindex @code{\^}, as delimiter
+@cindex @code{\@{}, as delimiter
+@cindex @code{\@}}, as delimiter
+@cindex @code{\'}, as delimiter
+@cindex @code{\`}, as delimiter
+@cindex @code{\-}, as delimiter
+@cindex @code{\_}, as delimiter
+@cindex @code{\!}, as delimiter
+@cindex @code{\?}, as delimiter
+@cindex @code{\)}, as delimiter
+@cindex @code{\/}, as delimiter
+@cindex @code{\,}, as delimiter
+@cindex @code{\&}, as delimiter
+@cindex @code{\:}, as delimiter
+@cindex @code{\~}, as delimiter
+@cindex @code{\0}, as delimiter
+@cindex @code{\a}, as delimiter
+@cindex @code{\c}, as delimiter
+@cindex @code{\d}, as delimiter
+@cindex @code{\e}, as delimiter
+@cindex @code{\E}, as delimiter
+@cindex @code{\p}, as delimiter
+@cindex @code{\r}, as delimiter
+@cindex @code{\t}, as delimiter
+@cindex @code{\u}, as delimiter
+The following escape sequences don't take arguments and thus are allowed
+as delimiters:
+@code{\@key{SP}}, @code{\%}, @code{\|}, @code{\^}, @code{\@{},
+@code{\@}}, @code{\'}, @code{\`}, @code{\-}, @code{\_}, @code{\!},
+@code{\?}, @code{\)}, @code{\/}, @code{\,}, @code{\&}, @code{\:},
+@code{\~}, @code{\0}, @code{\a}, @code{\c}, @code{\d}, @code{\e},
+@code{\E}, @code{\p}, @code{\r}, @code{\t}, and @code{\u}. However,
+using them this way is discouraged; they can make the input confusing to
+read.
+
+@cindex @code{\A}, delimiters allowed by
+@cindex @code{\b}, delimiters allowed by
+@cindex @code{\o}, delimiters allowed by
+@cindex @code{\w}, delimiters allowed by
+@cindex @code{\X}, delimiters allowed by
+@cindex @code{\Z}, delimiters allowed by
+@cindex newline, as delimiter
+A few escape sequences,
+@code{\A},
+@code{\b},
+@code{\o},
+@code{\w},
+@code{\X},
+and @code{\Z}, accept a newline as a delimiter. Newlines that serve
+as delimiters continue to be recognized as input line terminators.
+
+@Example
+A caf\o
+e\(aa
+in Paris
+ @result{} A café in Paris
+@endExample
+
+@noindent
+Use of newlines as delimiters in escape sequences is also discouraged.
+
+@cindex @code{\D}, delimiters allowed by
+@cindex @code{\h}, delimiters allowed by
+@cindex @code{\H}, delimiters allowed by
+@cindex @code{\l}, delimiters allowed by
+@cindex @code{\L}, delimiters allowed by
+@cindex @code{\N}, delimiters allowed by
+@cindex @code{\R}, delimiters allowed by
+@cindex @code{\s}, delimiters allowed by
+@cindex @code{\S}, delimiters allowed by
+@cindex @code{\v}, delimiters allowed by
+@cindex @code{\x}, delimiters allowed by
+Finally, the escape sequences @code{\D}, @code{\h}, @code{\H},
+@code{\l}, @code{\L}, @code{\N}, @code{\R}, @code{\s}, @code{\S},
+@code{\v}, and @code{\x} prohibit many delimiters.
+
+@itemize @bullet
+@item
+@cindex numerals, as delimiters
+@cindex digits, as delimiters
+@cindex @code{.}, as delimiter
+@cindex decimal point, as delimiter
+@cindex dot, as delimiter
+the numerals @code{0}-@code{9} and the decimal point @code{.}
+
+@item
+@cindex operators, as delimiters
+@cindex @code{+}, as delimiter
+@cindex @code{-}, as delimiter
+@cindex @code{/}, as delimiter
+@cindex @code{*}, as delimiter
+@cindex @code{%}, as delimiter
+@cindex @code{<}, as delimiter
+@cindex @code{>}, as delimiter
+@cindex @code{=}, as delimiter
+@cindex @code{&}, as delimiter
+@ifnotinfo
+@cindex @code{:}, as delimiter
+@end ifnotinfo
+@ifinfo
+@cindex <colon>, as delimiter
+@end ifinfo
+@cindex @code{(}, as delimiter
+@cindex @code{)}, as delimiter
+the (single-character) operators @samp{+-/*%<>=&:()}
+
+@item
+@cindex space character, as delimiter
+@cindex tab character, as delimiter
+the space and tab characters
+
+@item
+@cindex @code{\%}, as delimiter
+@cindex @code{\:}, as delimiter
+@cindex @code{\@{}, as delimiter
+@cindex @code{\@}}, as delimiter
+@cindex @code{\'}, as delimiter
+@cindex @code{\`}, as delimiter
+@cindex @code{\-}, as delimiter
+@cindex @code{\_}, as delimiter
+@cindex @code{\!}, as delimiter
+@cindex @code{\/}, as delimiter
+@cindex @code{\c}, as delimiter
+@cindex @code{\e}, as delimiter
+@cindex @code{\p}, as delimiter
+any escape sequences other than @code{\%}, @code{\:}, @code{\@{},
+@code{\@}}, @code{\'}, @code{\`}, @code{\-}, @code{\_}, @code{\!},
+@code{\/}, @code{\c}, @code{\e}, and @code{\p}
+@end itemize
+
+Delimiter syntax is complex and flexible primarily for historical
+reasons; the foregoing restrictions need be kept in mind mainly when
+using @code{groff} in @acronym{AT&T} compatibility mode. GNU
+@code{troff} keeps track of the nesting depth of escape sequence
+interpolations, so the only characters you need to avoid using as
+delimiters are those that appear in the arguments you input, not any
+that result from interpolation. Typically, @code{'} works fine.
+@xref{Implementation Differences}.
+
+@Example
+$ groff -Tps
+.de Mw
+. nr wd \w'\\$1'
+. tm "\\$1" is \\n(wd units wide.
+..
+.Mw Wet'suwet'en
+.Mw Wet+200i
+.cp 1 \" turn on compatibility mode
+.Mw Wet'suwet'en
+.Mw Wet'
+.Mw Wet+200i
+ @error{} "Wet'suwet'en" is 54740 units wide.
+ @error{} "Wet'+200i" is 42610 units wide.
+ @error{} "Wet'suwet'en" is 15860 units wide.
+ @error{} "Wet'" is 15860 units wide.
+ @error{} "Wet'+200i" is 14415860 units wide.
+@endExample
+
+We see here that in compatibility mode, the part of the argument after
+the @code{'} delimiter escapes from its context and, if nefariously
+crafted, influences the computation of the @var{wd} register's value in
+a surprising way.
+@c END Keep (roughly) parallel with subsection " Delimiters" of
+@c groff(7).
+
+@node Comments, Registers, Formatter Instructions, GNU troff Reference
+@section Comments
+@cindex comments
+
+One of the most common forms of escape sequence is the
+comment.@footnote{This claim may be more aspirational than descriptive.}
+
+@Defesc {\\", , , }
+Start a comment. Everything up to the next newline is ignored.
+
+This may sound simple, but it can be tricky to keep the comments from
+interfering with the appearance of the output.
+@cindex @code{ds}, @code{ds1} requests, and comments
+@cindex @code{as}, @code{as1} requests, and comments
+If the escape sequence is to the right of some text or a request, that
+portion of the line is ignored, but spaces preceding it are processed
+normally by GNU @code{troff}. This affects only the @code{ds} and
+@code{as} requests and their variants.
+
+@cindex tabs, before comments
+@cindex comments, lining up with tabs
+One possibly irritating idiosyncrasy is that tabs should not be used to
+vertically align comments in the source document. Tab characters are
+not treated as separators between a request name and its first argument,
+nor between arguments.
+
+@cindex undefined request
+@cindex request, undefined
+A comment on a line by itself is treated as a blank line, because after
+eliminating the comment, that is all that remains.
+
+@Example
+Test
+\" comment
+Test
+ @result{} Test
+ @result{}
+ @result{} Test
+@endExample
+
+To avoid this, it is common to combine the empty request with the
+comment escape sequence as @samp{.\"}, causing the input line to be
+ignored.
+
+@cindex @code{'}, as a comment
+Another commenting scheme sometimes seen is three consecutive single
+quotes (@code{'''}) at the beginning of a line. This works, but GNU
+@code{troff} emits a warning diagnostic (if enabled) about an undefined
+macro (namely @samp{''}).
+@endDefesc
+
+@Defesc {\\#, , , }
+Start a comment; everything up to and including the next newline is
+ignored. This @code{groff} extension was introduced to avoid the
+problems described above.
+
+@Example
+Test
+\# comment
+Test
+ @result{} Test Test
+@endExample
+@endDefesc
+
+@Defreq {ig, [@Var{end}]}
+Ignore input until, in the current conditional block (if
+any),@footnote{@xref{Conditional Blocks}.} the macro @var{end} is called
+at the start of a control line, or the control line @samp{..} is
+encountered if @var{end} is not specified. @code{ig} is parsed as if it
+were a macro definition, but its contents are discarded, not
+stored.@footnote{Exception: auto-incrementing registers defined outside
+the ignored region @emph{will} be modified if interpolated with
+@code{\n±} inside it. @xref{Auto-increment}.}
+
+@c Wrap example at 56 columns.
+@Example
+hand\c
+.de TX
+fasting
+..
+.ig TX
+This is part of a large block of input that has been
+temporarily(?) commented out.
+We can restore it simply by removing the .ig request and
+the call of its end macro.
+.TX
+@endExample
+@Example
+ @result{} handfasting
+@endExample
+@endDefreq
+
+
+@c =====================================================================
+
+@c BEGIN Keep (roughly) parallel with subsection "Registers" of
+@c groff(7).
+@node Registers, Manipulating Filling and Adjustment, Formatter Instructions, GNU troff Reference
+@section Registers
+@cindex registers
+
+In the @code{roff} language, numbers can be stored in @dfn{registers}.
+Many built-in registers exist, supplying anything from the date to
+details of formatting parameters. You can also define your own.
+@xref{Identifiers}, for information on constructing a valid name for a
+register.
+
+@menu
+* Setting Registers::
+* Interpolating Registers::
+* Auto-increment::
+* Assigning Register Formats::
+* Built-in Registers::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Setting Registers, Interpolating Registers, Registers, Registers
+@subsection Setting Registers
+@cindex setting registers (@code{nr}, @code{\R})
+@cindex registers, setting (@code{nr}, @code{\R})
+
+Define registers and update their values with the @code{nr} request or
+the @code{\R} escape sequence.
+
+@DefreqList {nr, ident value}
+@DefescListEndx {\\R, @code{'}, ident value, @code{'}}
+Set register @var{ident} to @var{value}. If @var{ident} doesn't exist,
+GNU @code{troff} creates it. In the @code{\R} escape sequence, the
+delimiter need not be a neutral apostrophe; see @ref{Delimiters}. It
+also does not produce an input token in GNU @code{troff}. @xref{Gtroff
+Internals}.
+
+@Example
+.nr a (((17 + (3 * 4))) % 4)
+\n[a]
+.\R'a (((17 + (3 * 4))) % 4)'
+\n[a]
+ @result{} 1 1
+@endExample
+
+(Later, we will discuss additional forms of @code{nr} and @code{\R} that
+can change a register's value after it is dereferenced but before it is
+interpolated. @xref{Auto-increment}.)
+
+The complete transparency of @code{\R} can cause surprising effects if
+you use registers like @code{.k}, which get evaluated at the time they
+are accessed.
+
+@Example
+.ll 1.6i
+.
+aaa bbb ccc ddd eee fff ggg hhh\R':k \n[.k]'
+.tm :k == \n[:k]
+ @result{} :k == 126950
+.
+.br
+.
+aaa bbb ccc ddd eee fff ggg hhh\h'0'\R':k \n[.k]'
+.tm :k == \n[:k]
+ @result{} :k == 15000
+@endExample
+
+If you process this with the PostScript device (@code{-Tps}), there will
+be a line break eventually after @code{ggg} in both input lines.
+However, after processing the space after @code{ggg}, the partially
+collected line is not overfull yet, so GNU @code{troff} continues to
+collect input until it sees the space (or in this case, the newline)
+after @code{hhh}. At this point, the line is longer than the line
+length, and the line gets broken.
+
+In the first input line, since the @code{\R} escape sequence leaves no
+traces, the check for the overfull line hasn't been done yet at the
+point where @code{\R} gets handled, and you get a value for the
+@code{.k} register that is even greater than the current line length.
+
+In the second input line, the insertion of @code{\h'0'} to cause a
+zero-width motion forces GNU @code{troff} to check the line length,
+which in turn causes the start of a new output line. Now @code{.k}
+returns the expected value.
+@endDefreq
+
+@code{nr} and @code{\R} each have two additional special forms to
+increment or decrement a register.
+
+@DefreqList {nr, ident @t{+}@Var{value}}
+@DefreqItem {nr, ident @t{-}@Var{value}}
+@DefescItemx {\\R, @code{'}, ident @t{+}value, @code{'}}
+@DefescListEnd {\\R, @code{'}, ident @t{-}value, @code{'}}
+Increment (decrement) register @var{ident} by @var{value}. In the
+@code{\R} escape sequence, the delimiter need not be a neutral
+apostrophe; see @ref{Delimiters}.
+
+@Example
+.nr a 1
+.nr a +1
+\na
+ @result{} 2
+@endExample
+
+@cindex negating register values
+A leading minus sign in @var{value} is always interpreted as a
+decrementation operator, not an algebraic sign. To assign a register a
+negative value or the negated value of another register, you can
+force GNU @code{troff} to interpret @samp{-} as a negation or minus,
+rather than decrementation, operator: enclose it with its operand in
+parentheses or subtract it from zero.
+
+@Example
+.nr a 7
+.nr b 3
+.nr a -\nb
+\na
+ @result{} 4
+.nr a (-\nb)
+\na
+ @result{} -3
+.nr a 0-\nb
+\na
+ @result{} -3
+@endExample
+
+If a register's prior value does not exist (the register was undefined),
+an increment or decrement is applied as if to@tie{}0.
+@endDefreq
+
+@Defreq {rr, ident}
+@cindex removing a register (@code{rr})
+@cindex register, removing (@code{rr})
+Remove register @var{ident}. If @var{ident} doesn't exist, the request
+is ignored. Technically, only the name is removed; the register's
+contents are still accessible under aliases created with @code{aln}, if
+any.
+@endDefreq
+
+@Defreq {rnn, ident1 ident2}
+@cindex renaming a register (@code{rnn})
+@cindex register, renaming (@code{rnn})
+Rename register @var{ident1} to @var{ident2}. If @var{ident1} doesn't
+exist, the request is ignored. Renaming a built-in register does not
+otherwise alter its properties.
+@endDefreq
+
+@Defreq {aln, new old}
+@cindex alias, register, creating (@code{aln})
+@cindex creating alias for register (@code{aln})
+@cindex register, creating alias for (@code{aln})
+Create an alias @var{new} for an existing register @var{old}, causing
+the names to refer to the same stored object. If @var{old} is
+undefined, a warning in category @samp{reg} is produced and the request
+is ignored. @xref{Warnings}, for information about the enablement and
+suppression of warnings.
+
+@cindex alias, register, removing (@code{rr})
+@cindex removing alias for register (@code{rr})
+@cindex register, removing alias for (@code{rr})
+To remove a register alias, invoke @code{rr} on its name. A register's
+contents do not become inaccessible until it has no more names.
+@endDefreq
+@c END Keep (roughly) parallel with subsection "Registers" of groff(7).
+
+@c ---------------------------------------------------------------------
+
+@node Interpolating Registers, Auto-increment, Setting Registers, Registers
+@subsection Interpolating Registers
+@cindex interpolating registers (@code{\n})
+@cindex registers, interpolating (@code{\n})
+
+Register contents are interpolated with the @code{\n} escape sequence.
+
+@DefescList {\\n, , i, }
+@DefescItem {\\n, (, id, }
+@DefescListEnd {\\n, [, ident, ]}
+@cindex nested assignments
+@cindex assignments, nested
+@cindex indirect assignments
+@cindex assignments, indirect
+Interpolate register with name @var{ident} (one-character
+name@tie{}@var{i}, two-character name @var{id}). @code{\n} is
+interpreted even in copy mode (@pxref{Copy Mode}). If the register is
+undefined, it is created and assigned a value of@tie{}@samp{0}, that
+value is interpolated, and a warning in category @samp{reg} is emitted.
+@xref{Warnings}, for information about the enablement and suppression of
+warnings.
+
+@Example
+.nr a 5
+.nr as \na+\na
+\n(as
+ @result{} 10
+@endExample
+
+@Example
+.nr a1 5
+.nr ab 6
+.ds str b
+.ds num 1
+\n[a\n[num]]
+ @result{} 5
+\n[a\*[str]]
+ @result{} 6
+@endExample
+@endDefesc
+
+@c ---------------------------------------------------------------------
+
+@node Auto-increment, Assigning Register Formats, Interpolating Registers, Registers
+@subsection Auto-increment
+@cindex auto-incrementation of a register
+@cindex incrementation, automatic, of a register
+@cindex decrementation, automatic, of a register
+
+Registers can also be incremented or decremented by a configured amount
+at the time they are interpolated. The value of the increment is
+specified with a third argument to the @code{nr} request, and a special
+interpolation syntax is used to alter and then retrieve the register's
+value. Together, these features are called
+@dfn{auto-increment}.@footnote{A negative auto-increment can be
+considered an ``auto-decrement''.}
+
+@Defreq {nr, ident value incr}
+@cindex @code{\R}, difference from @code{nr}
+Set register @var{ident} to @var{value} and its auto-incrementation
+amount to to @var{incr}. The @code{\R} escape sequence doesn't support
+an @var{incr} argument.
+@endDefreq
+
+Auto-incrementation is not @emph{completely} automatic; the @code{\n}
+escape sequence in its basic form never alters the value of a register.
+To apply auto-incrementation to a register, interpolate it with
+@samp{\n±}.
+
+@DefescList {\\n, +, i, }
+@DefescItem {\\n, -, i, }
+@DefescItem {\\n, +(, id, }
+@DefescItem {\\n, -(, id, }
+@DefescItem {\\n, +[, ident, ]}
+@DefescListEnd {\\n, -[, ident, ]}
+Increment or decrement @var{ident} (one-character
+name@tie{}@var{i}, two-character name @var{id}) by the register's
+auto-incrementation value and then interpolate the new register value.
+If @var{ident} has no auto-incrementation value, interpolate as with
+@code{\n}.
+@endDefesc
+
+@need 1000
+@Example
+.nr a 0 1
+.nr xx 0 5
+.nr foo 0 -2
+\n+a, \n+a, \n+a, \n+a, \n+a
+.br
+\n-(xx, \n-(xx, \n-(xx, \n-(xx, \n-(xx
+.br
+\n+[foo], \n+[foo], \n+[foo], \n+[foo], \n+[foo]
+ @result{} 1, 2, 3, 4, 5
+ @result{} -5, -10, -15, -20, -25
+ @result{} -2, -4, -6, -8, -10
+@endExample
+
+@cindex increment value without changing the register
+@cindex value, incrementing without changing the register
+To change the increment value without changing the value of a register,
+assign the register's value to itself by interpolating it, and specify
+the desired increment normally. Apply an increment of @samp{0} to
+disable auto-incrementation of the register.
+
+@c ---------------------------------------------------------------------
+
+@node Assigning Register Formats, Built-in Registers, Auto-increment, Registers
+@subsection Assigning Register Formats
+@cindex assign number format to register (@code{af})
+@cindex number formats, assigning to register (@code{af})
+@cindex register, assigning number format to (@code{af})
+
+A writable register's value can be interpolated in several number
+formats. By default, conventional Arabic numerals are used.
+Other formats see use in sectioning and outlining schemes and
+alternative page numbering arrangements.
+
+@Defreq {af, reg fmt}
+Use number format @var{fmt} when interpolating register @var{reg}.
+Valid number formats are as follows.
+
+@table @code
+@item 0@r{@dots{}}
+Arabic numerals 0, 1, 2, and so on.
+Any decimal digit is equivalent to @samp{0}; the formatter merely counts
+the digits specified. Multiple Arabic numerals in @var{fmt} cause
+interpolations to be zero-padded on the left if necessary to at least as
+many digits as specified (interpolations never truncate a register
+value). A register with format @samp{00} interpolates values 1, 2, 3 as
+@samp{01}, @samp{02}, @samp{03}. The default format for all writable
+registers is @samp{0}.
+
+@item I
+@cindex Roman numerals
+@cindex numerals, Roman
+Uppercase Roman numerals: 0, I, II, III, IV,@tie{}@enddots{}
+
+@item i
+Lowercase Roman numerals: 0, i, ii, iii, iv,@tie{}@enddots{}
+
+@item A
+Uppercase letters: 0, A, B, C, @dots{},@tie{}Z, AA, AB,@tie{}@enddots{}
+
+@item a
+Lowercase letters: 0, a, b, c, @dots{},@tie{}z, aa, ab,@tie{}@enddots{}
+@end table
+
+Omitting @var{fmt} causes a warning in category @samp{missing}.
+@xref{Warnings}, for information about the enablement and suppression of
+warnings. Specifying an unrecognized format is an error.
+
+Zero values are interpolated as @samp{0} in non-Arabic formats.
+Negative quantities are prefixed with @samp{-} irrespective of format.
+In Arabic formats, the sign supplements the field width. If @var{reg}
+doesn't exist, it is created with a zero value.
+
+@Example
+.nr a 10
+.af a 0 \" the default format
+\na,
+.af a I
+\na,
+.af a 321
+.nr a (-\na)
+\na,
+.af a a
+\na
+ @result{} 10, X, -010, -j
+@endExample
+
+@cindex Roman numerals, extrema (maximum and minimum)
+@cindex extreme values representable with Roman numerals
+@cindex maximum value representable with Roman numerals
+@cindex minimum value representable with Roman numerals
+The representable extrema in the @samp{i} and @samp{I} formats
+correspond to Arabic ±39,999. GNU @code{troff} uses @samp{w} and
+@samp{z} to represent 5,000 and 10,000 in Roman numerals, respectively,
+following the convention of @acronym{AT&T} @code{troff}---currently, the
+correct glyphs for Roman numerals five thousand (@code{U+2181}) and ten
+thousand (@code{U+2182}) are not used.
+
+@cindex read-only register, changing format
+@cindex changing format, and read-only registers
+Assigning the format of a read-only register is an error. Instead, copy
+the read-only register's value to, and assign the format of, a writable
+register.
+@endDefreq
+
+@DefescList {\\g, , r, }
+@DefescItem {\\g, (, rg, }
+@DefescListEnd {\\g, [, reg, ]}
+@cindex format of register (@code{\g})
+@cindex register, format (@code{\g})
+Interpolate the format of the register @var{reg} (one-character
+name@tie{}@var{r}, two-character name @var{rg}). Zeroes represent
+Arabic formats. If @var{reg} is not defined, @var{reg} is not created
+and nothing is interpolated. @code{\g} is interpreted even in copy mode
+(@pxref{Copy Mode}).
+@endDefesc
+
+@cindex register format, in expressions
+@cindex expressions, and register format
+GNU @code{troff} interprets only Arabic numerals. The Roman numeral or
+alphabetic formats cannot be used as operands to arithmetic operators in
+expressions (@pxref{Numeric Expressions}). For instance, it may be
+desirable to test the page number independently of its format.
+
+@Example
+.af % i \" front matter
+.de header-trap
+. \" To test the page number, we need it in Arabic.
+. ds saved-page-number-format \\g%\"
+. af % 0
+. nr page-number-in-decimal \\n%
+. af % \\*[saved-page-number-format]
+. ie \\n[page-number-in-decimal]=1 .do-first-page-stuff
+. el \@{\
+. ie o .do-odd-numbered-page-stuff
+. el .do-even-numbered-page-stuff
+. \@}
+. rm saved-page-number-format
+..
+.wh 0 header-trap
+@endExample
+
+@c ---------------------------------------------------------------------
+
+@node Built-in Registers, , Assigning Register Formats, Registers
+@subsection Built-in Registers
+@cindex built-in registers
+@cindex registers, built-in
+
+Predefined registers whose identifiers start with a dot are read-only.
+Many are Boolean-valued, interpolating a true or false value testable
+with the @code{if}, @code{ie}, or @code{while} requests. Some read-only
+registers are string-valued, meaning that they interpolate text.
+
+@cindex removing a built-in register
+@cindex register, built-in, removing
+@cindex built-in register, removing
+@strong{Caution:@:} Built-in registers are subject to removal like
+others; once removed, they can be recreated only as normal writable
+registers and will not reflect formatter state.
+
+A register name (without the dot) is often associated with a request of
+the same name. A complete listing of all built-in registers can be
+found in @ref{Register Index}.
+
+We present here a few built-in registers that are not described
+elsewhere in this manual; they have to do with invariant properties of
+GNU @code{troff}, or obtain information about the formatter's
+command-line options, processing progress, or the operating environment.
+
+@table @code
+@item \n[.A]
+@vindex .A
+@cindex approximation output register (@code{.A})
+@cindex plain text approximation output register (@code{.A})
+Approximate output is being formatted (Boolean-valued); see
+@command{groff} @option{-a} option (@ref{Groff Options}).
+
+@item \n[.c]
+@vindex .c
+@itemx \n[c.]
+@vindex c.
+@cindex input line number register (@code{.c}, @code{c.})
+@cindex line number, input, register (@code{.c}, @code{c.})
+Input line number. @samp{c.} is a writable synonym,
+@c introduced in AT&T device-independent troff (CSTR #54, 1981-01)
+affecting subsequent interpolations of both @samp{.c} and @samp{c.}.
+
+@item \n[.F]
+@cindex current input file name register (@code{.F})
+@cindex input file name, current, register (@code{.F})
+@vindex .F
+Name of input file (string-valued).
+
+@item \n[.g]
+@vindex .g
+@cindex GNU @code{troff}, identification register (@code{.g})
+@cindex GNU-specific register (@code{.g})
+Always true in GNU @code{troff} (Boolean-valued). Documents can use
+this to ask the formatter if it claims @code{groff} compatibility.
+
+@item \n[.P]
+@vindex .P
+Output page selection status (Boolean-valued); see @command{groff}
+@option{-o} option (@ref{Groff Options}).
+
+@item \n[.R]
+@cindex number of registers register (@code{.R})
+@cindex registers, number of, register (@code{.R})
+@vindex .R
+Count of available unused registers; always 10,000 in GNU
+@code{troff}.@footnote{GNU @code{troff} dynamically allocates memory for
+as many registers as required.}
+
+@item \n[.T]
+@vindex .T
+Indicator of output device selection (Boolean-valued); see
+@command{groff} @option{-T} option (@ref{Groff Options}).
+
+@item \n[.U]
+@cindex safer mode
+@cindex mode, safer
+@cindex unsafe mode
+@cindex mode, unsafe
+@vindex .U
+Unsafe mode enablement status (Boolean-valued); see @command{groff}
+@option{-U} option (@ref{Groff Options}).
+
+@item \n[.x]
+@vindex .x
+@cindex major version number register (@code{.x})
+@cindex version number, major, register (@code{.x})
+Major version number of the running GNU @code{troff} formatter. For
+example, if the version number is 1.23.0, then @code{.x}
+contains@tie{}@samp{1}.
+
+@item \n[.y]
+@vindex .y
+@cindex minor version number register (@code{.y})
+@cindex version number, minor, register (@code{.y})
+Minor version number of the running GNU @code{troff} formatter. For
+example, if the version number is 1.23.0, then @code{.y}
+contains@tie{}@samp{23}.
+
+@item \n[.Y]
+@vindex .Y
+@cindex revision number register (@code{.Y})
+Revision number of the running GNU @code{troff} formatter. For example,
+if the version number is 1.23.0, then @code{.Y} contains@tie{}@samp{0}.
+
+@item \n[$$]
+@vindex $$
+@cindex process ID of GNU @code{troff} register (@code{$$})
+@cindex PID of GNU @code{troff} register (@code{$$})
+@cindex GNU @code{troff}, process ID register (@code{$$})
+@cindex GNU @code{troff}, PID register (@code{$$})
+Process identifier (PID) of the GNU @code{troff} program in its
+operating environment.
+@end table
+
+Date- and time-related registers are set per the local time as
+determined by @cite{localtime@r{(3)}} when the formatter launches. This
+initialization can be overridden by @env{SOURCE_DATE_EPOCH} and
+@env{TZ}; see @ref{Environment}.
+
+@table @code
+@item \n[seconds]
+@cindex seconds, current time (@code{seconds})
+@cindex time, current, seconds (@code{seconds})
+@cindex current time, seconds (@code{seconds})
+@vindex seconds
+Count of seconds elapsed in the minute (0--60). @c not 59; see POSIX
+
+@item \n[minutes]
+@cindex minutes, current time (@code{minutes})
+@cindex time, current, minutes (@code{minutes})
+@cindex current time, minutes (@code{minutes})
+@vindex minutes
+Count of minutes elapsed in the hour (0--59).
+
+@item \n[hours]
+@cindex hours, current time (@code{hours})
+@cindex time, current, hours (@code{hours})
+@cindex current time, hours (@code{hours})
+@vindex hours
+Count of hours elapsed since midnight (0--23).
+
+@item \n[dw]
+@cindex day of the week register (@code{dw})
+@cindex date, day of the week register (@code{dw})
+@vindex dw
+Day of the week (1--7; 1 is Sunday).
+
+@item \n[dy]
+@cindex day of the month register (@code{dy})
+@cindex date, day of the month register (@code{dy})
+@vindex dy
+Day of the month (1--31).
+
+@item \n[mo]
+@cindex month of the year register (@code{mo})
+@cindex date, month of the year register (@code{mo})
+@vindex mo
+Month of the year (1--12).
+
+@item \n[year]
+@cindex date, year register (@code{year}, @code{yr})
+@cindex year, current, register (@code{year}, @code{yr})
+@vindex year
+Gregorian year.
+
+@cindex CSTR@tie{}#54 errata
+@cindex CSTR@tie{}#54 erratum, @code{yr} register
+@item \n[yr]
+@vindex yr
+Gregorian year minus@tie{}1900. This register is incorrectly documented
+in the @acronym{AT&T} @code{troff} manual as storing the last two digits
+of the current year. That claim stopped being true in 2000. Old
+@code{troff} input that looks like:
+
+@Example
+'\" The year number is a surprise after 1999.
+This document was formatted in 19\n(yr.
+@endExample
+
+@noindent
+can be corrected to:
+
+@Example
+This document was formatted in \n[year].
+@endExample
+
+@noindent
+or, for portability across many @code{roff} programs, to the following.
+
+@Example
+.nr y4 1900+\n(yr
+This document was formatted in \n(y4.
+@endExample
+@end table
+
+
+@c =====================================================================
+
+@node Manipulating Filling and Adjustment, Manipulating Hyphenation, Registers, GNU troff Reference
+@section Manipulating Filling and Adjustment
+@cindex manipulating filling and adjustment
+@cindex filling and adjustment, manipulating
+@cindex adjustment and filling, manipulating
+@cindex justifying text
+@cindex text, justifying
+
+@cindex break
+@cindex line break
+@cindex @code{bp} request, causing implicit break
+@cindex @code{ce} request, causing implicit break
+@cindex @code{cf} request, causing implicit break
+@cindex @code{fi} request, causing implicit break
+@cindex @code{fl} request, causing implicit break
+@cindex @code{in} request, causing implicit break
+@cindex @code{nf} request, causing implicit break
+@cindex @code{rj} request, causing implicit break
+@cindex @code{sp} request, causing implicit break
+@cindex @code{ti} request, causing implicit break
+@cindex @code{trf} request, causing implicit break
+When an output line is pending (see below), a break moves the drawing
+position to the beginning of the next text baseline, interrupting
+filling. Various ways of causing breaks were shown in @ref{Breaking}.
+The @code{br} request likewise causes a break. Several other requests
+imply breaks:@: @code{bp}, @code{ce}, @code{cf}, @code{fi}, @code{fl},
+@code{in}, @code{nf}, @code{rj}, @code{sp}, @code{ti}, and @code{trf}.
+If the no-break control character is used with any of these requests,
+GNU @code{troff} suppresses the break; instead the requested operation
+takes effect at the next break. @samp{'br} does nothing.
+
+@Example
+.ll 55n
+This line is normally filled and adjusted.
+.br
+A line's alignment is decided
+'ce \" Center the next input line (no break).
+when it is output.
+This line returns to normal filling and adjustment.
+ @result{} This line is normally filled and adjusted.
+ @result{} A line's alignment is decided when it is output.
+ @result{} This line returns to normal filling and adjustment.
+@endExample
+
+@noindent
+@cindex pending output line
+@cindex partially collected line
+@cindex output line properties
+@cindex properties of output lines
+Output line properties like page offset, indentation, adjustment, and
+even the location of its text baseline, are not determined until the
+line has been broken. An output line is said to be @dfn{pending} if
+some input has been collected but an output line corresponding to it has
+not yet been written; such an output line is also termed @dfn{partially
+collected}. If no output line is pending, it is as if a break has
+already happened; additional breaks, whether explicit or implicit, have
+no effect. If the vertical drawing position is negative---as it is when
+the formatter starts up---a break starts a new page (even if no output
+line is pending) unless an end-of-input macro is being interpreted.
+@xref{End-of-input Traps}.
+
+@Defreq {br, }
+Break the line: emit any pending output line without adjustment.
+
+@Example
+foo bar
+.br
+baz
+'br
+qux
+ @result{} foo bar
+ @result{} baz qux
+@endExample
+@endDefreq
+
+Sometimes you want to prevent a break within a phrase or between a
+quantity and its units.
+
+@Defesc {\\~, , , }
+@cindex unbreakable space (@code{\~})
+@cindex space, unbreakable (@code{\~})
+Insert an unbreakable space that is adjustable like an ordinary space.
+It is discarded from the end of an output line if a break is forced.
+
+@Example
+Set the output speed to\~1.
+There are 1,024\~bytes in 1\~KiB.
+J.\~F.\~Ossanna wrote the original CSTR\~#54.
+@endExample
+@endDefesc
+
+By default, GNU @code{troff} fills text and adjusts it to reach the
+output line length. The @code{nf} request disables filling; the
+@code{fi} request reënables it.
+
+@DefreqList {fi, }
+@DefregListEndx {.u}
+@cindex filling of output, enabling (@code{fi})
+@cindex output, filling, enablement of (@code{fi})
+@cindex fill mode (@code{fi}), enabling
+@cindex mode, fill (@code{fi}), enabling
+Enable filling of output lines; a pending output line is broken. The
+read-only register @code{.u} is set to@tie{}1. The filling enablement
+status, sometimes called @dfn{fill mode}, is associated with the
+environment (@pxref{Environments}). @xref{Line Continuation}, for
+interaction with the @code{\c} escape sequence.
+@endDefreq
+
+@Defreq {nf, }
+@cindex filling of output, disabling (@code{nf})
+@cindex output, filling, disablement of (@code{nf})
+@cindex no-fill mode
+@cindex mode, no-fill
+@cindex fill mode, disabling
+@cindex mode, fill, disabling
+Disable filling of output lines: the output line length (@pxref{Line
+Layout}) is ignored and output lines are broken where the input lines
+are. A pending output line is broken and adjustment is suppressed. The
+read-only register @code{.u} is set to@tie{}0. The filling enablement
+status is associated with the environment (@pxref{Environments}). See
+@ref{Line Continuation}, for interaction with the @code{\c} escape
+sequence.
+@endDefreq
+
+@DefreqList {ad, [@Var{mode}]}
+@DefregListEndx {.j}
+Enable output line adjustment in @var{mode}, taking effect when the
+pending (or next) output line is broken. Adjustment is suppressed when
+filling is. @var{mode} can have one of the following values.
+
+@table @code
+@item b
+@itemx n
+Adjust ``normally'':@: if the output line does not consume the distance
+between the indentation and the configured output line length, GNU
+@code{troff} stretches adjustable spaces within the line until that
+length is reached. When the indentation is zero, this mode spreads the
+line to both the left and right margins. This is the GNU @code{troff}
+default.
+
+@item c
+@cindex centered text (filled)
+Center filled text. Contrast with the @code{ce} request, which centers
+text @emph{without} filling it.
+
+@item l
+@cindex ragged-right text
+Align text to the left without adjusting it.
+
+@item r
+@cindex ragged-left text
+Align text to the right without adjusting it.
+@end table
+
+@var{mode} can also be a value previously stored in the @code{.j}
+register. Using @code{ad} without an argument is the same as @samp{.ad
+\n[.j]}; unless filling is disabled, GNU @code{troff} resumes adjusting
+lines in the same way it did before adjustment was disabled by
+invocation of the @code{na} request.
+
+@cindex adjustment mode register (@code{.j})
+The adjustment mode and enablement status are encoded in the read-only
+register @code{.j}. These parameters are associated with the
+environment (@pxref{Environments}).
+
+The value of @code{.j} for any adjustment mode is an implementation
+detail and should not be relied upon as a programmer's interface. Do
+not write logic to interpret or perform arithmetic on it.
+
+@Example
+.ll 48n
+.de AD
+. br
+. ad \\$1
+..
+@c . @c XXX: Restore this line when the page has room for it.
+.de NA
+. br
+. na
+..
+@c . @c XXX: Restore this line when the page has room for it.
+left
+.AD r
+.nr ad \n(.j
+right
+.AD c
+center
+.NA
+left
+.AD
+center
+.AD \n(ad
+right
+@endExample
+@Example
+ @result{} left
+ @result{} right
+ @result{} center
+ @result{} left
+ @result{} center
+ @result{} right
+@endExample
+@endDefreq
+
+@Defreq {na, }
+Disable output line adjustment. This produces the same output as
+left-alignment, but the value of the adjustment mode register @code{.j}
+is altered differently. The adjustment mode and enablement status are
+associated with the environment (@pxref{Environments}).
+@endDefreq
+
+@DefreqList {brp, }
+@DefescListEndx {\\p, , , }
+Break, adjusting the line per the current adjustment mode. @code{\p}
+schedules a break with adjustment at the next word boundary. The escape
+sequence is itself neither a break nor a space of any kind; it can thus
+be placed in the middle of a word to cause a break at the end of that
+word.
+
+Breaking with immediate adjustment can produce ugly results since GNU
+@code{troff} doesn't have a sophisticated paragraph-building algorithm,
+as @TeX{} has, for example. Instead, GNU @code{troff} fills and adjusts
+a paragraph line by line.
+
+@Example
+.ll 4.5i
+This is an uninteresting sentence.
+This is an uninteresting sentence.\p
+This is an uninteresting sentence.
+@endExample
+
+@noindent
+is formatted as follows.
+
+@Example
+This is an uninteresting sentence. This is
+an uninteresting sentence.
+This is an uninteresting sentence.
+@endExample
+@endDefreq
+
+@cindex productive input line
+@cindex input line, productive
+@cindex line, productive input
+To clearly present the next couple of requests, we must introduce the
+concept of ``productive'' input lines. A @dfn{productive input line} is
+one that directly produces formatted output. Text lines produce
+output,@footnote{unless diverted; see @ref{Diversions}} as do control
+lines containing requests like @code{tl} or escape sequences like
+@code{\D}. Macro calls are not @emph{directly} productive, and thus not
+counted, but their interpolated contents can be. Empty requests, and
+requests and escape sequences that define registers or strings or alter
+the formatting environment (as with changes to the size, face, height,
+slant, or color of the type) are not productive. We will also preview
+the output line continuation escape sequence, @code{\c}, which
+``connects'' two input lines that would otherwise be counted separately.
+@footnote{@xref{Line Continuation}.}
+
+@Example
+@c .ll 56n
+.de hello
+Hello, world!
+..
+.ce \" center output of next productive input line
+.
+.nr junk-reg 1
+.ft I
+Chorus: \c
+.ft
+.hello
+Went the day well?
+ @result{} @slanted{Chorus:} Hello, world!
+ @result{} Went the day well?
+@endExample
+
+@DefreqList {ce, [@Var{n}]}
+@DefregListEndx {.ce}
+@cindex centered text (unfilled)
+@cindex centering lines (@code{ce})
+@cindex lines, centering (@code{ce})
+Break (unless the no-break control character is used), center the output
+of the next @var{n} productive input lines with respect to the line
+length and indentation without filling, then break again regardless of
+the invoking control character.
+@c Temporary indentation is ignored.
+If the argument is not positive, centering is disabled. Omitting the
+argument implies an @var{n} of @samp{1}. The count of lines remaining
+to be centered is stored in the read-only register @code{.ce} and is
+associated with the environment (@pxref{Environments}).
+
+@cindex @code{ce} request, difference from @w{@samp{.ad c}}
+While the @w{@samp{.ad c}} request also centers text, it fills the text
+as well.
+
+@c Wrap example at 56 columns.
+@Example
+.de FR
+This is a small text fragment that shows the differences
+between the `.ce' and the `.ad c' requests.
+..
+.ll 4i
+.ce 1000
+.FR
+.ce 0
+
+.ad c
+.FR
+ @result{} This is a small text fragment that shows
+ @result{} the differences
+ @result{} between the @quoteleft{}.ce@quoteright{} and the @quoteleft{}.ad c@quoteright{} requests.
+ @result{}
+ @result{} This is a small text fragment that shows
+ @result{} the differences between the @quoteleft{}.ce@quoteright{} and
+ @result{} the @quoteleft{}.ad c@quoteright{} requests.
+@endExample
+
+The previous example illustrates a common idiom of turning centering on
+for a quantity of lines far in excess of what is required, and off again
+after the text to be centered. This technique relieves humans of
+counting lines for requests that take a count of input lines as an
+argument.
+@endDefreq
+
+@DefreqList {rj, [@Var{n}]}
+@DefregListEndx {.rj}
+@cindex justifying text (@code{rj})
+@cindex text, justifying (@code{rj})
+@cindex right-justifying (@code{rj})
+Break (unless the no-break control character is used), align the output
+of the next @var{n} productive input lines to the right margin without
+filling, then break again regardless of the control character.
+@c Temporary indentation is ignored.
+If the argument is not positive, right-alignment is disabled. Omitting
+the argument implies an @var{n} of @samp{1}. The count of lines
+remaining to be right-aligned is stored in the read-only register
+@code{.rj} and is associated with the environment
+(@pxref{Environments}).
+
+@Example
+.ll 49n
+.rj 3
+At first I hoped that such a technically unsound
+project would collapse but I soon realized it was
+doomed to success. \[em] C. A. R. Hoare
+ @result{} At first I hoped that such a technically unsound
+ @result{} project would collapse but I soon realized it was
+ @result{} doomed to success. -- C. A. R. Hoare
+@endExample
+@endDefreq
+
+@need 2000
+@DefreqList {ss, word-space-size [@Var{additional-sentence-space-size}]}
+@DefregItemx {.ss}
+@DefregListEndx {.sss}
+@cindex word space size register (@code{.ss})
+@cindex size of word space register (@code{.ss})
+@cindex space between words register (@code{.ss})
+@cindex inter-sentence space size register (@code{.sss})
+@cindex sentence space size register (@code{.sss})
+@cindex size of sentence space register (@code{.sss})
+@cindex space between sentences register (@code{.sss})
+Set the sizes of spaces between words and
+sentences@footnote{Recall @ref{Filling} and @ref{Sentences} for the
+definitions of word and sentence boundaries, respectively.} in twelfths
+of font's space width (typically one-fourth to one-third em for Western
+scripts). The default for both parameters is@tie{}12. Negative values
+are erroneous.
+@cindex inter-word spacing, minimal
+@cindex minimal inter-word spacing
+@cindex space, between words
+The first argument is a minimum; if an output line undergoes adjustment,
+such spaces may increase in width.
+@cindex inter-sentence space, additional
+@cindex additional inter-sentence space
+@cindex space, between sentences
+The optional second argument sets the amount of additional space
+separating sentences on the same output line. If omitted, this amount
+is set to @var{word-space-size}. The request is ignored if there are no
+parameters.
+
+@cindex filling, and inter-sentence space
+@cindex mode, fill, and inter-sentence space
+Additional inter-sentence space is used only if the output line is not
+full when the end of a sentence occurs in the input. If a sentence ends
+at the end of an input line, then both an inter-word space and an
+inter-sentence space are added to the output; if two spaces follow the
+end of a sentence in the middle of an input line, then the second space
+becomes an inter-sentence space in the output. Additional
+inter-sentence space is not adjusted, but the inter-word space that
+always precedes it may be. Further input spaces after the second, if
+present, are adjusted as normal.
+
+The read-only registers @code{.ss} and @code{.sss} hold the minimal
+inter-word space and additional inter-sentence space amounts,
+respectively. These parameters are part of the environment
+(@pxref{Environments}), and rounded down to the nearest multiple
+of@tie{}12 on terminals.
+
+@cindex discardable horizontal space
+@cindex space, discardable, horizontal
+@cindex horizontal discardable space
+The @code{ss} request can insert discardable horizontal space; that is,
+space that is discarded at a break. For example, some footnote styles
+collect the notes into a single paragraph with large gaps between
+each note.
+
+@Example
+.ll 48n
+1.\~J. Fict. Ch. Soc. 6 (2020), 3\[en]14.
+.ss 12 48 \" applies to next sentence ending
+Reprints no longer available through FCS.
+.ss 12 \" go back to normal
+2.\~Better known for other work.
+ @result{} 1. J. Fict. Ch. Soc. 6 (2020), 3-14. Reprints
+ @result{} no longer available through FCS. 2. Better
+ @result{} known for other work.
+@endExample
+
+@noindent
+If @emph{undiscardable} space is required, use the @code{\h} escape
+sequence.
+@endDefreq
+
+
+@c =====================================================================
+
+@node Manipulating Hyphenation, Manipulating Spacing, Manipulating Filling and Adjustment, GNU troff Reference
+@section Manipulating Hyphenation
+@cindex manipulating hyphenation
+@cindex hyphenation, manipulating
+
+@cindex hyphenation, automatic
+@cindex automatic hyphenation
+When filling, GNU @code{troff} hyphenates words as needed at
+user-specified and automatically determined hyphenation points. The
+machine-driven determination of hyphenation points in words requires
+algorithms and data, and is susceptible to conventions and preferences.
+Before tackling such @dfn{automatic hyphenation}, let us consider how
+hyphenation points can be set explicitly.
+
+@cindex hyphenation, explicit
+@cindex explicit hyphenation
+@cindex hyphenation, manual
+@cindex manual hyphenation
+Explicitly hyphenated words such as ``mother-in-law'' are eligible for
+breaking after each of their hyphens. Relatively few words in a
+language offer such obvious break points, however, and automatic
+detection of syllabic (or phonetic) boundaries for hyphenation is not
+perfect,@footnote{Whether a perfect algorithm for this application is
+even possible is an unsolved problem in computer science:@:
+@url{https://tug.org/docs/liang/liang-thesis.pdf}.} particularly for
+unusual words found in technical literature. We can instruct GNU
+@code{troff} how to hyphenate specific words if the need arises.
+
+@cindex hyphenation exceptions
+@Defreq {hw, word @dots{}}
+Define each @dfn{hyphenation exception} @var{word} with each hyphen `-'
+in the word indicating a hyphenation point. For example, the request
+
+@Example
+.hw in-sa-lub-rious alpha
+@endExample
+
+@c Serendipitously, in PDF output, the "alpha" below gets hyphenated.
+@c Try to preserve this felicity in future edits.
+marks potential hyphenation points in ``insalubrious'', and prevents
+``alpha'' from being hyphenated at all.
+
+Besides the space character, any character whose hyphenation code is
+zero can be used to separate the arguments of @code{hw} (see the
+@code{hcode} request below). In addition, this request can be used more
+than once.
+
+@cindex @code{hw} request, and @code{hy} restrictions
+Hyphenation points specified with @code{hw} are not subject to the
+within-word placement restrictions imposed by the @code{hy} request (see
+below).
+
+Hyphenation exceptions specified with the @code{hw} request are
+associated with the hyphenation language (see the @code{hla} request
+below) and environment (@pxref{Environments}); invoking the @code{hw}
+request in the absence of a hyphenation language is an error.
+
+The request is ignored if there are no parameters.
+@endDefreq
+
+These are known as hyphenation @slanted{exceptions} in the expectation
+that most users will avail themselves of automatic hyphenation; these
+exceptions override any rules that would normally apply to a word
+matching a hyphenation exception defined with @code{hw}.
+
+Situations also arise when only a specific occurrence of a word needs
+its hyphenation altered or suppressed, or when a URL or similar string
+needs to be breakable in sensible places without hyphenation.
+
+@DefescList {\\%, , , }
+@DefescListEndx {\:, , , }
+@cindex hyphenation character (@code{\%})
+@cindex character, hyphenation (@code{\%})
+@cindex disabling hyphenation (@code{\%})
+@cindex hyphenation, disabling (@code{\%})
+To tell GNU @code{troff} how to hyphenate words as they occur in input,
+use the @code{\%} escape sequence; it is the default @dfn{hyphenation
+character}. Each instance within a word indicates to GNU @code{troff}
+that the word may be hyphenated at that point, while prefixing a word
+with this escape sequence prevents it from being otherwise hyphenated.
+This mechanism affects only that occurrence of the word; to change the
+hyphenation of a word for the remainder of input processing, use the
+@code{hw} request.
+
+@cindex @code{\X}, followed by @code{\%}
+@cindex @code{\Y}, followed by @code{\%}
+@cindex @code{\%}, following @code{\X} or @code{\Y}
+GNU @code{troff} regards the escape sequences @code{\X} and @code{\Y} as
+starting a word; that is, the @code{\%} escape sequence in, say,
+@w{@samp{\X'...'\%foobar}} or @w{@samp{\Y'...'\%foobar}} no longer
+prevents hyphenation of @samp{foobar} but inserts a hyphenation point
+just prior to it; most likely this isn't what you want.
+@xref{Postprocessor Access}.
+
+@cindex non-printing break point (@code{\:})
+@cindex breaking without hyphens (@code{\:})
+@cindex file names, breaking (@code{\:})
+@cindex breaking file names (@code{\:})
+@cindex URLs, breaking (@code{\:})
+@cindex breaking URLs (@code{\:})
+@code{\:} inserts a non-printing break point; that is, a word can break
+there, but the soft hyphen glyph (see below) is not written to the
+output if it does. This escape sequence is an input word boundary, so
+the remainder of the word is subject to hyphenation as normal.
+
+You can combine @code{\:} and @code{\%} to control breaking of a file
+name or URL, or to permit hyphenation only after certain explicit
+hyphens within a word.
+
+@Example
+@c Wrap example at 56 columns.
+The \%Lethbridge-Stewart-\:\%Sackville-Baggins divorce
+was, in retrospect, inevitable once the contents of
+\%/var/log/\:\%httpd/\:\%access_log on the family web
+server came to light, revealing visitors from Hogwarts.
+@endExample
+@endDefesc
+
+@Defreq {hc, [@Var{char}]}
+Change the hyphenation character to @var{char}. This character then
+works as the @code{\%} escape sequence normally does, and thus no longer
+appears in the output.@footnote{@code{\%} itself stops marking
+hyphenation points but still produces no output glyph.} Without an
+argument, @code{hc} resets the hyphenation character to @code{\%} (the
+default). The hyphenation character is associated with the environment
+(@pxref{Environments}).
+@endDefreq
+
+@Defreq {shc, [@Var{c}]}
+@cindex soft hyphen character, setting (@code{shc})
+@cindex character, soft hyphen, setting (@code{shc})
+@cindex glyph, soft hyphen (@code{hy})
+@cindex soft hyphen glyph (@code{hy})
+@cindex @code{char} request, and soft hyphen character
+@cindex @code{tr} request, and soft hyphen character
+Set the @dfn{soft hyphen character}, inserted when a word is hyphenated
+automatically or at a hyphenation character, to the ordinary or special
+character@tie{}@var{c}.@footnote{``Soft'' because it appears in output
+only where a hyphenation break is performed; a ``hard'' hyphen, as in
+``long-term'', always appears.} If the argument is omitted, the soft
+hyphen character is set to the default, @code{\[hy]}. If no glyph for
+@var{c} exists in the font in use at a potential hyphenation point, then
+the line is not broken there. Neither character definitions (specified
+with the @code{char} and similar requests) nor translations (specified
+with the @code{tr} request) are applied to @var{c}.
+@endDefreq
+
+@cindex hyphenation parameters, automatic
+@cindex automatic hyphenation parameters
+Several requests influence automatic hyphenation. Because conventions
+vary, a variety of hyphenation modes is available to the @code{hy}
+request; these determine whether hyphenation will apply to a
+word prior to breaking a line at the end of a page (more or less; see
+below for details), and at which positions within that word
+automatically determined hyphenation points are permissible. The places
+within a word that are eligible for hyphenation are determined by
+language-specific data and lettercase relationships. Furthermore,
+hyphenation of a word might be suppressed due to a limit on
+consecutive hyphenated lines (@code{hlm}), a minimum line length
+threshold (@code{hym}), or because the line can instead be adjusted with
+additional inter-word space (@code{hys}).
+
+@cindex hyphenation mode register (@code{.hy})
+@DefreqList {hy, [@Var{mode}]}
+@DefregListEndx {.hy}
+Set automatic hyphenation mode to @var{mode}, an integer encoding
+conditions for hyphenation; if omitted, @samp{1} is implied. The
+hyphenation mode is available in the read-only register @samp{.hy}; it
+is associated with the environment (@pxref{Environments}). The default
+hyphenation mode depends on the localization file loaded when GNU
+@code{troff} starts up; see the @code{hpf} request below.
+
+Typesetting practice generally does not avail itself of every
+opportunity for hyphenation, but the details differ by language and site
+mandates. The hyphenation modes of @acronym{AT&T} @code{troff} were
+implemented with English-language publishing practices of the 1970s in
+mind, not a scrupulous enumeration of conceivable parameters. GNU
+@code{troff} extends those modes such that finer-grained control is
+possible, favoring compatibility with older implementations over a more
+intuitive arrangement. The means of hyphenation mode control is a set
+of numbers that can be added up to encode the behavior
+sought.@footnote{The mode is a vector of Booleans encoded as an integer.
+To a programmer, this fact is easily deduced from the exclusive use of
+powers of two for the configuration parameters; they are computationally
+easy to ``mask off'' and compare to zero. To almost everyone else, the
+arrangement seems recondite and unfriendly.} The entries in the
+following table are termed @dfn{values}; the sum of the desired
+values is the @dfn{mode}.
+
+@table @code
+@item 0
+disables hyphenation.
+
+@item 1
+enables hyphenation except after the first and before the last character
+of a word.
+@end table
+
+The remaining values ``imply'' 1; that is, they enable hyphenation
+under the same conditions as @samp{.hy 1}, and then apply or lift
+restrictions relative to that basis.
+
+@table @code
+@item 2
+disables hyphenation of the last word on a page,@footnote{Hyphenation is
+prevented if the next page location trap is closer to the vertical
+drawing position than the next text baseline would be. @xref{Page
+Location Traps}.} even for explicitly hyphenated words.
+
+@item 4
+disables hyphenation before the last two characters of a word.
+
+@item 8
+disables hyphenation after the first two characters of a word.
+
+@item 16
+enables hyphenation before the last character of a word.
+
+@item 32
+enables hyphenation after the first character of a word.
+@end table
+
+Apart from value@tie{}2, restrictions imposed by the hyphenation mode
+are @emph{not} respected for words whose hyphenations have been
+specified with the hyphenation character (@samp{\%} by default) or the
+@code{hw} request.
+
+Nonzero values in the previous table are additive. For example,
+mode@tie{}12 causes GNU @code{troff} to hyphenate neither the last two
+nor the first two characters of a word. Some values cannot be used
+together because they contradict; for instance, values 4 and@tie{}16,
+and values 8 and@tie{}32. As noted, it is superfluous to add 1 to any
+non-zero even mode.
+
+@cindex hyphenation pattern files
+@cindex pattern files, for hyphenation
+The automatic placement of hyphens in words is determined by
+@dfn{pattern files}, which are derived from @TeX{} and available for
+several languages. The number of characters at the beginning of a word
+after which the first hyphenation point should be inserted is determined
+by the patterns themselves; it can't be reduced further without
+introducing additional, invalid hyphenation points (unfortunately, this
+information is not part of a pattern file---you have to know it in
+advance). The same is true for the number of characters at the end of
+a word before the last hyphenation point should be inserted. For
+example, you can supply the following input to @samp{echo $(nroff)}.
+
+@Example
+.ll 1
+.hy 48
+splitting
+@endExample
+
+@noindent
+You will get
+
+@Example
+s- plit- t- in- g
+@endExample
+
+@noindent
+instead of the correct `split- ting'. English patterns as distributed
+with GNU @code{troff} need two characters at the beginning and three
+characters at the end; this means that value@tie{}4 of @code{hy} is
+mandatory. Value@tie{}8 is possible as an additional restriction, but
+values@tie{}16 and@tie{}32 should be avoided, as should mode@tie{}1.
+Modes@tie{}4 and@tie{}6 are typical.
+
+A table of left and right minimum character counts for hyphenation as
+needed by the patterns distributed with GNU @code{troff} follows; see
+the @cite{groff_tmac@r{(5)}} man page for more information on GNU
+@code{troff}'s language macro files.
+
+@multitable {German traditional} {pattern name} {left min} {right min}
+@headitem language @tab pattern name @tab left min @tab right min
+@item Czech @tab cs @tab 2 @tab 2
+@item English @tab en @tab 2 @tab 3
+@item French @tab fr @tab 2 @tab 3
+@item German traditional @tab det @tab 2 @tab 2
+@item German reformed @tab den @tab 2 @tab 2
+@item Italian @tab it @tab 2 @tab 2
+@item Swedish @tab sv @tab 1 @tab 2
+@end multitable
+
+Hyphenation exceptions within pattern files (i.e., the words within a
+@TeX{} @code{\hyphenation} group) obey the hyphenation restrictions
+given by @code{hy}.
+@endDefreq
+
+@Defreq {nh, }
+Disable automatic hyphenation; i.e., set the hyphenation mode to@tie{}0
+(see above). The hyphenation mode of the last call to @code{hy} is not
+remembered.
+@endDefreq
+
+@need 200
+@DefreqList {hpf, pattern-file}
+@DefreqItemx {hpfa, pattern-file}
+@DefreqListEndx {hpfcode, a b [c d] @dots{}}
+@cindex hyphenation patterns (@code{hpf})
+@cindex patterns for hyphenation (@code{hpf})
+Read hyphenation patterns from @var{pattern-file}, which is sought
+in the same way that macro files are with the @code{mso} request or the
+@option{-m@var{name}} command-line option to @code{groff}. The
+@var{pattern-file} should have the same format as (simple) @TeX{}
+pattern files. More specifically, the following scanning rules are
+implemented.
+
+@itemize @bullet
+@item
+A percent sign starts a comment (up to the end of the line) even if
+preceded by a backslash.
+
+@item
+``Digraphs'' like @code{\$} are not supported.
+
+@item
+@code{^^@var{xx}} (where each @var{x} is 0--9 or a--f) and
+@code{^^@var{c}} (character @var{c} in the code point range 0--127
+decimal) are recognized; other uses of @code{^} cause an error.
+
+@item
+No macro expansion is performed.
+
+@item
+@code{hpf} checks for the expression @code{\patterns@{@dots{}@}}
+(possibly with whitespace before or after the braces). Everything
+between the braces is taken as hyphenation patterns. Consequently,
+@code{@{} and @code{@}} are not allowed in patterns.
+
+@item
+Similarly, @code{\hyphenation@{@dots{}@}} gives a list of hyphenation
+exceptions.
+
+@item
+@code{\endinput} is recognized also.
+
+@item
+For backward compatibility, if @code{\patterns} is missing, the whole
+file is treated as a list of hyphenation patterns (except that the
+@code{%} character is recognized as the start of a comment).
+@end itemize
+
+The @code{hpfa} request appends a file of patterns to the current list.
+
+The @code{hpfcode} request defines mapping values for character codes in
+pattern files. It is an older mechanism no longer used by GNU
+@code{troff}'s own macro files; for its successor, see @code{hcode}
+below. @code{hpf} or @code{hpfa} apply the mapping after reading the
+patterns but before replacing or appending to the active list of
+patterns. Its arguments are pairs of character codes---integers from 0
+to@tie{}255. The request maps character code@tie{}@var{a} to
+code@tie{}@var{b}, code@tie{}@var{c} to code@tie{}@var{d}, and so on.
+Character codes that would otherwise be invalid in GNU @code{troff} can
+be used. By default, every code maps to itself except those for letters
+`A' to `Z', which map to those for `a' to `z'.
+
+@cindex localization
+@pindex troffrc
+@pindex cs.tmac
+@pindex de.tmac
+@pindex en.tmac
+@pindex fr.tmac
+@pindex it.tmac
+@pindex ja.tmac
+@pindex sv.tmac
+@pindex zh.tmac
+The set of hyphenation patterns is associated with the language set by
+the @code{hla} request (see below). The @code{hpf} request is usually
+invoked by a localization file loaded by the @file{troffrc}
+file.@footnote{For more on localization, see the
+@cite{groff_tmac@r{(5)}} man page.}
+
+A second call to @code{hpf} (for the same language) replaces the
+hyphenation patterns with the new ones. Invoking @code{hpf} or
+@code{hpfa} causes an error if there is no hyphenation language. If no
+@code{hpf} request is specified (either in the document, in a file
+loaded at startup, or in a macro package), GNU @code{troff} won't
+automatically hyphenate at all.
+@endDefreq
+
+@Defreq {hcode, c1 code1 [c2 code2] @dots{}}
+@cindex hyphenation code (@code{hcode})
+@cindex code, hyphenation (@code{hcode})
+Set the hyphenation code of character @var{c1} to @var{code1}, that of
+@var{c2} to @var{code2}, and so on. A hyphenation code must be an
+ordinary character (not a special character escape sequence) other than
+a digit or a space. The request is ignored if given no arguments.
+
+For hyphenation to work, hyphenation codes must be set up. At
+startup, GNU @code{troff} assigns hyphenation codes to the letters
+@samp{a}--@samp{z} (mapped to themselves), to the letters
+@samp{A}--@samp{Z} (mapped to @samp{a}--@samp{z}), and zero to all other
+characters. Normally, hyphenation patterns contain only lowercase
+letters which should be applied regardless of case. In other words,
+they assume that the words `FOO' and `Foo' should be hyphenated exactly
+as `foo' is. The @code{hcode} request extends this principle to letters
+outside the Unicode basic Latin alphabet; without it, words containing
+such letters won't be hyphenated properly even if the corresponding
+hyphenation patterns contain them.
+
+For example, the following @code{hcode} requests are necessary to assign
+hyphenation codes to the letters @samp{ÄäÖöÜüß}, needed for German.
+
+@Example
+.hcode ä ä Ä ä
+.hcode ö ö Ö ö
+.hcode ü ü Ü ü
+.hcode ß ß
+@endExample
+
+Without these assignments, GNU @code{troff} treats the German word
+@w{`Kindergärten'} (the plural form of `kindergarten') as two words
+@w{`kinderg'} and @w{`rten'} because the hyphenation code of the
+umlaut@tie{}a is zero by default, just like a space. There is a German
+hyphenation pattern that covers @w{`kinder'}, so GNU @code{troff} finds
+the hyphenation `kin-der'. The other two hyphenation points
+(`kin-der-gär-ten') are missed.
+@endDefreq
+
+@DefreqList {hla, lang}
+@DefregListEndx {.hla}
+@cindex @code{hpf} request, and hyphenation language
+@cindex @code{hw} request, and hyphenation language
+@pindex troffrc
+@pindex troffrc-end
+Set the hyphenation language to @var{lang}. Hyphenation exceptions
+specified with the @code{hw} request and hyphenation patterns and
+exceptions specified with the @code{hpf} and @code{hpfa} requests are
+associated with the hyphenation language. The @code{hla} request is
+usually invoked by a localization file, which is turn loaded by the
+@file{troffrc} or @file{troffrc-end} file; see the @code{hpf} request
+above.
+
+@cindex hyphenation language register (@code{.hla})
+The hyphenation language is available in the read-only string-valued
+register @samp{.hla}; it is associated with the environment
+(@pxref{Environments}).
+@endDefreq
+
+@DefreqList {hlm, [@Var{n}]}
+@DefregItemx {.hlm}
+@DefregListEndx {.hlc}
+@cindex explicit hyphen (@code{\%})
+@cindex hyphen, explicit (@code{\%})
+@cindex consecutive hyphenated lines (@code{hlm})
+@cindex lines, consecutive hyphenated (@code{hlm})
+@cindex hyphenated lines, consecutive (@code{hlm})
+Set the maximum quantity of consecutive hyphenated lines to @var{n}. If
+@var{n} is negative, there is no maximum. If omitted, @var{n}
+is@tie{}@minus{}1. This value is associated with the environment
+(@pxref{Environments}). Only lines output from a given environment
+count toward the maximum associated with that environment. Hyphens
+resulting from @code{\%} are counted; explicit hyphens are not.
+
+@cindex hyphenation consecutive line limit register (@code{.hlm})
+@cindex hyphenation consecutive line count register (@code{.hlc})
+The @code{.hlm} read-only register stores this maximum. The count of
+immediately preceding consecutive hyphenated lines is available in the
+read-only register @code{.hlc}.
+@endDefreq
+
+@DefreqList {hym, [@Var{length}]}
+@DefregListEndx {.hym}
+@cindex hyphenation margin (@code{hym})
+@cindex margin for hyphenation (@code{hym})
+@cindex @code{ad} request, and hyphenation margin
+Set the (right) hyphenation margin to @var{length}. If the adjustment
+mode is not @samp{b} or @samp{n}, the line is not hyphenated if it is
+shorter than @var{length}. Without an argument, the hyphenation margin
+is reset to its default value, 0. The default scaling unit is @samp{m}.
+The hyphenation margin is associated with the environment
+(@pxref{Environments}).
+
+A negative argument resets the hyphenation margin to zero, emitting a
+warning in category @samp{range}.
+
+@cindex hyphenation margin register (@code{.hym})
+The hyphenation margin is available in the @code{.hym} read-only
+register.
+@endDefreq
+
+@DefreqList {hys, [@Var{hyphenation-space}]}
+@DefregListEndx {.hys}
+@cindex hyphenation space (@code{hys})
+@cindex hyphenation space adjustment threshold
+@cindex @code{ad} request, and hyphenation space
+Suppress hyphenation of the line in adjustment modes @samp{b} or
+@samp{n} if it can be justified by adding no more than
+@var{hyphenation-space} extra space to each inter-word space. Without
+an argument, the hyphenation space adjustment threshold is set to its
+default value, 0. The default scaling unit is @samp{m}. The
+hyphenation space adjustment threshold is associated with the
+environment (@pxref{Environments}).
+
+A negative argument resets the hyphenation space adjustment threshold to
+zero, emitting a warning in category @samp{range}.
+
+@cindex hyphenation space adjustment threshold register (@code{.hys})
+The hyphenation space adjustment threshold is available in the
+@code{.hys} read-only register.
+@endDefreq
+
+
+@c =====================================================================
+
+@node Manipulating Spacing, Tabs and Fields, Manipulating Hyphenation, GNU troff Reference
+@section Manipulating Spacing
+@cindex manipulating spacing
+@cindex spacing, manipulating
+
+A break causes the formatter to update the vertical drawing position at
+which the new text baseline is aligned. You can alter this location.
+
+@Defreq {sp, [@Var{distance}]}
+Break and move the next text baseline down by @var{distance}, or until
+springing a page location trap.@footnote{@xref{Page Location Traps}.}
+If invoked with the no-break control character, @code{sp} moves the
+pending output line's text baseline by @var{distance}. A negative
+@var{distance} will not reduce the position of the text baseline below
+zero. Inside a diversion, any @var{distance} argument is ignored. The
+default scaling unit is @samp{v}. If @var{distance} is not specified,
+@samp{1v} is assumed.
+
+@Example
+.pl 5v \" Set page length to 5 vees.
+.de xx
+\-\-\-
+. br
+..
+.wh 0 xx \" Set a trap at the top of the page.
+foo on page \n%
+.sp 2v
+bar on page \n%
+.sp 50v \" This will cause a page break.
+baz on page \n%
+.pl \n(nlu \" Truncate page to current position.
+ @result{} ---
+ @result{} foo on page 1
+ @result{}
+ @result{}
+ @result{} bar on page 1
+ @result{} ---
+ @result{} baz on page 2
+@endExample
+
+You might use the following macros to set the baseline of the next
+output text at a given distance from the top or the bottom of the page.
+We subtract one line height (@code{\n[.v]}) because the @code{|}
+operator moves to one vee below the page top (recall @ref{Numeric
+Expressions}).
+
+@Example
+.de y-from-top-down
+. sp |\\$1-\\n[.v]u
+..
+.
+.de y-from-bot-up
+. sp |\\n[.p]u-\\$1-\\n[.v]u
+..
+@endExample
+
+@noindent
+A call to @samp{.y-from-bot-up 10c} means that the next text baseline
+will be 10@tie{}cm from the bottom edge of the paper.
+@endDefreq
+
+@DefreqList {ls, [@Var{count}]}
+@DefregListEndx {.L}
+@cindex double-spacing (@code{ls})
+Set the line spacing; add @w{@var{count}@minus{}1} blank lines after each
+line of text. With no argument, GNU @code{troff} uses the previous
+value before the last @code{ls} call. The default is @code{1}.
+
+@c This example is fairly obvious, doesn't realistically reflect the
+@c fact that formatted text would occur between each of these requests,
+@c and doesn't fit well on the (PDF) page as of this writing.
+@c @Example
+@c .ls 2 \" begin double-spaced output
+@c .ls 3 \" begin triple-spaced output
+@c .ls \" return to double-spaced output
+@c @endExample
+
+@cindex line spacing register (@code{.L})
+The read-only register @code{.L} contains the current line spacing; it
+is associated with the environment (@pxref{Environments}).
+@endDefreq
+
+The @code{ls} request is a coarse mechanism. @xref{Changing the Type
+Size}, for the requests @code{vs} and @code{pvs} as alternatives to
+@code{ls}.
+
+@DefescList {\\x, @code{'}, spacing, @code{'}}
+@DefregListEndx {.a}
+Sometimes, an output line requires additional vertical spacing, for
+instance to allow room for a tall construct like an inline equation with
+exponents or subscripts (particularly if they are iterated). The
+@code{\x} escape sequence takes a delimited measurement (like
+@samp{\x'3p'}) to increase the vertical spacing of the pending output
+line. The default scaling unit is @samp{v}. If the measurement is
+positive, extra vertical space is inserted below the current line; a
+negative measurement adds space above. If @code{\x} is applied to the
+pending output line multiple times, the maxima of the positive and
+negative adjustments are separately applied. The delimiter need not be
+a neutral apostrophe; see @ref{Delimiters}.
+
+@cindex extra post-vertical line space register (@code{.a})
+The @code{.a} read-only register contains the extra vertical spacing
+@emph{after} the text baseline of the most recently emitted output line.
+(In other words, it is the largest positive argument to @code{\x}
+encountered on that line.) This quantity is exposed via a register
+because if an output line requires this ``extra post-vertical line
+spacing'', and the subsequent output line requires ``extra pre-vertical
+line spacing'' (a negative argument to @code{\x}), then applying both
+can lead to excessive spacing between the output lines. Text that is
+piling high on line @var{n} might not require (as much) extra
+pre-vertical line spacing if line @var{n}@minus{}1 carries extra
+post-vertical line spacing.
+
+Use of @code{\x} can be necessary in combination with the
+bracket-building escape sequence @code{\b},@footnote{@xref{Drawing
+Geometric Objects}.} as the following example shows.
+
+@Example
+.nf
+This is a test of \[rs]b (1).
+This is a test of \[rs]b (2).
+This is a test of \b'xyz'\x'-1m'\x'1m' (3).
+This is a test of \[rs]b (4).
+This is a test of \[rs]b (5).
+ @result{} This is a test of \b (1).
+ @result{} This is a test of \b (2).
+ @result{} x
+ @result{} This is a test of y (3).
+ @result{} z
+ @result{} This is a test of \b (4).
+ @result{} This is a test of \b (5).
+@endExample
+@endDefesc
+
+@noindent
+Without @code{\x}, the backslashes on the lines marked @samp{(2)} and
+@samp{(4)} would be overprinted.
+
+@need 1000
+@DefreqList {ns, }
+@DefreqItemx {rs, }
+@DefregListEndx {.ns}
+@cindex @code{sp} request, and no-space mode
+@cindex no-space mode (@code{ns})
+@cindex mode, no-space (@code{ns})
+@cindex blank lines, disabling
+@cindex lines, blank, disabling
+Enable @dfn{no-space mode}. Vertical spacing, whether by @code{sp}
+requests or blank input lines, is disabled. The @code{bp} request to
+advance to the next page is also disabled, unless it is accompanied by a
+page number (@pxref{Page Control}). No-space mode ends automatically
+when text@footnote{or geometric objects; see @ref{Drawing Geometric
+Objects}} is formatted for output @footnote{to the top-level diversion;
+see @ref{Diversions}} or the @code{rs} request is invoked, which ends
+no-space mode. The read-only register @code{.ns} interpolates a Boolean
+value indicating the enablement of no-space mode.
+
+A paragraphing macro might ordinarily insert vertical space to separate
+paragraphs. A section heading macro could invoke @code{ns} to suppress
+this spacing for the first paragraph in a section.
+@endDefreq
+
+
+@c =====================================================================
+
+@node Tabs and Fields, Character Translations, Manipulating Spacing, GNU troff Reference
+@section Tabs and Fields
+@cindex tabs, and fields
+@cindex fields, and tabs
+
+@cindex tab character encoding
+A tab character (@acronym{ISO} code point@tie{}9, @acronym{EBCDIC}
+code point@tie{}5) causes a horizontal movement to the next tab stop, if
+any.
+
+@Defesc {\\t, , , }
+@cindex tab character, non-interpreted (@code{\t})
+@cindex character, tab, non-interpreted (@code{\t})
+@cindex @code{\t}, and copy mode
+@cindex copy mode, and @code{\t}
+@cindex mode, copy, and @code{\t}
+Interpolate a tab in copy mode; see @ref{Copy Mode}.
+@endDefesc
+
+@DefreqList {ta, [[@Var{n1} @Var{n2} @dots{} @Var{nn} ]@t{T} @Var{r1} @
+ @Var{r2} @dots{} @Var{rn}]}
+@DefregListEndx {.tabs}
+Change tab stop positions. This request takes a series of tab
+specifiers as arguments (optionally divided into two groups with the
+letter @samp{T}) that indicate where each tab stop is to be, overriding
+any previous settings. The default scaling unit is @samp{m}. Invoking
+@code{ta} without an argument removes all tab stops.
+@cindex default tab stops
+@cindex tab stops, default
+GNU @code{troff}'s startup value is @w{@samp{T 0.5i}}.
+
+Tab stops can be specified absolutely---as distances from the left
+margin. The following example sets six tab stops, one every inch.
+
+@Example
+.ta 1i 2i 3i 4i 5i 6i
+@endExample
+
+Tab stops can also be specified using a leading @samp{+}, which means
+that the specified tab stop is set relative to the previous tab stop.
+For example, the following is equivalent to the previous example.
+
+@Example
+.ta 1i +1i +1i +1i +1i +1i
+@endExample
+
+GNU @code{troff} supports an extended syntax to specify repeating tab
+stops. These stops appear after a @samp{T} argument. Their values are
+always taken as distances relative to the previous tab stop. This is
+the idiomatic way to specify tab stops at equal intervals in
+@code{groff}. The following is, yet again, the same as the previous
+examples. It does more, in fact, since it defines an infinite number of
+tab stops at one-inch intervals.
+
+@Example
+.ta T 1i
+@endExample
+
+Now we are ready to interpret the full syntax given above. The
+@code{ta} request sets tabs at positions @var{n1}, @var{n2}, @dots{},
+@var{nn}, then at @var{nn}+@var{r1}, @var{nn}+@var{r2}, @dots{},
+@var{nn}+@var{rn}, then at @var{nn}+@var{rn}+@var{r1},
+@var{nn}+@var{rn}+@var{r2}, @dots{}, @var{nn}+@var{rn}+@var{rn}, and so
+on.
+
+For example, @samp{4c +6c T 3c 5c 2c} is equivalent to @samp{4c 10c 13c
+18c 20c 23c 28c 30c @dots{}}.
+
+Text written to a tab column (i.e., between two tab stops, or between a
+tab stop and an output line boundary) may be aligned to the right or
+left, or centered in the column. This alignment is determined by
+appending @samp{R}, @samp{L}, or @samp{C} to the tab specifier. The
+default is @samp{L}.
+
+@Example
+.ta 1i 2iC 3iR
+@endExample
+
+The beginning of an output line is not a tab stop; the text that begins
+an output line is placed according to the configured alignment and
+indentation; see @ref{Manipulating Filling and Adjustment} and @ref{Line
+Layout}.
+
+A tab stop is converted into a non-breakable horizontal movement that
+cannot be adjusted.
+
+@Example
+.ll 2i
+.ds foo a\tb\tc
+.ta T 1i
+\*[foo]
+ @error{} warning: cannot break line
+ @result{} a b c
+@endExample
+
+@noindent
+The above creates a single output line that is a bit longer than two
+inches (we use a string to show exactly where the tab stops are).
+Now consider the following.
+
+@Example
+.ll 2i
+.ds bar a\tb c\td
+.ta T 1i
+\*[bar]
+ @error{} warning: cannot adjust line
+ @result{} a b
+ @result{} c d
+@endExample
+
+@noindent
+GNU @code{troff} first converts the line's tab stops into unbreakable
+horizontal movements, then breaks after @samp{b}. This usually isn't
+what you want.
+
+Superfluous tab characters---those that do not correspond to a tab
+stop---are ignored except for the first, which delimits the characters
+belonging to the last tab stop for right-alignment or centering.
+
+@Example
+.ds Z foo\tbar\tbaz
+.ds ZZ foo\tbar\tbazqux
+.ds ZZZ foo\tbar\tbaz\tqux
+.ta 2i 4iR
+\*[Z]
+.br
+\*[ZZ]
+.br
+\*[ZZZ]
+.br
+ @result{} foo bar baz
+ @result{} foo bar bazqux
+ @result{} foo bar bazqux
+@endExample
+
+@noindent
+The first line right-aligns ``baz'' within the second tab stop. The
+second line right-aligns ``bazqux'' within it. The third line
+right-aligns only ``baz'' because of the additional tab character, which
+marks the end of the text occupying the last tab stop defined.
+
+Tab stops are associated with the environment (@pxref{Environments}).
+
+@cindex tab stop settings register (@code{.tabs})
+@cindex @code{.S} register, Plan@tie{}9 alias for @code{.tabs}
+@cindex @code{.tabs} register, Plan@tie{}9 alias (@code{.S})
+The read-only register @code{.tabs} contains a string
+representation of the current tab settings suitable for use as an
+argument to the @code{ta} request.@footnote{Plan@tie{}9 @code{troff}
+uses the register @code{.S} for this purpose.}
+
+@Example
+.ds tab-string \n[.tabs]
+\*[tab-string]
+ @result{} T120u
+@endExample
+@endDefreq
+
+@Defreq {tc, [@Var{c}]}
+@cindex tab repetition character (@code{tc})
+@cindex character, tab repetition (@code{tc})
+@cindex glyph, tab repetition (@code{tc})
+Set the tab repetition character to the ordinary or special character
+@var{c}; normally, no glyph is written when moving to a tab stop (and
+some output devices may output space characters to achieve this motion).
+A @dfn{tab repetition character} causes the formatter to write as many
+instances of @var{c} as are necessary to occupy the interval from the
+horizontal drawing position to the next tab stop. With no argument, GNU
+@code{troff} reverts to the default behavior. The tab repetition
+character is associated with the environment (@pxref{Environments}).
+Only a single character of @var{c} is recognized; any excess is ignored.
+@endDefreq
+
+@DefreqList {linetabs, n}
+@DefregListEndx {.linetabs}
+@cindex tab, line-tabs mode
+@cindex line-tabs mode
+@cindex mode, line-tabs
+If @var{n} is missing or non-zero, activate @dfn{line-tabs}; deactivate
+it otherwise (the default). Active line-tabs cause GNU @code{troff}
+to compute tab distances relative to the start of the output line
+instead of the input line.
+
+@Example
+.de Tabs
+. ds x a\t\c
+. ds y b\t\c
+. ds z c
+. ta 1i 3i
+\\*x
+\\*y
+\\*z
+..
+.Tabs
+.br
+.linetabs
+.Tabs
+ @result{} a b c
+ @result{} a b c
+@endExample
+
+Line-tabs activation is associated with the environment
+(@pxref{Environments}). The read-only register @code{.linetabs}
+interpolates@tie{}1 if line-tabs are active, and 0 otherwise.
+@endDefreq
+
+@menu
+* Leaders::
+* Fields::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Leaders, Fields, Tabs and Fields, Tabs and Fields
+@subsection Leaders
+@cindex leaders
+
+Sometimes it is desirable to fill a tab stop with a given glyph,
+but also use tab stops normally on the same output line. An example is
+a table of contents entry that uses dots to bridge the entry name with
+its page number, which is itself aligned between tab stops. The
+@code{roff} language provides @dfn{leaders} for this
+purpose.@footnote{This is pronounced to rhyme with ``feeder'', and
+refers to how the glyphs ``lead'' the eye across the page to the
+corresponding page number or other datum.}
+
+@cindex leader character
+A leader character (@acronym{ISO} and @acronym{EBCDIC} code
+point@tie{}1, also known as @acronym{SOH} or ``start of heading''),
+behaves similarly to a tab character:@: it moves to the next tab stop.
+The difference is that for this movement, the default fill character is
+a period @samp{.}.
+
+@Defesc {\\a, , , }
+@cindex leader character, non-interpreted (@code{\a})
+@cindex character, leader, non-interpreted (@code{\a})
+@cindex @code{\a}, and copy mode
+@cindex copy mode, and @code{\a}
+@cindex mode, copy, and @code{\a}
+Interpolate a leader in copy mode; see @ref{Copy Mode}.
+@endDefesc
+
+@Defreq {lc, [@Var{c}]}
+@cindex leader repetition character (@code{lc})
+@cindex character, leader repetition (@code{lc})
+@cindex glyph, leader repetition (@code{lc})
+Set the leader repetition character to the ordinary or special character
+@var{c}. Recall @ref{Tabs and Leaders}:@: when encountering a leader
+character in the input, the formatter writes as many dots @samp{.} as
+are necessary until
+reaching the next tab stop; this is the @dfn{leader definition
+character}. Omitting @var{c} unsets the leader
+character. With no argument, GNU @code{troff} treats leaders the same
+as tabs. The leader repetition character is associated with the
+environment (@pxref{Environments}). Only a single @var{c} is
+recognized; any excess is ignored.
+@endDefreq
+
+@cindex table of contents
+@cindex contents, table of
+A table of contents, for example, may define tab stops after a section
+number, a title, and a gap to be filled with leader dots. The page
+number follows the leader, after a right-aligned final tab stop wide
+enough to house the largest page number occurring in the document.
+
+@Example
+.ds entry1 19.\tThe Prophet\a\t98
+.ds entry2 20.\tAll Astir\a\t101
+.ta .5i 4.5i +.5iR
+.nf
+\*[entry1]
+\*[entry2]
+ @result{} 19. The Prophet............................. 98
+ @result{} 20. All Astir............................... 101
+@endExample
+
+@c ---------------------------------------------------------------------
+
+@node Fields, , Leaders, Tabs and Fields
+@subsection Fields
+@cindex fields
+
+@cindex field delimiting character (@code{fc})
+@cindex delimiting character, for fields (@code{fc})
+@cindex character, field delimiting (@code{fc})
+@cindex field padding character (@code{fc})
+@cindex padding character, for fields (@code{fc})
+@cindex character, field padding (@code{fc})
+@dfn{Fields} are a more general way of laying out tabular data. A field
+is defined as the data between a pair of @dfn{delimiting characters}.
+It contains substrings that are separated by @dfn{padding characters}.
+The width of a field is the distance on the @emph{input} line from the
+position where the field starts to the next tab stop. A padding
+character inserts an adjustable space similar to @TeX{}'s @code{\hss}
+command (thus it can even be negative) to make the sum of all substring
+lengths plus the adjustable space equal to the field width. If more
+than one padding character is inserted, the available space is evenly
+distributed among them.
+
+@Defreq {fc, [@Var{delim-char} [@Var{padding-char}]]}
+Define a delimiting and a padding character for fields. If the latter
+is missing, the padding character defaults to a space character. If
+there is no argument at all, the field mechanism is disabled (which is
+the default). In contrast to, e.g., the tab repetition character,
+delimiting and padding characters are @emph{not} associated with the
+environment (@pxref{Environments}).
+
+@Example
+.fc # ^
+.ta T 3i
+#foo^bar^smurf#
+.br
+#foo^^bar^smurf#
+ @result{} foo bar smurf
+ @result{} foo bar smurf
+@endExample
+@endDefreq
+
+
+@c =====================================================================
+
+@node Character Translations, @code{troff} and @code{nroff} Modes, Tabs and Fields, GNU troff Reference
+@section Character Translations
+@cindex character translations
+@cindex translations of characters
+
+A @dfn{translation} is a mapping of an input character to an output
+glyph. The mapping occurs at output time, i.e., the input character
+gets assigned the metric information of the mapped output character
+right before input tokens are converted to nodes (@pxref{Gtroff
+Internals}, for more on this process).
+
+@DefreqList {tr, @Var{a}@Var{b}@Var{c}@Var{d}@dots{}}
+@DefreqListEndx {trin, @Var{a}@Var{b}@Var{c}@Var{d}@dots{}}
+Translate character @var{a} to glyph@tie{}@var{b}, character @var{c} to
+glyph@tie{}@var{d}, and so on. If there is an odd number of characters
+in the argument, the last one is translated to a fixed-width space (the
+same one obtained by the @code{\@key{SP}} escape sequence).
+
+The @code{trin} request is identical to @code{tr}, but when you unformat
+a diversion with @code{asciify} it ignores the translation.
+@xref{Diversions}, for details about the @code{asciify} request.
+
+Some notes:
+
+@itemize @bullet
+@item
+@cindex @code{\(}, and translations
+@cindex @code{\[}, and translations
+@cindex @code{\'}, and translations
+@cindex @code{\`}, and translations
+@cindex @code{\-}, and translations
+@cindex @code{\_}, and translations
+@cindex @code{\C}, and translations
+@cindex @code{\N}, and translations
+@cindex @code{char} request, and translations
+@cindex special characters
+@cindex character, special
+@cindex numbered glyph (@code{\N})
+@cindex glyph, numbered (@code{\N})
+Special characters (@code{\(@var{xx}}, @code{\[@var{xxx}]},
+@code{\C'@var{xxx}'}, @code{\'}, @code{\`}, @code{\-}, @code{\_}),
+glyphs defined with the @code{char} request, and numbered glyphs
+(@code{\N'@var{xxx}'}) can be translated also.
+
+@item
+@cindex @code{\e}, and translations
+The @code{\e} escape can be translated also.
+
+@item
+@cindex @code{\%}, and translations
+@cindex @code{\~}, and translations
+Characters can be mapped onto the @code{\%} and @code{\~} escape
+sequences (but @code{\%} and @code{\~} can't be mapped onto another
+glyph).
+
+@item
+@cindex backspace character, and translations
+@cindex character, backspace, and translations
+@cindex leader character, and translations
+@cindex character, leader, and translations
+@cindex newline character, and translations
+@cindex character, newline, and translations
+@cindex tab character, and translations
+@cindex character, tab, and translations
+@cindex @code{\a}, and translations
+@cindex @code{\t}, and translations
+The following characters can't be translated: space (with one exception,
+see below), backspace, newline, leader (and @code{\a}), tab (and
+@code{\t}).
+
+@item
+@cindex @code{shc} request, and translations
+Translations are not considered for finding the soft hyphen character
+set with the @code{shc} request.
+
+@item
+@cindex @code{\&}, and translations
+The pair @samp{@var{c}\&} (an arbitrary character@tie{}@var{c} followed
+by the dummy character) maps this character to ``nothing''.
+
+@Example
+.tr a\&
+foo bar
+ @result{} foo br
+@endExample
+
+@noindent
+Even the space character can be mapped to the dummy character.
+
+@Example
+.tr aa \&
+foo bar
+ @result{} foobar
+@endExample
+
+@noindent
+As shown in the example, the space character can't be the first
+character/glyph pair as an argument of @code{tr}. Additionally, it is
+not possible to map the space character to any other glyph; requests
+like @w{@samp{.tr aa x}} undo @w{@samp{.tr aa \&}} instead.
+
+If justification is active, lines are justified in spite of the `empty'
+space character (but there is no minimal distance, i.e., the space
+character, between words).
+
+@item
+After an output glyph has been constructed (this happens at the moment
+immediately before the glyph is appended to an output glyph list, either
+by direct output, in a macro, diversion, or string), it is no longer
+affected by @code{tr}.
+
+@item
+Translating character to glyphs where one of them or both are undefined
+is possible also; @code{tr} does not check whether the elements of its
+argument exist.
+
+@xref{Gtroff Internals}.
+
+@item
+Without an argument, the @code{tr} request is ignored.
+@end itemize
+@endDefreq
+
+@Defreq {trnt, @Var{a}@Var{b}@Var{c}@Var{d}@dots{}}
+@cindex @code{\!}, and @code{trnt}
+@code{trnt} is the same as the @code{tr} request except that the
+translations do not apply to text that is transparently throughput into
+a diversion with @code{\!}. @xref{Diversions}.
+
+For example,
+
+@Example
+.tr ab
+.di x
+\!.tm a
+.di
+.x
+@endExample
+
+@noindent
+prints @samp{b} to the standard error stream; if @code{trnt} is used
+instead of @code{tr} it prints @samp{a}.
+@endDefreq
+
+
+@c =====================================================================
+
+@node @code{troff} and @code{nroff} Modes, Line Layout, Character Translations, GNU troff Reference
+@section @code{troff} and @code{nroff} Modes
+@cindex @code{troff} mode
+@cindex mode, @code{troff}
+@cindex @code{nroff} mode
+@cindex mode, @code{nroff}
+
+Historically, @code{nroff} and @code{troff} were two separate programs;
+the former for terminal output, the latter for typesetters. GNU
+@code{troff} merges both functions into one executable@footnote{A
+GNU @command{nroff} program is available for convenience; it calls GNU
+@code{troff} to perform the formatting.} that sends its output to a
+device driver (@code{grotty} for terminal devices, @code{grops} for
+PostScript, and so on) which interprets this intermediate output format.
+When discussing @acronym{AT&T} @code{troff}, it makes sense to talk
+about @dfn{@code{nroff} mode} and @dfn{@code{troff} mode} since the
+differences are hard-coded. GNU @code{troff} takes information from
+device and font description files without handling requests specially if
+a terminal output device is used, so such a strong distinction is
+unnecessary.
+
+Usually, a macro package can be used with all output devices.
+Nevertheless, it is sometimes necessary to make a distinction between
+terminal and non-terminal devices: GNU @code{troff} provides two
+built-in conditions @samp{n} and @samp{t} for the @code{if}, @code{ie},
+and @code{while} requests to decide whether GNU @code{troff} shall
+behave like @code{nroff} or like @code{troff}.
+
+@Defreq {troff, }
+@pindex troffrc
+@pindex troffrc-end
+Make the @samp{t} built-in condition true (and the @samp{n} built-in
+condition false) for @code{if}, @code{ie}, and @code{while} conditional
+requests. This is the default if GNU @code{troff} (@emph{not}
+@code{groff}) is started with the @option{-R} switch to avoid loading of
+the startup files @file{troffrc} and @file{troffrc-end}. Without
+@option{-R}, GNU @code{troff} stays in @code{troff} mode if the output
+device is not a terminal (e.g., `ps').
+@endDefreq
+
+@Defreq {nroff, }
+@pindex tty.tmac
+Make the @samp{n} built-in condition true (and the @samp{t} built-in
+condition false) for @code{if}, @code{ie}, and @code{while} conditional
+requests. This is the default if GNU @code{troff} uses a terminal
+output device; the code for switching to @code{nroff} mode is in the
+file @file{tty.tmac}, which is loaded by the startup file
+@code{troffrc}.
+@endDefreq
+
+@xref{Conditionals and Loops}, for more details on built-in conditions.
+
+
+@c =====================================================================
+
+@node Line Layout, Line Continuation, @code{troff} and @code{nroff} Modes, GNU troff Reference
+@section Line Layout
+@cindex line layout
+@cindex layout, line
+
+@cindex dimensions, line
+@cindex line dimensions
+The following drawing shows the dimensions that @code{gtroff} uses for
+placing a line of output onto the page. They are labeled with the
+request that manipulates each dimension.
+
+@Example
+ -->| in |<--
+ |<-----------ll------------>|
+ +----+----+----------------------+----+
+ | : : : |
+ +----+----+----------------------+----+
+-->| po |<--
+ |<--------paper width---------------->|
+@endExample
+
+@noindent
+These dimensions are:
+
+@ftable @code
+@item po
+@cindex left margin (@code{po})
+@cindex margin, left (@code{po})
+@cindex page offset (@code{po})
+@cindex offset, page (@code{po})
+@dfn{Page offset}---this is the leftmost position of text on the final
+output, defining the @dfn{left margin}.
+
+@item in
+@cindex indentation (@code{in})
+@cindex line indentation (@code{in})
+@dfn{Indentation}---this is the distance from the left margin where
+text is printed.
+
+@item ll
+@cindex line length (@code{ll})
+@cindex length of line (@code{ll})
+@dfn{Line length}---this is the distance from the left margin to right
+margin.
+@end ftable
+
+@cindex margin, right
+@cindex right margin
+The right margin is not explicitly configured; the combination of page
+offset and line length provides the information necessary to derive it.
+
+A simple demonstration:
+
+@Example
+.ll 3i
+This is text without indentation.
+The line length has been set to 3\~inches.
+.in +.5i
+.ll -.5i
+Now the left and right margins are both increased.
+.in
+.ll
+Calling .in and .ll without parameters restores
+the previous values.
+@endExample
+
+@Example
+ @result{} This is text without indenta-
+ @result{} tion. The line length has
+ @result{} been set to 3 inches.
+ @result{} Now the left and
+ @result{} right margins are
+ @result{} both increased.
+ @result{} Calling .in and .ll without
+ @result{} parameters restores the previ-
+ @result{} ous values.
+@endExample
+
+@DefreqList {po, [@Var{offset}]}
+@DefreqItem {po, @t{+}@Var{offset}}
+@DefreqItem {po, @t{-}@Var{offset}}
+@DefregListEndx {.o}
+@pindex tty.tmac
+Set page offset to @var{offset} (or increment or decrement its current
+value by @var{offset}). If invoked without an argument, the page offset
+is restored to the value before the previous @code{po} request.
+This request does not cause a break; the page offset in effect when an
+output line is broken prevails (@pxref{Manipulating Filling and
+Adjustment}). The initial value is 1@dmn{i} and the default scaling
+unit is @samp{m}. On terminal devices, the page offset is set to zero
+by a driver-specific macro file, @file{tty.tmac}. The current page
+offset can be found in the read-only register @samp{.o}.
+@cindex CSTR@tie{}#54 errata
+@cindex CSTR@tie{}#54 erratum, @code{po} request
+This request is incorrectly documented in the @acronym{AT&T}
+@code{troff} manual as using a default scaling unit of @samp{v}.
+
+@Example
+.po 3i
+\n[.o]
+ @result{} 720
+.po -1i
+\n[.o]
+ @result{} 480
+.po
+\n[.o]
+ @result{} 720
+@endExample
+@endDefreq
+
+@DefreqList {in, [@Var{indent}]}
+@DefreqItem {in, @t{+}@Var{indent}}
+@DefreqItem {in, @t{-}@Var{indent}}
+@DefregListEndx {.i}
+Set indentation to @var{indent} (or increment or decrement the current
+value by @var{indent}). This request causes a break. Initially, there
+is no indentation.
+
+If @code{in} is called without an argument, the indentation is reset to
+the previous value before the last call to @code{in}. The default
+scaling unit is @samp{m}.
+
+If a negative indentation value is specified (which is not allowed),
+@code{gtroff} emits a warning in category @samp{range} and sets the
+indentation to zero.
+
+The effect of @code{in} is delayed until a partially collected line (if
+it exists) is output. A temporary indentation value is reset to zero
+also.
+
+The current indentation (as set by @code{in}) can be found in the
+read-only register @samp{.i}. The indentation is associated with the
+environment (@pxref{Environments}).
+@endDefreq
+
+@DefreqList {ti, offset}
+@DefreqItem {ti, @t{+}@Var{offset}}
+@DefreqItem {ti, @t{-}@Var{offset}}
+@DefregListEndx {.in}
+Temporarily indent the next output line by @var{offset}. If an
+increment or decrement value is specified, adjust the temporary
+indentation relative to the value set by the @code{in} request.
+
+This request causes a break; its value is associated with the
+environment (@pxref{Environments}). The default scaling unit is
+@samp{m}. A call of @code{ti} without an argument is ignored.
+
+If the total indentation value is negative (which is not allowed),
+@code{gtroff} emits a warning in category @samp{range} and sets the
+temporary indentation to zero. `Total indentation' is either
+@var{offset} if specified as an absolute value, or the temporary plus
+normal indentation, if @var{offset} is given as a relative value.
+
+The effect of @code{ti} is delayed until a partially collected line (if
+it exists) is output.
+
+The read-only register @code{.in} is the indentation that applies to the
+current output line.
+
+The difference between @code{.i} and @code{.in} is that the latter takes
+into account whether a partially collected line still uses the old
+indentation value or a temporary indentation value is active.
+@endDefreq
+
+@DefreqList {ll, [@Var{length}]}
+@DefreqItem {ll, @t{+}@Var{length}}
+@DefreqItem {ll, @t{-}@Var{length}}
+@DefregItemx {.l}
+@DefregListEndx {.ll}
+Set the line length to @var{length} (or increment or decrement the
+current value by @var{length}). Initially, the line length is set to
+6.5@dmn{i}. The effect of @code{ll} is delayed until a partially
+collected line (if it exists) is output. The default scaling unit is
+@samp{m}.
+
+If @code{ll} is called without an argument, the line length is reset to
+the previous value before the last call to @code{ll}. If a negative
+line length is specified (which is not allowed), @code{gtroff} emits a
+warning in category @samp{range} and sets the line length to zero. The
+line length is associated with the environment (@pxref{Environments}).
+
+@cindex line length register (@code{.l})
+The current line length (as set by @code{ll}) can be found in the
+read-only register @samp{.l}. The read-only register @code{.ll} is the
+line length that applies to the current output line.
+
+Similar to @code{.i} and @code{.in}, the difference between @code{.l}
+and @code{.ll} is that the latter takes into account whether a partially
+collected line still uses the old line length value.
+@endDefreq
+
+
+@c =====================================================================
+
+@node Line Continuation, Page Layout, Line Layout, GNU troff Reference
+@section Line Continuation
+@cindex line control
+@cindex control, line
+
+When filling is enabled, input and output line breaks generally do not
+correspond. The @code{roff} language therefore distinguishes input and
+output line continuation.
+
+@Defesc {\\@key{RET}, , ,}
+@cindex input line continuation (@code{\@key{RET}})
+@cindex line, input, continuation (@code{\@key{RET}})
+@cindex continuation, input line (@code{\@key{RET}})
+@c We use the following notation in our man pages; Texinfo is bound to
+@c the GNU Emacs dialect.
+@esindex \@slanted{newline}
+@code{\@key{RET}} (a backslash immediately followed by a newline)
+suppresses the effects of that newline in the input. The next input
+line thus retains the classification of its predecessor as a control or
+text line. @code{\@key{RET}} is useful for managing line lengths in the
+input during document maintenance; you can break an input line in the
+middle of a request invocation, macro call, or escape sequence. Input
+line continuation is invisible to the formatter, with two exceptions:
+the @code{|} operator recognizes the new input line
+(@pxref{Numeric Expressions}), and the input line counter register
+@code{.c} is incremented.
+
+@c Wrap example at 56 columns (on the _output_). We use 50n in the
+@c groff input to avoid line adjustment.
+@Example
+.ll 50n
+.de I
+. ft I
+. nop \\$*
+. ft
+..
+Our film class watched
+.I The Effect of Gamma Rays on Man-in-the-Moon
+Marigolds. \" whoops, the input line wrapped
+.br
+.I My own opus begins on line \n[.c] \
+and ends on line \n[.c].
+@endExample
+@Example
+ @result{} Our film class watched @i{The Effect of Gamma Rays on}
+ @result{} @i{Man-in-the-Moon} Marigolds.
+ @result{} @i{My own opus begins on line 11 and ends on line 12.}
+@endExample
+@endDefesc
+
+@DefescList {\\c, , ,}
+@DefregListEndx {.int}
+@cindex output line, continuation (@code{\c})
+@cindex line, output, continuation (@code{\c})
+@cindex continuation, output line (@code{\c})
+@cindex interrupted line
+@cindex line, interrupted
+@cindex @code{\R}, after @code{\c}
+@code{\c} continues an output line. Nothing after it on the input line
+is formatted. In contrast to @code{\@key{RET}}, a line after @code{\c}
+remains a new input line, so a control character is recognized at its
+beginning. The visual results depend on whether filling is enabled; see
+@ref{Manipulating Filling and Adjustment}.
+
+@itemize @bullet
+@item
+@cindex @code{\c}, when filling enabled
+@cindex fill mode, and @code{\c}
+@cindex mode, fill, and @code{\c}
+If filling is enabled, a word interrupted with @code{\c} is continued
+with the text on the next input text line, without an intervening space.
+
+@Example
+This is a te\c
+st.
+ @result{} This is a test.
+@endExample
+
+@item
+@cindex @code{\c}, when filling disabled
+@cindex no-fill mode, and @code{\c}
+@cindex mode, no-fill, and @code{\c}
+If filling is disabled, the next input text line after @code{\c} is
+handled as a continuation of the same input text line.
+
+@Example
+.nf
+This is a \c
+test.
+ @result{} This is a test.
+@endExample
+@end itemize
+
+An intervening control line that causes a break overrides @code{\c},
+flushing out the pending output line in the usual way.
+
+@cindex interrupted line register (@code{.int})
+@cindex continued output line register (@code{.int})
+The @code{.int} register contains a positive value if the last output
+line was continued with @code{\c}; this datum is associated with the
+environment (@pxref{Environments}).@footnote{Historically, the @code{\c}
+escape sequence has proven challenging to characterize. Some sources
+say it ``connects the next input text'' (to the input line on which it
+appears); others describe it as ``interrupting'' text, on the grounds
+that a text line is interrupted without breaking, perhaps to inject a
+request invocation or macro call.}
+@endDefesc
+
+
+@c =====================================================================
+
+@node Page Layout, Page Control, Line Continuation, GNU troff Reference
+@section Page Layout
+@cindex page layout
+@cindex layout, page
+
+The formatter permits configuration of the page length and page number.
+
+@DefreqList {pl, [@Var{length}]}
+@DefreqItem {pl, @t{+}@Var{length}}
+@DefreqItem {pl, @t{-}@Var{length}}
+@DefregListEndx {.p}
+@cindex page length, configuring (@code{pl})
+@cindex length of the page, configuring (@code{pl})
+@cindex configuring the page length (@code{pl})
+@cindex setting the page length (@code{pl})
+Change (increase or decrease) the page length per the numeric expression
+@var{length}. The default scaling unit is @samp{v}. A negative
+@var{length} is valid, but an uncommon application:@: it prevents page
+location traps from being sprung,@footnote{@xref{Traps}.} and each
+output line is placed on a new page. If @var{length} is invalid, GNU
+@code{troff} emits a warning in category @samp{number}. If @var{length}
+is absent or invalid, @samp{11i} is assumed.
+
+@cindex page length register (@code{.p})
+The read-only register @samp{.p} interpolates the current page length.
+@endDefreq
+
+@DefreqList {pn, num}
+@DefreqItem {pn, @t{+}@Var{num}}
+@DefreqItem {pn, @t{-}@Var{num}}
+@DefregListEndx {.pn}
+@cindex page number, configuring next (@code{pn})
+@cindex next page number, configuring (@code{pn})
+@cindex number, page, next, configuring (@code{pn})
+Change (increase or decrease) the page number of the @emph{next} page
+per the numeric expression @var{num}. If @var{num} is invalid, GNU
+@code{troff} emits a warning in category @samp{number} and ignores the
+request. Without an argument, @code{pn} is ignored.
+
+@cindex next page number register (@code{.pn})
+@cindex page number, next, register (@code{.pn})
+The read-only register @code{.pn} interpolates @var{num} if set by
+@code{pn} on the current page, or the current page number plus@tie{}1.
+@endDefreq
+
+@cindex headers
+@cindex footers
+@cindex titles
+The formatter offers special support for typesetting headers and
+footers, collectively termed @dfn{titles}. Titles have an independent
+line length, and their placement on the page is not restricted.
+
+@Defreq {tl, @code{'}@Var{left}@code{'}@Var{center}@code{'}@Var{right}@code{'}}
+@cindex title line, formatting (@code{tl})
+@cindex formatting a title line (@code{tl})
+@cindex three-part title (@code{tl})
+@cindex page number character (@code{%})
+Format an output line as a title consisting of @var{left}, @var{center},
+and @var{right}, each aligned accordingly. The delimiter need not be a
+neutral apostrophe: @code{tl} accepts the same delimiters as most escape
+sequences; see @ref{Delimiters}. If not used as the delimiter, any
+@dfn{page number character} character is replaced with the current page
+number; the default is @samp{%}; see the the @code{pc} request below.
+Without an argument, @code{tl} is ignored. @code{tl} writes the title
+line immediately, ignoring any partially collected line.
+
+It is not an error to omit delimiters after the first. For example,
+@w{@samp{.tl /Thesis}} is interpreted as @w{@samp{.tl /Thesis///}}:@: it
+sets a title line comprising only the left-aligned word @samp{Thesis}.
+@endDefreq
+
+@DefreqList {lt, [@Var{length}]}
+@DefreqItem {lt, @t{+}@Var{length}}
+@DefreqItem {lt, @t{-}@Var{length}}
+@DefregListEndx {.lt}
+@cindex length of title line, configuring (@code{lt})
+@cindex title length, configuring (@code{lt})
+Change (increase or decrease) the line length used by titles per the
+numeric expression @var{length}. The default scaling unit is @samp{m}.
+If @var{length} is negative, GNU emits a warning in category
+@samp{range} and treats @var{length} as @samp{0}. If @var{length} is
+invalid, GNU @code{troff} emits a warning in category @samp{number} and
+ignores the request. The formatter's default title length is
+@samp{6.5i}. With no argument, the title length is restored to the
+previous value. The title length is is associated with the environment
+(@pxref{Environments}).
+
+@cindex title line length register (@code{.lt})
+The read-only register @samp{.lt} interpolates the title line length.
+@endDefreq
+
+@Defreq {pc, [@Var{char}]}
+@cindex changing the page number character (@code{pc})
+@cindex page number character, changing (@code{pc})
+@vindex %
+Set the page number character to @var{char}. With no argument, the page
+number character is disabled. @code{pc} does not affect the
+register@tie{}@code{%}.
+@endDefreq
+
+The following example exercises title features.
+
+@Example
+.lt 50n
+This is my partially collected
+.tl 'Isomers 2023'%'Dextrose Edition'
+line.
+ @result{} Isomers 2023 1 Dextrose Edition
+ @result{} This is my partially collected line.
+@endExample
+
+We most often see titles used in page header and footer traps.
+@xref{Traps}.
+
+@c =====================================================================
+
+@node Page Control, Using Fonts, Page Layout, GNU troff Reference
+@section Page Control
+@cindex page control
+@cindex control, page
+
+@cindex page break
+@cindex break, page
+@cindex page ejection
+@cindex ejection, page
+Discretionary page breaks can prevent the unwanted separation of
+content. A new page number takes effect during page ejection; see
+@ref{The Implicit Page Trap}.
+
+@DefreqList {bp, [@Var{page-number}]}
+@DefreqItem {bp, @t{+}@Var{page-number}}
+@DefreqItem {bp, @t{-}@Var{page-number}}
+@DefregListEndx {%}
+@cindex new page (@code{bp})
+@cindex page, new (@code{bp})
+Break the page and change (increase or decrease) the next page number
+per the numeric expression @var{page-number}. If @var{page-number} is
+invalid, GNU @code{troff} emits a warning in category @samp{number} and
+ignores the argument. This request causes a break. A page break
+advances the vertical drawing position to the bottom of the page,
+springing traps. @xref{Page Location Traps}.
+@cindex @code{bp} request, and top-level diversion
+@cindex top-level diversion, and @code{bp}
+@cindex diversion, top-level, and @code{bp}
+@code{bp} has effect only if invoked within the top-level
+diversion.@footnote{@xref{Diversions}.}
+@cindex CSTR@tie{}#54 errata
+@cindex CSTR@tie{}#54 erratum, @code{bp} request
+This request is incorrectly documented in the @acronym{AT&T}
+@code{troff} manual as having a default scaling unit of @samp{v}.
+
+@cindex page number register (@code{%})
+@cindex current page number (@code{%})
+The register @code{%} interpolates the current page number.
+
+@Example
+.de BP
+' bp \" schedule page break once current line is output
+..
+@endExample
+@endDefreq
+
+@Defreq {ne, [@Var{space}]}
+@cindex orphan lines, preventing with @code{ne}
+@cindex conditional page break (@code{ne})
+@cindex page break, conditional (@code{ne})
+Force a page break if insufficient vertical space is available (assert
+``needed'' space). @code{ne} tests the distance to the next page
+location trap; see @ref{Page Location Traps}, and breaks the page if
+that amount is less than @var{space}. The default scaling unit is
+@samp{v}. If @var{space} is invalid, GNU @code{troff} emits a warning
+in category @samp{number} and ignores the argument. If @var{space} is
+not specified, @samp{1v} is assumed.
+
+@cindex widow
+We can require space for at least the first two output lines of a
+paragraph, preventing its first line from being @slanted{widowed} at the
+page bottom.
+
+@Example
+.ne 2v
+Considering how common illness is,
+how tremendous the spiritual change that it brings,
+how astonishing,
+when the lights of health go down,
+the undiscovered countries that are then disclosed,
+what wastes and deserts of the soul a slight attack
+of influenza brings to view,
+@c -- Virgina Woolf, "On Being Ill", 1926
+@endExample
+
+@c XXX: Some of this might be better placed in a revised Chapter 3.
+This method is reliable only if no output line is pending when @code{ne}
+is invoked. When macro packages are used, this is often not the case:@:
+their paragraphing macros perform the break. You may need to experiment
+with placing the @code{ne} after the paragraphing macro, or @code{br}
+and @code{ne} before it.
+
+@cindex orphan
+@cindex widow
+@code{ne} is also useful to force grouping of section headings with
+their subsequent paragraphs, or tables with their captions and/or
+explanations. Macro packages often use @code{ne} with diversions to
+implement keeps and displays; see @ref{Diversions}. They may also offer
+parameters for widow and orphan management.
+@endDefreq
+
+@DefreqList {sv, [@Var{space}]}
+@DefreqListEndx {os, }
+@cindex @code{ne} request, comparison with @code{sv}
+Require vertical space as @code{ne} does, but also @slanted{save} it for
+later output by the @code{os} request. If @var{space} is available
+before the next page location trap, it is output immediately. Both
+requests ignore a partially collected line, taking effect at the next
+break.
+@cindex @code{sv} request, and no-space mode
+@cindex @code{os} request, and no-space mode
+@code{sv} and @code{os} ignore no-space mode (recall @ref{Manipulating
+Spacing}). While the @code{sv} request allows negative values for
+@var{space}, @code{os} ignores them. The default scaling unit is
+@samp{v}. If @var{space} is not specified, @samp{1v} is assumed.
+@endDefreq
+
+@Defreg {nl}
+@cindex vertical drawing position (@code{nl})
+@cindex vertical position, drawing (@code{nl})
+@cindex drawing position, vertical (@code{nl})
+@c TODO: We should talk somewhere prior to this point about how the
+@c formatter doesn't start a page until it has to.
+@code{nl} interpolates or sets the vertical drawing position. When the
+formatter starts, the first page transition hasn't happened yet, and
+@code{nl} is negative. If a header trap has been planted on the page
+(typically at vertical position @code{0}), you can assign a negative
+value to @code{nl} to spring it if that page has already started
+(@pxref{Page Location Traps}).
+
+@Example
+.de HD
+. sp
+. tl ''Goldbach Solution''
+. sp
+..
+.
+First page.
+.bp
+.wh 0 HD \" plant header trap at top of page
+.nr nl (-1)
+Second page.
+ @result{} First page.
+ @result{}
+ @result{} @r{@i{(blank lines elided)}}
+ @result{}
+ @result{} Goldbach Solution
+ @result{}
+ @result{} @r{@i{(blank lines elided)}}
+ @result{}
+ @result{} Second page.
+@endExample
+
+@noindent
+Without resetting @code{nl} to a negative value, the trap just planted
+would be active beginning with the @emph{next} page, not the current
+one.
+
+@xref{Diversions}, for a comparison of @code{nl} with the @code{.h} and
+@code{.d} registers.
+@endDefreg
+
+
+@c =====================================================================
+
+@c BEGIN Keep (roughly) parallel with section "Using fonts" of groff(7).
+@node Using Fonts, Manipulating Type Size and Vertical Spacing, Page Control, GNU troff Reference
+@section Using Fonts
+@cindex font
+
+@cindex typeface
+@cindex font family
+@cindex font style
+@cindex style, font
+@cindex family, font
+@cindex text font
+@cindex special font
+@cindex unstyled font
+@cindex font, text
+@cindex font, special
+@cindex font, unstyled
+In digital typography, a @dfn{font} is a collection of characters in a
+specific typeface that a device can render as glyphs at a desired
+size.@footnote{Terminals and some output devices have fonts that render
+at only one or two sizes. As examples of the latter, take the
+@code{groff} @code{lj4} device's Lineprinter, and @code{lbp}'s Courier
+and Elite faces.} A @code{roff} formatter can change typefaces at any
+point in the text. The basic faces are a set of @dfn{styles} combining
+upright and slanted shapes with normal and heavy stroke weights:
+@samp{R}, @samp{I}, @samp{B}, and @samp{BI}---these stand for
+@slanted{roman}, @slanted{italic}, @slanted{bold}, and
+@slanted{bold-italic}. For linguistic text, GNU @code{troff} groups
+typefaces into @dfn{families} containing each of these
+styles.@footnote{Font designers prepare families such that the styles
+share esthetic properties.} A @dfn{text font} is thus often a family
+combined with a style, but it need not be:@: consider the @code{ps} and
+@code{pdf} devices' @code{ZCMI} (Zapf Chancery Medium italic)---often,
+no other style of Zapf Chancery Medium is provided. On typesetting
+devices, at least one @dfn{special font} is available, comprising
+@dfn{unstyled} glyphs for mathematical operators and other purposes.
+
+@cindex font description file
+@cindex description file, font
+@cindex file, font description
+@cindex font metrics
+@cindex metrics, font
+@cindex mounting position
+@cindex mounting position
+@cindex position, mounting
+Like @acronym{AT&T} @code{troff}, GNU @code{troff} does not itself load
+or manipulate a digital font file;@footnote{Historically, the fonts
+@code{troff}s dealt with were not Free Software or, as with the Graphic
+Systems C/A/T, did not even exist in the digital domain.} instead it
+works with a @dfn{font description file} that characterizes it,
+including its glyph repertoire and the @dfn{metrics} (dimensions) of
+each glyph.@footnote{@xref{Font Description File Format}.} This
+information permits the formatter to accurately place glyphs with
+respect to each other. Before using a font description, the formatter
+associates it with a @dfn{mounting position}, a place in an ordered list
+of available typefaces.
+@cindex abstract font style
+@cindex font style, abstract
+@cindex style, font, abstract
+So that a document need not be strongly coupled to a specific font
+family, in GNU @code{troff} an output device can associate a style in
+the abstract sense with a mounting position. Thus the default family
+can be combined with a style dynamically, producing a @dfn{resolved font
+name}.
+
+Fonts often have trademarked names, and even Free Software fonts can
+require renaming upon modification. @code{groff} maintains a
+convention that a device's serif font family is given the name @samp{T}
+(``Times''), its sans-serif family @samp{H} (``Helvetica''), and its
+monospaced family @samp{C} (``Courier''). Historical inertia has driven
+@code{groff}'s font identifiers to short uppercase abbreviations of font
+names, as with @samp{TR}, @samp{TI}, @samp{TB}, @samp{TBI}, and a
+special font @samp{S}.
+
+The default family used with abstract styles can be changed at any time;
+initially, it is @samp{T}. Typically, abstract styles are arranged in
+the first four mounting positions in the order shown above. The default
+mounting position, and therefore style, is always @samp{1} (@samp{R}).
+By issuing appropriate formatter instructions, you can override these
+defaults before your document writes its first glyph.
+
+@cindex graphic renditions
+@cindex renditions, graphic
+@cindex character cell attributes
+@cindex attributes, character cell
+@cindex cell, character, attributes
+Terminal output devices cannot change font families and lack special
+fonts. They support style changes by overstriking, or by altering
+ISO@tie{}6429/ECMA-48 @dfn{graphic renditions} (character cell
+attributes).
+@c END Keep (roughly) parallel with section "Using fonts" of groff(7).
+
+@menu
+* Selecting Fonts::
+* Font Families::
+* Font Positions::
+* Using Symbols::
+* Character Classes::
+* Special Fonts::
+* Artificial Fonts::
+* Ligatures and Kerning::
+* Italic Corrections::
+* Dummy Characters::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Selecting Fonts, Font Families, Using Fonts, Using Fonts
+@subsection Selecting Fonts
+@cindex font, selection
+
+We use @dfn{font} to refer to any of several means of identifying a
+font: by mounting position (@samp{3}), by abstract style (@samp{B}), or
+by its identifier (@samp{TB}).
+
+@DefreqList {ft, [@Var{font}]}
+@DefescItemx {\\f, , f, }
+@DefescItem {\\f, (, fn, }
+@DefescItem {\\f, [, font, ]}
+@DefregListEndx {.fn}
+@cindex changing fonts (@code{ft}, @code{\f})
+@cindex fonts, changing (@code{ft}, @code{\f})
+@cindex @code{sty} request, and changing fonts
+@cindex @code{fam} request, and changing fonts
+@cindex @code{\F}, and changing fonts
+@kindex styles
+@kindex family
+@pindex DESC
+@cindex selecting the previous font (@code{ft})
+@cindex previous font, selecting (@code{ft})
+@cindex font, previous, slecting (@code{ft})
+The @code{ft} request selects the typeface @var{font}. If the argument
+is absent or @samp{P}, it selects the previously chosen font. If
+@var{font} is a non-negative integer, it is interpreted as mounting
+position; the font mounted there is selected. If that position refers
+to an abstract style, it is combined with the default family (see
+@code{fam} and @code{\F} below) to make a resolved font name. If the
+mounting position is not a style and no font is mounted there, GNU
+@code{troff} emits a warning in category @samp{font} and ignores the
+request.
+
+If @var{font} matches a style name, it is combined with the current
+family to make a resolved font name. Otherwise, @var{font} is assumed
+to already be a resolved font name.
+
+@cindex automatic font mounting
+@cindex font mounting, automatic
+@cindex mounting, font, automatic
+The resolved font name is subject to translation (see request @code{ftr}
+below). Next, the (possibly translated) font name's mounting position
+is looked up; if not mounted, @var{font} is sought on the file system as
+a font description file and, if located, automatically mounted at the
+next available position (see register @code{.fp} below). If the font
+was mounted using an identifier different from its font description file
+name (see request @code{fp} below), that file name is then looked up.
+If a font description file for the resolved font name is not found, GNU
+@code{troff} emits a warning in category @samp{font} and ignores the
+request.
+
+The @code{\f} escape sequence is similar, using one-character name (or
+mounting position) @var{f}, two-character name @var{fn}, or a name
+@var{font} of arbitrary length.
+@cindex previous font, selecting (@code{\f[]}, @code{\fP})
+@cindex font, previous, selecting (@code{\f[]}, @code{\fP})
+@samp{\f[]} selects the previous font. The syntax form @samp{\fP} is
+supported for backward compatibility, and @samp{\f[P]} for consistency.
+
+@Example
+eggs, bacon,
+.ft I
+spam,
+.ft
+and sausage.
+.br
+eggs, bacon, \fIspam,\fP and sausage.
+ @result{} eggs, bacon, @slanted{spam,} and sausage
+ @result{} eggs, bacon, @slanted{spam,} and sausage
+@endExample
+
+The current and previously selected fonts are properties of the
+environment (@pxref{Environments}).
+
+The read-only string-valued register @code{.fn} contains the resolved
+font name of the selected font.
+
+@code{\f} doesn't produce an input token in GNU @code{troff}; it thus
+can be used in requests that expect a single-character argument. We can
+assign a font to a margin character as follows (@pxref{Miscellaneous}).
+
+@Example
+.mc \f[I]x\f[]
+@endExample
+@endDefreq
+
+@Defreq {ftr, f [@Var{g}]}
+@cindex font translation (@code{ftr})
+@cindex @code{ft} request, and font translations
+@cindex @code{ul} request, and font translations
+@cindex @code{bd} request, and font translations
+@cindex @code{\f}, and font translations
+@cindex @code{cs} request, and font translations
+@cindex @code{tkf} request, and font translations
+@cindex @code{special} request, and font translations
+@cindex @code{fspecial} request, and font translations
+@cindex @code{fp} request, and font translations
+@cindex @code{sty} request, and font translations
+@cindex @code{if} request, and font translations
+@cindex @code{ie} request, and font translations
+@cindex @code{while} request, and font translations
+Translate font@tie{}@var{f} to font@tie{}@var{g}. Whenever a font
+named@tie{}@var{f} is referred to in a @code{\f} escape sequence, in the
+@code{F} and @code{S} conditional operators, or in the @code{ft},
+@code{ul}, @code{bd}, @code{cs}, @code{tkf}, @code{special},
+@code{fspecial}, @code{fp}, or @code{sty} requests, font@tie{}@var{g} is
+used. If @var{g} is missing or equal to@tie{}@var{f} the translation is
+undone.
+@c XXX: Do font translations work on mounting positions? Abstract
+@c styles?
+
+Font translations cannot be chained.
+
+@Example
+.ftr XXX TR
+.ftr XXX YYY
+.ft XXX
+ @error{} warning: can't find font 'XXX'
+@endExample
+@endDefreq
+
+@DefreqList {fzoom, f [@Var{zoom}]}
+@DefregListEndx {.zoom}
+@cindex magnification of a font (@code{fzoom})
+@cindex font, magnification (@code{fzoom})
+@cindex zoom factor of a font (@code{fzoom})
+@cindex factor, zoom, of a font (@code{fzoom})
+@cindex font, zoom factor (@code{fzoom})
+@cindex optical size of a font
+@cindex font, optical size
+@cindex size, optical, of a font
+Set magnification of font@tie{}@var{f} to factor @var{zoom}, which must
+be a non-negative integer multiple of 1/1000th. This request is useful
+to adjust the optical size of a font in relation to the others. In the
+example below, font @code{CR} is magnified by 10% (the zoom factor is
+thus 1.1).
+
+@Example
+.fam P
+.fzoom CR 1100
+.ps 12
+Palatino and \f[CR]Courier\f[]
+@endExample
+
+A missing or zero value of @var{zoom} is the same as a value of 1000,
+which means no magnification. @var{f}@tie{}must be a resolved font
+name, not an abstract style.
+@c XXX: What about a mounting position? It's not rejected...
+
+The magnification of a font is completely transparent to GNU
+@code{troff}; a change of the zoom factor doesn't cause any effect
+except that the dimensions of glyphs, (word) spaces, kerns, etc., of the
+affected font are adjusted accordingly.
+
+The zoom factor of the current font is available in the read-only
+register @samp{.zoom}, in multiples of 1/1000th. It returns zero if
+there is no magnification.
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node Font Families, Font Positions, Selecting Fonts, Using Fonts
+@subsection Font Families
+@cindex font families
+@cindex families, font
+@cindex font styles
+@cindex styles, font
+
+To accommodate the wide variety of fonts available, GNU @code{troff}
+distinguishes @dfn{font families} and @dfn{font styles}. A resolved
+font name is the catenation of a font family and a style. Selecting an
+abstract style causes GNU @code{troff} to combine it with the default
+font family.
+
+You can thus compose a document using abstract styles exclusively for
+its body or running text, selecting a specific family only for titles or
+examples, for instance, and change the default family on the command
+line (recall @ref{Groff Options}).
+
+Fonts for the devices @code{ps}, @code{pdf}, @code{dvi}, @code{lj4},
+@code{lbp}, and the X11 devices support this mechanism. By default,
+GNU @code{troff} uses the Times family with the four styles @samp{R},
+@samp{I}, @samp{B}, and @samp{BI}.
+
+@DefreqList {fam, [@Var{family}]}
+@DefregItemx {.fam}
+@DefescItemx {\\F, , f, }
+@DefescItem {\\F, (, fm, }
+@DefescListEnd {\\F, [, family, ]}
+@cindex changing font family (@code{fam}, @code{\F})
+@cindex font family, changing (@code{fam}, @code{\F})
+Set the default font family, used in combination with abstract styles to
+construct a resolved font name, to @var{family} (one-character
+name@tie{}@var{f}, two-character name @var{fm}). If no argument is
+given, GNU @code{troff} selects the previous font family; if there none,
+is it falls back to the device's default@footnote{@xref{DESC File
+Format}.} or its own (@samp{T}).
+
+The @code{\F} escape sequence works similarly. In disanalogy to
+@code{\f}, @samp{\FP} makes @samp{P} the default family. Use
+@samp{\F[]} to select the previous default family. The default font
+family is available in the read-only string-valued register @code{.fam};
+it is associated with the environment (@pxref{Environments}).
+
+@Example
+spam, \" startup defaults are T (Times) R (roman)
+.fam H \" make Helvetica the default family
+spam, \" family H + style R = HR
+.ft B \" family H + style B = HB
+spam,
+.ft CR \" Courier roman (default family not changed)
+spam,
+.ft \" back to Helvetica bold
+spam,
+.fam T \" make Times the default family
+spam, \" family T + style B = TB
+.ft AR \" font AR (not a style)
+baked beans,
+.ft R \" family T + style R = TR
+and spam.
+@endExample
+
+@code{\F} doesn't produce an input token in GNU @code{troff}. As a
+consequence, it can be used in requests like @code{mc} (which expects
+a single character as an argument) to change the font family on the fly.
+
+@Example
+.mc \F[P]x\F[]
+@endExample
+@endDefreq
+
+@need 1000
+@DefreqList {sty, n style}
+@DefregListEndx {.sty}
+@cindex setting up an abstract font style (@code{sty})
+@cindex abstract font style, setting up (@code{sty})
+@cindex font style, abstract, setting up (@code{sty})
+@cindex style, font, abstract, setting up (@code{sty})
+@cindex @code{cs} request, and font styles
+@cindex @code{bd} request, and font styles
+@cindex @code{tkf} request, and font styles
+@cindex @code{uf} request, and font styles
+@cindex @code{fspecial} request, and font styles
+Associate an abstract style @var{style} with mounting
+position@tie{}@var{n}, which must be a non-negative integer. If the
+requests @code{cs}, @code{bd}, @code{tkf}, @code{uf}, or @code{fspecial}
+are applied to an abstract style, they are instead applied to the member
+of the current family corresponding to that style.
+
+@pindex DESC
+@kindex styles
+The default family can be set with the @option{-f} option (@pxref{Groff
+Options}). The @code{styles} command in the @file{DESC} file controls
+which font positions (if any) are initially associated with abstract
+styles rather than fonts.
+
+@strong{Caution:@:} The @var{style} argument is not validated.
+@c XXX: This would be a really good thing to fix.
+Errors may occur later, when the formatter attempts to construct a
+resolved font name, or format a character for output.
+
+@Example
+.nr BarPos \n[.fp]
+.sty \n[.fp] Bar
+.fam Foo
+.ft \n[BarPos]
+.tm .f=\n[.f]
+A
+ @error{} error: no font family named 'Foo' exists
+ @error{} .f=41
+ @error{} error: cannot format glyph: no current font
+@endExample
+
+When an abstract style has been selected, the read-only string-valued
+register @samp{.sty} interpolates its name; this datum is associated
+with the environment (@pxref{Environments}). Otherwise, @samp{.sty}
+interpolates nothing.
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node Font Positions, Using Symbols, Font Families, Using Fonts
+@subsection Font Positions
+@cindex font positions
+@cindex positions, font
+
+To support typeface indirection through abstract styles, and for
+compatibility with @acronym{AT&T} @code{troff}, the formatter maintains
+a list of font @dfn{positions} at which fonts required by a document are
+@dfn{mounted}. An output device's description file @file{DESC}
+typically configures a set of pre-mounted fonts; see @ref{Device and
+Font Description Files}. A font need not be explicitly mounted before
+it is selected; GNU @code{troff} will search @env{GROFF_FONT_PATH} for
+it by name and mount it at the first free mounting position on demand.
+
+@need 500
+@DefreqList {fp, pos id [@Var{font-description-file-name}]}
+@DefregItemx {.f}
+@DefregListEndx {.fp}
+@cindex mounting a font (@code{fp})
+@cindex font, mounting (@code{fp})
+Mount a font under the name @var{id} at mounting position @var{pos}, a
+non-negative integer. When the formatter starts up, it reads the output
+device's description to mount an initial set of faces, and selects font
+position@tie{}1. Position@tie{}0 is unused by default. Unless the
+@var{font-description-file-name} argument is given, @var{id} should be
+the name of a font description file stored in a directory corresponding
+to the selected output device. GNU @code{troff} does not traverse
+directories to locate the font description file.
+
+@c The third argument was a late revision to device-independent troff.
+@c It wasn't in the "Unix 4.0" version of CSTR #54 (January 1981), which
+@c featured Kernighan's device-independent rewrite, but appeared by the
+@c time of its 1992 revision.
+@cindex font aliasing with third argument to @code{fp} request
+@cindex aliasing fonts with third argument to @code{fp} request
+The optional third argument enables font names to be aliased, which can
+be necessary in compatibility mode since AT&T @code{troff} syntax
+affords no means of identifying fonts with names longer than two
+characters, like @samp{TBI} or @samp{ZCMI}, in a font selection escape
+sequence. @xref{Compatibility Mode}. You can also alias fonts on
+mounting for convenience or abstraction. (See below regarding the
+@code{.fp} register.)
+
+@Example
+.fp \n[.fp] SC ZCMI
+Send a \f(SChand-written\fP thank-you note.
+.fp \n[.fp] Emph TI
+.fp \n[.fp] Strong TB
+Are \f[Emph]these names\f[] \f[Strong]comfortable\f[]?
+@endExample
+
+@samp{DESC}, @samp{P}, and non-negative integers are not usable as font
+identifiers.
+@c XXX: TODO: Catch the DESC case earlier and throw an error for it.
+@c XXX: This identifier could be used as a style name, but no one's
+@c exercised this freedom in 30+ years, and we should consider
+@c prohibiting it. --GBR
+
+@cindex font position register (@code{.f})
+The position of the currently selected font (or abstract style) is
+available in the read-only register @samp{.f}. It is associated with
+the environment (@pxref{Environments}).
+
+You can copy the value of @code{.f} to another register to save it for
+later use.
+
+@Example
+.nr saved-font \n[.f]
+@r{@dots{} @i{text involving many font changes} @dots{}}
+.ft \n[saved-font]
+@endExample
+
+@cindex next free font position register (@code{.fp})
+The index of the next (non-zero) free font position is available in the
+read-only register @samp{.fp}.
+@cindex @file{DESC} file, and font mounting
+Fonts not listed in the @file{DESC} file are automatically mounted at
+position @samp{\n[.fp]} when selected with the @code{ft} request or
+@code{\f} escape sequence. When mounting a font at a position
+explicitly with the @code{fp} request, this same practice should be
+followed, although GNU @code{troff} does not enforce this strictly.
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node Using Symbols, Character Classes, Font Positions, Using Fonts
+@subsection Using Symbols
+@cindex using symbols
+@cindex symbols, using
+
+@cindex glyph
+@cindex character
+@cindex glyph, distinguished from character
+@cindex character, distinguished from glyph
+@cindex ligature
+A @dfn{glyph} is a graphical representation of a @dfn{character}. While
+a character is an abstraction of semantic information, a glyph is
+something that can be seen on screen or paper. A character has many
+possible representation forms (for example, the character `A' can be
+written in an upright or slanted typeface, producing distinct
+glyphs). Sometimes, a sequence of characters map to a single glyph:@:
+this is a @dfn{ligature}---the most common is `fi'.
+
+Space characters never become glyphs in GNU @code{troff}. If not
+discarded (as when trailing on text lines), they are represented by
+horizontal motions in the output.
+
+@cindex symbol
+@cindex special fonts
+@kindex fonts
+@pindex DESC
+@cindex @code{special} request, and glyph search order
+@cindex @code{fspecial} request, and glyph search order
+A @dfn{symbol} is simply a named glyph. Within @code{gtroff}, all glyph
+names of a particular font are defined in its font file. If the user
+requests a glyph not available in this font, @code{gtroff} looks up an
+ordered list of @dfn{special fonts}. By default, the PostScript output
+device supports the two special fonts @samp{SS} (slanted symbols) and
+@samp{S} (symbols) (the former is looked up before the latter). Other
+output devices use different names for special fonts. Fonts mounted
+with the @code{fonts} keyword in the @file{DESC} file are globally
+available. To install additional special fonts locally (i.e., for a
+particular font), use the @code{fspecial} request.
+
+Here are the exact rules how @code{gtroff} searches a given symbol:
+
+@itemize @bullet
+@item
+If the symbol has been defined with the @code{char} request, use it.
+This hides a symbol with the same name in the current font.
+
+@item
+Check the current font.
+
+@item
+If the symbol has been defined with the @code{fchar} request, use it.
+
+@item
+Check whether the current font has a font-specific list of special
+fonts; test all fonts in the order of appearance in the last
+@code{fspecial} call if appropriate.
+
+@item
+If the symbol has been defined with the @code{fschar} request for the
+current font, use it.
+
+@item
+Check all fonts in the order of appearance in the last @code{special}
+call.
+
+@item
+If the symbol has been defined with the @code{schar} request, use it.
+
+@item
+As a last resort, consult all fonts loaded up to now for special fonts
+and check them, starting with the lowest font number. This can
+sometimes lead to surprising results since the @code{fonts} line in
+the @file{DESC} file often contains empty positions, which are filled
+later on. For example, consider the following:
+
+@Example
+fonts 3 0 0 FOO
+@endExample
+
+@noindent
+This mounts font @code{foo} at font position@tie{}3. We assume that
+@code{FOO} is a special font, containing glyph @code{foo}, and that no
+font has been loaded yet. The line
+
+@Example
+.fspecial BAR BAZ
+@endExample
+
+@noindent
+makes font @code{BAZ} special only if font @code{BAR} is active. We
+further assume that @code{BAZ} is really a special font, i.e., the font
+description file contains the @code{special} keyword, and that it also
+contains glyph @code{foo} with a special shape fitting to font
+@code{BAR}. After executing @code{fspecial}, font @code{BAR} is loaded
+at font position@tie{}1, and @code{BAZ} at position@tie{}2.
+
+We now switch to a new font @code{XXX}, trying to access glyph
+@code{foo} that is assumed to be missing. There are neither
+font-specific special fonts for @code{XXX} nor any other fonts made
+special with the @code{special} request, so @code{gtroff} starts the
+search for special fonts in the list of already mounted fonts, with
+increasing font positions. Consequently, it finds @code{BAZ} before
+@code{FOO} even for @code{XXX}, which is not the intended behaviour.
+@end itemize
+
+@xref{Device and Font Description Files}, and @ref{Special Fonts}, for
+more details.
+
+@cindex list of special characters (@cite{groff_char@r{(7)}} man page)
+@cindex special characters, list of (@cite{groff_char@r{(7)}} man page)
+@cindex characters, special, list of (@cite{groff_char@r{(7)}} man page)
+@cindex available glyphs, list of (@cite{groff_char@r{(7)}} man page)
+@cindex glyphs, available, list of (@cite{groff_char@r{(7)}} man page)
+The @cite{groff_char@r{(7)}} man page houses a complete list of
+predefined special character names, but the availability of any as a
+glyph is device- and font-dependent. For example, say
+
+@Example
+man -Tdvi groff_char > groff_char.dvi
+@endExample
+
+@noindent
+to obtain those available with the DVI device and default font
+configuration.@footnote{Not all versions of the @code{man} program
+support the @option{-T} option; use the subsequent example for an
+alternative.} If you want to use an additional macro package to change
+the fonts used, @code{groff} (or @code{gtroff}) must be run directly.
+
+@Example
+groff -Tdvi -mec -man groff_char.7 > groff_char.dvi
+@endExample
+
+@cindex composite glyph names
+@cindex glyph names, composite
+@cindex @code{groff} glyph list (GGL)
+@cindex GGL (@code{groff} glyph list)
+@cindex Adobe Glyph List (AGL)
+Special character names not listed in @cite{groff_char@r{(7)}} are
+derived algorithmically, using a simplified version of the Adobe Glyph
+List (AGL) algorithm, which is described in
+@uref{https://github.com@//adobe-type-tools@//agl-aglfn}. The (frozen)
+set of names that can't be derived algorithmically is called the
+@dfn{@code{groff} glyph list (GGL)}.
+
+@itemize @bullet
+@item
+A glyph for Unicode character U+@var{XXXX}[@var{X}[@var{X}]], which is
+not a composite character is named
+@code{u@var{XXXX}@r{[}@var{X}@r{[}@var{X}@r{]]}}. @var{X} must be an
+uppercase hexadecimal digit. Examples: @code{u1234}, @code{u008E},
+@code{u12DB8}. The largest Unicode value is 0x10FFFF. There must be at
+least four @code{X} digits; if necessary, add leading zeroes (after the
+@samp{u}). No zero padding is allowed for character codes greater than
+0xFFFF. Surrogates (i.e., Unicode values greater than 0xFFFF
+represented with character codes from the surrogate area U+D800-U+DFFF)
+are not allowed either.
+
+@item
+A glyph representing more than a single input character is named
+
+@display
+@samp{u} @var{component1} @samp{_} @var{component2} @samp{_} @var{component3} @dots{}
+@end display
+
+@noindent
+Example: @code{u0045_0302_0301}.
+
+For simplicity, all Unicode characters that are composites must be
+maximally decomposed to NFD;@footnote{This is ``Normalization Form D''
+as documented in Unicode Standard Annex #15
+(@uref{https://unicode.org@//reports@//tr15/}).} for example,
+@code{u00CA_0301} is not a valid glyph name since U+00CA (@sc{latin
+capital letter e with circumflex}) can be further decomposed into U+0045
+(@sc{latin capital letter e}) and U+0302 (@sc{combining circumflex
+accent}). @code{u0045_0302_0301} is thus the glyph name for U+1EBE,
+@sc{latin capital letter e with circumflex and acute}.
+
+@item
+groff maintains a table to decompose all algorithmically derived glyph
+names that are composites itself. For example, @code{u0100} (@sc{latin
+letter a with macron}) is automatically decomposed into
+@code{u0041_0304}. Additionally, a glyph name of the GGL is preferred
+to an algorithmically derived glyph name; @code{groff} also
+automatically does the mapping. Example: The glyph @code{u0045_0302} is
+mapped to @code{^E}.
+
+@item
+glyph names of the GGL can't be used in composite glyph names; for
+example, @code{^E_u0301} is invalid.
+@end itemize
+
+@DefescList {\\, (, nm, }
+@DefescItem {\\, [, name, ]}
+@DefescListEnd {\\, [, base-glyph combining-component @dots{}, ]}
+@esindex \(
+@esindex \[
+Typeset a special character @var{name} (two-character name @var{nm}) or
+a composite glyph consisting of @var{base-glyph} overlaid with one or
+more @var{combining-component}s. For example, @samp{\[A ho]} is a
+capital letter ``A'' with a ``hook accent'' (ogonek).
+
+There is no special syntax for one-character names---the analogous form
+@samp{\@var{n}} would collide with other escape sequences. However, the
+four escape sequences @code{\'}, @code{\-}, @code{\_}, and @code{\`},
+are translated on input to the special character escape sequences
+@code{\[aa]}, @code{\[-]}, @code{\[ul]}, and @code{\[ga]}, respectively.
+
+A special character name of length one is not the same thing as an
+ordinary character: that is, the character @code{a} is not the same as
+@code{\[a]}.
+
+If @var{name} is undefined, a warning in category @samp{char} is
+produced and the escape is ignored. @xref{Warnings}, for information
+about the enablement and suppression of warnings.
+
+GNU @code{troff} resolves @code{\[@r{@dots{}}]} with more than a single
+component as follows:
+
+@itemize @bullet
+@item
+Any component that is found in the GGL is converted to the
+@code{u@var{XXXX}} form.
+
+@item
+Any component @code{u@var{XXXX}} that is found in the list of
+decomposable glyphs is decomposed.
+
+@item
+The resulting elements are then concatenated with @samp{_} in between,
+dropping the leading @samp{u} in all elements but the first.
+@end itemize
+
+No check for the existence of any component (similar to @code{tr}
+request) is done.
+
+Examples:
+
+@table @code
+@item \[A ho]
+@samp{A} maps to @code{u0041}, @samp{ho} maps to @code{u02DB}, thus the
+final glyph name would be @code{u0041_02DB}. This is not the expected
+result:@: the ogonek glyph @samp{ho} is a spacing ogonek, but for a
+proper composite a non-spacing ogonek (U+0328) is necessary. Looking
+into the file @file{composite.tmac}, one can find @w{@samp{.composite ho
+u0328}}, which changes the mapping of @samp{ho} while a composite glyph
+name is constructed, causing the final glyph name to be
+@code{u0041_0328}.
+
+@item \[^E u0301]
+@itemx \[^E aa]
+@itemx \[E a^ aa]
+@itemx \[E ^ @code{'}]
+@samp{^E} maps to @code{u0045_0302}, thus the final glyph name is
+@code{u0045_0302_0301} in all forms (assuming proper calls of the
+@code{composite} request).
+@end table
+
+It is not possible to define glyphs with names like @w{@samp{A ho}}
+within a @code{groff} font file. This is not really a limitation;
+instead, you have to define @code{u0041_0328}.
+@endDefesc
+
+@Defesc {\\C, @code{'}, xxx, @code{'}}
+@cindex named character (@code{\C})
+@cindex character, named (@code{\C})
+Typeset the glyph of the special character @var{xxx}. Normally, it is
+more convenient to use @code{\[@var{xxx}]}, but @code{\C} has some
+advantages: it is compatible with @acronym{AT&T} device-independent
+@code{troff} (and therefore available in compatibility
+mode@footnote{@xref{Compatibility Mode}.}) and can interpolate special
+characters with @samp{]} in their names. The delimiter need not be
+a neutral apostrophe; see @ref{Delimiters}.
+@endDefesc
+
+@Defreq {composite, id1 id2}
+@pindex composite.tmac
+Map special character name @var{id1} to @var{id2} if @var{id1} is used
+in @code{\[...]} with more than one component. See above for examples.
+This is a strict rewriting of the special character name; no check is
+performed for the existence of a glyph for either. A set of default
+mappings for many accents can be found in the file
+@file{composite.tmac}, loaded by the default @file{troffrc} at startup.
+@endDefreq
+
+@Defesc {\\N, @code{'}, n, @code{'}}
+@cindex numbered glyph (@code{\N})
+@cindex glyph, numbered (@code{\N})
+@cindex @code{char} request, used with @code{\N}
+@cindex Unicode
+Typeset the glyph with code@tie{}@var{n} in the current font
+(@code{n}@tie{}is @emph{not} the input character code). The number
+@var{n}@tie{}can be any non-negative decimal integer. Most devices only
+have glyphs with codes between 0 and@tie{}255; the Unicode output device
+uses codes in the range 0--65535. If the current font does not contain
+a glyph with that code, special fonts are @emph{not} searched. The
+@code{\N} escape sequence can be conveniently used in conjunction with
+the @code{char} request:
+
+@Example
+.char \[phone] \f[ZD]\N'37'
+@endExample
+
+@noindent
+@pindex DESC
+@cindex unnamed glyphs
+@cindex glyphs, unnamed
+The code of each glyph is given in the fourth column in the font
+description file after the @code{charset} command. It is possible to
+include unnamed glyphs in the font description file by using a name of
+@samp{---}; the @code{\N} escape sequence is the only way to use these.
+
+No kerning is applied to glyphs accessed with @code{\N}. The delimiter
+need not be a neutral apostrophe; see @ref{Delimiters}.
+@endDefesc
+
+A few escape sequences are also special characters.
+
+@Defesc {\@code{'}, , , }
+An escaped neutral apostrophe is a synonym for @code{\[aa]} (acute
+accent).
+@endDefesc
+
+@Defesc {\@code{`}, , , }
+An escaped grave accent is a synonym for @code{\[ga]} (grave accent).
+@endDefesc
+
+@Defesc {\\-, , , }
+An escaped hyphen-minus is a synonym for @code{\[-]} (minus sign).
+@endDefesc
+
+@Defesc {\\_, , , }
+An escaped underscore (``low line'') is a synonym for @code{\[ul]}
+(underrule). On typesetting devices, the underrule is font-invariant
+and drawn lower than the underscore @samp{_}.
+@endDefesc
+
+@Defreq {cflags, n c1 c2 @dots{}}
+@cindex glyph properties (@code{cflags})
+@cindex character properties (@code{cflags})
+@cindex properties of glyphs (@code{cflags})
+@cindex properties of characters (@code{cflags})
+Assign properties encoded by the number @var{n} to characters @var{c1},
+@var{c2}, and so on.
+
+Input characters, including special characters introduced by an escape,
+have certain properties associated with them.@footnote{Output glyphs
+don't---to GNU @code{troff}, a glyph is simply a box with an index into
+a font, a given height above and depth below the baseline, and a width.}
+These properties can be modified with this request. The first argument
+is the sum of the desired flags and the remaining arguments are the
+characters to be assigned those properties. Spaces between the @var{cn}
+arguments are optional. Any argument @var{cn} can be a character class
+defined with the @code{class} request rather than an individual
+character. @xref{Character Classes}.
+
+The non-negative integer @var{n} is the sum of any of the following.
+Some combinations are nonsensical, such as @samp{33} (1 + 32).
+
+@table @code
+@item 1
+@cindex end-of-sentence characters
+@cindex characters, end-of-sentence
+Recognize the character as ending a sentence if followed by a newline
+or two spaces. Initially, characters @samp{.?!} have this property.
+
+@item 2
+@cindex hyphenating characters
+@cindex characters, hyphenation
+Enable breaks before the character. A line is not broken at a character
+with this property unless the characters on each side both have non-zero
+hyphenation codes. This exception can be overridden by adding 64.
+Initially, no characters have this property.
+
+@item 4
+@cindex @code{\-} glyph, and @code{cflags}
+@cindex @code{hy} glyph, and @code{cflags}
+@cindex @code{em} glyph, and @code{cflags}
+Enable breaks after the character. A line is not broken at a character
+with this property unless the characters on each side both have non-zero
+hyphenation codes. This exception can be overridden by adding 64.
+Initially, characters @samp{\-\[hy]\[em]} have this property.
+
+@item 8
+@cindex overlapping characters
+@cindex characters, overlapping
+@cindex @code{ul} glyph, and @code{cflags}
+@cindex @code{rn} glyph, and @code{cflags}
+@cindex @code{ru} glyph, and @code{cflags}
+@cindex @code{radicalex} glyph, and @code{cflags}
+@cindex @code{sqrtex} glyph, and @code{cflags}
+Mark the glyph associated with this character as overlapping other
+instances of itself horizontally. Initially, characters
+@samp{\[ul]\[rn]\[ru]\[radicalex]\[sqrtex]} have this property.
+
+@item 16
+@cindex @code{br} glyph, and @code{cflags}
+Mark the glyph associated with this character as overlapping other
+instances of itself vertically. Initially, the character @samp{\[br]}
+has this property.
+
+@item 32
+@cindex transparent characters
+@cindex character, transparent
+@cindex @code{"}, at end of sentence
+@cindex @code{'}, at end of sentence
+@cindex @code{)}, at end of sentence
+@cindex @code{]}, at end of sentence
+@cindex @code{*}, at end of sentence
+@cindex @code{dg} glyph, at end of sentence
+@cindex @code{dd} glyph, at end of sentence
+@cindex @code{rq} glyph, at end of sentence
+@cindex @code{cq} glyph, at end of sentence
+Mark the character as transparent for the purpose of end-of-sentence
+recognition. In other words, an end-of-sentence character followed by
+any number of characters with this property is treated as the end of a
+sentence if followed by a newline or two spaces. This is the same as
+having a zero space factor in @TeX{}. Initially, characters
+@samp{"')]*\[dg]\[dd]\[rq]\[cq]} have this property.
+
+@item 64
+Ignore hyphenation codes of the surrounding characters. Use this in
+combination with values 2 and@tie{}4 (initially, no characters have this
+property).
+
+For example, if you need an automatic break point after the en-dash in
+numeric ranges like ``3000--5000'', insert
+
+@Example
+.cflags 68 \[en]
+@endExample
+
+@noindent
+into your document. However, this practice can lead to bad layout if
+done thoughtlessly; in most situations, a better solution instead of
+changing the @code{cflags} value is to insert @code{\:} right after the
+hyphen at the places that really need a break point.
+@end table
+
+The remaining values were implemented for East Asian language support;
+those who use alphabetic scripts exclusively can disregard them.
+
+@table @code
+@item 128
+Prohibit a line break before the character, but allow a line break after
+the character. This works only in combination with flags 256 and 512
+and has no effect otherwise. Initially, no characters have this
+property.
+
+@item 256
+Prohibit a line break after the character, but allow a line break before
+the character. This works only in combination with flags 128 and 512
+and has no effect otherwise. Initially, no characters have this
+property.
+
+@item 512
+Allow line break before or after the character. This works only in
+combination with flags 128 and 256 and has no effect otherwise.
+Initially, no characters have this property.
+@end table
+
+In contrast to values 2 and@tie{}4, the values 128, 256, and 512 work
+pairwise. If, for example, the left character has value 512, and the
+right character 128, no break will be automatically inserted between
+them. If we use value@tie{}6 instead for the left character, a break
+after the character can't be suppressed since the neighboring character
+on the right doesn't get examined.
+@endDefreq
+
+@DefreqList {char, c [@Var{contents}]}
+@DefreqItemx {fchar, c [@Var{contents}]}
+@DefreqItemx {fschar, f c [@Var{contents}]}
+@DefreqListEndx {schar, c [@Var{contents}]}
+@cindex defining character (@code{char})
+@cindex defining fallback character (@code{fchar}, @code{fschar}, @code{schar})
+@cindex character, defining (@code{char})
+@cindex character, defining fallback (@code{fchar}, @code{fschar}, @code{schar})
+@cindex fallback character, defining (@code{fchar}, @code{fschar}, @code{schar})
+@cindex creating new characters (@code{char})
+@cindex defining symbol (@code{char})
+@cindex symbol, defining (@code{char})
+@cindex defining glyph (@code{char})
+@cindex glyph, defining (@code{char})
+@cindex escape character, while defining glyph
+@cindex character, escape, while defining glyph
+@cindex @code{tr} request, and glyph definitions
+@cindex @code{cp} request, and glyph definitions
+@cindex @code{rc} request, and glyph definitions
+@cindex @code{lc} request, and glyph definitions
+@cindex @code{\l}, and glyph definitions
+@cindex @code{\L}, and glyph definitions
+@cindex @code{\&}, and glyph definitions
+@cindex @code{\e}, and glyph definitions
+@cindex @code{hcode} request, and glyph definitions
+Define a new character or glyph@tie{}@var{c} to be @var{contents}, which
+can be empty. More precisely, @code{char} defines a @code{groff} object
+(or redefines an existing one) that is accessed with the
+name@tie{}@var{c} on input, and produces @var{contents} on output.
+Every time glyph@tie{}@var{c} needs to be printed, @var{contents} is
+processed in a temporary environment and the result is wrapped up into a
+single object. Compatibility mode is turned off and the escape
+character is set to@tie{}@code{\} while @var{contents} is processed.
+Any emboldening, constant spacing, or track kerning is applied to this
+object rather than to individual glyphs in @var{contents}.
+
+An object defined by these requests can be used just like a normal glyph
+provided by the output device. In particular, other characters can be
+translated to it with the @code{tr} or @code{trin} requests; it can be
+made the leader character with the @code{lc} request; repeated patterns
+can be drawn with it using the @code{\l} and @code{\L} escape sequences;
+and words containing@tie{}@var{c} can be hyphenated correctly if the
+@code{hcode} request is used to give the object a hyphenation code.
+
+There is a special anti-recursion feature: use of the object within its
+own definition is handled like a normal character (not
+defined with @code{char}).
+
+The @code{tr} and @code{trin} requests take precedence if @code{char}
+accesses the same symbol.
+
+@Example
+.tr XY
+X
+ @result{} Y
+.char X Z
+X
+ @result{} Y
+.tr XX
+X
+ @result{} Z
+@endExample
+
+The @code{fchar} request defines a fallback glyph: @code{gtroff} only
+checks for glyphs defined with @code{fchar} if it cannot find the glyph
+in the current font. @code{gtroff} carries out this test before
+checking special fonts.
+
+@code{fschar} defines a fallback glyph for font@tie{}@var{f}:
+@code{gtroff} checks for glyphs defined with @code{fschar} after the
+list of fonts declared as font-specific special fonts with the
+@code{fspecial} request, but before the list of fonts declared as global
+special fonts with the @code{special} request.
+
+Finally, the @code{schar} request defines a global fallback glyph:
+@code{gtroff} checks for glyphs defined with @code{schar} after the list
+of fonts declared as global special fonts with the @code{special}
+request, but before the already mounted special fonts.
+
+@xref{Character Classes}.
+@endDefreq
+
+@DefreqList {rchar, c @dots{}}
+@DefreqListEndx {rfschar, f c @dots{}}
+@cindex removing glyph definition (@code{rchar}, @code{rfschar})
+@cindex glyph, removing definition (@code{rchar}, @code{rfschar})
+@cindex fallback glyph, removing definition (@code{rchar}, @code{rfschar})
+Remove definition of each ordinary or special character @var{c},
+undoing the effect of a @code{char}, @code{fchar}, or @code{schar}
+request. Those supplied by font description files cannot be removed.
+Spaces and tabs may separate @var{c}@tie{}arguments.
+
+The request @code{rfschar} removes glyph definitions defined with
+@code{fschar} for font@tie{}@var{f}.
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node Character Classes, Special Fonts, Using Symbols, Using Fonts
+@subsection Character Classes
+@cindex character classes
+@cindex classes, character
+
+Classes are particularly useful for East Asian languages such as
+Chinese, Japanese, and Korean, where the number of needed characters is
+much larger than in European languages, and where large sets of
+characters share the same properties.
+
+@Defreq {class, name c1 c2 @dots{}}
+@cindex character class (@code{class})
+@cindex defining character class (@code{class})
+@cindex class of characters (@code{class})
+Define a character class (or simply ``class'') @var{name} comprising
+the characters @var{c1}, @var{c2}, and so on.
+
+A class thus defined can then be referred to in lieu of listing all the
+characters within it. Currently, only the @code{cflags} request can
+handle references to character classes.
+
+In the request's simplest form, each @var{cn} is a character (or special
+character).
+
+@Example
+.class [quotes] ' \[aq] \[dq] \[oq] \[cq] \[lq] \[rq]
+@endExample
+
+Since class and glyph names share the same name space, it is recommended
+to start and end the class name with @code{[} and @code{]},
+respectively, to avoid collisions with existing character names defined
+by GNU @code{troff} or the user (with @code{char} and related requests).
+This practice applies the presence of @code{]} in the class name to
+prevent the use of the special character escape form
+@code{\[@r{@dots{}}]}, thus you must use the @code{\C} escape to access
+a class with such a name.
+
+@cindex GGL (@code{groff} glyph list)
+@cindex @code{groff} glyph list (GGL)
+You can also use a character range notation consisting of a
+start character followed by @samp{-} and then an end character.
+Internally, GNU @code{troff} converts these two symbol names to
+Unicode code points (according to the @code{groff} glyph list [GGL]),
+which then give the start and end value of the range. If that fails,
+the class definition is skipped.
+
+Furthermore, classes can be nested.
+
+@Example
+.class [prepunct] , : ; > @}
+.class [prepunctx] \C'[prepunct]' \[u2013]-\[u2016]
+@endExample
+
+@noindent
+The class @samp{[prepunctx]} thus contains the contents of the class
+@code{[prepunct]} as defined above (the set @samp{, : ; > @}}), and
+characters in the range between @code{U+2013} and @code{U+2016}.
+
+If you want to include @samp{-} in a class, it must be the first
+character value in the argument list, otherwise it gets misinterpreted
+as part of the range syntax.
+
+It is not possible to use class names as end points of range
+definitions.
+
+A typical use of the @code{class} request is to control line-breaking
+and hyphenation rules as defined by the @code{cflags} request. For
+example, to inhibit line breaks before the characters belonging to the
+@code{prepunctx} class defined in the previous example, you can write
+the following.
+
+@Example
+.cflags 2 \C'[prepunctx]'
+@endExample
+
+@noindent
+See the @code{cflags} request in @ref{Using Symbols}, for more details.
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node Special Fonts, Artificial Fonts, Character Classes, Using Fonts
+@subsection Special Fonts
+@cindex special fonts
+@cindex fonts, special
+
+Special fonts are those that @code{gtroff} searches when it cannot find
+the requested glyph in the current font. The Symbol font is usually a
+special font.
+
+@code{gtroff} provides the following two requests to add more special
+fonts. @xref{Using Symbols}, for a detailed description of the glyph
+searching mechanism in @code{gtroff}.
+
+Usually, only non-TTY devices have special fonts.
+
+@DefreqList {special, [@Var{s1} @Var{s2} @dots{}]}
+@DefreqListEndx {fspecial, f [@Var{s1} @Var{s2} @dots{}]}
+@kindex fonts
+@pindex DESC
+Use the @code{special} request to define special fonts. Initially, this
+list is empty.
+
+Use the @code{fspecial} request to designate special fonts only when
+font@tie{}@var{f} is active. Initially, this list is empty.
+
+Previous calls to @code{special} or @code{fspecial} are overwritten;
+without arguments, the particular list of special fonts is set to empty.
+Special fonts are searched in the order they appear as arguments.
+
+All fonts that appear in a call to @code{special} or @code{fspecial}
+are loaded.
+
+@xref{Using Symbols}, for the exact search order of glyphs.
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node Artificial Fonts, Ligatures and Kerning, Special Fonts, Using Fonts
+@subsection Artificial Fonts
+@cindex artificial fonts
+@cindex fonts, artificial
+
+There are a number of requests and escape sequences for artificially
+creating fonts. These are largely vestiges of the days when output
+devices did not have a wide variety of fonts, and when @code{nroff} and
+@code{troff} were separate programs. Most of them are no longer
+necessary in GNU @code{troff}. Nevertheless, they are supported.
+
+@DefescList {\\H, @code{'}, height, @code{'}}
+@DefescItem {\\H, @code{'}, @t{+}height, @code{'}}
+@DefescItem {\\H, @code{'}, @t{-}height, @code{'}}
+@DefregListEndx {.height}
+@cindex changing the font height (@code{\H})
+@cindex font height, changing (@code{\H})
+@cindex height, font, changing (@code{\H})
+Change (increment, decrement) the height of the current font, but not
+the width. If @var{height} is zero, restore the original height.
+Default scaling unit is @samp{z}.
+
+The read-only register @code{.height} contains the font height as set by
+@code{\H}.
+
+Currently, only the @option{-Tps} and @option{-Tpdf} devices support
+this feature.
+
+@code{\H} doesn't produce an input token in GNU @code{troff}. As a
+consequence, it can be used in requests like @code{mc} (which expects
+a single character as an argument) to change the font on the fly:
+
+@Example
+.mc \H'+5z'x\H'0'
+@endExample
+
+In compatibility mode, @code{gtroff} behaves differently: If an
+increment or decrement is used, it is always taken relative to the
+current type size and not relative to the previously selected font
+height. Thus,
+
+@Example
+.cp 1
+\H'+5'test \H'+5'test
+@endExample
+
+@noindent
+prints the word @samp{test} twice with the same font height (five points
+larger than the current font size).
+@endDefesc
+
+@DefescList {\\S, @code{'}, slant, @code{'}}
+@DefregListEndx {.slant}
+@cindex changing the font slant (@code{\S})
+@cindex font slant, changing (@code{\S})
+@cindex slant, font, changing (@code{\S})
+Slant the current font by @var{slant} degrees. Positive values slant to
+the right. Only integer values are possible.
+
+The read-only register @code{.slant} contains the font slant as set by
+@code{\S}.
+
+Currently, only the @option{-Tps} and @option{-Tpdf} devices support
+this feature.
+
+@code{\S} doesn't produce an input token in GNU @code{troff}. As a
+consequence, it can be used in requests like @code{mc} (which expects
+a single character as an argument) to change the font on the fly:
+
+@Example
+.mc \S'20'x\S'0'
+@endExample
+
+@cindex CSTR@tie{}#54 errata
+@cindex CSTR@tie{}#54 erratum, @code{\S} escape
+This escape is incorrectly documented in the @acronym{AT&T}
+@code{troff} manual; the slant is always set to an absolute value.
+@endDefesc
+
+@Defreq {ul, [@Var{lines}]}
+@cindex underlining (@code{ul})
+The @code{ul} request normally underlines subsequent lines if a TTY
+output device is used. Otherwise, the lines are printed in italics
+(only the term `underlined' is used in the following). The single
+argument is the quantity of input lines to be underlined; with no
+argument, the next line is underlined. If @var{lines} is zero or
+negative, stop the effects of @code{ul} (if it was active). Requests
+and empty lines do not count for computing the number of underlined
+input lines, even if they produce some output like @code{tl}. Lines
+inserted by macros (e.g., invoked by a trap) do count.
+
+At the beginning of @code{ul}, the current font is stored and the
+underline font is activated. Within the span of a @code{ul} request, it
+is possible to change fonts, but after the last line affected by
+@code{ul} the saved font is restored.
+
+This number of lines still to be underlined is associated with the
+environment (@pxref{Environments}). The underline font can be changed
+with the @code{uf} request.
+
+@c XXX @xref should be changed to grotty
+
+@c @xref{@code{troff} and @code{nroff} Modes}, for a discussion of how
+@c underlining is implemented for terminal output devices, and what
+@c problems can arise.
+
+The @code{ul} request does not underline spaces.
+@endDefreq
+
+@Defreq {cu, [@Var{lines}]}
+@cindex continuous underlining (@code{cu})
+@cindex underlining, continuous (@code{cu})
+The @code{cu} request is similar to @code{ul} but underlines spaces as
+well (if a TTY output device is used).
+@endDefreq
+
+@Defreq {uf, font}
+@cindex underline font (@code{uf})
+@cindex font for underlining (@code{uf})
+Set the underline font (globally) used by @code{ul} and @code{cu}. By
+default, this is the font at position@tie{}2. @var{font} can be either
+a non-negative font position or the name of a font.
+@endDefreq
+
+@DefreqList {bd, font [@Var{offset}]}
+@DefreqItem {bd, font1 font2 [@Var{offset}]}
+@DefregListEndx {.b}
+@cindex imitating boldface (@code{bd})
+@cindex boldface, imitating (@code{bd})
+Embolden @var{font} by overstriking its glyphs offset by @var{offset}
+units minus one.
+
+Two syntax forms are available.
+
+@itemize @bullet
+@item
+Imitate a bold font unconditionally. The first argument specifies the
+font to embolden, and the second is the number of basic units, minus
+one, by which the two glyphs are offset. If the second argument is
+missing, emboldening is turned off.
+
+@var{font} can be either a non-negative font position or the name of a
+font.
+
+@var{offset} is available in the @code{.b} read-only register if a
+special font is active; in the @code{bd} request, its default unit is
+@samp{u}.
+
+@cindex @code{fspecial} request, and imitating bold
+@kindex special
+@cindex embolding of special fonts
+@cindex special fonts, emboldening
+@item
+Imitate a bold form conditionally. Embolden @var{font1} by @var{offset}
+only if font @var{font2} is the current font. This request can be
+issued repeatedly to set up different emboldening values for different
+current fonts. If the second argument is missing, emboldening is turned
+off for this particular current font.
+
+This affects special fonts only (either set up with the @code{special}
+command in font files or with the @code{fspecial} request).
+@end itemize
+@endDefreq
+
+@Defreq {cs, font [@Var{width} [@Var{em-size}]]}
+@cindex constant glyph space mode (@code{cs})
+@cindex mode for constant glyph space (@code{cs})
+@cindex glyph, constant space
+@cindex @code{ps} request, and constant glyph space mode
+Switch to and from @dfn{constant glyph space mode}. If activated, the
+width of every glyph is @math{@var{width}/36} ems. The em size is given
+absolutely by @var{em-size}; if this argument is missing, the em value
+is taken from the current font size (as set with the @code{ps} request)
+when the font is effectively in use. Without second and third argument,
+constant glyph space mode is deactivated.
+
+Default scaling unit for @var{em-size} is @samp{z}; @var{width} is an
+integer.
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node Ligatures and Kerning, Dummy Characters, Artificial Fonts, Using Fonts
+@subsection Ligatures and Kerning
+@cindex ligatures and kerning
+@cindex kerning and ligatures
+
+Ligatures are groups of characters that are run together, i.e, producing
+a single glyph. For example, the letters `f' and `i' can form a
+ligature `fi' as in the word `file'. This produces a cleaner look
+(albeit subtle) to the printed output. Usually, ligatures are not
+available in fonts for TTY output devices.
+
+Most PostScript fonts support the fi and fl ligatures. The C/A/T
+typesetter that was the target of @acronym{AT&T} @code{troff} also
+supported `ff', `ffi', and `ffl' ligatures. Advanced typesetters or
+`expert' fonts may include ligatures for `ft' and `ct', although GNU
+@code{troff} does not support these (yet).
+
+Only the current font is checked for ligatures and kerns; neither
+special fonts nor special charcters defined with the @code{char} request
+(and its siblings) are taken into account.
+
+@DefreqList {lg, [@Var{flag}]}
+@DefregListEndx {.lg}
+@cindex activating ligatures (@code{lg})
+@cindex ligatures, activating (@code{lg})
+@cindex ligatures enabled register (@code{.lg})
+Switch the ligature mechanism on or off; if the parameter is non-zero or
+missing, ligatures are enabled, otherwise disabled. Default is on. The
+current ligature mode can be found in the read-only register @code{.lg}
+(set to 1 or@tie{}2 if ligatures are enabled, 0@tie{}otherwise).
+
+Setting the ligature mode to@tie{}2 enables the two-character ligatures
+(fi, fl, and ff) and disables the three-character ligatures (ffi and
+ffl).
+@endDefreq
+
+@dfn{Pairwise kerning} is another subtle typesetting mechanism that
+modifies the distance between a glyph pair to improve readability. In
+most cases (but not always) the distance is decreased.
+@iftex
+For example, compare the combination of the letters `V' and `A'. With
+kerning, `VA' is printed. Without kerning it appears as `V@w{}A'.
+@end iftex
+Typewriter-like fonts and fonts for terminals where all glyphs have the
+same width don't use kerning.
+
+@DefreqList {kern, [@Var{flag}]}
+@DefregListEndx {.kern}
+@cindex activating kerning (@code{kern})
+@cindex kerning, activating (@code{kern})
+@cindex kerning enabled register (@code{.kern})
+Switch kerning on or off. If the parameter is non-zero or missing,
+enable pairwise kerning, otherwise disable it. The read-only register
+@code{.kern} is set to@tie{}1 if pairwise kerning is enabled,
+0@tie{}otherwise.
+
+@cindex dummy character (@code{\&}), effect on kerning
+@cindex character, dummy (@code{\&}), effect on kerning
+If the font description file contains pairwise kerning information,
+glyphs from that font are kerned. Kerning between two glyphs can be
+inhibited by placing @code{\&} between them: @samp{V\&A}.
+
+@xref{Font Description File Format}.
+@endDefreq
+
+@cindex track kerning
+@cindex kerning, track
+@dfn{Track kerning} expands or reduces the space between glyphs. This
+can be handy, for example, if you need to squeeze a long word onto a
+single line or spread some text to fill a narrow column. It must be
+used with great care since it is usually considered bad typography if
+the reader notices the effect.
+
+@Defreq {tkf, f s1 n1 s2 n2}
+@cindex activating track kerning (@code{tkf})
+@cindex track kerning, activating (@code{tkf})
+Enable track kerning for font@tie{}@var{f}. If the current font
+is@tie{}@var{f} the width of every glyph is increased by an amount
+between @var{n1} and @var{n2} (@var{n1}, @var{n2} can be negative); if
+the current type size is less than or equal to @var{s1} the width is
+increased by @var{n1}; if it is greater than or equal to @var{s2} the
+width is increased by @var{n2}; if the type size is greater than or
+equal to @var{s1} and less than or equal to @var{s2} the increase in
+width is a linear function of the type size.
+
+The default scaling unit is @samp{z} for @var{s1} and @var{s2}, @samp{p}
+for @var{n1} and @var{n2}.
+
+The track kerning amount is added even to the rightmost glyph in a line;
+for large values it is thus recommended to increase the line length by
+the same amount to compensate.
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node Italic Corrections, Dummy Characters, Ligatures and Kerning, Using Fonts
+@subsection Italic Corrections
+
+When typesetting adjacent glyphs from typefaces of different slants, the
+space between them may require adjustment.
+
+@Defesc {\\/, , , }
+@cindex italic correction (@code{\/})
+@cindex correction, italic (@code{\/})
+@cindex correction between oblique and upright glyph (@code{\/}, @code{\,})
+@cindex roman glyph, correction after italic glyph (@code{\/})
+@cindex upright glyph, correction after oblique glyph (@code{\/})
+Apply an @dfn{italic correction}:@: modify the spacing of the preceding
+glyph so that the distance between it and the following glyph is correct
+if the latter is of upright shape. For example, if an
+italic@tie{}@samp{f} is followed immediately by a roman right
+parenthesis, then in many fonts the top right portion of
+the@tie{}@samp{f} overlaps the top left of the right parenthesis, which
+is ugly. Use this escape sequence whenever an oblique glyph is
+immediately followed by an upright glyph without any intervening space.
+@endDefesc
+
+@Defesc {\\\,, , , }
+@cindex left italic correction (@code{\,})
+@cindex correction, left italic (@code{\,})
+@cindex correction between upright and oblique glyph (@code{\/}, @code{\,})
+@cindex roman glyph, correction before italic glyph (@code{\,})
+@cindex upright glyph, correction before oblique glyph (@code{\,})
+Apply a @dfn{left italic correction}:@: modify the spacing of the
+following glyph so that the distance between it and the preceding
+glyph is correct if the latter is of upright shape. For example,
+if a roman left parenthesis is immediately followed by an
+italic@tie{}@samp{f}, then in many fonts the bottom left portion of
+the@tie{}@samp{f} overlaps the bottom of the left parenthesis, which is
+ugly. Use this escape sequence whenever an upright glyph is followed
+immediately by an oblique glyph without any intervening space.
+@endDefesc
+
+@c XXX: Can we move this node earlier in the text? Should it come
+@c before some of the dummy character's multifarious effects?
+@need 1000
+@node Dummy Characters, , Italic Corrections, Using Fonts
+@subsection Dummy Characters
+
+As discussed in @ref{Requests and Macros}, the first character on an
+input line is treated specially. Further, formatting a glyph has many
+consequences on formatter state (@pxref{Environments}). Occasionally,
+we want to escape this context or embrace some of those consequences
+without actually rendering a glyph to the output.
+
+@Defesc {\\&, , , }
+@cindex dummy character (@code{\&})
+@cindex character, dummy (@code{\&})
+Interpolate a dummy character, which is constitutive of output but
+invisible.@footnote{Opinions of this escape sequence's name abound.
+``Zero-width space'' is a popular misnomer:@: @code{roff} formatters do
+not treat it like a space. Ossanna called it a ``non-printing,
+zero-width character'', but the character causes @emph{output} even
+though it does not ``print''. If no output line is pending, the dummy
+character starts one. Contrast an empty input document with one
+containing only @code{\&}. The former produces no output; the latter, a
+blank page.} Its presence alters the interpretation context of a
+subsequent input character, and enjoys several applications.
+
+@itemize @bullet
+@item
+Prevent insertion of extra space after an end-of-sentence character.
+
+@Example
+Test.
+Test.
+ @result{} Test. Test.
+Test.\&
+Test.
+ @result{} Test. Test.
+@endExample
+
+@item
+Prevent recognition of a control character.
+
+@Example
+.Test
+ @error{} warning: macro 'Test' not defined
+\&.Test
+ @result{} .Test
+@endExample
+
+@item
+Prevent kerning between two glyphs.
+
+@iftex
+@c can't use @Example...@endExample here
+@example
+@group
+VA
+ @result{} @r{VA}
+V\&A
+ @result{} @r{V@w{}A}
+@end group
+@end example
+@end iftex
+
+@item
+Translate a character to ``nothing''.
+
+@Example
+.tr JIjiK\&k\&UVuv
+@c XXX: I might have the wrong noun declension in "university" here.
+Post universitum, alea jacta est, OK?
+ @result{} Post vniversitvm, alea iacta est, O?
+@endExample
+@end itemize
+
+The dummy character escape sequence sees use in macro definitions as a
+means of ensuring that arguments are treated as text even if they begin
+with spaces or control characters.
+
+@Example
+.de HD \" typeset a simple bold heading
+. sp
+. ft B
+\&\\$1 \" exercise: remove the \&
+. ft
+. sp
+..
+.HD .\|.\|.\|surprised?
+@endExample
+@endDefesc
+
+One way to think about the dummy character is to imagine placing the
+symbol @samp{&} in the input at a certain location; if doing so has all
+the side effects on formatting that you desire except for sticking an
+ugly ampersand in the midst of your text, the dummy character is what
+you want in its place.
+
+@c XXX: This feature seems nearly impossible to motivate. The _only_
+@c use of it in the groff source tree is for the mdoc package, for which
+@c it seems to be special pleading for that package's unique approach to
+@c macro argument reprocessing, which also involves an idiosyncratic
+@c approach to punctuation characters in macro argument lists.
+@Defesc {\\), , , }
+@cindex transparent dummy character (@code{\)})
+@cindex character, transparent dummy (@code{\)})
+@cindex dummy character, transparent (@code{\)})
+Interpolate a @slanted{transparent} dummy character---one that is
+transparent to end-of-sentence detection. It behaves as @code{\&},
+except that @code{\&} is treated as letters and numerals normally are
+after @samp{.}, @samp{?} and @samp{!}; @code{\&} cancels end-of-sentence
+detection, and @code{\)} does not.
+@c This feature seems too weak to me; see Savannah #60571. -- GBR
+
+@Example
+.de Suffix-&
+. nop \&\\$1
+..
+.
+.de Suffix-)
+. nop \)\\$1
+..
+.
+Here's a sentence.\c
+.Suffix-& '
+Another one.\c
+.Suffix-) '
+And a third.
+ @result{} Here's a sentence.' Another one.' And a third.
+@endExample
+@endDefesc
+
+
+@c =====================================================================
+
+@c TODO: Move the troff and nroff mode stuff here. Try to keep stuff
+@c that isn't ignored in nroff above this point, and stuff for
+@c typesetters below, until we hit the programming/advanced concepts.
+@c XXX: Thorny issue: nroff/terminal devices ignore type size but
+@c _honor_ vertical spacing (to within their crude vertical motion
+@c quanta).
+
+@need 2000
+@node Manipulating Type Size and Vertical Spacing, Colors, Using Fonts, GNU troff Reference
+@section Manipulating Type Size and Vertical Spacing
+@cindex manipulating type size and vertical spacing
+
+@cindex text baseline
+@cindex baseline, text
+@cindex type size
+@cindex size, size
+@cindex vertical spacing
+@cindex spacing, vertical
+These concepts were introduced in @ref{Page Geometry}. The height of a
+font's tallest glyph is one em, which is equal to the type size in
+points.@footnote{In text fonts, the tallest glyphs are typically
+parentheses. Unfortunately, in many cases the actual dimensions of the
+glyphs in a font do not closely match its declared type size! For
+example, in the standard PostScript font families, 10-point Times sets
+better with 9-point Helvetica and 11-point Courier than if all three
+were used at 10@tie{}points.} A vertical spacing of less than 120% of
+the type size can make a document hard to read. Larger proportions can
+be useful to spread the text for annotations or proofreader's marks. By
+default, GNU @code{troff} uses 10@tie{}point type on 12@tie{}point
+spacing.
+@cindex leading
+Typographers call the difference between type size and vertical spacing
+@dfn{leading}.@footnote{Rhyme with ``sledding''; mechanical typography
+used lead metal (Latin @emph{plumbum}).}
+
+@menu
+* Changing the Type Size::
+* Changing the Vertical Spacing::
+* Using Fractional Type Sizes::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Changing the Type Size, Changing the Vertical Spacing, Manipulating Type Size and Vertical Spacing, Manipulating Type Size and Vertical Spacing
+@subsection Changing the Type Size
+
+@DefreqList {ps, [@Var{size}]}
+@DefreqItem {ps, @t{+}@Var{size}}
+@DefreqItem {ps, @t{-}@Var{size}}
+@DefescItemx {\\s, , size, }
+@DefregListEndx {.s}
+@cindex changing type sizes (@code{ps}, @code{\s})
+@cindex type sizes, changing (@code{ps}, @code{\s})
+@cindex point sizes, changing (@code{ps}, @code{\s})
+Use the @code{ps} request or the @code{\s} escape sequence to change
+(increase, decrease) the type size (in scaled points). Specify
+@var{size} as either an absolute type size, or as a relative change from
+the current size. @code{ps} with no argument restores the previous
+size. The @code{ps} request's default scaling unit is @samp{z}. The
+requested size is rounded to the nearest valid size (with ties rounding
+down) within the limits supported by the device. If the requested size
+is non-positive, it is treated as 1@dmn{u}.
+
+@cindex CSTR@tie{}#54 errata
+@cindex CSTR@tie{}#54 erratum, @code{ps} request
+@cindex CSTR@tie{}#54 erratum, @code{\s} escape sequence
+Type size alteration is incorrectly documented in the @acronym{AT&T}
+@code{troff} manual, which claims ``if [the requested size] is invalid,
+the next larger valid size will result, with a maximum of
+36''.@footnote{The claim appears to have been true of Ossanna
+@code{troff} for the C/A/T device; Kernighan made device-independent
+@code{troff} more flexible.}
+
+@cindex type size registers (@code{.s}, @code{.ps})
+@cindex point size registers (@code{.s}, @code{.ps})
+The read-only string-valued register @code{.s} interpolates the type
+size in points as a decimal fraction; it is associated with the
+environment (@pxref{Environments}). To obtain the type size in scaled
+points, interpolate the @code{.ps} register instead (@pxref{Using
+Fractional Type Sizes}).
+
+The @code{\s} escape sequence supports a variety of syntax forms.
+
+@table @code
+@item \s@var{n}
+Set the type size to @var{n}@tie{}points. @var{n}@tie{}must be a single
+digit. If @var{n}@tie{}is 0, restore the previous size.
+
+@item \s+@var{n}
+@itemx \s-@var{n}
+Increase or decrease the type size by @var{n}@tie{}points.
+@var{n}@tie{}must be exactly one digit.
+
+@item \s(@var{nn}
+Set the type size to @var{nn}@tie{}points. @var{nn} must be exactly two
+digits.
+
+@item \s+(@var{nn}
+@itemx \s-(@var{nn}
+@itemx \s(+@var{nn}
+@itemx \s(-@var{nn}
+Alter the type size in points by the two-digit value @var{nn}.
+@end table
+
+@xref{Using Fractional Type Sizes}, for further syntactical forms of the
+@code{\s} escape sequence that additionally accept decimal fractions.
+
+@Example
+snap, snap,
+.ps +2
+grin, grin,
+.ps +2
+wink, wink, \s+2nudge, nudge,\s+8 say no more!
+.ps 10
+@endExample
+@endDefreq
+
+The @code{\s} escape sequence affects the environment immediately and
+doesn't produce an input token. Consequently, it can be used in
+requests like @code{mc}, which expects a single character as an
+argument, to change the type size on the fly.
+
+@Example
+.mc \s[20]x\s[0]
+@endExample
+
+@Defreq {sizes, s1 s2 @dots{} sn [@t{0}]}
+The @file{DESC} file specifies which type sizes are allowed by the
+output device; see @ref{DESC File Format}. Use the @code{sizes} request
+to change this set of permissible sizes. Arguments are in scaled
+points; see @ref{Using Fractional Type Sizes}. Each can be a single
+type size (such as @samp{12000}), or a range of sizes (such as
+@samp{4000-72000}). You can optionally end the list with a @samp{0}.
+@endDefreq
+
+@need 1000
+@node Changing the Vertical Spacing, Using Fractional Type Sizes, Changing the Type Size, Manipulating Type Size and Vertical Spacing
+@subsection Changing the Vertical Spacing
+
+@DefreqList {vs, [@Var{space}]}
+@DefreqItem {vs, @t{+}@Var{space}}
+@DefreqItem {vs, @t{-}@Var{space}}
+@DefregListEndx {.v}
+@cindex changing vertical line spacing (@code{vs})
+@cindex vertical line spacing, changing (@code{vs})
+@cindex vertical line spacing register (@code{.v})
+Set the vertical spacing to, or alter it by, @var{space}. The default
+scaling unit is @samp{p}. If @code{vs} is called without an argument,
+the vertical spacing is reset to the previous value before the last call
+to @code{vs}.
+@cindex @code{.V} register, and @code{vs}
+GNU @code{troff} emits a warning in category @samp{range} if @var{space}
+is negative; the vertical spacing is then set to the smallest possible
+positive value, the vertical motion quantum (as found in the @code{.V}
+register).
+
+@w{@samp{.vs 0}} isn't saved in a diversion since it doesn't result in
+a vertical motion. You must explicitly issue this request before
+interpolating the diversion.
+
+The read-only register @code{.v} contains the vertical spacing; it is
+associated with the environment (@pxref{Environments}).
+@endDefreq
+
+@cindex vertical line spacing, effective value
+@noindent
+When a break occurs, GNU @code{troff} performs the following procedure.
+
+@itemize @bullet
+@item
+@cindex extra pre-vertical line space (@code{\x})
+@cindex line space, extra pre-vertical (@code{\x})
+Move the drawing position vertically by the @dfn{extra pre-vertical line
+space}, the minimum of all negative @code{\x} escape sequence arguments
+in the pending output line.
+
+@item
+Move the drawing position vertically by the vertical line spacing.
+
+@item
+Write out the pending output line.
+
+@item
+@cindex extra post-vertical line space (@code{\x})
+@cindex line space, extra post-vertical (@code{\x})
+Move the drawing position vertically by the @dfn{extra post-vertical line
+space}, the maximum of all positive @code{\x} escape sequence arguments
+in the line that has just been output.
+
+@item
+@cindex post-vertical line spacing
+@cindex line spacing, post-vertical (@code{pvs})
+Move the drawing position vertically by the @dfn{post-vertical line
+spacing} (see below).
+@end itemize
+
+@cindex double-spacing (@code{vs}, @code{pvs})
+Prefer @code{vs} or @code{pvs} over @code{ls} to produce double-spaced
+documents. @code{vs} and @code{pvs} have finer granularity than
+@code{ls}; moreover, some preprocessors assume single spacing.
+@xref{Manipulating Spacing}, regarding the @code{\x} escape sequence and
+the @code{ls} request.
+
+@DefreqList {pvs, [@Var{space}]}
+@DefreqItem {pvs, @t{+}@Var{space}}
+@DefreqItem {pvs, @t{-}@Var{space}}
+@DefregListEndx {.pvs}
+@cindex @code{ls} request, alternative to (@code{pvs})
+@cindex post-vertical line spacing, changing (@code{pvs})
+@cindex post-vertical line spacing register (@code{.pvs})
+Set the post-vertical spacing to, or alter it by, @var{space}. The
+default scaling unit is @samp{p}. If @code{pvs} is called without an
+argument, the post-vertical spacing is reset to the previous value
+before the last call to @code{pvs}. GNU @code{troff} emits a warning in
+category @samp{range} if @var{space} is negative; the post-vertical
+spacing is then set to zero.
+
+The read-only register @code{.pvs} contains the post-vertical spacing;
+it is associated with the environment (@pxref{Environments}).
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@c BEGIN Keep (roughly) parallel with subsection "Fractional type sizes
+@c and new scaling units" of groff_diff(7).
+@node Using Fractional Type Sizes, , Changing the Type Size, Manipulating Type Size and Vertical Spacing
+@subsection Using Fractional Type Sizes
+@cindex fractional type sizes
+@cindex fractional point sizes
+@cindex type sizes, fractional
+@cindex point sizes, fractional
+@cindex sizes, fractional type
+
+AT&T @code{troff} interpreted all type size measurements in points.
+Combined with integer arithmetic, this design choice made it impossible
+to support, for instance, ten and a half-point type. In GNU
+@code{troff}, an output device can select a scaling factor that
+subdivides a point into ``scaled points''. A type size expressed in
+scaled points can thus represent a non-integral type size.
+
+@cindex @code{s} scaling unit
+@cindex unit, scaling, @code{s}
+@cindex scaling unit @code{s}
+@cindex @code{z} scaling unit
+@cindex unit, scaling, @code{z}
+@cindex scaling unit @code{z}
+@cindex @code{ps} request, with fractional type sizes
+@cindex @code{cs} request, with fractional type sizes
+@cindex @code{tkf} request, with fractional type sizes
+@cindex @code{\H}, with fractional type sizes
+@cindex @code{\s}, with fractional type sizes
+A @dfn{scaled point} is equal to @math{1/@var{sizescale}} points, where
+@var{sizescale} is specified in the device description file @file{DESC},
+and defaults to@tie{}1.@footnote{@xref{Device and Font Description
+Files}.} Requests and escape sequences in GNU @code{troff} interpret
+arguments that represent a type size in scaled points, which the
+formatter multiplies by @var{sizescale} and converts to an integer.
+Arguments treated in this way comprise those to the escape sequences
+@code{\H} and @code{\s}, to the request @code{ps}, the third argument to
+the @code{cs} request, and the second and fourth arguments to the
+@code{tkf} request. Scaled points may be specified explicitly with the
+@code{z} scaling unit.
+
+For example, if @var{sizescale} is@tie{}1000, then a scaled point is one
+thousandth of a point. The request @samp{.ps 10.5} is synonymous with
+@samp{.ps 10.5z} and sets the type size to 10,500@tie{}scaled points, or
+10.5@tie{}points. Consequently, in GNU @code{troff}, the register
+@code{.s} can interpolate a non-integral type size.
+
+@Defreg {.ps}
+This read-only register interpolates the type size in scaled points; it
+is associated with the environment (@pxref{Environments}).
+@endDefreg
+
+It makes no sense to use the @samp{z} scaling unit in a numeric
+expression whose default scaling unit is neither @samp{u} nor @samp{z},
+so GNU @code{troff} disallows this. Similarly, it is nonsensical to use
+a scaling unit other than @samp{z} or @samp{u} in a numeric expression
+whose default scaling unit is @samp{z}, and so GNU @code{troff}
+disallows this as well.
+
+Another GNU @code{troff} scaling unit, @samp{s}, multiplies by the
+number of basic units in a scaled point. Thus, @samp{\n[.ps]s} is equal
+to @samp{1m} by definition. Do not confuse the @samp{s} and @samp{z}
+scaling units.
+@c END Keep (roughly) parallel with subsection "Fractional type sizes
+@c and new scaling units" of groff_diff(7).
+
+@DefregList {.psr}
+@DefregListEndx {.sr}
+@cindex last-requested type size registers (@code{.psr}, @code{.sr})
+@cindex type size registers, last-requested (@code{.psr}, @code{.sr})
+@cindex last-requested point size registers (@code{.psr}, @code{.sr})
+@cindex point size registers, last-requested (@code{.psr}, @code{.sr})
+@cindex @code{.ps} register, in comparison with @code{.psr}
+@cindex @code{.s} register, in comparison with @code{.sr}
+Output devices may be limited in the type sizes they can employ. The
+@code{.s} and @code{.ps} registers represent the type size selected by
+the output driver as it understands a device's capability. The last
+@emph{requested} type size is interpolated in scaled points by the
+read-only register @code{.psr} and in points as a decimal fraction by
+the read-only string-valued register @code{.sr}. Both are associated
+with the environment (@pxref{Environments}).
+
+For example, if a type size of 10.95 points is requested, and the
+nearest size permitted by a @code{sizes} request (or by the @code{sizes}
+or @code{sizescale} directives in the device's @file{DESC} file) is 11
+points, the output driver uses the latter value.
+@endDefreg
+
+The @code{\s} escape sequence offers the following syntax forms that
+work with fractional type sizes and accept scaling units. You may of
+course give them integral arguments. The delimited forms need not use
+the neutral apostrophe; see @ref{Delimiters}.
+
+@table @code
+@item \s[@var{n}]
+@itemx \s'@var{n}'
+Set the type size to @var{n}@tie{}scaled points; @var{n}@tie{}is a
+numeric expression with a default scaling unit of @samp{z}.
+
+@item \s[+@var{n}]
+@itemx \s[-@var{n}]
+@itemx \s+[@var{n}]
+@itemx \s-[@var{n}]
+@itemx \s'+@var{n}'
+@itemx \s'-@var{n}'
+@itemx \s+'@var{n}'
+@itemx \s-'@var{n}'
+Increase or decrease the type size by @var{n}@tie{}scaled points;
+@var{n}@tie{}is a numeric expression (which may start with a minus sign)
+with a default scaling unit of @samp{z}.
+@end table
+
+
+@c =====================================================================
+
+@c BEGIN Keep (roughly) parallel with section "Colors" of groff(7).
+@node Colors, Strings, Manipulating Type Size and Vertical Spacing, GNU troff Reference
+@section Colors
+@cindex colors
+
+@cindex stroke color
+@cindex color, stroke
+@cindex fill color
+@cindex color, fill
+GNU @code{troff} supports color output with a variety of color spaces
+and up to 16 bits per channel. Some devices, particularly terminals,
+may be more limited. When color support is enabled, two colors are
+current at any given time: the @dfn{stroke color}, with which glyphs,
+rules (lines), and geometric objects like circles and polygons are
+drawn, and the @dfn{fill color}, which can be used to paint the interior
+of a closed geometric figure.
+
+@DefreqList {color, [@Var{n}]}
+@DefregListEndx {.color}
+If @var{n} is missing or non-zero, enable the output of color-related
+device-independent output commands (this is the default); otherwise,
+disable them. This request sets a global flag; it does not produce an
+input token (@pxref{Gtroff Internals}).
+
+The read-only register @code{.color} is@tie{}1 if colors are enabled,
+0@tie{}otherwise.
+
+Color can also be disabled with the @option{-c} command-line option.
+@endDefreq
+
+@Defreq {defcolor, ident scheme color-component @dots{}}
+Define a color named @var{ident}. @var{scheme} selects a color space
+and determines the quantity of required @var{color-component}s; it must
+be one of @samp{rgb} (three components), @samp{cmy} (three), @samp{cmyk}
+(four), or @samp{gray} (one). @samp{grey} is accepted as a synonym of
+@samp{gray}. The color components can be encoded as a single
+hexadecimal value starting with @samp{#} or @samp{##}. The former
+indicates that each component is in the range 0--255 (0--FF), the latter
+the range 0--65,535 (0--FFFF).
+
+@Example
+.defcolor half gray #7f
+.defcolor pink rgb #FFC0CB
+.defcolor magenta rgb ##ffff0000ffff
+@endExample
+
+@cindex @code{f} scaling unit
+@cindex unit, scaling, @code{f}
+@cindex scaling unit @code{f}
+Alternatively, each color component can be specified as a decimal
+fraction in the range 0--1, interpreted using a default scaling
+unit of@tie{}@code{f}, which multiplies its value by 65,536 (but
+clamps it at 65,535).
+
+@Example
+.defcolor gray50 rgb 0.5 0.5 0.5
+.defcolor darkgreen rgb 0.1f 0.5f 0.2f
+@endExample
+@endDefreq
+
+@cindex default color
+@cindex color, default
+Each output device has a color named @samp{default}, which cannot be
+redefined. A device's default stroke and fill colors are not
+necessarily the same. For the @code{dvi}, @code{html}, @code{pdf},
+@code{ps}, and @code{xhtml} output devices, GNU @code{troff}
+automatically loads a macro file defining many color names at startup.
+By the same mechanism, the devices supported by @code{grotty} recognize
+the eight standard ISO@tie{}6429/EMCA-48 color names.@footnote{also
+known vulgarly as ``ANSI colors''}
+
+@DefreqList {gcolor, [@Var{color}]}
+@DefescItemx {\\m, , c, }
+@DefescItem {\\m, (, co, }
+@DefescItem {\\m, [, color, ]}
+@DefregListEndx {.m}
+Set the stroke color to @var{color}.
+
+@Example
+.gcolor red
+The next words
+.gcolor
+\m[red]are in red\m[]
+and these words are in the previous color.
+@endExample
+
+The escape sequence @code{\m[]} restores the previous stroke color, as
+does a @code{gcolor} request without an argument.
+
+@cindex stroke color name register (@code{.m})
+@cindex name, stroke color, register (@code{.m})
+@cindex color name, stroke, register (@code{.m})
+The name of the current stroke color is available in the read-only
+string-valued register @samp{.m}; it is associated with the environment
+(@pxref{Environments}). It interpolates nothing when the stroke color
+is the default.
+
+@code{\m} doesn't produce an input token in GNU @code{troff}
+(@pxref{Gtroff Internals}). It therefore can be used in requests like
+@code{mc} (which expects a single character as an argument) to change
+the color on the fly:
+
+@Example
+.mc \m[red]x\m[]
+@endExample
+@endDefesc
+
+@DefreqList {fcolor, [@Var{color}]}
+@DefescItemx {\\M, , c, }
+@DefescItem {\\M, (, co, }
+@DefescItem {\\M, [, color, ]}
+@DefregListEndx {.M}
+Set the fill color for objects drawn with @code{\D'@dots{}'} escape
+sequences. The escape sequence @code{\M[]} restores the previous fill
+color, as does an @code{fcolor} request without an argument.
+
+@cindex background color name register (@code{.M})
+@cindex name, background color, register (@code{.M})
+@cindex color name, background, register (@code{.M})
+@cindex fill color name register (@code{.M})
+@cindex name, fill color, register (@code{.M})
+@cindex color name, fill, register (@code{.M})
+The name of the current fill color is available in the read-only
+string-valued register @samp{.M}; it is associated with the environment
+(@pxref{Environments}). It interpolates nothing when the fill color
+is the default. @code{\M} doesn't produce an input token in GNU
+@code{troff}.
+
+Create an ellipse with a red interior as follows.
+
+@Example
+\M[red]\h'0.5i'\D'E 2i 1i'\M[]
+@endExample
+@endDefesc
+@c END Keep (roughly) parallel with section "Colors" of groff(7).
+
+
+@c =====================================================================
+
+@c BEGIN Keep (roughly) parallel with section "Strings" of groff(7).
+@node Strings, Conditionals and Loops, Colors, GNU troff Reference
+@section Strings
+@cindex strings
+
+GNU @code{troff} supports strings primarily for user convenience.
+Conventionally, if one would define a macro only to interpolate a small
+amount of text, without invoking requests or calling any other macros,
+one defines a string instead. Only one string is predefined by the
+language.
+
+@Defstr {.T}
+@stindex .T
+@cindex output device name string (@code{.T})
+Contains the name of the output device (for example, @samp{utf8} or
+@samp{pdf}).
+@endDefmpstr
+
+The @code{ds} request creates a string with a specified name and
+contents and the @code{\*} escape sequence dereferences its name,
+interpolating its contents. If the string named by the @code{\*} escape
+sequence does not exist, it is defined as empty, nothing is
+interpolated, and a warning in category @samp{mac} is emitted.
+@xref{Warnings}, for information about the enablement and suppression of
+warnings.
+
+@DefreqList {ds, name [@Var{contents}]}
+@DefreqItemx {ds1, name [@Var{contents}]}
+@DefescItemx {\\*, , n, }
+@DefescItem {\\*, (, nm, }
+@c XXX: Can't mark the parameters with @Var because @Var gets called
+@c recursively if we do.
+@c @DefescListEnd {\\*, [, name [@Var{arg1} @Var{arg2} @dots{}], ]}
+@DefescListEnd {\\*, [, name @sansserif{[}arg1 arg2 @dots{}@sansserif{]}, ]}
+@cindex string interpolation (@code{\*})
+@cindex string expansion (@code{\*})
+@cindex interpolation of strings (@code{\*})
+@cindex expansion of strings (@code{\*})
+@cindex string arguments
+@cindex arguments, to strings
+Define a string called @var{name} with contents @var{contents}. If
+@var{name} already exists as an alias, the target of the alias is
+redefined; see @code{als} and @code{rm} below. If @code{ds} is called
+with only one argument, @var{name} is defined as an empty string.
+Otherwise, GNU @code{troff} stores @var{contents} in copy
+mode.@footnote{@xref{Copy Mode}.}
+
+The @code{\*} escape sequence interpolates a previously defined string
+variable @var{name} (one-character name@tie{}@var{n}, two-character name
+@var{nm}). The bracketed interpolation form accepts arguments that are
+handled as macro arguments are; recall @ref{Calling Macros}. In
+contrast to macro calls, however, if a closing bracket @samp{]} occurs
+in a string argument, that argument must be enclosed in double quotes.
+@code{\*} is interpreted even in copy mode. When defining strings,
+argument interpolations must be escaped if they are to reference
+parameters from the calling context; @xref{Parameters}.
+
+@Example
+.ds cite (\\$1, \\$2)
+Gray codes are explored in \*[cite Morgan 1998].
+ @result{} Gray codes are explored in (Morgan, 1998).
+@endExample
+
+@c TODO: Consider examples of recursive string calls, particularly where
+@c one interpolation is constructed from the argument of an enclosing
+@c macro, to illustrate ".ds a \$1 \\$1".
+@c
+@c @Example
+@c .ds a \\$1 wildebeest
+@c .ds b big, \*[a hairy]
+@c I see a \*[b].
+@c @result{} I see a big, hairy wildebeest.
+@c @endExample
+
+@cindex trailing spaces in string definitions and appendments
+@cindex comments, with @code{ds}
+@cindex @code{ds} request, and comments
+@strong{Caution:@:} Unlike other requests, the second argument to the
+@code{ds} request consumes the remainder of the input line, including
+trailing spaces. This means that comments on a line with such a request
+can introduce unwanted space into a string when they are set off from
+the material they annotate, as is conventional.
+
+@Example
+.ds H2O H\v'+.3m'\s'-2'2\v'-.3m'\s0O \" water
+@endExample
+
+@noindent
+Instead, place the comment on another line or put the comment escape
+sequence immediately adjacent to the last character of the string.
+
+@Example
+.ds H2O H\v'+.3m'\s'-2'2\v'-.3m'\s0O\" water
+@endExample
+
+Ending string definitions (and appendments) with a comment, even an
+empty one, prevents unwanted space from creeping into them during source
+document maintenance.
+
+@Example
+.ds author Alice Pleasance Liddell\"
+.ds empty \" might be appended to later with .as
+@endExample
+
+@cindex trailing double quotes in strings
+@cindex double quotes, trailing, in strings
+@cindex @code{ds} request, and double quotes
+@cindex leading spaces with @code{ds}
+@cindex spaces with @code{ds}
+@cindex @code{ds} request, and leading spaces
+An initial neutral double quote @code{"} in @var{contents} is stripped
+to allow embedding of leading spaces. Any other @code{"} is interpreted
+literally, but it is wise to use the special character escape sequence
+@code{\[dq]} instead if the string might be interpolated as part of a
+macro argument; see @ref{Calling Macros}.
+
+@c Examples should be more accessible than Unix nerd stuff like this,
+@c but in general document authors shouldn't want to use "straight"
+@c double quotes for ordinary prose anyway. Also, 56 chars is as fat
+@c as these examples can get and not overrun the right margin in PDF.
+@Example
+.ds salutation " Yours in a white wine sauce,\"
+.ds c-var-defn " char mydate[]=\[dq]2020-07-29\[dq];\"
+@endExample
+
+@cindex multi-line strings
+@cindex strings, multi-line
+@cindex newline character, in strings, escaping
+@cindex escaping newline characters, in strings
+Strings are not limited to a single input line of text.
+@code{\@key{RET}} works just as it does elsewhere. The resulting string
+is stored @emph{without} the newlines. Care is therefore required when
+interpolating strings while filling is disabled.
+
+@Example
+.ds foo This string contains \
+text on multiple lines \
+of input.
+@endExample
+
+It is not possible to embed a newline in a string that will be
+interpreted as such when the string is interpolated. To achieve that
+effect, use @code{\*} to interpolate a macro instead; see @ref{Punning
+Names}.
+
+Because strings are similar to macros, they too can be defined so as to
+suppress AT&T @code{troff} compatibility mode when used; see
+@ref{Writing Macros} and @ref{Compatibility Mode}. The @code{ds1}
+request defines a string such that compatibility mode is off when the
+string is later interpolated. To be more precise, a @dfn{compatibility
+save} input token is inserted at the beginning of the string, and a
+@dfn{compatibility restore} input token at the end.
+
+@Example
+.nr xxx 12345
+.ds aa The value of xxx is \\n[xxx].
+.ds1 bb The value of xxx is \\n[xxx].
+.
+.cp 1
+.
+\*(aa
+ @error{} warning: register '[' not defined
+ @result{} The value of xxx is 0xxx].
+\*(bb
+ @result{} The value of xxx is 12345.
+@endExample
+@endDefreq
+
+@DefreqList {as, name [@Var{contents}]}
+@DefreqListEndx {as1, name [@Var{contents}]}
+@cindex appending to a string (@code{as})
+@cindex string, appending (@code{as})
+The @code{as} request is similar to @code{ds} but appends @var{contents}
+to the string stored as @var{name} instead of redefining it. If
+@var{name} doesn't exist yet, it is created. If @code{as} is called
+with only one argument, no operation is performed (beyond dereferencing
+the string).
+
+@Example
+.as salutation " with shallots, onions and garlic,\"
+@endExample
+
+The @code{as1} request is similar to @code{as}, but compatibility mode
+is switched off when the appended portion of the string is later
+interpolated. To be more precise, a @dfn{compatibility save} input
+token is inserted at the beginning of the appended string, and a
+@dfn{compatibility restore} input token at the end.
+@endDefreq
+
+Several requests exist to perform rudimentary string operations.
+Strings can be queried (@code{length}) and modified (@code{chop},
+@code{substring}, @code{stringup}, @code{stringdown}), and their names
+can be manipulated through renaming, removal, and aliasing (@code{rn},
+@code{rm}, @code{als}).
+
+@Defreq {length, reg anything}
+@cindex length of a string (@code{length})
+@cindex string, length of (@code{length})
+@cindex @code{length} request, and copy mode
+@cindex copy mode, and @code{length} request
+@cindex mode, copy, and @code{length} request
+Compute the number of characters of @var{anything} and store the count
+in the register @var{reg}. If @var{reg} doesn't exist, it is created.
+@var{anything} is read in copy mode.
+
+@Example
+.ds xxx abcd\h'3i'efgh
+.length yyy \*[xxx]
+\n[yyy]
+ @result{} 14
+@endExample
+@endDefreq
+
+@Defreq {chop, object}
+Remove the last character from the macro, string, or diversion named
+@var{object}. This is useful for removing the newline from the end of a
+diversion that is to be interpolated as a string. This request can be
+used repeatedly on the same @var{object}; see @ref{Gtroff Internals},
+for details on nodes inserted additionally by GNU @code{troff}.
+@endDefreq
+
+@Defreq {substring, str start [@Var{end}]}
+@cindex substring (@code{substring})
+Replace the string named @var{str} with its substring bounded by the
+indices @var{start} and @var{end}, inclusively. The first character in
+the string has index@tie{}0. If @var{end} is omitted, it is implicitly
+set to the largest valid value (the string length minus one). Negative
+indices count backward from the end of the string:@: the last character
+has index@tie{}@minus{}1, the character before the last has
+index@tie{}@minus{}2, and so on.
+
+@Example
+.ds xxx abcdefgh
+.substring xxx 1 -4
+\*[xxx]
+ @result{} bcde
+.substring xxx 2
+\*[xxx]
+ @result{} de
+@endExample
+@endDefreq
+
+@DefreqList {stringdown, str}
+@DefreqListEndx {stringup, str}
+@cindex case-transforming a string (@code{stringdown}, @code{stringup})
+@cindex uppercasing a string (@code{stringup})
+@cindex lowercasing a string (@code{stringdown})
+@cindex up-casing a string (@code{stringup})
+@cindex down-casing a string (@code{stringdown})
+Alter the string named @var{str} by replacing each of its bytes with its
+lowercase (@code{stringdown}) or uppercase (@code{stringup}) version (if
+one exists). Special characters in the string will often transform in
+the expected way due to the regular naming convention for accented
+characters. When they do not, use substrings and/or catenation.
+
+@Example
+.ds resume R\['e]sum\['e]
+\*[resume]
+.stringdown resume
+\*[resume]
+.stringup resume
+\*[resume]
+ @result{} Résumé résumé RÉSUMÉ
+@endExample
+@endDefreq
+
+(In practice, we would end the @code{ds} request with a comment escape
+@code{\"} to prevent space from creeping into the definition during
+source document maintenance.)
+
+@Defreq {rn, old new}
+@cindex renaming request (@code{rn})
+@cindex request, renaming (@code{rn})
+@cindex renaming macro (@code{rn})
+@cindex macro, renaming (@code{rn})
+@cindex renaming string (@code{rn})
+@cindex string, renaming (@code{rn})
+@cindex renaming diversion (@code{rn})
+@cindex diversion, renaming (@code{rn})
+Rename the request, macro, diversion, or string @var{old} to @var{new}.
+@endDefreq
+
+@Defreq {rm, name}
+@cindex removing request (@code{rm})
+@cindex request, removing (@code{rm})
+@cindex removing macro (@code{rm})
+@cindex macro, removing (@code{rm})
+@cindex removing string (@code{rm})
+@cindex string, removing (@code{rm})
+@cindex removing diversion (@code{rm})
+@cindex diversion, removing (@code{rm})
+Remove the request, macro, diversion, or string @var{name}. GNU
+@code{troff} treats subsequent invocations as if the name had never
+been defined.
+@endDefreq
+
+@anchor{als}
+@Defreq {als, new old}
+@cindex alias, string, creating (@code{als})
+@cindex alias, macro, creating (@code{als})
+@cindex alias, diversion, creating (@code{als})
+@cindex creating alias, for string (@code{als})
+@cindex creating alias, for macro (@code{als})
+@cindex creating alias, for diversion (@code{als})
+@cindex string, creating alias for (@code{als})
+@cindex macro, creating alias for (@code{als})
+@cindex diversion, creating alias for (@code{als})
+Create an alias @var{new} for the existing request, string, macro, or
+diversion object named @var{old}, causing the names to refer to the same
+stored object. If @var{old} is undefined, a warning in category
+@samp{mac} is produced, and the request is ignored. @xref{Warnings},
+for information about the enablement and suppression of warnings.
+
+To understand how the @code{als} request works, consider two different
+storage pools:@: one for objects (macros, strings, etc.), and another
+for names. As soon as an object is defined, GNU @code{troff} adds it to
+the object pool, adds its name to the name pool, and creates a link
+between them. When @code{als} creates an alias, it adds a new name to
+the name pool that gets linked to the same object as the old name.
+
+Now consider this example.
+
+@Example
+.de foo
+..
+.
+.als bar foo
+.
+.de bar
+. foo
+..
+.
+.bar
+ @error{} input stack limit exceeded (probable infinite
+ @error{} loop)
+@endExample
+
+@noindent
+In the above, @code{bar} remains an @emph{alias}---another name
+for---the object referred to by @code{foo}, which the second @code{de}
+request replaces. Alternatively, imagine that the @code{de} request
+@emph{dereferences} its argument before replacing it. Either way, the
+result of calling @code{bar} is a recursive loop that finally leads to
+an error. @xref{Writing Macros}.
+
+@cindex alias, string, removing (@code{rm})
+@cindex alias, macro, removing (@code{rm})
+@cindex alias, diversion, removing (@code{rm})
+@cindex removing alias, for string (@code{rm})
+@cindex removing alias, for macro (@code{rm})
+@cindex removing alias, for diversion (@code{rm})
+@cindex string, removing alias for (@code{rm})
+@cindex macro, removing alias for (@code{rm})
+@cindex diversion, removing alias for (@code{rm})
+To remove an alias, call @code{rm} on its name. The object itself is
+not destroyed until it has no more names.
+
+When a request, macro, string, or diversion is aliased, redefinitions
+and appendments ``write through'' alias names. To replace an alias with
+a separately defined object, you must use the @code{rm} request on its
+name first.
+@endDefreq
+@c END Keep (roughly) parallel with section "Strings" of groff(7).
+
+
+@c =====================================================================
+
+@node Conditionals and Loops, Writing Macros, Strings, GNU troff Reference
+@section Conditionals and Loops
+@cindex conditionals and loops
+@cindex loops and conditionals
+
+@code{groff} has @code{if} and @code{while} control structures like
+other languages. However, the syntax for grouping multiple input lines
+in the branches or bodies of these structures is unusual.
+
+@menu
+* Operators in Conditionals::
+* if-then::
+* if-else::
+* Conditional Blocks::
+* while::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@c BEGIN Keep (roughly) parallel with subsection "Conditional
+@c expressions" of groff(7).
+@node Operators in Conditionals, if-then, Conditionals and Loops, Conditionals and Loops
+@subsection Operators in Conditionals
+
+@cindex @code{if} request, operators to use with
+@cindex @code{ie} request, operators to use with
+@cindex @code{while} request, operators to use with
+@cindex conditional expressions
+@cindex expressions, conditional
+In @code{if}, @code{ie}, and @code{while} requests, in addition to the
+numeric expressions described in @ref{Numeric Expressions}, several
+Boolean operators are available; the members of this expanded class are
+termed @dfn{conditional expressions}.
+
+@table @code
+@item c @var{glyph}
+True if @var{glyph} is available, where @var{glyph} is an ordinary
+character, a special character @samp{\(@var{xx}} or @samp{\[@var{xxx}]},
+@samp{\N'@var{xxx}'}, or has been defined by any of the @code{char},
+@code{fchar}, @code{fschar}, or @code{schar} requests.
+
+@item d @var{name}
+True if a string, macro, diversion, or request called @var{name} exists.
+
+@item e
+True if the current page is even-numbered.
+
+@item F @var{font}
+True if @var{font} exists. @var{font} is handled as if it were opened
+with the @code{ft} request (that is, font translation and styles are
+applied), without actually mounting it.
+
+@item m @var{color}
+True if @var{color} is defined.
+
+@item n
+@cindex conditional output for terminal (TTY)
+@cindex TTY, conditional output for
+@cindex terminal, conditional output for
+True if the document is being processed in @code{nroff} mode.
+@xref{@code{troff} and @code{nroff} Modes}.
+
+@item o
+True if the current page is odd-numbered.
+
+@item r @var{register}
+True if @var{register} exists.
+
+@item S @var{style}
+True if @var{style} is available for the current font family. Font
+translation is applied.
+
+@item t
+True if the document is being processed in @code{troff} mode.
+@xref{@code{troff} and @code{nroff} Modes}.
+
+@pindex vtroff
+@item v
+Always false. This condition is recognized only for compatibility with
+certain other @code{troff} implementations.@footnote{This refers to
+@code{vtroff}, a translator that would convert the C/A/T output from
+early-vintage @acronym{AT&T} @code{troff} to a form suitable for
+Versatec and Benson-Varian plotters.}
+@end table
+
+If the first argument to an @code{if}, @code{ie}, or @code{while}
+request begins with a non-alphanumeric character apart from @code{!}
+(see below); it performs an @slanted{output comparison test}.
+@footnote{Strictly, letters not otherwise recognized @emph{are} treated
+as output comparison delimiters. For portability, it is wise to avoid
+using letters not in the list above; for example, Plan@tie{}9
+@code{troff} uses @samp{h} to test a mode it calls @code{htmlroff}, and
+GNU @code{troff} may provide additional operators in the future.}
+
+@cindex output comparison operator
+@table @code
+@item @code{'}@var{xxx}@code{'}@var{yyy}@code{'}
+True if formatting the comparands @var{xxx} and @var{yyy} produces the
+same output commands. The delimiter need not be a neutral apostrophe:
+the output comparison operator accepts the same delimiters as most
+escape sequences; see @ref{Delimiters}. This @dfn{output comparison
+operator} formats @var{xxx} and @var{yyy} in separate environments;
+after the comparison, the resulting data are discarded.
+
+@Example
+.ie "|"\fR|\fP" true
+.el false
+ @result{} true
+@endExample
+
+@noindent
+The resulting glyph properties, including font family, style, size, and
+slant, must match, but not necessarily the requests and/or escape
+sequences used to obtain them. In the previous example, @samp{|} and
+@samp{\fR|\fP} result in @samp{|} glyphs in the same typefaces at the
+same positions, so the comparands are equal. If @samp{.ft@tie{}I} had
+been added before the @samp{.ie}, they would differ: the first @samp{|}
+would produce an italic @samp{|}, not a roman one. Motions must match
+in orientation and magnitude to within the applicable horizontal and
+vertical motion quanta of the device, after rounding. @samp{.if
+"\u\d"\v'0'"} is false even though both comparands result in zero net
+motion, because motions are not interpreted or optimized but sent as-is
+to the output.@footnote{Because formatting of the comparands takes place
+in a dummy environment, vertical motions within them cannot spring
+traps.} On the other hand, @samp{.if "\d"\v'0.5m'"} is true, because
+@code{\d} is defined as a downward motion of one-half em.@footnote{All
+of this is to say that the lists of output nodes created by formatting
+@var{xxx} and @var{yyy} must be identical. @xref{Gtroff Internals}.}
+
+@cindex string comparison
+@cindex comparison of strings
+Surround the comparands with @code{\?} to avoid formatting them; this
+causes them to be compared character by character, as with string
+comparisons in other programming languages.
+
+@Example
+.ie "\?|\?"\?\fR|\fP\?" true
+.el false
+ @result{} false
+@endExample
+
+@cindex @code{\?}, and copy mode
+@cindex copy mode, and @code{\?}
+@cindex mode, copy, and @code{\?}
+@noindent
+Since comparands protected with @code{\?} are read in copy mode
+(@pxref{Copy Mode}), they need not even be valid @code{groff} syntax.
+The escape character is still lexically recognized, however, and
+consumes the next character.
+
+@Example
+.ds a \[
+.ds b \[
+.if '\?\*a\?'\?\*b\?' a and b equivalent
+.if '\?\\?'\?\\?' backslashes equivalent
+ @result{} a and b equivalent
+@c slack lines for pagination control
+@c @error{} warning: missing closing delimiter in
+@c @error{} conditional expression (got newline)
+@endExample
+@end table
+
+The above operators can't be combined with most others, but a leading
+@samp{!}, not followed immediately by spaces or tabs, complements an
+expression.
+
+@Example
+.nr x 1
+.ie !r x register x is not defined
+.el register x is defined
+ @result{} register x is defined
+@endExample
+
+Spaces and tabs are optional immediately after the @samp{c}, @samp{d},
+@samp{F}, @samp{m}, @samp{r}, and @samp{S} operators, but right after
+@samp{!}, they end the predicate and the conditional evaluates
+true.@footnote{This bizarre behavior maintains compatibility with
+@acronym{AT&T} @code{troff}.}
+
+@Example
+.nr x 1
+.ie ! r x register x is not defined
+.el register x is defined
+ @result{} r x register x is not defined
+@endExample
+
+@noindent
+The unexpected @samp{r x} in the output is a clue that our conditional
+was not interpreted as we planned, but matters may not always be so
+obvious.
+@c END Keep (roughly) parallel with subsection "Conditional expressions"
+@c of groff(7).
+
+@c ---------------------------------------------------------------------
+
+@node if-then, if-else, Operators in Conditionals, Conditionals and Loops
+@subsection if-then
+@cindex if-then
+
+@Defreq {if, cond-expr anything}
+Evaluate the conditional expression @var{cond-expr}, and if it evaluates
+true (or to a positive value), interpret the remainder of the line
+@var{anything} as if it were an input line. Recall from @ref{Invoking
+Requests} that any quantity of spaces between arguments to requests
+serves only to separate them; leading spaces in @var{anything} are thus
+not seen. @var{anything} effectively @emph{cannot} be omitted; if
+@var{cond-expr} is true and @var{anything} is empty, the newline at the
+end of the control line is interpreted as a blank input line (and
+therefore a blank text line).
+
+@Example
+super\c
+tanker
+.nr force-word-break 1
+super\c
+.if ((\n[force-word-break] = 1) & \n[.int])
+tanker
+ @result{} supertanker super tanker
+@endExample
+@endDefreq
+
+@Defreq {nop, anything}
+Interpret @var{anything} as if it were an input line. This is similar
+to @samp{.if@tie{}1}. @code{nop} is not really ``no operation''; its
+argument @emph{is} processed---unconditionally. It can be used to cause
+text lines to share indentation with surrounding control lines.
+
+@Example
+.als real-MAC MAC
+.de wrapped-MAC
+. tm MAC: called with arguments \\$@@
+. nop \\*[real-MAC]\\
+..
+.als MAC wrapped-MAC
+\# Later...
+.als MAC real-MAC
+@endExample
+
+In the above, we've used aliasing, @code{nop}, and the interpolation of
+a macro as a string to interpose a wrapper around the macro @samp{MAC}
+(perhaps to debug it).
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node if-else, while, Operators in Conditionals, Conditionals and Loops
+@subsection if-else
+@cindex if-else
+
+@DefreqList {ie, cond-expr anything}
+@DefreqListEndx {el, anything}
+Use the @code{ie} and @code{el} requests to write an if-then-else. The
+first request is the ``if'' part and the latter is the ``else'' part.
+Unusually among programming languages, any number of non-conditional
+requests may be interposed between the @code{ie} branch and the
+@code{el} branch.
+
+@Example
+.nr a 0
+.ie \na a is non-zero.
+.nr a +1
+.el a was not positive but is now \na.
+ @result{} a was not positive but is now 1.
+@endExample
+
+Another way in which @code{el} is an ordinary request is that it does
+not lexically ``bind'' more tightly to its @code{ie} counterpart than it
+does to any other request. This fact can surprise C programmers.
+
+@Example
+.nr a 1
+.nr z 0
+.ie \nz \
+. ie \na a is true
+. el a is false
+.el z is false
+ @error{} warning: unbalanced 'el' request
+ @result{} a is false
+@endExample
+
+@c Turn the following into a proper @{x,}ref if the conditional blocks
+@c node is relocated elsewhere--but consider if it is wise to do so.
+To conveniently nest conditionals, keep reading.
+
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node Conditional Blocks, while, Operators in Conditionals, Conditionals and Loops
+@subsection Conditional Blocks
+@cindex conditional blocks
+@cindex blocks, conditional
+
+It is frequently desirable for a control structure to govern more than
+one request, macro call, text line, or a combination of the foregoing.
+The opening and closing brace escape sequences @code{\@{} and @code{\@}}
+define such groups. These @dfn{conditional blocks} can furthermore be
+nested.
+
+@DefescList {\@\{, , , }
+@DefescListEnd {\@\}, , , }
+@esindex \@{
+@esindex \@}
+@cindex beginning of conditional block (@code{\@{})
+@cindex end of conditional block (@code{\@}})
+@cindex conditional block, beginning (@code{\@{})
+@cindex conditional block, end (@code{\@}})
+@cindex block, conditional, beginning (@code{\@{})
+@cindex block, conditional, end (@code{\@}})
+@cindex brace escape sequences (@code{\@{}, @code{\@}})
+@cindex escape sequences, brace (@code{\@{}, @code{\@}})
+@cindex opening brace escape sequence (@code{\@}})
+@cindex closing brace escape sequence (@code{\@})}
+@cindex brace escape sequence, opening (@code{\@})}
+@cindex brace escape sequence, closing (@code{\@})}
+@code{\@{} begins a conditional block; it must appear (after optional
+spaces and tabs) immediately subsequent to the conditional expression of
+an @code{if}, @code{ie}, or @code{while}
+request,@footnote{@xref{while}.} or as the argument to an @code{el}
+request.
+
+@code{\@}} ends a condition block and should appear on a line with other
+occurrences of itself as necessary to match @code{\@{} sequences. It
+can be preceded by a control character, spaces, and tabs. Input after
+any quantity of @code{\@}} sequences on the same line is processed only
+if all of the preceding conditions to which they correspond are true.
+Furthermore, a @code{\@}} closing the body of a @code{while} request
+must be the last such escape sequence on an input line.
+
+Brace escape sequences outside of control structures have no meaning and
+produce no output.
+
+@strong{Caution:@:} Input lines using @code{\@{} often end with
+@code{\RET}, especially in macros that consist primarily of control
+lines. Forgetting to use @code{\RET} on an input line after @code{\@{}
+is a common source of error.
+@endDefesc
+
+@need 1000
+We might write the following in a page header macro. If we delete
+@code{\RET}, the header will carry an unwanted extra empty line (except
+on page@tie{}1).
+
+@Example
+.if (\\n[%] != 1) \@{\
+. ie ((\\n[%] % 2) = 0) .tl \\*[even-numbered-page-title]
+. el .tl \\*[odd-numbered-page-title]
+.\@}
+@endExample
+
+Let us take a closer look at how conditional blocks nest.
+
+@Example
+A
+.if 0 \@{ B
+C
+D
+\@}E
+F
+ @result{} A F
+@endExample
+
+@Example
+N
+.if 1 \@{ O
+. if 0 \@{ P
+Q
+R\@} S\@} T
+U
+ @result{} N O U
+@endExample
+
+The above behavior may challenge the intuition; it was implemented to
+retain compatibility with @acronym{AT&T} @code{troff}. For clarity, it
+is idiomatic to end input lines with @code{\@{} (followed by
+@code{\@key{RET}} if appropriate), and to precede @code{\@}} on an input
+line with nothing more than a control character, spaces, tabs, and other
+instances of itself.
+
+We can use @code{ie}, @code{el}, and conditional blocks to simulate the
+multi-way ``switch'' or ``case'' control structures of other languages.
+The following example is adapted from the @code{groff} @file{man}
+package. Indentation is used to clarify the logic.
+
+@Example
+.\" Simulate switch/case in roff.
+. ie '\\$2'1' .ds title General Commands\"
+.el \@{.ie '\\$2'2' .ds title System Calls\"
+.el \@{.ie '\\$2'3' .ds title Library Functions\"
+.el \@{.ie '\\$2'4' .ds title Kernel Interfaces\"
+.el \@{.ie '\\$2'5' .ds title File Formats\"
+.el \@{.ie '\\$2'6' .ds title Games\"
+.el \@{.ie '\\$2'7' .ds title Miscellaneous Information\"
+.el \@{.ie '\\$2'8' .ds title System Management\"
+.el \@{.ie '\\$2'9' .ds title Kernel Development\"
+.el .ds title \" empty
+.\@}\@}\@}\@}\@}\@}\@}\@}
+@endExample
+
+@c ---------------------------------------------------------------------
+
+@node while, , if-else, Conditionals and Loops
+@subsection while
+@cindex while
+
+@code{groff} provides a looping construct:@: the @code{while} request.
+Its syntax matches the @code{if} request.
+
+@cindex body, of a while request
+@Defreq {while, cond-expr anything}
+Evaluate the conditional expression @var{cond-expr}, and repeatedly
+execute @var{anything} unless and until @var{cond-expr} evaluates false.
+@var{anything}, which is often a conditional block, is referred to as
+the @code{while} request's @dfn{body}.
+
+@Example
+.nr a 0 1
+.while (\na < 9) \@{\
+\n+a,
+.\@}
+\n+a
+ @result{} 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
+@endExample
+
+@cindex @code{de} request, and @code{while}
+GNU @code{troff} treats the body of a @code{while} request similarly to
+that of a @code{de} request (albeit one not read in copy
+mode@footnote{@xref{Copy Mode}.}), but stores it under an internal name
+and deletes it when the loop finishes. The operation of a macro
+containing a @code{while} request can slow significantly if the
+@code{while} body is large. Each time the macro is executed, the
+@code{while} body is parsed and stored again.
+
+@Example
+.de xxx
+. nr num 10
+. while (\\n[num] > 0) \@{\
+. \" many lines of code
+. nr num -1
+. \@}
+..
+@endExample
+
+@cindex recursive macros
+@cindex macros, recursive
+@noindent
+An often better solution---and one that is more portable, since
+@acronym{AT&T} @code{troff} lacked the @code{while} request---is to
+instead write a recursive macro. It will be parsed only
+once.@footnote{unless you redefine it}
+
+@Example
+.de yyy
+. if (\\n[num] > 0) \@{\
+. \" many lines of code
+. nr num -1
+. yyy
+. \@}
+..
+.
+.de xxx
+. nr num 10
+. yyy
+..
+@endExample
+
+@noindent
+To prevent infinite loops, the default number of available recursion
+levels is 1,000 or somewhat less.@footnote{``somewhat less'' because
+things other than macro calls can be on the input stack} You can
+disable this protective measure, or raise the limit, by setting the
+@code{slimit} register. @xref{Debugging}.
+
+As noted above, if a @code{while} body begins with a conditional block,
+its closing brace must end an input line.
+
+@Example
+.if 1 \@{\
+. nr a 0 1
+. while (\n[a] < 10) \@{\
+. nop \n+[a]
+.\@}\@}
+ @error{} unbalanced brace escape sequences
+@endExample
+@endDefreq
+
+@Defreq {break, }
+@cindex @code{while} request, confusing with @code{br}
+@cindex @code{break} request, in a @code{while} loop
+@cindex @code{continue} request, in a @code{while} loop
+Exit a @code{while} loop. Do not confuse this request with a
+typographical break or the @code{br} request.
+@endDefreq
+
+@Defreq {continue, }
+Skip the remainder of a @code{while} loop's body, immediately starting
+the next iteration.
+@endDefreq
+
+
+@c =====================================================================
+
+@node Writing Macros, Page Motions, Conditionals and Loops, GNU troff Reference
+@section Writing Macros
+@cindex writing macros
+@cindex macros, writing
+
+A @dfn{macro} is a stored collection of text and control lines that can
+be interpolated multiple times. Use macros to define common operations.
+Macros are called in the same way that requests are invoked. While
+requests exist for the purpose of creating macros, simply calling an
+undefined macro, or interpolating it as a string, will cause it to be
+defined as empty. @xref{Identifiers}.
+
+@Defreq {de, name [@Var{end}]}
+Define a macro @var{name}, replacing the definition of any existing
+request, macro, string, or diversion called @var{name}. If
+@var{name} already exists as an alias, the target of the alias is
+redefined; recall @ref{Strings}. GNU @code{troff} enters copy
+mode,@footnote{@xref{Copy Mode}.} storing subsequent input lines as the
+macro definition. If the optional second argument is not specified, the
+definition ends with the control line @samp{..} (two dots).
+Alternatively, @var{end} identifies a macro whose call syntax at the
+start of a control line ends the definition of @var{name}; @var{end} is
+then called normally. A macro definition must end in the same
+conditional block (if any) in which it began (@pxref{Conditional
+Blocks}). Spaces or tabs are permitted after the control character in
+the line containing this ending token (either @samp{.} or
+@samp{@var{end}}), but a tab immediately after the token prevents its
+recognition as the end of a macro definition. The macro @var{end} can
+be called with arguments.@footnote{While it is possible to define and
+call a macro @samp{.}, you can't use it as an end macro: during a macro
+definition, @samp{..} is never handled as calling @samp{.}, even if
+@samp{.de @var{name} .} explicitly precedes it.}
+@c
+@c @Example
+@c .de .
+@c (dot macro)
+@c ..
+@c .
+@c .. \" This calls macro '.'!
+@c .de m1 .
+@c (m1 macro)
+@c .. \" This does not.
+@c .m1
+@c @result{} (dot macro) (m1 macro)
+@c @endExample
+
+Here is a small example macro called @samp{P} that causes a break and
+inserts some vertical space. It could be used to separate paragraphs.
+
+@Example
+.de P
+. br
+. sp .8v
+..
+@endExample
+
+We can define one macro within another. Attempting to nest @samp{..}
+naïvely will end the outer definition because the inner definition
+isn't interpreted as such until the outer macro is later interpolated.
+We can use an end macro instead. Each level of nesting should use a
+unique end macro.
+
+An end macro need not be defined until it is called. This fact enables
+a nested macro definition to begin inside one macro and end inside
+another. Consider the following example.@footnote{Its structure is
+adapted from, and isomorphic to, part of a solution by Tadziu Hoffman to
+the problem of reflowing text multiple times to find an optimal
+configuration for it.
+@uref{https://lists.gnu.org/archive/html/groff/2008-12/msg00006.html}}
+
+@Example
+.de m1
+. de m2 m3
+you
+..
+.de m3
+Hello,
+Joe.
+..
+.de m4
+do
+..
+.m1
+know?
+. m3
+What
+.m4
+.m2
+ @result{} Hello, Joe. What do you know?
+@endExample
+
+@noindent
+A nested macro definition @emph{can} be terminated with @samp{..} and
+nested macros @emph{can} reuse end macros, but these control lines must
+be escaped multiple times for each level of nesting. The necessity of
+this escaping and the utility of nested macro definitions will become
+clearer when we employ macro parameters and consider the behavior of
+copy mode in detail.
+@endDefreq
+
+@code{de} defines a macro that inherits the compatibility mode
+enablement status of its context (@pxref{Implementation Differences}).
+Often it is desirable to make a macro that uses @code{groff} features
+callable from contexts where compatibility mode is on; for instance,
+when writing extensions to a historical macro package. To achieve this,
+compatibility mode needs to be switched off while such a macro is
+interpreted---without disturbing that state when it is finished.
+
+@Defreq {de1, name [@Var{end}]}
+The @code{de1} request defines a macro to be interpreted with
+compatibility mode disabled. When @var{name} is called, compatibility
+mode enablement status is saved; it is restored when the call completes.
+Observe the extra backlash before the interpolation of register
+@samp{xxx}; we'll explore this subject in @ref{Copy Mode}.
+
+@Example
+.nr xxx 12345
+.de aa
+The value of xxx is \\n[xxx].
+. br
+..
+.de1 bb
+The value of xxx is \\n[xxx].
+..
+.cp 1
+.aa
+ @error{} warning: register '[' not defined
+ @result{} The value of xxx is 0xxx].
+.bb
+ @result{} The value of xxx is 12345.
+@endExample
+@endDefreq
+
+@DefreqList {dei, name [@Var{end}]}
+@DefreqListEndx {dei1, name [@Var{end}]}
+The @code{dei} request defines a macro with its name and end
+macro indirected through strings. That is, it interpolates strings
+named @var{name} and @var{end} before performing the definition.
+
+The following examples are equivalent.
+
+@Example
+.ds xx aa
+.ds yy bb
+.dei xx yy
+@endExample
+
+@Example
+.de aa bb
+@endExample
+
+The @code{dei1} request bears the same relationship to @code{dei} as
+@code{de1} does to @code{de}; it temporarily turns compatibility mode
+off when @var{name} is called.
+@endDefreq
+
+@DefreqList {am, name [@Var{end}]}
+@DefreqItemx {am1, name [@Var{end}]}
+@DefreqItemx {ami, name [@Var{end}]}
+@DefreqListEndx {ami1, name [@Var{end}]}
+@cindex appending to a macro (@code{am})
+@cindex macro, appending to (@code{am})
+@code{am} appends subsequent input lines to macro @var{name}, extending
+its definition, and otherwise working as @code{de} does.
+
+To make the previously defined @samp{P} macro set indented instead of
+block paragraphs, add the necessary code to the existing macro.
+
+@Example
+.am P
+.ti +5n
+..
+@endExample
+
+The other requests are analogous to their @samp{de} counterparts. The
+@code{am1} request turns off compatibility mode during interpretation of
+the appendment. The @code{ami} request appends indirectly, meaning that
+strings @var{name} and @var{end} are interpolated with the resulting
+names used before appending. The @code{ami1} request is similar to
+@code{ami}, disabling compatibility mode during interpretation of the
+appended lines.
+@endDefreq
+
+@pindex trace.tmac
+Using @file{trace.tmac}, you can trace calls to @code{de},
+@code{de1}, @code{am}, and @code{am1}. You can also use the
+@code{backtrace} request at any point desired to troubleshoot tricky
+spots (@pxref{Debugging}).
+
+@xref{Strings}, for the @code{als}, @code{rm}, and @code{rn} requests to
+create an alias of, remove, and rename a macro, respectively.
+
+@cindex object creation
+Macro identifiers share their name space with requests, strings, and
+diversions; see @ref{Identifiers}. The @code{am}, @code{as}, @code{da},
+@code{de}, @code{di}, and @code{ds} requests (together with their
+variants) create a new object only if the name of the macro, diversion,
+or string is currently undefined or if it is defined as a request;
+normally, they modify the value of an existing object. @xref{als,,the
+description of the @code{als} request}, for pitfalls when redefining a
+macro that is aliased.
+
+@Defreq {return, [@Var{anything}]}
+Exit a macro, immediately returning to the caller. If called with an
+argument @var{anything}, exit twice---the current macro and the macro
+one level higher. This is used to define a wrapper macro for
+@code{return} in @file{trace.tmac}.
+@endDefreq
+
+@menu
+* Parameters::
+* Copy Mode::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Parameters, Copy Mode, Writing Macros, Writing Macros
+@subsection Parameters
+@cindex parameters
+
+Macro calls and string interpolations optionally accept a list of
+arguments; recall @ref{Calling Macros}. At the time such an
+interpolation takes place, these @dfn{parameters} can be examined using
+a register and a variety of escape sequences starting with @samp{\$}.
+All such escape sequences are interpreted even in copy mode, a fact we
+shall motivate and explain below (@pxref{Copy Mode}).
+
+@Defreg {.$}
+@cindex parameter count register (@code{.$})
+The count of parameters available to a macro or string is kept in this
+read-only register. The @code{shift} request can change its value.
+@endDefreg
+
+Any individual parameter can be accessed by its position in the list of
+arguments to the macro call, numbered from left to right starting at 1,
+with one of the following escape sequences.
+
+@DefescList {\\$, , n, }
+@DefescItem {\\$, (, nn, }
+@DefescListEnd {\\$, [, nnn, ]}
+Interpolate the @var{n}th, @var{nn}th, or @var{nnn}th parameter. The
+first form expects only a single digit (1@leq{}@var{n}@leq{}9)), the
+second two digits (01@leq{}@var{nn}@leq{}99)), and the third any
+positive integer @var{nnn}. Macros and strings accept an unlimited
+number of parameters.
+@endDefesc
+
+@Defreq {shift, [@Var{n}]}
+Shift the parameters @var{n} places (1@tie{}by default). This is a
+``left shift'': what was parameter@tie{}@var{i} becomes parameter
+@math{@var{i}-@var{n}}. The parameters formerly in positions 1
+to@tie{}@var{n} are no longer available. Shifting by a non-positive
+amount performs no operation. The register @code{.$} is adjusted
+accordingly.
+@endDefreq
+
+@cindex copy mode, and macro parameters
+@cindex mode, copy, and macro parameters
+@cindex macro, parameters (@code{\$})
+@cindex parameters, macro (@code{\$})
+In practice, parameter interpolations are usually seen prefixed with an
+extra escape character. This is because the @code{\$} family of escape
+sequences is interpreted even in copy mode.@footnote{If they were not,
+parameter interpolations would be similar to command-line
+parameters---fixed for the entire duration of a @code{roff} program's
+run. The advantage of interpolating @code{\$} escape sequences even in
+copy mode is that they can interpolate different contents from one call
+to the next, like function parameters in a procedural language. The
+additional escape character is the price of this power.}
+
+@DefescList {\\$*, , , }
+@DefescItemx {\\$@@, , , }
+@DefescListEndx {\\$^, , , }
+In some cases it is convenient to interpolate all of the parameters at
+once (to pass them to a request, for instance). The @code{\$*} escape
+concatenates the parameters, separating them with spaces. @code{\$@@}
+is similar, concatenating the parameters, surrounding each with double
+quotes and separating them with spaces. If not in compatibility mode,
+the interpolation depth of double quotes is preserved (@pxref{Calling
+Macros}). @code{\$^} interpolates all parameters as if they were
+arguments to the @code{ds} request.
+
+@Example
+.de foo
+. tm $1='\\$1'
+. tm $2='\\$2'
+. tm $*='\\$*'
+. tm $@@='\\$@@'
+. tm $^='\\$^'
+..
+.foo " This is a "test"
+ @error{} $1=' This is a '
+ @error{} $2='test"'
+ @error{} $*=' This is a test"'
+ @error{} $@@='" This is a " "test""'
+ @error{} $^='" This is a "test"'
+@endExample
+
+@code{\$*} is useful when writing a macro that doesn't need to
+distinguish its arguments, or even to not interpret them; examples
+include macros that produce diagnostic messages by wrapping the
+@code{tm} or @code{ab} requests. Use @code{\$@@} when writing a macro
+that may need to shift its parameters and/or wrap a macro or request
+that finds the count significant. If in doubt, prefer @code{\$@@} to
+@code{\$*}. An application of @code{\$^} is seen in @file{trace.tmac},
+which redefines some requests and macros for debugging purposes.
+@endDefesc
+
+@Defesc {\\$0, , , }
+@cindex macro name register (@code{\$0})
+@cindex @code{als} request, and @code{\$0}
+Interpolate the name by which the macro being interpreted was called.
+The @code{als} request can cause a macro to have more than one name.
+Applying string interpolation to a macro does not change this name.
+
+@Example
+.de foo
+. tm \\$0
+..
+.als bar foo
+.
+.de aaa
+. foo
+..
+.de bbb
+. bar
+..
+.de ccc
+\\*[foo]\\
+..
+.de ddd
+\\*[bar]\\
+..
+.
+.aaa
+ @error{} foo
+.bbb
+ @error{} bar
+.ccc
+ @error{} ccc
+.ddd
+ @error{} ddd
+@endExample
+@endDefesc
+
+@c ---------------------------------------------------------------------
+
+@node Copy Mode, , Parameters, Writing Macros
+@subsection Copy Mode
+@cindex copy mode
+@cindex copy mode
+@cindex mode, copy
+@cindex mode, copy
+
+@cindex @code{\n}, when reading text for a macro
+@cindex @code{\$}, when reading text for a macro
+@cindex @code{\*}, when reading text for a macro
+@cindex \@key{RET}, when reading text for a macro
+When GNU @code{troff} processes certain requests, most importantly those
+which define or append to a macro or string, it does so in @dfn{copy
+mode}: it copies the characters of the definition into a dedicated
+storage region, interpolating the escape sequences @code{\n}, @code{\g},
+@code{\$}, @code{\*}, @code{\V}, and @code{\?} normally; interpreting
+@code{\@key{RET}} immediately; discarding comments @code{\"} and
+@code{\#}; interpolating the current leader, escape, or tab character
+with @code{\a}, @code{\e}, and @code{\t}, respectively; and storing all
+other escape sequences in an encoded form.
+
+@cindex interpretation mode
+@cindex mode, interpretation
+The complement of copy mode---a @code{roff} formatter's behavior when
+not defining or appending to a macro, string, or diversion---where all
+macros are interpolated, requests invoked, and valid escape sequences
+processed immediately upon recognition, can be termed
+@dfn{interpretation mode}.
+
+@Defesc {\\\\, , , }
+The escape character, @code{\} by default, can escape itself. This
+enables you to control whether a given @code{\n}, @code{\g}, @code{\$},
+@code{\*}, @code{\V}, or @code{\?} escape sequence is interpreted at the
+time the macro containing it is defined, or later when the macro is
+called.@footnote{Compare this to the @code{\def} and @code{\edef}
+commands in @TeX{}.}
+
+@Example
+.nr x 20
+.de y
+.nr x 10
+\&\nx
+\&\\nx
+..
+.y
+ @result{} 20 10
+@endExample
+
+You can think of @code{\\} as a ``delayed'' backslash; it is the escape
+character followed by a backslash from which the escape character has
+removed its special meaning. Consequently, @samp{\\} is not an escape
+sequence in the usual sense. In any escape sequence @samp{\@var{X}}
+that GNU @code{troff} does not recognize, the escape character is
+ignored and @var{X} is output. An unrecognized escape sequence causes
+a warning in category @samp{escape}, with two exceptions---@samp{\\} is
+the first.
+@endDefesc
+
+@cindex @code{\\}, when reading text for a macro
+@Defesc {\\., , , }
+@code{\.} escapes the control character. It is similar to @code{\\} in
+that it isn't a true escape sequence. It is used to permit nested macro
+definitions to end without a named macro call to conclude them. Without
+a syntax for escaping the control character, this would not be possible.
+
+@Example
+.de m1
+foo
+.
+. de m2
+bar
+\\..
+.
+..
+.m1
+.m2
+ @result{} foo bar
+@endExample
+
+@noindent
+The first backslash is consumed while the macro is read, and the second
+is interpreted when macro @code{m1} is called.
+@endDefesc
+
+@code{roff} documents should not use the @code{\\} or @code{\.}
+character sequences outside of copy mode; they serve only to obfuscate
+the input. Use @code{\e} to represent the escape character,
+@code{\[rs]} to obtain a backslash glyph, and @code{\&} before @samp{.}
+and @samp{'} where GNU @code{troff} expects them as control characters
+if you mean to use them literally (recall @ref{Requests and Macros}).
+
+Macro definitions can be nested to arbitrary depth. The mechanics of
+parsing the escape character have significant consequences for this
+practice.
+
+@Example
+.de M1
+\\$1
+. de M2
+\\\\$1
+. de M3
+\\\\\\\\$1
+\\\\..
+. M3 hand.
+\\..
+. M2 of
+..
+This understeer is getting
+.M1 out
+ @result{} This understeer is getting out of hand.
+@endExample
+
+Each escape character is interpreted twice---once in copy mode, when the
+macro is defined, and once in interpretation mode, when the macro is
+called. As seen above, this fact leads to exponential growth in the
+quantity of escape characters required to delay interpolation of
+@code{\n}, @code{\g}, @code{\$}, @code{\*}, @code{\V}, and @code{\?} at
+each nesting level, which can be daunting. GNU @code{troff} offers a
+solution.
+
+@Defesc {\\E, , , }
+@code{\E} represents an escape character that is not interpreted in copy
+mode. You can use it to ease the writing of nested macro definitions.
+
+@Example
+.de M1
+. nop \E$1
+. de M2
+. nop \E$1
+. de M3
+. nop \E$1
+\\\\..
+. M3 better.
+\\..
+. M2 bit
+..
+This vehicle handles
+.M1 a
+ @result{} This vehicle handles a bit better.
+@endExample
+
+Observe that because @code{\.} is not a true escape sequence, we can't
+use @code{\E} to keep @samp{..} from ending a macro definition
+prematurely. If the multiplicity of backslashes complicates
+maintenance, use end macros.
+
+@code{\E} is also convenient to define strings containing escape
+sequences that need to work when used in copy mode (for example, as
+macro arguments), or which will be interpolated at varying macro nesting
+depths. We might define strings to begin and end superscripting
+as follows.@footnote{These are lightly adapted from the @code{groff}
+implementation of the @file{ms} macros.}
+
+@Example
+.ds @{ \v'-.9m\s'\En[.s]*7u/10u'+.7m'
+.ds @} \v'-.7m\s0+.9m'
+@endExample
+
+When the @code{ec} request is used to redefine the escape character,
+@code{\E} also makes it easier to distinguish the semantics of an escape
+character from the other meaning(s) its character might have. Consider
+the use of an unusual escape character, @samp{-}.
+
+@Example
+.nr a 1
+.ec -
+.de xx
+--na
+..
+.xx
+ @result{} -na
+@endExample
+
+@noindent
+This result may surprise you; some people expect @samp{1} to be output
+since register @samp{a} has clearly been defined with that value. What
+has happened? The robotic replacement of @samp{\} with @samp{-} has led
+us astray. You might recognize the sequence @samp{--} more readily with
+the default escape character as @samp{\-}, the special character escape
+sequence for the minus sign glyph.
+
+@Example
+.nr a 1
+.ec -
+.de xx
+-Ena
+..
+.xx
+ @result{} 1
+@endExample
+@endDefesc
+
+
+@c =====================================================================
+
+@node Page Motions, Drawing Geometric Objects, Writing Macros, GNU troff Reference
+@section Page Motions
+@cindex page motions
+@cindex motions, page
+
+@xref{Manipulating Spacing}, for a discussion of the most commonly used
+request for vertical motion, @code{sp}, which spaces downward by one
+vee.
+
+@DefreqList {mk, [@Var{reg}]}
+@DefreqListEndx {rt, [@Var{dist}]}
+@cindex marking vertical page location (@code{mk})
+@cindex page location, vertical, marking (@code{mk})
+@cindex location, vertical, page, marking (@code{mk})
+@cindex vertical page location, marking (@code{mk})
+@cindex returning to marked vertical page location (@code{rt})
+@cindex page location, vertical, returning to marked (@code{rt})
+@cindex location, vertical, page, returning to marked (@code{rt})
+@cindex vertical page location, returning to marked (@code{rt})
+You can @dfn{mark} a location on a page for subsequent @dfn{return}.
+@code{mk} takes an argument, a register name in which to store the
+current page location. If given no argument, it stores the location in
+an internal register. This location can be used later by the @code{rt}
+or the @code{sp} requests (or the @code{\v} escape).
+
+The @code{rt} request returns @emph{upward} to the location marked with
+the last @code{mk} request. If used with an argument, it returns to a
+vertical position@tie{}@var{dist} from the top of the page (no previous
+call to @code{mk} is necessary in this case). The default scaling
+unit is @samp{v}.
+
+If a page break occurs between a @code{mk} request and its matching
+@code{rt} request, the @code{rt} request is silently ignored.
+
+A simple implementation of a macro to set text in two columns follows.
+
+@Example
+.nr column-length 1.5i
+.nr column-gap 4m
+.nr bottom-margin 1m
+.
+.de 2c
+. br
+. mk
+. ll \\n[column-length]u
+. wh -\\n[bottom-margin]u 2c-trap
+. nr right-side 0
+..
+.
+.de 2c-trap
+. ie \\n[right-side] \@{\
+. nr right-side 0
+. po -(\\n[column-length]u + \\n[column-gap]u)
+. \" remove trap
+. wh -\\n[bottom-margin]u
+. \@}
+. el \@{\
+. \" switch to right side
+. nr right-side 1
+. po +(\\n[column-length]u + \\n[column-gap]u)
+. rt
+. \@}
+..
+@endExample
+
+Now let us apply our two-column macro.
+
+@Example
+.pl 1.5i
+.ll 4i
+This is a small test that shows how the
+rt request works in combination with mk.
+
+.2c
+Starting here, text is typeset in two columns.
+Note that this implementation isn't robust
+and thus not suited for a real two-column
+macro.
+ @result{} This is a small test that shows how the
+ @result{} rt request works in combination with mk.
+ @result{}
+ @result{} Starting here, isn't robust
+ @result{} text is typeset and thus not
+ @result{} in two columns. suited for a
+ @result{} Note that this real two-column
+ @result{} implementation macro.
+@endExample
+@endDefreq
+
+Several escape sequences enable fine control of movement about the page.
+
+@Defesc {\\v, @code{'}, expr, @code{'}}
+@cindex vertical motion (@code{\v})
+@cindex motion, vertical (@code{\v})
+Vertically move the drawing position. @var{expr} indicates the
+magnitude of motion: positive is downward and and negative upward. The
+default scaling unit is @samp{v}. The motion is relative to the current
+drawing position unless @var{expr} begins with the boundary-relative
+motion operator @samp{|}. @xref{Numeric Expressions}.
+
+Text processing continues at the new drawing position; usually, vertical
+motions should be in balanced pairs to avoid a confusing page layout.
+
+@code{\v} will not spring a vertical position trap. This can be useful;
+for example, consider a page bottom trap macro that prints a marker in
+the margin to indicate continuation of a footnote. @xref{Traps}.
+@endDefesc
+
+A few escape sequences that produce vertical motion are unusual. They
+are thought to originate early in AT&T @code{nroff} history to achieve
+super- and subscripting by half-line motions on line printers and
+teletypewriters before the phototypesetter made more precise positioning
+available. They are reckoned in ems---not vees---to maintain continuity
+with their original purpose of moving relative to the size of the type
+rather than the distance between text baselines (vees).@footnote{At the
+@code{grops} defaults of 10-point type on 12-point vertical spacing, the
+difference between half a vee and half an em can be subtle:@: large
+spacings like @samp{.vs .5i} make it obvious.}
+
+@DefescList {\\r, , , }
+@DefescItemx {\\u, , , }
+@DefescListEndx {\\d, , , }
+Move upward@tie{}1@dmn{m}, upward@tie{}.5@dmn{m}, and
+downward@tie{}.5@dmn{m}, respectively.
+@endDefesc
+
+@noindent
+Let us see these escape sequences in use.
+
+@Example
+Obtain 100 cm\u3\d of \ka\d\092\h'|\nau'\r233\dU.
+@endExample
+
+In the foregoing we have paired @code{\u} and @code{\d} to typeset a
+superscript, and later a full em negative (``reverse'') motion to place
+a superscript above a subscript. A numeral-width horizontal motion
+escape sequence aligns the proton and nucleon numbers, while @code{\k}
+marks a horizontal position to which @code{\h} returns so that we could
+stack them. (We shall discuss these horizontal motion escape sequences
+presently.) In serious applications, we often want to alter the type
+size of the -scripts and to fine-tune the vertical motions, as the
+@code{groff} @file{ms} package does with its super- and subscripting
+string definitions.
+
+@Defesc {\\h, @code{'}, expr, @code{'}}
+@cindex inserting horizontal space (@code{\h})
+@cindex horizontal space (@code{\h})
+@cindex space, horizontal (@code{\h})
+@cindex horizontal motion (@code{\h})
+@cindex motion, horizontal (@code{\h})
+Horizontally move the drawing position. @var{expr} indicates the
+magnitude of motion: positive is rightward and negative leftward. The
+default scaling unit is @samp{m}. The motion is relative to the current
+drawing position unless @var{expr} begins with the boundary-relative
+motion operator @samp{|}. @xref{Numeric Expressions}.
+@endDefesc
+
+The following string definition sets the @TeX{}
+logo.@footnote{@xref{Strings}, for an explanation of the trailing
+@samp{\"}.}
+
+@Example
+.ds TeX T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X\"
+@endExample
+
+There are a number of special-case escape sequences for horizontal
+motion.
+
+@Defesc {\\@key{SP}, , , }
+@cindex space, unbreakable and unadjustable (@code{\@key{SP}})
+@cindex unbreakable and unadjustable space (@code{\@key{SP}})
+@cindex unadjustable and unbreakable space (@code{\@key{SP}})
+@c We use the following notation in our man pages; Texinfo is bound to
+@c the GNU Emacs dialect.
+@esindex \@slanted{space}
+Move right one word space. (The input is a backslash followed by a
+space.) This escape sequence can be thought of as a non-adjustable,
+unbreakable space. Usually you want @code{\~} instead; see
+@ref{Manipulating Filling and Adjustment}.
+@endDefesc
+
+@cindex thin space (@code{\|})
+@cindex space, thin (@code{\|})
+@Defesc {\\|, , , }
+Move one-sixth @dmn{em} to the right on typesetting output devices. If
+a glyph named @samp{\|} is defined in the current font, its width is
+used instead, even on terminal output devices.
+@endDefesc
+
+@cindex hair space (@code{\^})
+@cindex space, hair (@code{\^})
+@Defesc {\\^, , , }
+Move one-twelfth @dmn{em} to the right on typesetting output devices.
+If a glyph named @samp{\^} is defined in the current font, its width is
+used instead, even on terminal output devices.
+@endDefesc
+
+@Defesc {\\0, , , }
+@cindex space, width of a digit (numeral) (@code{\0})
+@cindex digit-width space (@code{\0})
+@cindex figure space (@code{\0})
+@cindex numeral-width space (@code{\0})
+Move right by the width of a numeral in the current font.
+@endDefesc
+
+Horizontal motions are not discarded at the end of an output line as
+word spaces are. @xref{Breaking}.
+
+@DefescList {\\w, @code{'}, anything, @code{'}}
+@DefregItemx {st}
+@DefregItemx {sb}
+@DefregItemx {rst}
+@DefregItemx {rsb}
+@DefregItemx {ct}
+@DefregItemx {ssc}
+@DefregListEndx {skw}
+@cindex width escape (@code{\w})
+Interpolate the width of @var{anything} in basic units. This escape
+sequence allows several properties of formatted output to be measured
+without writing it out.
+
+@Example
+The length of the string 'abc' is \w'abc'u.
+ @result{} The length of the string 'abc' is 72u.
+@endExample
+
+@cindex dummy environment, used by @code{\w} escape sequence
+@cindex environment, dummy, used by @code{\w} escape sequence
+@var{anything} is processed in a dummy environment:@: this means that
+font and type size changes, for example, may occur within it without
+affecting subsequent output.
+
+@need 500
+After each use, @code{\w} sets several registers.
+
+@cindex CSTR@tie{}#54 errata
+@cindex CSTR@tie{}#54 erratum, @code{sb} register
+@cindex CSTR@tie{}#54 erratum, @code{st} register
+@table @code
+@item st
+@itemx sb
+The maximum vertical displacements of the text baseline above and below,
+respectively. The sign convention is opposite that of relative vertical
+motions; that is, depth below the (original) baseline is negative.
+These registers are incorrectly documented in the @acronym{AT&T}
+@code{troff} manual as ``the highest and lowest extent of [the argument
+to @code{\w}] relative to the baseline''.
+
+@item rst
+@itemx rsb
+Like @code{st} and @code{sb}, but taking account of the heights and
+depths of glyphs. In other words, these registers store the highest and
+lowest vertical positions attained by @var{anything}, doing what
+@acronym{AT&T} @code{troff} documented @code{st} and @code{sb} as doing.
+
+@item ct
+Characterizes the geometry of glyphs occurring in @var{anything}.
+
+@table @asis
+@item 0
+only short glyphs, no descenders or tall glyphs
+
+@item 1
+at least one descender
+
+@item 2
+at least one tall glyph
+
+@item 3
+at least one each of a descender and a tall glyph
+@end table
+
+@item ssc
+The amount of horizontal space (possibly negative) that should be added
+to the last glyph before a subscript.
+
+@item skw
+How far to right of the center of the last glyph in the @code{\w}
+argument, the center of an accent from a roman font should be placed
+over that glyph.
+@end table
+@endDefesc
+
+@DefescList {\\k, , p, }
+@DefescItem {\\k, (, ps, }
+@DefescListEnd {\\k, [, position, ]}
+@cindex saving horizontal input line position (@code{\k})
+@cindex horizontal input line position, saving (@code{\k})
+@cindex input line position, horizontal, saving (@code{\k})
+@cindex position, horizontal input line, saving (@code{\k})
+@cindex line, input, horizontal position, saving (@code{\k})
+Store the current horizontal position in the @emph{input} line in a
+register with the name @var{position} (one-character name@tie{}@var{p},
+two-character name @var{ps}). Use this, for example, to return to the
+beginning of a string for highlighting or other decoration.
+@endDefesc
+
+@Defreg {hp}
+@cindex horizontal input line position register (@code{hp})
+@cindex input line, horizontal position, register (@code{hp})
+@cindex position, horizontal, in input line, register (@code{hp})
+@cindex line, input, horizontal position, register (@code{hp})
+The current horizontal position at the input line.
+@endDefreg
+
+@Defreg {.k}
+@cindex horizontal output line position register (@code{.k})
+@cindex output line, horizontal position, register (@code{.k})
+@cindex position, horizontal, in output line, register (@code{.k})
+@cindex line, output, horizontal position, register (@code{.k})
+A read-only register containing the current horizontal output position
+(relative to the current indentation).
+@endDefreg
+
+@Defesc {\\o, @code{'}, abc@dots{}, @code{'}}
+@cindex overstriking glyphs (@code{\o})
+@cindex glyphs, overstriking (@code{\o})
+Overstrike the glyphs of characters @var{a}, @var{b}, @var{c}, @dots{};
+the glyphs are centered, written, and the drawing position advanced by
+the widest of the glyphs.
+@endDefesc
+
+@Defesc {\\z, , c, }
+@cindex zero-width printing (@code{\z}, @code{\Z})
+@cindex printing, zero-width (@code{\z}, @code{\Z})
+Format the character @var{c} with zero width; that is, without advancing
+the drawing position. Use @code{\z} to overstrike glyphs aligned to
+their left edges, in contrast to @code{\o}'s centering.
+@endDefesc
+
+@Defesc {\\Z, @code{'}, anything, @code{'}}
+@cindex zero-width printing (@code{\z}, @code{\Z})
+@cindex printing, zero-width (@code{\z}, @code{\Z})
+Save the drawing position, format @var{anything}, then restore it. Tabs
+and leaders in the argument are ignored with an error diagnostic.
+
+We might implement a strike-through macro thus.
+
+@Example
+.de ST
+.nr width \w'\\$1'
+\Z@@\v'-.25m'\l'\\n[width]u'@@\\$1
+..
+.
+This is
+.ST "a test"
+an actual emergency!
+@endExample
+@endDefesc
+
+
+@c =====================================================================
+
+@node Drawing Geometric Objects, Traps, Page Motions, GNU troff Reference
+@section Drawing Geometric Objects
+@cindex drawing requests
+@cindex requests for drawing
+
+A few of the formatter's escape sequences draw lines and other geometric
+objects. Combined with each other and with page motion commands
+(@pxref{Page Motions}), a wide variety of figures is possible. For
+complex drawings, these operations can be cumbersome; the preprocessors
+@code{gpic} or @code{ggrn} are typically used instead.
+
+The @code{\l} and @code{\L} escape sequences draw horizontal and
+vertical sequences of glyphs, respectively. Even the simplest of
+output devices supports them.
+
+@DefescList {\\l, @code{'}, l, @code{'}}
+@DefescListEnd {\\l, @code{'}, lc, @code{'}}
+@cindex drawing horizontal lines (@code{\l})
+@cindex horizontal line, drawing (@code{\l})
+@cindex line, horizontal, drawing (@code{\l})
+Draw a horizontal line of length @var{l} from the drawing position.
+Rightward motion is positive. Afterward, the drawing position is at the
+right end of the line. The default scaling unit is @samp{m}.
+
+@cindex baseline rule special character(@code{\[ru]})
+@cindex glyph, underscore (@code{\[ru]})
+@cindex line drawing glyph
+@cindex glyph, for line drawing
+The optional second parameter@tie{}@var{c} is a character with which to
+draw the line. The default is the baseline rule special character,
+@code{\[ru]}.
+
+@cindex dummy character (@code{\&}), effect on @code{\l} escape sequence
+@cindex character, dummy (@code{\&}), effect on @code{\l} escape sequence
+If @var{c} is a valid scaling unit, put @code{\&} after @var{l} to
+disambiguate the input.
+
+@Example
+.de textbox
+\[br]\\$*\[br]\l'|0\[rn]'\l'|0\[ul]'
+..
+@endExample
+
+@noindent
+The foregoing outputs a box rule (a vertical line), the text
+argument(s), and another box rule. We employ the boundary-relative
+motion operator @samp{|}. Finally, the line-drawing escape sequences
+draw a radical extender (a form of overline) and an underline from the
+drawing position to the position coresponding to beginning of the
+@emph{input} line. The drawing position returns to just after the
+right-hand box rule because the lengths of the drawn lines are negative,
+as noted above.
+@endDefesc
+
+@DefescList {\\L, @code{'}, l, @code{'}}
+@DefescListEnd {\\L, @code{'}, lc, @code{'}}
+@cindex drawing vertical lines (@code{\L})
+@cindex vertical line drawing (@code{\L})
+@cindex line, vertical, drawing (@code{\L})
+@cindex line drawing glyph
+@cindex glyph for line drawing
+@cindex box rule glyph (@code{\[br]})
+@cindex glyph, box rule (@code{\[br]})
+Draw a vertical line of length @var{l} from the drawing position.
+Downward motion is positive. The default scaling unit is @samp{v}. The
+default character is the box rule, @code{\[br]}. As with vertical
+motion escape sequences, text processing continues where the line ends.
+@code{\L} is otherwise similar to @code{\l}.
+
+@Example
+$ nroff <<EOF
+This is a \L'3v'test.
+EOF
+ @result{} This is a
+ @result{} |
+ @result{} |
+ @result{} |test.
+@endExample
+
+@noindent
+When writing text, the drawing position is at the text baseline; recall
+@ref{Page Geometry}.
+@endDefesc
+
+@c BEGIN Keep (roughly) parallel with subsection "Drawing commands" of
+@c groff(7).
+The @code{\D} escape sequence provides @dfn{drawing commands} that
+direct the output device to render geometrical objects rather than
+glyphs. Specific devices may support only a subset, or may feature
+additional ones; consult the man page for the output driver in use.
+Terminal devices in particular implement almost none. @xref{Graphics
+Commands}.
+
+Rendering starts at the drawing position; when finished, the drawing
+position is left at the rightmost point of the object, even for closed
+figures, except where noted. GNU @code{troff} draws stroked (outlined)
+objects with the stroke color, and shades filled ones with the fill
+color. @xref{Colors}. Coordinates @var{h} and @var{v} are horizontal
+and vertical motions relative to the drawing position or previous point
+in the command. The default scaling unit for horizontal measurements
+(and diameters of circles) is @samp{m}; for vertical ones, @samp{v}.
+
+Circles, ellipses, and polygons can be drawn filled or stroked. These
+are independent properties; if you want a filled, stroked figure, you
+must draw the same figure twice using each drawing command. A filled
+figure is always smaller than an outlined one because the former is
+drawn only within its defined area, whereas strokes have a line
+thickness (set with @samp{\D't'}).
+
+@Example
+\h'1i'\v'1i'\
+\# increase line thickness
+\Z'\D't 5p''\
+\# draw stroked (unfilled) polygon
+\Z'\D'p 3 3 -6 0''\
+\# draw filled (solid) polygon
+\Z'\D'P 3 3 -6 0''
+@endExample
+
+@need 500
+@Defesc {\\D, @code{'}, command argument @dots{}, @code{'}}
+Drawing command escape sequence parameters begin with an ordinary
+character, @var{command}, selecting the type of object to be drawn,
+followed by @var{argument}s whose meaning is determined by
+@var{command}.
+
+@table @code
+@item \D'~ @var{h1} @var{v1} @dots{} @var{hn} @var{vn}'
+@cindex drawing a spline (@samp{\D'~ @dots{}'})
+@cindex spline, drawing (@samp{\D'~ @dots{}'})
+Draw a B-spline to each point in sequence, leaving the drawing position
+at (@var{hn}, @var{vn}).
+
+@item \D'a @var{hc} @var{vc} @var{h} @var{v}'
+@cindex arc, drawing (@samp{\D'a @dots{}'})
+@cindex drawing an arc (@samp{\D'a @dots{}'})
+Draw a circular arc centered at (@var{hc}, @var{vc}) counterclockwise
+from the drawing position to a point (@var{h}, @var{v}) relative to the
+center. @footnote{(@var{hc}, @var{vc}) is adjusted to the point nearest
+the perpendicular bisector of the arc's chord.}
+
+@item \D'c @var{d}'
+@cindex circle, stroked, drawing (@samp{\D'c @dots{}'})
+@cindex drawing a stroked circle (@samp{\D'c @dots{}'})
+@cindex stroked circle, drawing (@samp{\D'c @dots{}'})
+@cindex circle, outlined, drawing (@samp{\D'c @dots{}'})
+@cindex drawing an outlined circle (@samp{\D'c @dots{}'})
+@cindex outlined circle, drawing (@samp{\D'c @dots{}'})
+Draw a circle of diameter @var{d} with its leftmost point at the drawing
+position.
+
+@item \D'C @var{d}'
+@cindex circle, filled, drawing (@samp{\D'C @dots{}'})
+@cindex drawing a filled circle (@samp{\D'C @dots{}'})
+@cindex filled circle, drawing (@samp{\D'C @dots{}'})
+@cindex circle, solid, drawing (@samp{\D'C @dots{}'})
+@cindex drawing a solid circle (@samp{\D'C @dots{}'})
+@cindex solid circle, drawing (@samp{\D'C @dots{}'})
+As @samp{\D'C @r{@dots{}}'}, but the circle is filled.
+
+@item \D'e @var{h} @var{v}'
+@cindex ellipse, stroked, drawing (@samp{\D'e @dots{}'})
+@cindex drawing a stroked ellipse (@samp{\D'e @dots{}'})
+@cindex stroked ellipse, drawing (@samp{\D'e @dots{}'})
+@cindex ellipse, outlined, drawing (@samp{\D'e @dots{}'})
+@cindex drawing an outlined ellipse (@samp{\D'e @dots{}'})
+@cindex outlined ellipse, drawing (@samp{\D'e @dots{}'})
+Draw an ellipse of width @var{h} and height @var{v} with its leftmost
+point at the drawing position.
+
+@item \D'E @var{x} @var{y}'
+@cindex ellipse, filled, drawing (@samp{\D'E @dots{}'})
+@cindex drawing a filled ellipse (@samp{\D'E @dots{}'})
+@cindex filled ellipse, drawing (@samp{\D'E @dots{}'})
+@cindex ellipse, solid, drawing (@samp{\D'E @dots{}'})
+@cindex drawing a solid ellipse (@samp{\D'E @dots{}'})
+@cindex solid ellipse, drawing (@samp{\D'E @dots{}'})
+As @samp{\D'e @r{@dots{}}'}, but the ellipse is filled.
+
+@item \D'l @var{dx} @var{dy}'
+@cindex line, drawing (@samp{\D'l @dots{}'})
+@cindex drawing a line (@samp{\D'l @dots{}'})
+Draw line from the drawing position to (@var{h}, @var{v}).
+
+The following is a macro for drawing a box around a text argument; for
+simplicity, the box margin is a fixed at 0.2@dmn{m}.
+
+@Example
+.de TEXTBOX
+. nr @@wd \w'\\$1'
+\h'.2m'\
+\h'-.2m'\v'(.2m - \\n[rsb]u)'\
+\D'l 0 -(\\n[rst]u - \\n[rsb]u + .4m)'\
+\D'l (\\n[@@wd]u + .4m) 0'\
+\D'l 0 (\\n[rst]u - \\n[rsb]u + .4m)'\
+\D'l -(\\n[@@wd]u + .4m) 0'\
+\h'.2m'\v'-(.2m - \\n[rsb]u)'\
+\\$1\
+\h'.2m'
+..
+@endExample
+
+@noindent
+The argument is measured with the @code{\w} escape sequence. Its width
+is stored in register @code{@@wd}. @code{\w} also sets the registers
+@code{rst} and @code{rsb}; these contain its maximum vertical extents of
+the argument. Then, four lines are drawn to form a box, offset by the
+box margin.
+
+@item \D'p @var{h1} @var{v1} @dots{} @var{hn} @var{vn}'
+@cindex polygon, stroked, drawing (@samp{\D'p @dots{}'})
+@cindex drawing a stroked polygon (@samp{\D'p @dots{}'})
+@cindex stroked polygon, drawing (@samp{\D'p @dots{}'})
+@cindex polygon, outlined, drawing (@samp{\D'p @dots{}'})
+@cindex drawing an outlined polygon (@samp{\D'p @dots{}'})
+@cindex outlined polygon, drawing (@samp{\D'p @dots{}'})
+Draw polygon with vertices at drawing position and each point in
+sequence. GNU @code{troff} closes the polygon by drawing a line from
+(@var{hn}, @var{vn}) back to the initial drawing position.
+@c XXX: This would be the "STUPID_DRAWING_POSITIONING" complained of in
+@c src/libs/libdriver/input.cpp. It is neither the rightmost point
+@c of the figure nor the initial drawing position that GNU troff
+@c automatically returned to to close the figure.
+Afterward, the drawing position is left at (@var{hn}, @var{vn}).
+
+@item \D'P @var{dx1} @var{dy1} @var{dx2} @var{dy2} @dots{}'
+@cindex polygon, filled, drawing (@samp{\D'P @dots{}'})
+@cindex drawing a filled polygon (@samp{\D'P @dots{}'})
+@cindex filled polygon, drawing (@samp{\D'P @dots{}'})
+@cindex polygon, solid, drawing (@samp{\D'P @dots{}'})
+@cindex drawing a solid polygon (@samp{\D'P @dots{}'})
+@cindex solid polygon, drawing (@samp{\D'P @dots{}'})
+As @samp{\D'P @r{@dots{}}'}, but the polygon is filled.
+
+The following macro is like the @samp{\D'l'} example, but shades the
+box. We draw the box before writing the text because colors in GNU
+@code{troff} have no transparency; in othe opposite order, the filled
+polygon would occlude the text.
+
+@Example
+.de TEXTBOX
+. nr @@wd \w'\\$1'
+\h'.2m'\
+\h'-.2m'\v'(.2m - \\n[rsb]u)'\
+\M[lightcyan]\
+\D'P 0 -(\\n[rst]u - \\n[rsb]u + .4m) \
+ (\\n[@@wd]u + .4m) 0 \
+ 0 (\\n[rst]u - \\n[rsb]u + .4m) \
+ -(\\n[@@wd]u + .4m) 0'\
+\h'.2m'\v'-(.2m - \\n[rsb]u)'\
+\M[]\
+\\$1\
+\h'.2m'
+..
+@endExample
+
+@item \D't @var{n}'
+@cindex line thickness (@samp{\D't @dots{}'})
+@cindex thickness of lines (@samp{\D't @dots{}'})
+Set the stroke thickness of geometric objects to @var{n} basic units. A
+zero @var{n} selects the minimal supported thickness. A negative
+@var{n} selects a thickness proportional to the type size; this is the
+default.
+@end table
+@endDefesc
+@c END Keep (roughly) parallel with subsection "Drawing commands" of
+@c groff(7).
+
+In a hazy penumbra between text rendering and drawing commands we locate
+the bracket-building escape sequence, @code{\b}. It can assemble
+apparently large glyphs by vertically stacking ordinary ones.
+
+@Defesc {\\b, @code{'}, contents, @code{'}}
+@cindex pile, glyph (@code{\b})
+@cindex glyph pile (@code{\b})
+@cindex stacking glyphs (@code{\b})
+Pile and center a sequence of glyphs vertically on the output line.
+@dfn{Piling} stacks glyphs corresponding to each character in
+@var{contents}, read from left to right, and placed from top to bottom.
+GNU @code{troff} separates the glyphs vertically by 1@dmn{m}, and the
+pile itself is centered 0.5@dmn{m} above the text baseline. The
+horizontal drawing position is then advanced by the width of the widest
+glyph in the pile.
+
+@cindex @code{\b}, limitations of
+@cindex limitations of @code{\b} escape sequence
+This rather inflexible positioning algorithm doesn't work with the
+@code{dvi} output device since its bracket pieces vary in height.
+Instead, use the @code{geqn} preprocessor.
+
+@ref{Manipulating Spacing} describes how to adjust the vertical spacing
+of the output line with the @code{\x} escape sequence.
+
+The application of @code{\b} that lends its name is construction of
+brackets, braces, and parentheses when typesetting mathematics. We
+might construct a large opening (left) brace as follows.
+
+@Example
+\b'\[lt]\[bv]\[lk]\[bv]\[lb]'
+@endExample
+
+See @cite{groff_char@r{(7)}} for a list of special character
+identifiers.
+@endDefesc
+
+
+@c =====================================================================
+
+@node Deferring Output, Traps, Drawing Geometric Objects, GNU troff Reference
+@section Deferring Output
+@cindex deferred output
+
+@cindex environment
+@cindex diversion
+@cindex trap
+A few @code{roff} language elements are generally not used in simple
+documents, but arise as page layouts become more sophisticated and
+demanding. @dfn{Environments} collect formatting parameters like line
+length and typeface. A @dfn{diversion} stores formatted output for
+later use. A @dfn{trap} is a condition on the input or output, tested
+automatically by the formatter, that is associated with a macro, causing
+it to be called when that condition is fulfilled.
+
+Footnote support often exercises all three of the foregoing features. A
+simple implementation might work as follows. A pair of macros is
+defined: one starts a footnote and the other ends it. The author calls
+the first macro where a footnote marker is desired. The macro
+establishes a diversion so that the footnote text is collected at the
+place in the body text where its corresponding marker appears. An
+environment is created for the footnote so that it is set at a smaller
+typeface. The footnote text is formatted in the diversion using that
+environment, but it does not yet appear in the output. The document
+author calls the footnote end macro, which returns to the previous
+environment and ends the diversion. Later, after much more body text in
+the document, a trap, set a small distance above the page bottom, is
+sprung. The macro called by the trap draws a line across the page and
+emits the stored diversion. Thus, the footnote is rendered.
+
+Diversions and traps make the text formatting process non-linear. Let
+us imagine a set of text lines or paragraphs labelled @samp{A},
+@samp{B}, and so on. If we set up a trap that produces text @samp{T}
+(as a page footer, say), and we also use a diversion to store the
+formatted text @samp{D}, then a document with input text in the order
+@samp{A B C D E F} might render as @samp{A B C E T F}. The diversion
+@samp{D} will never be output if we do not call for it.
+
+Environments of themselves are not a source of non-linearity in document
+formatting:@: environment switches have immediate effect. One could
+always write a macro to change as many formatting parameters as desired
+with a single convenient call. But because diversions can be nested and
+macros called by traps that are sprung by other trap-called macros, they
+may be called upon in varying contexts. For example, consider a page
+header that is always to be set in Helvetica. A document that uses
+Times for most of its body text, but Courier for displayed code
+examples, poses a challenge if a page break occurs in the middle of a
+code display; if the header trap assumes that the ``previous font'' is
+always Times, the rest of the example will be formatted in the wrong
+typeface. One could carefully save all formatting parameters upon
+entering the trap and restore them upon leaving it, but this is verbose,
+error-prone, and not future-proof as the @code{groff} language develops.
+Environments save us considerable effort.
+
+@c =====================================================================
+
+@need 1000
+@c BEGIN Keep (roughly) parallel with subsection "Traps" of groff(7).
+@node Traps, Diversions, Deferring Output, GNU troff Reference
+@section Traps
+@cindex traps
+
+@dfn{Traps} are locations in the output or conditions on the input that,
+when reached or fulfilled, call a specified macro. These traps can
+occur at a given location on the page, at a given location in the
+current diversion (together, these are known as @slanted{vertical
+position traps}), at a blank line, at a line with leading space
+characters, after a quantity of input lines, or at the end of input.
+Macros called by traps are passed no arguments.
+@cindex planting a trap
+@cindex trap, planting
+Setting a trap is also called @dfn{planting} one.
+@cindex trap, springing
+@cindex springing a trap
+It is said that a trap is @dfn{sprung} if its condition is fulfilled.
+@c END Keep (roughly) parallel with subsection "Traps" of groff(7).
+
+@menu
+* Vertical Position Traps::
+* Diversion Traps::
+* Input Line Traps::
+* Blank Line Traps::
+* Leading Space Traps::
+* End-of-input Traps::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Vertical Position Traps, Page Location Traps, Traps, Traps
+@subsection Vertical Position Traps
+@cindex vertical position traps
+@cindex traps, vertical position
+
+A @dfn{vertical position trap} calls a macro when the formatter's
+vertical drawing position reaches or passes, in the downward direction,
+a certain location on the output page or in a diversion. Its
+applications include setting page headers and footers, body text in
+multiple columns, and footnotes.
+
+@DefreqList {vpt, [@Var{flag}]}
+@DefregListEndx {.vpt}
+@cindex enabling vertical position traps (@code{vpt})
+@cindex vertical position traps, enabling (@code{vpt})
+@cindex vertical position trap enable register (@code{.vpt})
+Enable vertical position traps if @var{flag} is non-zero or absent;
+disable them otherwise. Vertical position traps are those set by the
+@code{wh} request or by @code{dt} within a diversion. The parameter
+that controls whether vertical position traps are enabled is global.
+Initially, vertical position traps are enabled. The current value is
+stored in the @code{.vpt} read-only register.
+
+@cindex page break, prevented by @code{vpt}
+@cindex break, page, prevented by @code{vpt}
+@cindex page ejection, prevented by @code{vpt}
+@cindex ejection, page, prevented by @code{vpt}
+A page can't be ejected if @code{vpt} is set to zero; see @ref{The
+Implicit Page Trap}.
+@endDefreq
+
+@menu
+* Page Location Traps::
+* The Implicit Page Trap::
+* Diversion Traps::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Page Location Traps, The Implicit Page Trap, Vertical Position Traps, Vertical Position Traps
+@subsubsection Page Location Traps
+@cindex page location traps
+@cindex traps, page location
+
+A @dfn{page location trap} is a vertical position trap that applies to
+the page; that is, to undiverted output. Many can be present; manage
+them with the @code{wh} and @code{ch} requests.
+
+@Defreq {wh, dist [@Var{name}]}
+Plant macro @var{name} as page location trap at @var{dist}. The default
+scaling unit is @samp{v}. Non-negative values for @var{dist} set the
+trap relative to the top of the page; negative values set the trap
+relative to the bottom of the page. It is not possible to plant a trap
+less than one basic unit from the page bottom: a @var{dist} of @code{-0}
+is interpreted as @code{0}, the top of the page.@footnote{@xref{The
+Implicit Page Trap}.} An existing @emph{visible} trap (see below) at
+@var{dist} is removed; this is @code{wh}'s sole function if @var{name}
+is missing.
+
+A trap is sprung only if it is @dfn{visible}, meaning that its location
+is reachable on the page@footnote{A trap planted at @samp{20i} or
+@samp{-30i} will not be sprung on a page of length @samp{11i}.} and it
+is not hidden by another trap at the same location already planted
+there.
+
+@need 1000
+@cindex page headers
+@cindex page footers
+@cindex headers
+@cindex footers
+@cindex top margin
+@cindex margin, top
+@cindex bottom margin
+@cindex margin, bottom
+A macro package might set headers and footers as follows; this example
+configures vertical margins of one inch to the body text, and one
+half-inch to the titles. Observe the use of the no-break control
+character with @code{sp} request to position our text baselines,
+and the page number character @samp{%} used with the @code{tl} request.
+
+@Example
+.\" hdfo.roff
+.de hd \" page header
+' sp .5i
+' tl '\\*(Ti''\\*(Da' \" title and date strings
+' sp .5i
+..
+.de fo \" page footer
+' sp .5i
+. tl ''%''
+. bp
+..
+.wh 0 hd \" trap at top of the page
+.wh -1i fo \" trap 1 inch from bottom
+@endExample
+
+To use these traps, copy the above (or load it from a file with the
+@code{so} or @code{mso} requests), then set up the strings it uses.
+
+@Example
+.so hdfo.roff
+.ds Ti Final Report\"
+.ds Da 21 May 2023\"
+.ti
+On 5 August of last year,
+this committee tasked me with the investigation of the
+CFIT (controlled flight into terrain) incident of
+.\" @i{...and so on...}
+@endExample
+
+A trap above the top or at or below the bottom of the page can be made
+visible by either moving it into the page area or increasing the page
+length so that the trap is on the page. Negative trap values always use
+the @emph{current} page length; they are not converted to an absolute
+vertical position.
+@cindex page location traps, debugging
+@cindex debugging page location traps
+We can use the @code{ptr} request to dump our page location traps to the
+standard error stream (@pxref{Debugging}). Their positions are reported
+in basic units; an @code{nroff} device example follows.
+
+@Example
+.pl 5i
+.wh -1i xx
+.ptr
+ @error{} xx -240
+.pl 100i
+.ptr
+ @error{} xx -240
+@endExample
+
+It is possible to have more than one trap at the same location (although
+only one at a time can be visible); to achieve this, the traps must be
+defined at different locations, then moved to the same place with the
+@code{ch} request. In the following example, the many empty lines
+caused by the @code{bp} request are not shown in the output.
+
+@Example
+.de a
+. nop a
+..
+.de b
+. nop b
+..
+.de c
+. nop c
+..
+.
+.wh 1i a
+.wh 2i b
+.wh 3i c
+.bp
+ @result{} a b c
+@endExample
+@Example
+.ch b 1i
+.ch c 1i
+.bp
+ @result{} a
+@endExample
+@Example
+.ch a 0.5i
+.bp
+ @result{} a b
+@endExample
+@endDefreq
+
+@Defreg {.t}
+@cindex distance to next vertical position trap register (@code{.t})
+@cindex trap, distance to next vertical position, register (@code{.t})
+The read-only register @code{.t} holds the distance to the next vertical
+position trap. If there are no traps between the current position and
+the bottom of the page, it contains the distance to the page bottom.
+Within a diversion, in the absence of a diversion trap, this distance is
+the largest representable integer in basic units---effectively infinite.
+@endDefreg
+
+@Defreq {ch, name [@Var{dist}]}
+@cindex changing trap location (@code{ch})
+@cindex trap, changing location (@code{ch})
+Change the location of a trap by moving macro @var{name} to new location
+@var{dist}, or by unplanting it altogether if @var{dist} is absent. The
+default scaling unit is @samp{v}. Parameters to @code{ch} are specified
+in the opposite order from @code{wh}. If @var{name} is the earliest
+planted macro of multiple traps at the same location, (re)moving it from
+that location exposes the macro next least recently planted at the same
+place.@footnote{It may help to think of each trap location as
+maintaining a queue; @code{wh} operates on the head of the queue, and
+@code{ch} operates on its tail. Only the trap at the head of the queue
+is visible.}
+
+Changing a trap's location is useful for building up footnotes in a
+diversion to allow more space at the bottom of the page for them.
+
+@c XXX
+
+@ignore
+@Example
+... (simplified) footnote example ...
+@endExample
+@end ignore
+@endDefreq
+
+The same macro can be installed simultaneously at multiple locations;
+however, only the earliest-planted instance---that has not yet been
+deleted with @code{wh}---will be moved by @code{ch}. The following
+example (using an @code{nroff} device) illustrates this behavior. Blank
+lines have been elided from the output.
+
+@Example
+.de T
+Trap sprung at \\n(nlu.
+.br
+..
+.wh 1i T
+.wh 2i T
+foo
+.sp 11i
+.bp
+.ch T 4i
+bar
+.sp 11i
+.bp
+.ch T 5i
+baz
+.sp 11i
+.bp
+.wh 5i
+.ch T 6i
+qux
+.sp 11i
+@endExample
+@Example
+ @result{} foo
+ @result{} Trap sprung at 240u.
+ @result{} Trap sprung at 480u.
+ @result{} bar
+ @result{} Trap sprung at 480u.
+ @result{} Trap sprung at 960u.
+ @result{} baz
+ @result{} Trap sprung at 480u.
+ @result{} Trap sprung at 1200u.
+ @result{} qux
+ @result{} Trap sprung at 1440u.
+@endExample
+
+@Defreg {.ne}
+The read-only register @code{.ne} contains the amount of space that was
+needed in the last @code{ne} request that caused a trap to be sprung;
+it is useful in conjunction with the @code{.trunc} register. @xref{Page
+Control}. Since the @code{.ne} register is set only by traps, it
+doesn't make sense to interpolate it outside of macros called by traps.
+@endDefreg
+
+@Defreg {.trunc}
+@cindex @code{ne} request, and the @code{.trunc} register
+@cindex truncated vertical space register (@code{.trunc})
+A read-only register containing the amount of vertical space truncated
+from an @code{sp} request by the most recently sprung vertical
+position trap, or, if the trap was sprung by an @code{ne} request,
+minus the amount of vertical motion produced by the @code{ne}
+request. In other words, at the point a trap is sprung, it
+represents the difference of what the vertical position would have
+been but for the trap, and what the vertical position actually is.
+Since the @code{.trunc} register is set only by traps, it doesn't make
+sense to interpolate it outside of macros called by traps.
+@endDefreg
+
+@Defreg {.pe}
+@cindex @code{bp} request, and traps (@code{.pe})
+@cindex traps, sprung by @code{bp} request (@code{.pe})
+@cindex page ejection status register (@code{.pe})
+This Boolean-valued, read-only register interpolates@tie{}1 while a page
+is being ejected, and 0@tie{}otherwise.
+
+In the following example, we plant the same trap at the top and the
+bottom of the page. We also make the trap report its name and the
+vertical drawing position.
+
+@Example
+.de T
+.tm \\$0: page \\n%, nl=\\n[nl] .pe=\\n[.pe]
+..
+.ll 46n
+.wh 0 T
+.wh -1v T
+Those who can make you believe absurdities can make you
+commit atrocities. \[em] Voltaire
+ @error{} T: page 1, nl=0 .pe=0
+ @error{} T: page 1, nl=2600 .pe=1
+ @result{} Those who can make you believe absurdities can
+ @result{} make you commit atrocities. -- Voltaire
+@endExample
+@endDefreg
+
+@cindex diversions, and traps
+@cindex traps, and diversions
+When designing macros, keep in mind that diversions and traps do
+normally interact. For example, if a trap calls a header macro (while
+outputting a diversion) that tries to change the font on the current
+page, the effect is not visible before the diversion has completely been
+printed (except for input protected with @code{\!} or @code{\?}) since
+the data in the diversion is already formatted. In most cases, this is
+not the expected behaviour.
+
+@c ---------------------------------------------------------------------
+
+@c BEGIN Keep (roughly) parallel with subsection "The implicit page
+@c trap" of groff(7).
+@node The Implicit Page Trap, Diversion Traps, Page Location Traps, Vertical Position Traps
+@subsubsection The Implicit Page Trap
+@cindex implicit trap
+@cindex trap, implicit
+
+@cindex page break
+@cindex break, page
+@cindex page ejection
+@cindex ejection, page
+If, after starting GNU @code{troff} without loading a macro package, you
+use the @code{ptr} request to dump a list of the active traps to the
+standard error stream,@footnote{@xref{Debugging}.} nothing is reported.
+Yet the @code{.t} register will report a steadily decreasing value with
+every output line your document produces, and once the value of
+@code{.t} gets to within @code{.V} of zero, you will notice that
+something trap-like happens---the page is ejected, a new one begins, and
+the value of @code{.t} becomes large once more.
+
+This @dfn{implicit page trap} always exists in the top-level
+diversion;@footnote{@xref{Diversions}.} it works like a trap in some
+ways but not others. Its purpose is to eject the current page and start
+the next one. It has no name, so it cannot be moved or deleted with
+@code{wh} or @code{ch} requests. You cannot hide it by placing another
+trap at its location, and can move it only by redefining the page length
+with @code{pl}. Its operation is suppressed when vertical page traps
+are disabled with GNU @code{troff}'s @code{vpt} request.
+@c END Keep (roughly) parallel with subsection "The implicit trap" of
+@c groff(7).
+
+@c ---------------------------------------------------------------------
+
+@node Diversion Traps, Input Line Traps, The Implicit Page Trap, Vertical Position Traps
+@subsubsection Diversion Traps
+@cindex diversion traps
+@cindex traps, diversion
+
+A diversion is not formatted in the context of a page, so it lacks page
+location traps; instead it can have a @dfn{diversion trap}. There can
+exist at most one such vertical position trap per diversion.
+
+@Defreq {dt, [@Var{dist} @Var{name}]}
+@cindex @code{.t} register, and diversions
+@cindex setting diversion trap (@code{dt})
+@cindex diversion trap, setting (@code{dt})
+@cindex trap, diversion, setting (@code{dt})
+Set a trap @emph{within} a diversion at location @var{dist}, which is
+interpreted relative to diversion rather than page boundaries. If invoked with
+fewer than two arguments, any diversion trap in the current diversion is
+removed. The register @code{.t} works within diversions. It is an
+error to invoke @code{dt} in the top-level diversion.
+@xref{Diversions}.
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node Input Line Traps, Blank Line Traps, Diversion Traps, Traps
+@subsection Input Line Traps
+@cindex input line traps
+@cindex traps, input line
+
+@DefreqList {it, [@Var{n} @Var{name}]}
+@DefreqListEndx {itc, [@Var{n} @Var{name}]}
+@cindex setting input line trap (@code{it}, @code{itc})
+@cindex input line trap, setting (@code{it}, @code{itc})
+@cindex trap, input line, setting (@code{it}, @code{itc})
+@cindex clearing input line trap (@code{it}, @code{itc})
+@cindex input line trap, clearing (@code{it}, @code{itc})
+@cindex trap, input line, clearing (@code{it}, @code{itc})
+Set an input line trap, calling macro @var{name} after processing the
+next @var{n}@tie{}productive input lines (recall @ref{Manipulating
+Filling and Adjustment}). Any existing input line trap in the
+environment is replaced. Without arguments, @code{it} and @code{itc}
+clear any input line trap that has not yet sprung.
+
+Consider a macro @samp{.ST @var{s n}} which sets the next
+@var{n}@tie{}input lines in the font style@tie{}@var{s}.
+
+@Example
+.de ST \" Use style $1 for next $2 text lines.
+. it \\$2 ES
+. ft \\$1
+..
+.de ES \" end ST
+. ft R
+..
+.ST I 1
+oblique
+face
+.ST I 1
+oblique\c
+face
+ @result{} @i{oblique} face @i{oblique}face @
+@r{(second ``face'' upright)}
+@endExample
+
+@cindex input line traps and interrupted lines (@code{itc})
+@cindex interrupted lines and input line traps (@code{itc})
+@cindex traps, input line, and interrupted lines (@code{itc})
+@cindex lines, interrupted, and input line traps (@code{itc})
+Unlike the @code{ce} and @code{rj} requests, @code{it} counts lines
+interrupted with the @code{\c} escape sequence separately (@pxref{Line
+Continuation}); @code{itc} does not. To see the difference, let's
+change the previous example to use @code{itc} instead.
+
+@Example
+@r{@dots{}}
+. itc \\$2 ES
+@r{@dots{}}
+ @result{} @i{oblique} face @i{obliqueface} @
+@r{(second ``face'' oblique)}
+@endExample
+
+You can think of the @code{ce} and @code{rj} requests as implicitly
+creating an input line trap with @code{itc} that schedules a break when
+the trap is sprung.
+
+@Example
+.de BR
+. br
+. @slanted{internal: disable centering-without-filling}
+..
+.
+.de ce
+. if \\n[.br] .br
+. itc \\$1 BR
+. @slanted{internal: enable centering-without-filling}
+..
+@endExample
+
+@need 500
+Let us consider in more detail the sorts of input lines that are or are
+not ``productive''.
+
+@Example
+.de Trap
+TRAP SPRUNG
+..
+.de Mac
+.if r a \l'5n'
+..
+.it 2 Trap
+.
+foo
+.Mac
+bar
+baz
+.it 1 Trap
+.sp \" moves, but does not write or draw
+qux
+.itc 1 Trap
+\h'5n'\c \" moves, but does not write or draw
+jat
+@endExample
+
+@noindent
+When @samp{Trap} gets called depends on whether the @samp{a} register is
+defined; the control line with the @code{if} request may or may not
+produce written output. We also see that the spacing request @code{sp},
+while certainly affecting the output, does not spring the input line
+trap. Similarly, the horizontal motion escape sequence @code{\h} also
+affected the output, but was not ``written''. Observe that we had to
+follow it with @code{\c} and use @code{itc} to prevent the newline at
+the end of the text line from causing a word break, which, like an
+ordinary space character, counts as written output.
+
+@Example
+$ groff -Tascii input-trap-example.groff
+ @result{} foo bar TRAP SPRUNG baz
+ @result{}
+ @result{} qux TRAP SPRUNG jat TRAP SPRUNG
+$ groff -Tascii -ra1 input-trap-example.groff
+ @result{} foo _____ TRAP SPRUNG bar baz
+ @result{}
+ @result{} qux TRAP SPRUNG jat TRAP SPRUNG
+@endExample
+@endDefreq
+
+Input line traps are associated with the environment
+(@pxref{Environments}); switching to another environment suspends the
+current input line trap, and going back resumes it, restoring the count
+of qualifying lines enumerated in that environment.
+
+@c ---------------------------------------------------------------------
+
+@node Blank Line Traps, Leading Space Traps, Input Line Traps, Traps
+@subsection Blank Line Traps
+@cindex blank line traps
+@cindex traps, blank line
+
+@Defreq {blm, [@Var{name}]}
+@cindex blank line macro (@code{blm})
+Set a blank line trap, calling the macro @var{name} when GNU
+@code{troff} encounters a blank line in an input file, instead of the
+usual behavior (@pxref{Breaking}). A line consisting only of spaces is
+also treated as blank and subject to this trap. If no argument is
+supplied, the default blank line behavior is (re-)established.
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node Leading Space Traps, End-of-input Traps, Blank Line Traps, Traps
+@subsection Leading Space Traps
+@cindex leading space traps
+@cindex traps, leading space
+
+@DefreqList {lsm, [@Var{name}]}
+@DefregItemx {lsn}
+@DefregListEndx {lss}
+@cindex leading spaces macro (@code{lsm})
+Set a leading space trap, calling the macro @var{name} when GNU
+@code{troff} encounters leading spaces in an input line; the implicit
+line break that normally happens in this case is suppressed. If no
+argument is supplied, the default leading space behavior is
+(re-)established (@pxref{Breaking}).
+
+The count of leading spaces on an input line is stored in register
+@code{lsn}, and the amount of corresponding horizontal motion in
+register @code{lss}, irrespective of whether a leading space trap is
+set. When it is, the leading spaces are removed from the input line,
+and no motion is produced before calling @var{name}.
+
+@c XXX The following discussion does not seem to be correct; leading
+@c space traps don't "see" _any_ input tokens. Nothing on the line is
+@c passed to it as arguments, and tokens after leading spaces are
+@c processed normally after the designated macro is interpolated. XXX
+@c
+@c The first thing a leading space macro sees is a token. However, some
+@c escape sequences, like @code{\f} and @code{\m}, are handled on the
+@c fly (@pxref{Gtroff Internals} for a complete list) without creating a
+@c token at all. Consider a line that starts with two spaces followed
+@c by @samp{\fIfoo}. After skipping the spaces, @samp{\fI} is handled
+@c as well such that @code{groff}'s current font is set to @code{I}, but
+@c the leading space macro sees only @samp{foo} without the preceding
+@c @samp{\fI}. If the macro should see the font escape, you have to
+@c ``protect'' it with something that creates a token, like the
+@c dummy character; for example, @samp{\&\fIfoo}.
+@endDefreq
+
+@c ---------------------------------------------------------------------
+
+@node End-of-input Traps, , Leading Space Traps, Traps
+@subsection End-of-input Traps
+@cindex end-of-input traps
+@cindex traps, end-of-input
+
+@Defreq {em, [@Var{name}]}
+@cindex setting end-of-input trap (@code{em})
+@cindex end-of-input trap, setting (@code{em})
+@cindex trap, end-of-input, setting (@code{em})
+@cindex end-of-input macro (@code{em})
+@cindex macro, end-of-input (@code{em})
+Set a trap at the end of input, calling macro @var{name} after the last
+line of the last input file has been processed. If no argument is
+given, any existing end-of-input trap is removed.
+
+For example, if the document had to have a section at the bottom of the
+last page for someone to approve it, the @code{em} request could be
+used.
+
+@Example
+.de approval
+\c
+. ne 3v
+. sp (\\n[.t]u - 3v)
+. in +4i
+. lc _
+. br
+Approved:\t\a
+. sp
+Date:\t\t\a
+..
+.
+.em approval
+@endExample
+
+The @code{\c} in the above example needs explanation. For historical
+reasons (compatibility with @acronym{AT&T} @code{troff}), the
+end-of-input macro exits as soon as it causes a page break if no
+partially collected line remains.@footnote{While processing an
+end-of-input macro, the formatter assumes that the next page break must
+be the last; it goes into ``sudden death overtime''.}
+
+@cindex page break, final
+@cindex break, page, final
+@cindex page ejection, of final page
+@cindex ejection, page, of final page
+Let us assume that there is no @code{\c} in the above @code{approval}
+macro, that the page is full, and last output line has been broken with,
+say, a @code{br} request. Because there is no more room, a @code{ne}
+request at this point causes a page ejection, which in turn makes
+@code{troff} exit immediately as just described. In most situations,
+this is not desired; people generally want to format the input after
+@code{ne}.
+
+To force processing of the whole end-of-input macro independently of
+this behavior, it is thus advisable to (invisibly) ensure the existence
+of a partially collected line (@code{\c}) whenever there is a chance
+that a page break can happen. In the above example, invoking the
+@code{ne} request ensures that there is room for the subsequent
+formatted output on the same page, so we need insert @code{\c} only
+once.
+
+The next example shows how to append three lines, then start a new page
+unconditionally. Since @w{@samp{.ne 1}} doesn't give the desired
+effect---there is always one line available or we are already at the
+beginning of the next page---we temporarily increase the page length by
+one line so that we can use @w{@samp{.ne 2}}.
+
+@Example
+.de EM
+.pl +1v
+\c
+.ne 2
+line one
+.br
+\c
+.ne 2
+line two
+.br
+\c
+.ne 2
+line three
+.br
+.pl -1v
+\c
+'bp
+..
+.em EM
+@endExample
+
+This specific feature affects only the first potential page break caused
+by the end-of-input macro; further page breaks emitted by the macro are
+handled normally.
+
+Another possible use of the @code{em} request is to make GNU
+@code{troff} emit a single large page instead of multiple pages. For
+example, one may want to produce a long plain text file for reading
+in a terminal or emulator without page footers and headers interrupting
+the body of the document. One approach is to set the page length at the
+beginning of the document to a very large value to hold all the
+text,@footnote{Another, taken by the @code{groff} @code{man} macros, is
+to intercept @code{ne} requests and wrap @code{bp} ones.} and
+automatically adjust it to the exact height of the document after the
+text has been output.
+
+@Example
+.de adjust-page-length
+. br
+. pl \\n[nl]u \" \n[nl]: current vertical position
+..
+.
+.de single-page-mode
+. pl 99999
+. em adjust-page-length
+..
+.
+.\" Activate the above code if configured.
+.if \n[do-continuous-rendering] \
+. single-page-mode
+@endExample
+
+Since only one end-of-input trap exists and another macro package may
+already use it, care must be taken not to break the mechanism. A simple
+solution would be to append the above macro to the macro package's
+end-of-input macro using the @code{am} request.
+@endDefreq
+
+
+@c =====================================================================
+
+@c BEGIN Keep (roughly) parallel with subsection "Diversions" of
+@c groff(7).
+@node Diversions, Punning Names, Traps, GNU troff Reference
+@section Diversions
+@cindex diversions
+
+In @code{roff} systems it is possible to format text as if for output,
+but instead of writing it immediately, one can @dfn{divert} the
+formatted text into a named storage area. It is retrieved later by
+specifying its name after a control character. The same name space is
+used for such @slanted{diversions} as for strings and macros; see
+@ref{Identifiers}. Such text is sometimes said to be ``stored in a
+macro'', but this coinage obscures the important distinction between
+macros and strings on one hand and diversions on the other; the former
+store @emph{unformatted} input text, and the latter capture
+@emph{formatted} output. Diversions also do not interpret arguments.
+Applications of diversions include ``keeps'' (preventing a page break
+from occurring at an inconvenient place by forcing a set of output lines
+to be set as a group), footnotes, tables of contents, and indices.
+@cindex top-level diversion
+@cindex diversion, top-level
+For orthogonality it is said that GNU @code{troff} is in the
+@dfn{top-level diversion} if no diversion is active (that is, formatted
+output is being ``diverted'' immediately to the output device).
+
+Dereferencing an undefined diversion will create an empty one of that
+name and cause a warning in category @samp{mac} to be emitted.
+@xref{Warnings}, for information about the enablement and suppression of
+warnings. A diversion does not exist for the purpose of testing with
+the @code{d} conditional operator until its initial definition ends
+(@pxref{Operators in Conditionals}). The following requests are used to
+create and alter diversions.
+@c END Keep (roughly) parallel with subsection "Diversions" of groff(7).
+
+@DefreqList {di, [@Var{name}]}
+@DefreqListEndx {da, [@Var{name}]}
+@cindex beginning diversion (@code{di}, @code{box})
+@cindex diversion, beginning (@code{di}, @code{box})
+@cindex ending diversion (@code{di}, @code{box})
+@cindex diversion, ending (@code{di}, @code{box})
+@cindex appending to a diversion (@code{da}, @code{boxa})
+@cindex diversion, appending to (@code{da}, @code{boxa})
+Start collecting formatted output in a diversion called @var{name}. The
+@code{da} request appends to a diversion called @var{name}, creating it
+if necessary. If @var{name} already exists as an alias, the target of
+the alias is replaced or appended to; recall @ref{Strings}. The pending
+output line is diverted as well. Switching to another environment (with
+the @code{ev} request) before invoking @code{di} or @code{da} avoids
+including any pending output line in the diversion; see
+@ref{Environments}.
+
+Invoking @code{di} or @code{da} without an argument stops diverting
+output to the diversion named by the most recent corresponding request.
+If @code{di} or @code{da} is called without an argument when there is no
+current diversion, a warning in category @samp{di} is produced.
+@xref{Warnings}, for information about the enablement and suppression
+of warnings.
+
+@Example
+Before the diversion.
+.di yyy
+In the diversion.
+.br
+.di
+After the diversion.
+.br
+ @result{} After the diversion.
+.yyy
+ @result{} Before the diversion. In the diversion.
+@endExample
+@endDefreq
+
+@cindex box (diversion operation)
+GNU @code{troff} supports @dfn{box} requests to exclude a partially
+collected line from a diversion, as this is often desirable.
+
+@DefreqList {box, [@Var{name}]}
+@DefreqListEndx {boxa, [@Var{name}]}
+Divert (or append) output to @var{name}, similarly to the @code{di} and
+@code{da} requests, respectively. Any pending output line is @emph{not}
+included in the diversion. Without an argument, stop diverting output;
+any pending output line inside the diversion is discarded.
+
+@Example
+Before the box.
+.box xxx
+In the box.
+.br
+Hidden treasure.
+.box
+After the box.
+.br
+ @result{} Before the box. After the box.
+.xxx
+ @result{} In the box.
+@endExample
+@endDefreq
+
+Apart from pending output line inclusion and the request names that
+populate them, boxes are handled exactly as diversions are. All of the
+following @code{groff} language elements can be used with them
+interchangeably.
+
+@DefregList {.z}
+@DefregListEndx {.d}
+@cindex @code{nl} register, and @code{.d}
+@cindex nested diversions
+@cindex diversion, nested
+@cindex diversion name register (@code{.z})
+@cindex vertical position in diversion register (@code{.d})
+@cindex position, vertical, in diversion, register (@code{.d})
+@cindex diversion, vertical position in, register (@code{.d})
+Diversions may be nested. The read-only string-valued register
+@code{.z} contains the name of the current diversion. The read-only
+register @code{.d} contains the current vertical place in the diversion.
+If the input text is not being diverted, @code{.d} reports the same
+location as the register @code{nl}.
+@endDefreg
+
+@Defreg {.h}
+@cindex high-water mark register (@code{.h})
+@cindex mark, high-water, register (@code{.h})
+@cindex position of lowest text line (@code{.h})
+@cindex text line, position of lowest (@code{.h})
+The read-only register @code{.h} stores the @dfn{high-water mark} on the
+current page or in the current diversion. It corresponds to the text
+baseline of the lowest line on the page.@footnote{Thus, the ``water''
+gets ``higher'' proceeding @emph{down} the page.}
+
+@Example
+.tm .h==\n[.h], nl==\n[nl]
+ @result{} .h==0, nl==-1
+This is a test.
+.br
+.sp 2
+.tm .h==\n[.h], nl==\n[nl]
+ @result{} .h==40, nl==120
+@endExample
+
+@cindex @code{.h} register, difference from @code{nl}
+@cindex @code{nl} register, difference from @code{.h}
+@noindent
+As implied by the example, vertical motion does not produce text
+baselines and thus does not increase the value interpolated by
+@samp{\n[.h]}.
+@endDefreg
+
+@DefregList {dn}
+@DefregListEndx {dl}
+@cindex @code{dn} register, and @code{da} (@code{boxa})
+@cindex @code{dl} register, and @code{da} (@code{boxa})
+@cindex @code{da} request, and @code{dn} (@code{dl})
+@cindex @code{boxa} request, and @code{dn} (@code{dl})
+After completing a diversion, the writable registers @code{dn} and
+@code{dl} contain its vertical and horizontal sizes. Only the lines
+just processed are counted: for the computation of @code{dn} and
+@code{dl}, the requests @code{da} and @code{boxa} are handled as if
+@code{di} and @code{box} had been used, respectively---lines that have
+been already stored in the diversion (box) are not taken into account.
+
+@Example
+.\" Center text both horizontally and vertically.
+.\" Macro .(c starts centering mode; .)c terminates it.
+.
+.\" Disable the escape character with .eo so that we
+.\" don't have to double backslashes on the "\n"s.
+.eo
+.de (c
+. br
+. ev (c
+. evc 0
+. in 0
+. nf
+. di @@c
+..
+@endExample
+@Example
+.de )c
+. br
+. ev
+. di
+. nr @@s (((\n[.t]u - \n[dn]u) / 2u) - 1v)
+. sp \n[@@s]u
+. ce 1000
+. @@c
+. ce 0
+. sp \n[@@s]u
+. br
+. fi
+. rr @@s
+. rm @@c
+..
+.ec
+@endExample
+@endDefreg
+
+@DefescList {\\!, , anything, }
+@DefescListEndx {\\?, , anything, \\?}
+@cindex transparent output (@code{\!}, @code{\?})
+@cindex output, transparent (@code{\!}, @code{\?})
+@dfn{Transparently} embed @var{anything} into the current diversion,
+preventing requests, macro calls, and escape sequences from being
+interpreted when read into a diversion. This is useful for preventing
+them from taking effect until the diverted text is actually output. The
+@code{\!} escape sequence transparently embeds input up to and including
+the end of the line. The @code{\?} escape sequence transparently embeds
+input until its own next occurrence.
+
+@cindex @code{\?}, and copy mode
+@cindex copy mode, and @code{\?}
+@cindex mode, copy, and @code{\?}
+@cindex @code{\!}, and copy mode
+@cindex copy mode, and @code{\!}
+@cindex mode, copy, and @code{\!}
+@noindent
+@var{anything} may not contain newlines; use @code{\!} by itself to
+embed newlines in a diversion. The escape sequence @code{\?} is also
+recognized in copy mode and turned into a single internal code; it is
+this code that terminates @var{anything}. Thus the following example
+prints@tie{}4.
+
+@Example
+.nr x 1
+.nf
+.di d
+\?\\?\\\\?\\\\\\\\nx\\\\?\\?\?
+.di
+.nr x 2
+.di e
+.d
+.di
+.nr x 3
+.di f
+.e
+.di
+.nr x 4
+.f
+@endExample
+
+Both escape sequences read the data in copy mode.
+
+@cindex @code{\!}, in top-level diversion
+@cindex top-level diversion, and @code{\!}
+@cindex diversion, top-level, and @code{\!}
+If @code{\!} is used in the top-level diversion, its argument is
+directly embedded into GNU @code{troff}'s intermediate output. This can
+be used, for example, to control a postprocessor that processes the data
+before it is sent to an output driver.
+
+@cindex @code{\?}, in top-level diversion
+@cindex top-level diversion, and @code{\?}
+@cindex diversion, top-level, and @code{\?}
+The @code{\?} escape used in the top-level diversion produces no output
+at all; its argument is simply ignored.
+@endDefesc
+
+@cindex @code{\!}, and @code{output} request
+@cindex @code{output} request, and @code{\!}
+@cindex @code{output} request, and copy mode
+@cindex copy mode, and @code{output} request
+@cindex mode, copy, and @code{output} request
+@Defreq {output, contents}
+Emit @var{contents} directly to GNU @code{troff}'s intermediate output
+(subject to copy mode interpretation); this is similar to @code{\!} used
+at the top level. An initial neutral double quote in @var{contents} is
+stripped to allow embedding of leading spaces.
+
+This request can't be used before the first page has started---if you
+get an error, simply insert @code{.br} before the @code{output} request.
+
+Use with caution! It is normally only needed for mark-up used by a
+postprocessor that does something with the output before sending it to
+the output device, filtering out @var{contents} again.
+@endDefreq
+
+@Defreq {asciify, div}
+@cindex unformatting diversions (@code{asciify})
+@cindex diversion, unformatting (@code{asciify})
+@cindex @code{trin} request, and @code{asciify}
+@dfn{Unformat} the diversion @var{div} in a way such that Unicode basic
+Latin (@acronym{ASCII}) characters, characters translated with the
+@code{trin} request, space characters, and some escape sequences, that
+were formatted and diverted into @var{div} are treated like ordinary
+input characters when @var{div} is reread. Doing so can be useful in
+conjunction with the @code{writem} request. @code{asciify} can be also
+used for gross hacks; for example, the following sets
+register@tie{}@code{n} to@tie{}1.
+
+@Example
+.tr @@.
+.di x
+@@nr n 1
+.br
+.di
+.tr @@@@
+.asciify x
+.x
+@endExample
+
+@code{asciify} cannot return all items in a diversion to their source
+equivalent: nodes such as those produced by the @code{\N} escape
+sequence will remain nodes, so the result cannot be guaranteed to be a
+pure string. @xref{Copy Mode}. Glyph parameters such as the type face
+and size are not preserved; use @code{unformat} to achieve that.
+@endDefreq
+
+@Defreq {unformat, div}
+Like @code{asciify}, unformat the diversion @var{div}. However,
+@code{unformat} handles only tabs and spaces between words, the latter
+usually arising from spaces or newlines in the input. Tabs are treated
+as input tokens, and spaces become adjustable again. The vertical sizes
+of lines are not preserved, but glyph information (font, type size,
+space width, and so on) is retained.
+@endDefreq
+
+
+@c =====================================================================
+
+@node Punning Names, Environments, Diversions, GNU troff Reference
+@section Punning Names
+@cindex diversions
+
+Macros, strings, and diversions share a name space; recall
+@ref{Identifiers}. Internally, the same mechanism is used to store
+them. You can thus call a macro with string interpolation syntax and
+vice versa.
+
+@Example
+.de subject
+Typesetting
+..
+.de predicate
+rewards attention to detail
+..
+\*[subject] \*[predicate].
+Truly.
+ @result{} Typesetting
+ @result{} rewards attention to detail Truly.
+@endExample
+
+@noindent
+What went wrong? Strings don't contain newlines, but macros do. String
+interpolation placed a newline at the end of @samp{\*[subject]}, and the
+next thing on the input was a space. Then when @samp{\*[predicate]} was
+interpolated, it was followed by the empty request @samp{.} on a line by
+itself. If we want to use macros as strings, we must take interpolation
+behavior into account.
+
+@Example
+.de subject
+Typesetting\\
+..
+.de predicate
+rewards attention to detail\\
+..
+\*[subject] \*[predicate].
+Truly.
+ @result{} Typesetting rewards attention to detail. Truly.
+@endExample
+
+@noindent
+By ending each text line of the macros with an escaped
+@code{\@key{RET}}, we get the desired effect (@pxref{Line
+Continuation}).@footnote{The backslash is doubled. @xref{Copy Mode}.}
+What would have happened if we had used only one backslash at a time
+instead?
+
+Interpolating a string does not hide existing macro arguments. We can
+also place the escaped newline outside the string interpolation instead
+of within the string definition. Thus, in a macro, a more efficient way
+of doing
+
+@Example
+.xx \\$@@
+@endExample
+
+@noindent
+is
+
+@Example
+\\*[xx]\\
+@endExample
+
+@noindent
+The latter calling syntax doesn't change the value of @code{\$0}, which
+is then inherited from the calling macro (@pxref{Parameters}).
+
+Diversions can be also called with string syntax. It is sometimes
+convenient to copy one-line diversions to a string.
+
+@Example
+.di xx
+the
+.ft I
+interpolation system
+.ft
+.br
+.di
+.ds yy This is a test of \*(xx\c
+\*(yy.
+ @result{} This is a test of the @i{interpolation system}.
+@endExample
+
+@noindent
+As the previous example shows, it is possible to store formatted output
+in strings. The @code{\c} escape sequence prevents the subsequent
+newline from being interpreted as a break (again,
+@pxref{Line Continuation}).
+
+Copying multi-output line diversions produces unexpected results.
+
+@Example
+.di xxx
+a funny
+.br
+test
+.br
+.di
+.ds yyy This is \*[xxx]\c
+\*[yyy].
+ @result{} test This is a funny.
+@endExample
+
+Usually, it is not predictable whether a diversion contains one or more
+output lines, so this mechanism should be avoided. With @acronym{AT&T}
+@code{troff}, this was the only solution to strip off a final newline
+from a diversion. Another disadvantage is that the spaces in the copied
+string are already formatted, preventing their adjustment. This can
+cause ugly results.
+
+@cindex stripping final newline in diversions
+@cindex diversion, stripping final newline
+@cindex final newline, stripping in diversions
+@cindex newline, final, stripping in diversions
+@cindex horizontal space, unformatting
+@cindex space, horizontal, unformatting
+@cindex unformatting horizontal space
+A clean solution to this problem is available in GNU @code{troff}, using
+the requests @code{chop} to remove the final newline of a diversion, and
+@code{unformat} to make the horizontal spaces adjustable again.
+
+@Example
+.box xxx
+a funny
+.br
+test
+.br
+.box
+.chop xxx
+.unformat xxx
+This is \*[xxx].
+ @result{} This is a funny test.
+@endExample
+
+@xref{Gtroff Internals}.
+
+@c =====================================================================
+
+@c BEGIN Keep parallel with section "Environments" of groff(7).
+@node Environments, Suppressing Output, Diversions, GNU troff Reference
+@section Environments
+@cindex environments
+
+As discussed in @ref{Deferring Output}, environments store most of the
+parameters that determine the appearance of text. A default environment
+named @samp{0} exists when GNU @code{troff} starts up; it is modified by
+formatting-related requests and escape sequences.
+
+@cindex stack
+You can create new environments and switch among them. Only one is
+current at any given time. Active environments are managed using a
+@dfn{stack}, a data structure supporting ``push'' and ``pop''
+operations. The current environment is at the top of the stack.
+The same environment name can be pushed onto the stack multiple times,
+possibly interleaved with others. Popping the environment stack does
+not destroy the current environment; it remains accessible by name and
+can be made current again by pushing it at any time. Environments
+cannot be renamed or deleted, and can only be modified when current. To
+inspect the environment stack, use the @code{pev} request; see
+@ref{Debugging}.
+
+Environments store the following information.
+
+@itemize @bullet
+@item
+a partially collected line, if any
+
+@item
+data about the most recently output glyph and line (registers
+@code{.cdp}, @code{.cht}, @code{.csk}, @code{.n}, @code{.w})
+
+@item
+typeface parameters (size, family, style, height and slant, inter-word
+and inter-sentence space sizes)
+
+@item
+page parameters (line length, title length, vertical spacing, line
+spacing, indentation, line numbering, centering, right-alignment,
+underlining, hyphenation parameters)
+
+@item
+filling enablement; adjustment enablement and mode
+
+@item
+tab stops; tab, leader, escape, control, no-break control, hyphenation,
+and margin characters
+
+@item
+input line traps
+
+@item
+stroke and fill colors
+@end itemize
+@c END Keep parallel with section "Environments" of groff(7).
+
+@DefreqList {ev, [@Var{ident}]}
+@DefregListEndx {.ev}
+@cindex switching environments (@code{ev})
+@cindex environment, switching (@code{ev})
+@cindex environment number/name register (@code{.ev})
+Enter the environment @var{ident}, which is created if it does not
+already exist, using the same parameters as for the default environment
+used at startup. With no argument, GNU @code{troff} switches to the
+previous environment.
+
+Invoking @code{ev} with an argument puts environment @var{ident} onto
+the top of the environment stack. (If it isn't already present in the
+stack, this is a proper push.) Without an argument, @code{ev} pops the
+environment stack, making the previous environment current. It is an
+error to pop the environment stack with no previous environment
+available. The read-only string-valued register @code{.ev} contains the
+name of the current environment---the one at the top of the stack.
+
+@Example
+.ev footnote-env
+.fam N
+.ps 6
+.vs 8
+.ll -.5i
+.ev
+
+@r{@dots{}}
+
+.ev footnote-env
+\[dg] Observe the smaller text and vertical spacing.
+.ev
+@endExample
+
+We can familiarize ourselves with stack behavior by wrapping the
+@code{ev} request with a macro that reports the contents of the
+@code{.ev} register to the standard error stream.
+
+@Example
+.de EV
+. ev \\$1
+. tm environment is now \\n[.ev]
+..
+.
+.EV foo
+.EV bar
+.EV
+.EV baz
+.EV
+.EV
+.EV
+@endExample
+
+@Example
+ @error{} environment is now foo
+ @error{} environment is now bar
+ @error{} environment is now foo
+ @error{} environment is now baz
+ @error{} environment is now foo
+ @error{} environment is now 0
+ @error{} error: environment stack underflow
+ @error{} environment is now 0
+@endExample
+
+@endDefreq
+
+@Defreq {evc, environment}
+@cindex copying environment (@code{evc})
+@cindex environment, copying (@code{evc})
+Copy the contents of @var{environment} to the current environment.
+
+The following environment data are not copied.
+
+@itemize @bullet
+@item
+a partially collected line, if present;
+
+@item
+the interruption status of the previous input line (due to use of the
+@code{\c} escape sequence);
+
+@item
+the count of remaining lines to center, to right-justify, or to
+underline (with or without underlined spaces)---these are set to zero;
+
+@item
+the activation status of temporary indentation;
+
+@item
+input line traps and their associated data;
+
+@item
+the activation status of line numbering (which can be reactivated with
+@w{@samp{.nm +0}}); and
+
+@item
+the count of consecutive hyphenated lines (set to zero).
+@end itemize
+@endDefreq
+
+@DefregList {.w}
+@DefregItemx {.cht}
+@DefregItemx {.cdp}
+@DefregListEndx {.csk}
+@cindex environment, dimensions of last glyph (@code{.w}, @code{.cht}, @code{.cdp}, @code{.csk})
+@cindex width, of last glyph (@code{.w})
+@cindex height, of last glyph (@code{.cht})
+@cindex depth, of last glyph (@code{.cdp})
+@cindex skew, of last glyph (@code{.csk})
+@cindex last glyph, dimensions (@code{.w}, @code{.cht}, @code{.cdp}, @code{.csk})
+@cindex glyph, last, dimensions (@code{.w}, @code{.cht}, @code{.cdp}, @code{.csk})
+The @code{\n[.w]} register contains the width of the last glyph
+formatted in the environment.
+
+The @code{\n[.cht]} register contains the height of the last glyph
+formatted in the environment.
+
+The @code{\n[.cdp]} register contains the depth of the last glyph
+formatted in the environment. It is positive for glyphs extending below
+the baseline.
+
+The @code{\n[.csk]} register contains the @dfn{skew} (how far to the
+right of the glyph's center that GNU @code{troff} should place an
+accent) of the last glyph formatted in the environment.
+@endDefreg
+
+@Defreg {.n}
+@cindex environment, previous line length (@code{.n})
+@cindex line length, previous (@code{.n})
+@cindex length of previous line (@code{.n})
+@cindex previous line length (@code{.n})
+The @code{\n[.n]} register contains the length of the previous output
+line emitted in the environment.
+@endDefreg
+
+@codequotebacktick off
+@codequoteundirected off
+
+
+@c =====================================================================
+
+@node Suppressing Output, Colors, Environments, GNU troff Reference
+@section Suppressing Output
+
+@Defesc {\\O, [, num, ]}
+@cindex suppressing output (@code{\O})
+@cindex output, suppressing (@code{\O})
+Suppress GNU @code{troff} output of glyphs and geometric objects. The
+sequences @code{\O2}, @code{\O3}, @code{\O4}, and @code{\O5} are
+intended for internal use by @code{grohtml}.
+
+@table @samp
+@item \O0
+Disable the emission of glyphs and geometric objects to the output
+driver, provided that this sequence occurs at the outermost suppression
+level (see @code{\O3} and @code{\04} below). Horizontal motions
+corresponding to non-overstruck glyph widths still occur.
+
+@item \O1
+Enable the emission of glyphs and geometric objects to the output
+driver, provided that this sequence occurs at the outermost suppression
+level.
+@end table
+
+@vindex opminx
+@vindex opminy
+@vindex opmaxx
+@vindex opmaxy
+@code{\O0} and @code{\O1} also reset the four registers @code{opminx},
+@code{opminy}, @code{opmaxx}, and @code{opmaxy} to @minus{}1. These
+four registers mark the top left and bottom right hand corners of a box
+encompassing all written or drawn output.
+
+@table @samp
+@item \O2
+At the outermost suppression level, enable emission of glyphs and
+geometric objects, and write to the standard error stream the page
+number and values of the four aforementioned registers encompassing
+glyphs written since the last interpolation of a @code{\O} sequence, as
+well as the page offset, line length, image file name (if any),
+horizontal and vertical device motion quanta, and input file name.
+Numeric values are in basic units.
+
+@item \O3
+Begin a nested suppression level. @command{grohtml} uses this mechanism
+to create images of output preprocessed with @command{gpic},
+@command{geqn}, and @command{gtbl}. At startup, GNU @code{troff} is at
+the outermost suppression level. @command{pre-grohtml} generates these
+sequences when processing the document, using GNU @command{troff} with
+the @code{ps} output device, Ghostscript, and the PNM tools to produce
+images in PNG format. They start a new page if the device is not
+@code{html} or @code{xhtml}, to reduce the number of images crossing a
+page boundary.
+
+@item \O4
+End a nested suppression level.
+@end table
+
+@table @samp
+@item \O[5@var{P}@var{file}]
+At the outermost suppression level, write the name @code{file} to the
+standard error stream at position @var{P}, which must be one of
+@code{l}, @code{r}, @code{c}, or@tie{}@code{i}, corresponding to left,
+right, centered, and inline alignments within the document,
+respectively. @var{file} is a name associated with the production of
+the next image.
+@end table
+@endDefesc
+
+@Defreg {.O}
+@cindex suppression nesting level register
+@cindex nesting level, suppression, register
+@cindex level, suppression nesting, register
+Output suppression nesting level applied by @code{\O3} and @code{\O4}
+escape sequences.
+@endDefreg
+
+@c =====================================================================
+
+@codequotebacktick on
+@codequoteundirected on
+
+@c TODO: Rename this node to "Operating Environment Access" or similar,
+@c and move the date/time, process ID, etc., read-only registers here.
+@node I/O, Postprocessor Access, Suppressing Output, GNU troff Reference
+@section I/O
+@cindex i/o
+@cindex input and output requests
+@cindex requests for input and output
+@cindex output and input requests
+
+@code{gtroff} has several requests for including files:
+
+@DefreqList {so, file}
+@DefreqListEndx {soquiet, file}
+@cindex including a file (@code{so})
+@cindex file, inclusion (@code{so})
+Replace the @code{so} request's control line with the contents of the
+file named by the argument, ``sourcing'' it. @var{file} is sought in
+the directories specified by @option{-I} command-line option. If
+@var{file} does not exist, a warning in category @samp{file} is produced
+and the request has no further effect. @xref{Warnings}, for
+information about the enablement and suppression of warnings.
+
+@code{so} can be useful for large documents; e.g., allowing each chapter
+of a book to be kept in a separate file. However, files interpolated
+with @code{so} are not preprocessed; to overcome this limitation, see
+the @cite{gsoelim@r{(1)}} man page.
+
+Since GNU @code{troff} replaces the entire control line with the
+contents of a file, it matters whether @code{file} is terminated with a
+newline or not. Assume that file @file{xxx} contains only the word
+@samp{foo} without a trailing newline.
+
+@Example
+$ printf 'foo' > xxx
+
+The situation is
+.so xxx
+bar.
+ @result{} The situation is foobar.
+@endExample
+
+@code{soquiet} works the same way, except that no warning diagnostic is
+issued if @var{file} does not exist.
+@endDefreq
+
+@Defreq {pso, command}
+Read the standard output from the specified @var{command} and include
+it in place of the @code{pso} request.
+
+@cindex safer mode
+@cindex mode, safer
+@cindex unsafe mode
+@cindex mode, unsafe
+It is an error to use this request in safer mode, which is the
+default. Invoke GNU @code{troff} or a front end with the @option{-U}
+option to enable unsafe mode.
+
+The comment regarding a final newline for the @code{so} request is valid
+for @code{pso} also.
+@endDefreq
+
+@DefreqList {mso, file}
+@DefreqListEndx {msoquiet, file}
+Identical to the @code{so} and @code{soquiet} requests, respectively,
+except that @code{gtroff} searches for the specified @var{file} in the
+same directories as macro files for the @option{-m} command-line option.
+If the file name to be included has the form @file{@var{name}.tmac} and
+it isn't found, these requests try to include @file{tmac.@var{name}} and
+vice versa.
+@endDefreq
+
+@DefreqList {trf, file}
+@DefreqListEndx {cf, file}
+@cindex transparent output (@code{cf}, @code{trf})
+@cindex output, transparent (@code{cf}, @code{trf})
+@cindex @code{cf} request, and copy mode
+@cindex copy mode, and @code{cf} request
+@cindex mode, copy, and @code{cf} request
+@cindex @code{trf} request, and copy mode
+@cindex copy mode, and @code{trf} request
+@cindex mode, copy, and @code{trf} request
+Transparently output the contents of @var{file}. Each line is output as
+if it were preceded by @code{\!}; however, the lines are @emph{not}
+subject to copy mode interpretation. If the file does not end with a
+newline, @code{trf} adds one. Both requests cause a break.
+
+When used in a diversion, these requests embed a node (@pxref{Gtroff
+Internals}) in it that, when reread, causes the contents of @var{file}
+to be transparently copied to the output. In @acronym{AT&T}
+@code{troff}, the contents of @var{file} are immediately copied to the
+output regardless of whether there is a current diversion; this
+behaviour is so anomalous that it must be considered a bug.
+
+@cindex @code{trf} request, and invalid characters
+@cindex characters, invalid for @code{trf} request
+@cindex invalid characters for @code{trf} request
+While @code{cf} copies the contents of @var{file} completely
+unprocessed, @code{trf} disallows characters such as NUL that are not
+valid @code{gtroff} input characters (@pxref{Identifiers}).
+
+For @code{cf}, within a diversion, ``completely unprocessed'' means that
+each line of a file to be inserted is handled as if it were preceded by
+@code{\!\\!}.
+
+To define a macro@tie{}@code{x} containing the contents of
+file@tie{}@file{f}, use
+
+@Example
+.ev 1
+.di x
+.trf f
+.di
+.ev
+@endExample
+
+@noindent
+The calls to @code{ev} prevent the partially collected output line
+from becoming part of the diversion (@pxref{Diversions}).
+@endDefreq
+
+@Defreq {nx, [@Var{file}]}
+@cindex processing next file (@code{nx})
+@cindex file, processing next (@code{nx})
+@cindex next file, processing (@code{nx})
+Force @code{gtroff} to continue processing of the file specified as an
+argument. If no argument is given, immediately jump to the end of file.
+@endDefreq
+
+@Defreq {rd, [@Var{prompt} [@Var{arg1} @Var{arg2} @dots{}]]}
+@cindex reading from standard input (@code{rd})
+@cindex standard input, reading from (@code{rd})
+@cindex input, standard, reading from (@code{rd})
+Read from standard input, and include what is read as though it were
+part of the input file. Text is read until a blank line is encountered.
+
+If standard input is a TTY input device (keyboard), write @var{prompt}
+to standard error, followed by a colon (or send BEL for a beep if no
+argument is given).
+
+Arguments after @var{prompt} are available for the input. For example,
+the line
+
+@Example
+.rd data foo bar
+@endExample
+
+with the input @w{@samp{This is \$2.}} prints
+
+@Example
+This is bar.
+@endExample
+@endDefreq
+
+@cindex form letters
+@cindex letters, form
+Using the @code{nx} and @code{rd} requests, it is easy to set up form
+letters. The form letter template is constructed like this, putting the
+following lines into a file called @file{repeat.let}:
+
+@Example
+.ce
+\*(td
+.sp 2
+.nf
+.rd
+.sp
+.rd
+.fi
+Body of letter.
+.bp
+.nx repeat.let
+@endExample
+
+@cindex @code{ex} request, used with @code{nx} and @code{rd}
+@noindent
+When this is run, a file containing the following lines should be
+redirected in. Requests included in this file are executed as though
+they were part of the form letter. The last block of input is the
+@code{ex} request, which tells GNU @code{troff} to stop processing. If
+this were not there, @code{troff} would not know when to stop.
+
+@Example
+Trent A. Fisher
+708 NW 19th Av., #202
+Portland, OR 97209
+
+Dear Trent,
+
+Len Adollar
+4315 Sierra Vista
+San Diego, CA 92103
+
+Dear Mr. Adollar,
+
+.ex
+@endExample
+
+@Defreq {pi, pipe}
+Pipe the output of @code{gtroff} to the shell command(s) specified by
+@var{pipe}. This request must occur before @code{gtroff} has a chance
+to print anything.
+
+@cindex safer mode
+@cindex mode, safer
+@cindex unsafe mode
+@cindex mode, unsafe
+It is an error to use this request in safer mode, which is the
+default. Invoke GNU @code{troff} or a front end with the @option{-U}
+option to enable unsafe mode.
+
+Multiple calls to @code{pi} are allowed, acting as a chain. For
+example,
+
+@Example
+.pi foo
+.pi bar
+...
+@endExample
+
+is the same as @w{@samp{.pi foo | bar}}.
+
+@cindex @code{groff}, and @code{pi} request
+@cindex @code{pi} request, and @code{groff}
+The intermediate output format of GNU @code{troff} is piped to the
+specified commands. Consequently, calling @code{groff} without the
+@option{-Z} option normally causes a fatal error.
+@endDefreq
+
+@cindex system commands, running
+@cindex running system commands
+@DefreqList {sy, cmds}
+@DefregListEndx {systat}
+Execute the shell command(s) specified by @var{cmds}. The output is not
+saved anywhere, so it is up to the user to do so.
+
+@cindex safer mode
+@cindex mode, safer
+@cindex unsafe mode
+@cindex mode, unsafe
+It is an error to use this request in safer mode; this is the default.
+Give GNU @code{troff} or a front end program the @option{-U} option to
+enable unsafe mode.
+
+The following code fragment introduces the current time into a document.
+
+@pindex perl
+@Example
+.sy perl -e 'printf ".nr H %d\\n.nr M %d\\n.nr S %d\\n",\
+ (localtime(time))[2,1,0]' > /tmp/x\n[$$]
+.so /tmp/x\n[$$]
+.sy rm /tmp/x\n[$$]
+\nH:\nM:\nS
+@endExample
+
+@noindent
+This works by having the Perl script (run by @code{sy}) write
+@code{nr} requests that set the registers @code{H}, @code{M}, and
+@code{S} to a temporary file. The @code{roff} document then reads the
+temporary file using the @code{so} request.
+
+@cindex time, formatting
+@cindex formatting the time
+The registers @code{seconds}, @code{minutes}, and @code{hours},
+initialized at startup of GNU @code{troff}, should satisfy most
+requirements. Use the @code{af} request to format their values for
+output.
+
+@Example
+.af hours 00
+.af minutes 00
+.af seconds 00
+\n[hours]:\n[minutes]:\n[seconds]
+ @result{} 02:17:54
+@endExample
+
+@cindex @code{system()} return value register (@code{systat})
+The writable register @code{systat} contains the return value of the
+@code{system()} function executed by the last @code{sy} request.
+@endDefreq
+
+@DefreqList {open, stream file}
+@DefreqListEndx {opena, stream file}
+@cindex opening file (@code{open})
+@cindex file, opening (@code{open})
+@cindex appending to a file (@code{opena})
+@cindex file, appending to (@code{opena})
+Open the specified @var{file} for writing and associates the specified
+@var{stream} with it.
+
+The @code{opena} request is like @code{open}, but if the file exists,
+append to it instead of truncating it.
+
+@cindex safer mode
+@cindex mode, safer
+@cindex unsafe mode
+@cindex mode, unsafe
+It is an error to use these requests in safer mode; this is the default.
+Give GNU @code{troff} or a front end program the @option{-U} option to
+enable unsafe mode.
+@endDefreq
+
+@DefreqList {write, stream data}
+@DefreqListEndx {writec, stream data}
+@cindex copy mode, and @code{write} request
+@cindex @code{write} request, and copy mode
+@cindex mode, copy, and @code{write} request
+@cindex copy mode, and @code{writec} request
+@cindex @code{writec} request, and copy mode
+@cindex mode, copy, and @code{writec} request
+@cindex writing to file (@code{write}, @code{writec})
+@cindex file, writing to (@code{write}, @code{writec})
+Write to the file associated with the specified @var{stream}. The
+stream must previously have been the subject of an open request. The
+remainder of the line is interpreted as the @code{ds} request reads its
+second argument: an initial neutral double quote in @var{contents} is
+stripped to allow embedding of leading spaces, and it is read in copy
+mode.
+
+The @code{writec} request is like @code{write}, but only @code{write}
+appends a newline to the data.
+@endDefreq
+
+@Defreq {writem, stream xx}
+@cindex @code{asciify} request, and @code{writem}
+Write the contents of the macro or string @var{xx} to the file
+associated with the specified @var{stream}.
+
+@cindex @code{writem} request, and copy mode
+@cindex copy mode, and @code{writem} request
+@cindex mode, copy, and @code{writem} request
+@var{xx} is read in copy mode, i.e., already formatted elements are
+ignored. Consequently, diversions must be unformatted with the
+@code{asciify} request before calling @code{writem}. Usually, this
+means a loss of information.
+@endDefreq
+
+@Defreq {close, stream}
+@cindex closing file (@code{close})
+@cindex file, closing (@code{close})
+Close the specified @var{stream}; the stream is no longer an acceptable
+argument to the @code{write} request.
+
+Here a simple macro to write an index entry.
+
+@Example
+.open idx test.idx
+.
+.de IX
+. write idx \\n[%] \\$*
+..
+.
+.IX test entry
+.
+.close idx
+@endExample
+@endDefreq
+
+@DefescList {\\V, , e, }
+@DefescItem {\\V, (, ev, }
+@DefescListEnd {\\V, [, env, ]}
+@cindex @code{\V}, and copy mode
+@cindex copy mode, and @code{\V}
+@cindex mode, copy, and @code{\V}
+Interpolate the contents of the specified environment variable @var{env}
+(one-character name@tie{}@var{e}, two-character name @var{ev}) as
+returned by the function @cite{getenv@r{(3)}}. @code{\V} is interpreted
+even in copy mode (@pxref{Copy Mode}).
+@endDefesc
+
+
+@c =====================================================================
+
+@node Postprocessor Access, Miscellaneous, I/O, GNU troff Reference
+@section Postprocessor Access
+@cindex postprocessor access
+@cindex access to postprocessor
+
+Two escape sequences and two requests enable documents to pass
+information directly to a postprocessor. These are useful for
+exercising device-specific capabilities that the @code{groff} language
+does not abstract or generalize; examples include the embedding of
+hyperlinks and image files. Device-specific functions are documented in
+each output driver's man page, such as @cite{gropdf@r{(1)}},
+@cite{grops@r{(1)}}, or @cite{grotty@r{(1)}}.
+
+@DefreqList {device, xxx @r{@dots{}}}
+@DefescListEndx {\\X, @code{'}, xxx @r{@dots{}}, @code{'}}
+Embed all @var{xxx} arguments into GNU @code{troff} output as parameters
+to a device control command @w{@samp{x X}}. The meaning and
+interpretation of such parameters is determined by the output driver or
+other postprocessor.
+
+@cindex @code{device} request, and copy mode
+@cindex copy mode, and @code{device} request
+@cindex mode, copy, and @code{device} request
+The @code{device} request processes its arguments in copy mode
+(@pxref{Copy Mode}). An initial neutral double quote in @var{contents}
+is stripped to allow embedding of leading spaces.
+@cindex @code{\&}, in @code{\X}
+@cindex @code{\)}, in @code{\X}
+@cindex @code{\%}, in @code{\X}
+@ifnotinfo
+@cindex @code{\:}, in @code{\X}
+@end ifnotinfo
+@ifinfo
+@cindex @code{\@r{<colon>}}, in @code{\X}
+@end ifinfo
+By contrast, within @code{\X} arguments, the escape sequences @code{\&},
+@code{\)}, @code{\%}, and @code{\:} are ignored; @code{\@key{SP}} and
+@code{\~} are converted to single space characters; and @code{\\} has
+its escape character stripped. So that the basic Latin subset of the
+Unicode character set@footnote{that is, ISO@tie{}646:1991-IRV or,
+popularly, ``US-ASCII''} can be reliably encoded in device control
+commands, seven special character escape sequences (@samp{\-},
+@samp{\[aq]}, @samp{\[dq]}, @samp{\[ga]}, @samp{\[ha]}, @samp{\[rs]},
+and @samp{\[ti]},) are mapped to basic Latin characters; see the
+@cite{groff_char@r{(7)}} man page. For this transformation, character
+translations and special character definitions are
+ignored.@footnote{They are bypassed because these parameters are not
+rendered as glyphs in the output; instead, they remain abstract
+characters---in a PDF bookmark or a URL, for example.} The use of any
+other escape sequence in @code{\X} parameters is normally an error.
+
+@kindex use_charnames_in_special
+@cindex @file{DESC} file, and @code{use_charnames_in_special} keyword
+@cindex @code{\X}, and special characters
+If the @code{use_charnames_in_special} directive appears in the output
+device's @file{DESC} file, the use of special character escape sequences
+is @emph{not} an error; they are simply output verbatim (with the
+exception of the seven mapped to Unicode basic Latin characters,
+discussed above). @code{use_charnames_in_special} is currently employed
+only by @code{grohtml}.
+@endDefesc
+
+@DefreqList {devicem, name}
+@DefescItemx {\\Y, , n, }
+@DefescItem {\\Y, (, nm, }
+@DefescListEnd {\\Y, [, name, ]}
+This is approximately equivalent to @samp{\X'\*[@var{name}]'}
+(one-character name@tie{}@var{n}, two-character name @var{nm}).
+However, the contents of the string or macro @var{name} are not
+interpreted; also it is permitted for @var{name} to have been defined as
+a macro and thus contain newlines (it is not permitted for the argument
+to @code{\X} to contain newlines). The inclusion of newlines requires
+an extension to the @acronym{AT&T} @code{troff} output format, and
+confuses drivers that do not know about this extension (@pxref{Device
+Control Commands}).
+@endDefesc
+
+@DefreqList {tag, name}
+@DefreqListEndx {taga, name}
+Reserved for internal use.
+@endDefreq
+
+
+@c =====================================================================
+
+@node Miscellaneous, Gtroff Internals, Postprocessor Access, GNU troff Reference
+@section Miscellaneous
+
+We document here GNU @code{troff} features that fit poorly elsewhere.
+
+@DefreqList {nm, [@Var{start} [@Var{increment} [@Var{space} [@Var{indentation}]]]]}
+@DefregItemx {ln}
+@DefregListEndx {.nm}
+@cindex printing line numbers (@code{nm})
+@cindex line numbers, printing (@code{nm})
+@cindex numbers, line, printing (@code{nm})
+Begin (or, with no arguments, cease) numbering output lines.
+@var{start} assigns the number of the @emph{next} output line. Only
+line numbers divisible by @var{increment} are marked (default:
+@samp{1}). @var{space} configures the horizontal spacing between the
+number and the text (default: @samp{1}). Any given @var{indentation} is
+applied to the numbers (default: @samp{0}). The third and fourth
+arguments are reckoned in numeral widths (@code{\0}). @var{start} must
+be non-negative and @var{increment} positive.
+
+The formatter aligns the number to the right in a width of three numeral
+spaces plus @var{indentation}, then catenates @var{space} and the output
+line. The line length is @emph{not} reduced. Depending on the value of
+the page offset,@footnote{Recall @ref{Line Layout}.} numbers wider than
+the allocated space protrude into the left margin, or shift the output
+line to the right.
+
+Line numbering parameters corresponding to missing arguments are not
+altered. After numbering is disabled, @samp{.nm +0} resumes it using
+the previously active parameters.
+
+The parameters of @code{nm} are associated with the environment
+(@pxref{Environments}).
+
+@cindex output line number register (@code{ln})
+@cindex line number, output, register (@code{ln})
+While numbering is enabled, the output line number register @code{ln} is
+updated as each line is output, even if no line number is formatted with
+it because it is being skipped (it is not a multiple of @var{increment})
+or because numbering is suppressed (see the @code{nn} request below).
+
+The @code{.nm} register tracks the enablement status of numbering.
+Temporary suspension of numbering with the @code{nn} request does
+@emph{not} alter its value.
+
+@Example
+.po 5n
+.ll 44n
+Programming,
+when stripped of all its circumstantial irrelevancies,
+.nm 999 1 1 -4
+boils down to no more and no less than
+.nm +0 3
+very effective thinking so as to avoid unmastered
+.nn 2
+complexity,
+to very vigorous separation of your many
+different concerns.
+.br
+\(em Edsger Dijkstra
+.sp
+.nm 1 1 1
+This guy's arrogance takes your breath away.
+.br
+\(em John Backus
+ @result{} Programming, when stripped of all its cir-
+ @result{} 999 cumstantial irrelevancies, boils down to no
+ @result{} more and no less than very effective think-
+ @result{} ing so as to avoid unmastered complexity, to
+ @result{} very vigorous separation of your many dif-
+ @result{} ferent concerns.
+ @result{} 1002 -- Edsger Dijkstra
+ @result{}
+ @result{} 1 This guy@quoteright{}s arrogance takes your breath away.
+ @result{} 2 -- John Backus
+@endExample
+@endDefreq
+
+@DefreqList {nn, [@Var{skip}]}
+@DefregListEndx {.nn}
+Suppress numbering of the next @var{skip} output lines that would
+otherwise be numbered. The default is@tie{}1. @code{nn} can be invoked
+when line numbering is not active; suppression of numbering will take
+effect for @var{skip} lines once @code{nm} enables it.
+
+The @code{.nn} register stores the count of output lines still to have
+their numbering suppressed.
+
+This count is associated with the environment (@pxref{Environments}).
+@endDefreq
+
+@need 1000
+To test whether the current output line will be numbered, you must check
+both the @code{.nm} and @code{.nn} registers.
+
+@Example
+ .de is-numbered
+ . nop This line
+ . ie (\\n[.nm] & (1-\\n[.nn])) IS
+ . el ISN'T
+ . nop numbered.
+ . br
+ ..
+ Test line numbering.
+ .is-numbered
+ .nm 1
+ .nn 1
+ .is-numbered
+ .is-numbered
+ .nm
+ .is-numbered
+ @result{} Test line numbering. This line ISN@quoteright{}T numbered.
+ @result{} This line ISN@quoteright{}T numbered.
+ @result{} 1 This line IS numbered.
+ @result{} This line ISN@quoteright{}T numbered.
+@endExample
+
+@Defreq {mc, [@Var{margin-character} [@Var{distance}]}
+@cindex margin glyph (@code{mc})
+@cindex glyph, for margins (@code{mc})
+Begin (or, with no arguments, cease) writing a @dfn{margin-character} to
+the right of each output line. The @var{distance} argument separates
+@var{margin-character} from the right margin. If absent, the most
+recent value is used; the default is 10@tie{}points. If an output line
+exceeds the line length, the margin character is appended to it.
+@cindex @code{tl} request, and @code{mc}
+No margin character is written on lines produced by the @code{tl}
+request.
+
+The margin character is a property of the output line; the margin
+character last configured when the line is output controls. If the
+margin character is disabled before an output line breaks, none is
+output (but see below).
+
+The margin character is associated with the environment
+(@pxref{Environments}).
+
+@Example
+.ll 5i
+.nf
+.mc \[br]
+This paragraph is marked with a margin character.
+.sp
+As seen above, vertical space isn't thus marked.
+\&
+An output line that is present, but empty, is.
+@c We deliberately overset these lines to mimic `mc`'s behavior.
+ @result{} This paragraph is marked with a margin character. |
+ @result{}
+ @result{} As seen above, vertical space isn@quoteright{}t thus marked. |
+ @result{} |
+ @result{} An output line that is present, but empty, is. |
+@endExample
+@endDefreq
+
+For compatibility with @acronym{AT&T} @code{troff}, a call to @code{mc}
+to set the margin character can't be undone immediately; at least one
+line gets a margin character.
+
+@Example
+.ll 10n
+.nf
+.mc |
+.mc *
+.mc
+foo
+bar
+ @result{} foo *
+ @result{} bar
+@endExample
+
+@pindex gdiffmk
+@pindex nrchbar
+@pindex changebar
+@pindex diffmk
+The margin character mechanism is commonly used to annotate changes in
+documents. The @code{groff} distribution ships a program,
+@command{gdiffmk}, to assist with this task.@footnote{Historically,
+tools named @command{nrchbar} and @command{changebar} were developed for
+marking changes with margin characters and could be found in archives of
+the @code{comp.sources.unix} @acronym{USENET} group. Some proprietary
+Unices also offer(ed) a @command{diffmk} program.}
+
+@DefreqList {psbb, file}
+@DefregItemx {llx}
+@DefregItemx {lly}
+@DefregItemx {urx}
+@DefregListEndx {ury}
+@cindex PostScript, bounding box
+@cindex bounding box
+Retrieve the bounding box of the PostScript image found in @var{file},
+which must conform to Adobe's @dfn{Document Structuring Conventions}
+(DSC), locate a @code{%%BoundingBox} comment, and store the (upper-,
+lower-, @w{-left}, @w{-right}) values into the registers @code{llx},
+@code{lly}, @code{urx}, and @code{ury}. If an error occurs (for
+example, if no @code{%%BoundingBox} comment is present), the formatter
+sets these registers to@tie{}0.
+
+The search path for @var{file} can be controlled with the @option{-I}
+command-line option.
+@endDefreq
+
+@codequotebacktick off
+@codequoteundirected off
+
+
+@c =====================================================================
+
+@node Gtroff Internals, Debugging, Miscellaneous, GNU troff Reference
+@section @code{gtroff} Internals
+
+@cindex input token
+@cindex token, input
+@cindex output node
+@cindex node, output
+@code{gtroff} processes input in three steps. One or more input
+characters are converted to an @dfn{input token}.@footnote{Except the
+escape sequences @code{\f}, @code{\F}, @code{\H}, @code{\m}, @code{\M},
+@code{\R}, @code{\s}, and @code{\S}, which are processed immediately if
+not in copy mode.} Then, one or more input tokens are converted to
+an @dfn{output node}. Finally, output nodes are converted to the
+intermediate output language understood by all output devices.
+
+Actually, before step one happens, @code{gtroff} converts certain escape
+sequences into reserved input characters (not accessible by the user);
+such reserved characters are used for other internal processing also --
+this is the very reason why not all characters are valid input.
+@xref{Identifiers}, for more on this topic.
+
+For example, the input string @samp{fi\[:u]} is converted into a
+character token @samp{f}, a character token @samp{i}, and a special
+token @samp{:u} (representing u@tie{}umlaut). Later on, the character
+tokens @samp{f} and @samp{i} are merged to a single output node
+representing the ligature glyph @samp{fi} (provided the current font has
+a glyph for this ligature); the same happens with @samp{:u}. All output
+glyph nodes are `processed', which means that they are invariably
+associated with a given font, font size, advance width, etc. During the
+formatting process, @code{gtroff} itself adds various nodes to control
+the data flow.
+
+Macros, diversions, and strings collect elements in two chained lists: a
+list of input tokens that have been passed unprocessed, and a list of
+output nodes. Consider the following diversion.
+
+@Example
+.di xxx
+a
+\!b
+c
+.br
+.di
+@endExample
+
+@noindent
+It contains these elements.
+
+@multitable {@i{vertical size node}} {token list} {element number}
+@item node list @tab token list @tab element number
+
+@item @i{line start node} @tab --- @tab 1
+@item @i{glyph node @code{a}} @tab --- @tab 2
+@item @i{word space node} @tab --- @tab 3
+@item --- @tab @code{b} @tab 4
+@item --- @tab @code{\n} @tab 5
+@item @i{glyph node @code{c}} @tab --- @tab 6
+@item @i{vertical size node} @tab --- @tab 7
+@item @i{vertical size node} @tab --- @tab 8
+@item --- @tab @code{\n} @tab 9
+@end multitable
+
+@cindex @code{\v}, internal representation
+@noindent
+Elements 1, 7, and@tie{}8 are inserted by @code{gtroff}; the latter two
+(which are always present) specify the vertical extent of the last line,
+possibly modified by @code{\x}. The @code{br} request finishes the
+pending output line, inserting a newline input token, which is
+subsequently converted to a space when the diversion is reread. Note
+that the word space node has a fixed width that isn't adjustable
+anymore. To convert horizontal space nodes back to input tokens, use
+the @code{unformat} request.
+
+Macros only contain elements in the token list (and the node list is
+empty); diversions and strings can contain elements in both lists.
+
+The @code{chop} request simply reduces the number of elements in a
+macro, string, or diversion by one. Exceptions are @dfn{compatibility
+save} and @dfn{compatibility ignore} input tokens, which are ignored.
+The @code{substring} request also ignores those input tokens.
+
+Some requests like @code{tr} or @code{cflags} work on glyph identifiers
+only; this means that the associated glyph can be changed without
+destroying this association. This can be very helpful for substituting
+glyphs. In the following example, we assume that glyph @samp{foo} isn't
+available by default, so we provide a substitution using the
+@code{fchar} request and map it to input character @samp{x}.
+
+@Example
+.fchar \[foo] foo
+.tr x \[foo]
+@endExample
+
+@noindent
+Now let us assume that we install an additional special font @samp{bar}
+that has glyph @samp{foo}.
+
+@Example
+.special bar
+.rchar \[foo]
+@endExample
+
+@noindent
+Since glyphs defined with @code{fchar} are searched before glyphs in
+special fonts, we must call @code{rchar} to remove the definition of the
+fallback glyph. Anyway, the translation is still active; @samp{x} now
+maps to the real glyph @samp{foo}.
+
+@cindex compatibility mode, and parameters
+@cindex mode, compatibility, and parameters
+@cindex arguments, and compatibility mode
+@cindex parameters, and compatibility mode
+@cindex macro arguments, and compatibility mode
+@cindex request arguments, and compatibility mode
+Macro and request arguments preserve compatibility mode enablement.
+
+@Example
+.cp 1 \" switch to compatibility mode
+.de xx
+\\$1
+..
+.cp 0 \" switch compatibility mode off
+.xx caf\['e]
+ @result{} café
+@endExample
+
+@noindent
+Since compatibility mode is enabled while @code{de} is invoked, the
+macro @code{xx} enables compatibility mode when it is called. Argument
+@code{$1} can still be handled properly because it inherits the
+compatibility mode enablement status that was active at the point where
+@code{xx} was called.
+
+After interpolation of the parameters, the compatibility save and
+restore tokens are removed.
+
+
+@c =====================================================================
+
+@codequotebacktick on
+@codequoteundirected on
+
+@need 1000
+@c BEGIN Keep parallel with section "Debugging" of groff(7).
+@node Debugging, Implementation Differences, Gtroff Internals, GNU troff Reference
+@section Debugging
+@cindex debugging
+
+@flushright
+@slanted{Standard troff voodoo, just put a power of two backslashes in
+front of it until it works and if you still have problems add a \c.}
+--- Ron Natalie
+@c https://minnie.tuhs.org/pipermail/tuhs/2021-February/023137.html
+@end flushright
+
+GNU @code{troff} is not the easiest language to debug, in part thanks to
+its design features of recursive interpolation and the use of
+multi-stage pipeline processing in the surrounding system. Nevertheless
+there exist several features useful for troubleshooting.
+
+Preprocessors use the @code{lf} request to preserve the identity of the
+line numbers and names of input files. GNU @code{troff} emits a variety
+of error diagnostics and supports several categories of warning; the
+output of these can be selectively suppressed. A trace of the
+formatter's input processing stack can be emitted when errors or
+warnings occur by means of GNU @code{troff}'s @option{-b} option, or
+produced on demand with the @code{backtrace} request. The @code{tm}
+and related requests can be used to emit customized diagnostic messages
+or for instrumentation while troubleshooting. The @code{ex} and
+@code{ab} requests cause early termination with successful and error
+exit codes respectively, to halt further processing when continuing
+would be fruitless. Examine the state of the formatter with requests
+that write lists of defined names (macros, strings, and diversions),
+environments, registers, and page location traps to the standard error
+stream.
+@c END Keep parallel with section "Debugging" of groff(7).
+
+@Defreq {lf, line [@Var{file}]}
+@pindex soelim
+@cindex multi-file documents
+@cindex documents, multi-file
+@cindex setting input line number (@code{lf})
+@cindex input line number, setting (@code{lf})
+@cindex number, input line, setting (@code{lf})
+Set the input line number (and, optionally, the file name) GNU
+@code{troff} shall use for error and warning messages. @var{line} is
+the input line number of the @emph{next} line. Without an argument, the
+request is ignored.
+
+@code{lf}'s primary purpose is to aid the debugging of documents that
+undergo preprocessing. Programs like @command{tbl} that transform input
+in their own languages into @code{roff} requests use it so that any
+diagnostic messages emitted by @code{troff} correspond to the source
+document.
+@endDefreq
+
+@DefreqList {tm, message}
+@DefreqItemx {tm1, message}
+@DefreqListEndx {tmc, message}
+@cindex printing to stderr (@code{tm}, @code{tm1}, @code{tmc})
+@cindex stderr, printing to (@code{tm}, @code{tm1}, @code{tmc})
+Send @var{message}, which consumes the remainder of the input line and
+cannot contain special characters, to the standard error stream,
+followed by a newline. Leading spaces in @var{message} are ignored.
+
+@code{tm1} is similar, but recognizes and strips a leading neutral
+double quote from @var{message} to allow the embedding of leading
+spaces.
+
+@code{tmc} works as @code{tm1}, but does not append a newline.
+@endDefreq
+
+@Defreq {ab, [@Var{message}]}
+@cindex aborting (@code{ab})
+Write any @var{message} to the standard error stream (like @code{tm})
+and then abort GNU @code{troff}; that is, stop processing and terminate
+with a failure status.
+@endDefreq
+
+@Defreq {ex, }
+@cindex @code{ex} request, use in debugging
+@cindex exiting (@code{ex})
+Exit GNU @code{troff}; that is, stop processing and terminate with a
+successful status. To stop processing only the current file, use the
+@code{nx} request; see @ref{I/O}.
+@endDefreq
+
+When doing something involved, it is useful to leave the debugging
+statements in the code and have them turned on by a command-line flag.
+
+@Example
+.if \n[DB] .tm debugging output
+@endExample
+
+@noindent
+To activate such statements, use the @option{-r} option to set the
+register.
+
+@Example
+groff -rDB=1 @slanted{file}
+@endExample
+
+If it is known in advance that there are many errors and no useful
+output, GNU @code{troff} can be forced to suppress formatted output with
+the @option{-z} option.
+
+@Defreq {pev, }
+@cindex dumping environments (@code{pev})
+@cindex environments, dumping (@code{pev})
+Report the state of the current environment followed by that of all
+other environments to the standard error stream.
+@endDefreq
+
+@Defreq {pm, }
+@cindex dumping symbol table (@code{pm})
+@cindex symbol table, dumping (@code{pm})
+Report, to the standard error stream, the names of all defined macros,
+strings, and diversions with their sizes in bytes.
+@endDefreq
+
+@Defreq {pnr, }
+@cindex dumping registers (@code{pnr})
+@cindex registers, dumping (@code{pnr})
+Report the names and contents of all currently defined registers to the
+standard error stream.
+@endDefreq
+
+@Defreq {ptr, }
+@cindex dumping page location traps (@code{ptr})
+@cindex listing page location traps (@code{ptr})
+@cindex traps, page location, dumping (@code{ptr})
+@cindex traps, page location, listing (@code{ptr})
+Report the names and positions of all page location traps to the
+standard error stream. Empty slots in the list, where a trap has been
+planted but subsequently (re)moved, are printed as well.
+@c "because they can affect the priority of subsequently planted traps."
+@c XXX Is that right? It's useful to print the empty slots, I think,
+@c but a trap planted in an "empty" slot with .wh will become active.
+@c The slot seems to act as an immobile dummy list head, but does not
+@c change the basic list semantics. .wh plants a trap at the head of
+@c the trap list at a location, and .ch plants a trap at the tail.
+@endDefreq
+
+@Defreq {fl, }
+@cindex flush output (@code{fl})
+@cindex output, flush (@code{fl})
+@cindex interactive use of @code{gtroff}
+@cindex @code{gtroff}, interactive use
+Instruct @code{gtroff} to flush its output immediately. The intent is
+for interactive use, but this behaviour is currently not implemented in
+@code{gtroff}. Contrary to Unix @code{troff}, TTY output is sent to a
+device driver also (@code{grotty}), making it non-trivial to communicate
+interactively.
+
+This request causes a line break.
+@endDefreq
+
+@Defreq {backtrace, }
+@cindex backtrace of input stack (@code{backtrace})
+@cindex input stack, backtrace (@code{backtrace})
+Write the state of the input stack to the standard error stream.
+
+Consider the following in a file @file{test}.
+
+@Example
+.de xxx
+. backtrace
+..
+.de yyy
+. xxx
+..
+.
+.yyy
+ @error{} troff: backtrace: 'test':2: macro 'xxx'
+ @error{} troff: backtrace: 'test':5: macro 'yyy'
+ @error{} troff: backtrace: file 'test':8
+@endExample
+
+The @option{-b} option of GNU @code{troff} causes a backtrace to be
+generated on each error or warning. Some warnings have to be enabled;
+@xref{Warnings}.
+@endDefreq
+
+@Defreg {slimit}
+@cindex input stack, setting limit
+If greater than@tie{}0, sets the maximum quantity of objects on GNU
+@code{troff}'s internal input stack. If less than or equal to@tie{}0,
+there is no limit: recursion can continue until program memory is
+exhausted. The default is 1,000.
+@endDefreg
+
+@Defreq {warnscale, su}
+Set the scaling unit used in certain warnings @c `output_warning()`
+to @var{su}, which can take the values @samp{u}, @samp{i}, @samp{c},
+@samp{p}, and @samp{P}. The default is @samp{i}.
+@endDefreq
+
+@Defreq {spreadwarn, [@Var{limit}]}
+Emit a @code{break} warning if the additional space inserted for each
+space between words in an output line adjusted to both margins with
+@w{@samp{.ad b}} is larger than or equal to @var{limit}. A negative
+value is treated as zero; an absent argument toggles the warning on and
+off without changing @var{limit}. The default scaling unit is @samp{m}.
+At startup, @code{spreadwarn} is inactive and @var{limit} is 3@dmn{m}.
+
+For example,
+
+@Example
+.spreadwarn 0.2m
+@endExample
+
+@noindent
+causes a warning if @code{break} warnings are not suppressed and
+@code{gtroff} must add 0.2@dmn{m} or more for each inter-word space in a
+line. @xref{Warnings}.
+@endDefreq
+
+@cindex warnings
+GNU @code{troff} has command-line options for reporting warnings
+(@option{-w}) and backtraces (@option{-b}) when a warning or an error
+occurs.
+
+@DefreqList {warn, [@Var{n}]}
+@DefregListEndx {.warn}
+@cindex warning level (@code{warn})
+Select the categories, or ``types'', of reported warnings.
+@var{n}@tie{}is the sum of the numeric codes associated with each
+warning category that is to be enabled; all other categories are
+disabled. The categories and their associated codes are listed in
+@ref{Warnings}. For example, @samp{.warn 0} disables all warnings, and
+@samp{.warn 1} disables all warnings except those about missing glyphs.
+If no argument is given, all warning categories are enabled.
+
+The read-only register @code{.warn} contains the sum of the numeric
+codes of enabled warning categories.
+@endDefreq
+
+@menu
+* Warnings::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@c BEGIN Keep parallel with section "Warnings" of troff(1).
+@c Caveat: the man page sorts them by name, not number.
+@node Warnings, , Debugging, Debugging
+@subsection Warnings
+@cindex warnings
+
+Warning diagnostics emitted by GNU @code{troff} are divided into named,
+numbered categories. The name associated with each warning category is
+used by the @option{-w} and @option{-W} options. Each category is also
+assigned a power of two; the sum of enabled category values is used by
+the @code{warn} request and the @code{.warn} register.
+
+Warnings of each category are produced under the following
+circumstances.
+
+@cindex categories, warning
+@cindex warning categories
+@table @samp
+@item char
+@itemx 1
+No mounted font defines a glyph for the requested character. This
+category is enabled by default.
+
+@item number
+@itemx 2
+An invalid numeric expression was encountered. This category is enabled
+by default.
+@xref{Numeric Expressions}.
+
+@item break
+@itemx 4
+@cindex filling, and @code{break} warnings
+@cindex mode, fill, and @code{break} warnings
+A filled output line could not be broken such that its length was less
+than the output line length @samp{\n[.l]}. This category is enabled by
+default.
+
+@item delim
+@itemx 8
+The closing delimiter in an escape sequence was missing or mismatched.
+
+@item el
+@itemx 16
+@cindex @code{ie} request, and warnings
+@cindex @code{el} request, and warnings
+The @code{el} request was encountered with no prior corresponding
+@code{ie} request. @xref{if-else}.
+
+@item scale
+@itemx 32
+A scaling unit inappropriate to its context was used in a numeric
+expression.
+
+@item range
+@itemx 64
+A numeric expression was out of range for its context.
+
+@item syntax
+@itemx 128
+A self-contradictory hyphenation mode was requested; an empty or
+incomplete numeric expression was encountered; an operand to a numeric
+operator was missing; an attempt was made to define a recursive, empty,
+or nonsensical character class; or a @code{groff} extension conditional
+expression operator was used while in compatibility mode.
+
+@item di
+@itemx 256
+@cindex @code{di} request, and warnings
+@cindex @code{da} request, and warnings
+@cindex @code{box} request, and warnings
+@cindex @code{boxa} request, and warnings
+A @code{di}, @code{da}, @code{box}, or @code{boxa} request was invoked
+without an argument when there was no current diversion.
+
+@item mac
+@itemx 512
+@cindex @code{de}, @code{de1}, @code{dei} requests, and warnings
+@cindex @code{am}, @code{am1}, @code{ami} requests, and warnings
+@cindex @code{ds}, @code{ds1} requests, and warnings
+@cindex @code{as}, @code{as1} requests, and warnings
+@cindex @code{di} request, and warnings
+@cindex @code{da} request, and warnings
+@cindex @code{box}, @code{boxa} requests, and warnings
+@cindex @code{\*}, and warnings
+An undefined string, macro, or diversion was used. When such an object
+is dereferenced, an empty one of that name is automatically created.
+So, unless it is later deleted, at most one warning is given for each.
+
+This warning is also emitted upon an attempt to move an unplanted trap
+macro (@pxref{Page Location Traps}). In such cases, the unplanted macro
+is @emph{not} dereferenced, so it is not created if it does not exist.
+
+@item reg
+@itemx 1024
+@cindex @code{nr} request, and warnings
+@cindex @code{\R}, and warnings
+@cindex @code{\n}, and warnings
+An undefined register was used. When an undefined register is
+dereferenced, it is automatically defined with a value of@tie{}0. So,
+unless it is later deleted, at most one warning is given for each.
+
+@item tab
+@itemx 2048
+@cindex @code{\t}, and warnings
+A tab character was encountered where a number was expected, or appeared
+in an unquoted macro argument.
+
+@item right-brace
+@itemx 4096
+@cindex @code{\@}}, and warnings
+A right brace escape sequence @code{\@}} was encountered where a number
+was expected.
+
+@item missing
+@itemx 8192
+A request was invoked with a mandatory argument absent.
+
+@item input
+@itemx 16384
+An invalid character occurred on the input stream.
+
+@item escape
+@itemx 32768
+An unsupported escape sequence was encountered.
+
+@item space
+@itemx 65536
+@cindex compatibility mode
+A space was missing between a request or macro and its argument. This
+warning is produced when an undefined name longer than two characters is
+encountered and the first two characters of the name constitute a
+defined name. No request is invoked, no macro called, and an empty
+macro is not defined. This category is enabled by default. It never
+occurs in compatibility mode.
+
+@item font
+@itemx 131072
+A non-existent font was selected, or the selection was ignored because a
+font selection escape sequence was used after the output line
+continuation escape sequence on an input line. This category is enabled
+by default.
+
+@item ig
+@itemx 262144
+An invalid escape sequence occurred in input ignored using the @code{ig}
+request. This warning category diagnoses a condition that is an error
+when it occurs in non-ignored input.
+
+@item color
+@itemx 524288
+An undefined color was selected, an attempt was made to define a color
+using an unrecognized color space, an invalid component in a color
+definition was encountered, or an attempt was made to redefine a default
+color.
+
+@item file
+@itemx 1048576
+An attempt was made to load a file that does not exist. This category
+is enabled by default.
+@end table
+
+Two warning names group other warning categories for convenience.
+
+@table @samp
+@item all
+All warning categories except @samp{di}, @samp{mac} and @samp{reg}.
+This shorthand is intended to produce all warnings that are useful with
+macro packages written for @acronym{AT&T} @code{troff} and its
+descendants, which have less fastidious diagnostics than GNU
+@code{troff}.
+
+@item w
+All warning categories. Authors of documents and macro packages
+targeting @code{groff} are encouraged to use this setting.
+@end table
+@c END Keep parallel with section "Warnings" of troff(1).
+
+@c =====================================================================
+
+@node Implementation Differences, Safer Mode, Debugging, GNU troff Reference
+@section Implementation Differences
+@cindex implementation differences
+@cindex differences in implementation
+@cindex incompatibilities with @acronym{AT&T} @code{troff}
+
+GNU @code{troff} has a number of features that cause incompatibilities
+with documents written for other versions of @code{troff}. Some GNU
+extensions to @code{troff} have become supported by other
+implementations.
+
+@menu
+* Safer Mode::
+* Compatibility Mode::
+* Other Differences::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Safer Mode, Compatibility Mode, Implementation Differences, Implementation Differences
+@subsection Safer Mode
+@cindex safer mode
+@cindex mode, safer
+
+@cindex @code{pi} request, disabled by default
+@cindex @code{sy} request, disabled by default
+The formatter operates in ``safer'' mode by default; to mitigate risks
+from untrusted input documents, the @code{pi} and @code{sy} requests are
+disabled. GNU @code{troff}'s @option{-U} option enables ``unsafe
+mode'', restoring their function and enabling additional @code{groff}
+extension requests, @code{open}, @code{opena}, and @code{pso}.
+@xref{I/O}.
+
+@c ---------------------------------------------------------------------
+
+@node Compatibility Mode, Safer Mode, Other Differences, Implementation Differences
+@subsection Compatibility Mode
+@cindex compatibility mode
+@cindex mode, compatibility
+
+@cindex long names
+@cindex names, long
+@cindex @code{\*}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\n}, incompatibilities with @acronym{AT&T} @code{troff}
+Long identifier names may be GNU @code{troff}'s most obvious innovation.
+@acronym{AT&T} @code{troff} interprets @samp{.dsabcd} as defining a
+string @samp{ab} with contents @samp{cd}. Normally, GNU @code{troff}
+interprets this as a call of a macro named @code{dsabcd}.
+@acronym{AT&T} @code{troff} also interprets @samp{\*[} and @samp{\n[} as
+an interpolation of a string or register, respectively, named @samp{[}.
+In GNU @code{troff}, however, the @samp{[} is normally interpreted as
+delimiting a long name. In compatibility mode, GNU @code{troff}
+interprets names in the traditional way; they thus can be two characters
+long at most.
+
+@DefreqList {cp, [@Var{n}]}
+@DefregListEndx {.C}
+If @var{n} is missing or non-zero, turn on compatibility mode;
+otherwise, turn it off.
+
+The read-only register @code{.C} is@tie{}1 if compatibility mode is on,
+0@tie{}otherwise.
+
+Compatibility mode can be also turned on with the @option{-C}
+command-line option.
+@endDefreq
+
+@DefreqList {do, name}
+@DefregListEndx {.cp}
+The @code{do} request interprets the string, request, diversion, or
+macro @var{name} (along with any further arguments) with compatibility
+mode disabled. Compatibility mode is restored (only if it was active)
+when the @emph{expansion} of @var{name} is interpreted; that is, the
+restored compatibility state applies to the contents of the macro,
+string, or diversion @var{name} as well as data read from files or pipes
+if @var{name} is any of the @code{so}, @code{soquiet}, @code{mso},
+@code{msoquiet}, or @code{pso} requests.
+
+The following example illustrates several aspects of @code{do} behavior.
+
+@Example
+.de mac1
+FOO
+..
+.de1 mac2
+groff
+.mac1
+..
+.de mac3
+compatibility
+.mac1
+..
+.de ma
+\\$1
+..
+.cp 1
+.do mac1
+.do mac2 \" mac2, defined with .de1, calls "mac1"
+.do mac3 \" mac3 calls "ma" with argument "c1"
+.do mac3 \[ti] \" groff syntax accepted in .do arguments
+ @result{} FOO groff FOO compatibility c1 ~
+@endExample
+
+The read-only register @code{.cp}, meaningful only when dereferenced
+from a @code{do} request, is@tie{}1 if compatibility mode was on when
+the @code{do} request was encountered, and 0@tie{}if it was not. This
+register is specialized and may require a statement of rationale.
+
+When writing macro packages or documents that use GNU @code{troff}
+features and which may be mixed with other packages or documents that do
+not---common scenarios include serial processing of man pages or use of
+the @code{so} or @code{mso} requests---you may desire correct operation
+regardless of compatibility mode enablement in the surrounding context.
+It may occur to you to save the existing value of @samp{\n(.C} into a
+register, say, @samp{_C}, at the beginning of your file, turn
+compatibility mode off with @samp{.cp 0}, then restore it from that
+register at the end with @samp{.cp \n(_C}. At the same time, a modular
+design of a document or macro package may lead you to multiple layers of
+inclusion. You cannot use the same register name everywhere lest you
+``clobber'' the value from a preceding or enclosing context. The
+two-character register name space of @acronym{AT&T} @code{troff} is
+confining and mnemonically challenging; you may wish to use the more
+capacious name space of GNU @code{troff}. However, attempting @samp{.nr
+_my_saved_C \n(.C} will not work in compatibility mode; the register
+name is too long. ``This is exactly what @code{do} is for,'' you think,
+@samp{.do nr _my_saved_C \n(.C}. The foregoing will always save zero to
+your register, because @code{do} turns compatibility mode @emph{off}
+while it interprets its argument list.
+
+@need 375 @c 250 < x < 500
+To robustly save compatibility mode before switching it off, use
+
+@Example
+.do nr _my_saved_C \n[.cp]
+.cp 0
+@endExample
+
+at the beginning of your file, followed by
+
+@Example
+.cp \n[_my_saved_C]
+.do rr _my_saved_C
+@endExample
+
+at the end. As in the C language, we all have to share one big
+name space, so choose a register name that is unlikely to collide with
+other uses.
+@endDefreq
+
+@cindex input level in delimited arguments
+@cindex interpolation depth in delimited arguments
+@cindex delimited arguments, incompatibilities with @acronym{AT&T} @code{troff}
+Normally, GNU @code{troff} preserves the interpolation depth in
+delimited arguments, but not in compatibility mode.
+
+@Example
+.ds xx '
+\w'abc\*(xxdef'
+ @result{} 168 @r{(normal mode on a terminal device)}
+ @result{} 72def' @r{(compatibility mode on a terminal device)}
+@endExample
+
+@cindex @code{\f}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\H}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\s}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\S}, incompatibilities with @acronym{AT&T} @code{troff}
+Furthermore, the escape sequences @code{\f}, @code{\H}, @code{\m},
+@code{\M}, @code{\R}, @code{\s}, and @code{\S} are transparent for the
+purpose of recognizing a control character at the beginning of a line
+only in compatibility mode. For example, this code produces bold output
+in both cases, but the text differs.
+
+@Example
+.de xx
+Hello!
+..
+\fB.xx\fP
+ @result{} .xx @r{(normal mode)}
+ @result{} Hello! @r{(compatibility mode)}
+@endExample
+
+@cindex @code{\s}, incompatibilities with @acronym{AT&T} @code{troff}
+Normally, the syntax form @code{\s}@var{n} accepts only a single
+character (a digit) for @var{n}, consistently with other forms that
+originated in @acronym{AT&T} @code{troff}, like @code{\*}, @code{\$},
+@code{\f}, @code{\g}, @code{\k}, @code{\n}, and @code{\z}. In
+compatibility mode only, a non-zero@tie{}@var{n} must be in the range
+4--39. Legacy documents relying upon this quirk of parsing@footnote{The
+Graphic Systems C/A/T phototypesetter (the original device target for
+@acronym{AT&T} @code{troff}) supported only a few discrete type sizes
+in the range 6--36 points, so Ossanna contrived a special case in the
+parser to do what the user must have meant. Kernighan warned of this in
+the 1992 revision of CSTR@tie{}#54 (§2.3), and more recently, McIlroy
+referred to it as a ``living fossil''.} should be migrated to another
+@code{\s} form.
+
+@c ---------------------------------------------------------------------
+
+@node Other Differences, , Compatibility Mode, Implementation Differences
+@subsection Other Differences
+
+@code{groff} request names unrecognized by other @code{troff}
+implementations will likely be ignored by them; escape sequences that
+are @code{groff} extensions are liable to be interpreted as if the
+escape character were not present.
+@cindex @code{\~}, incompatibilities with @acronym{AT&T} @code{troff}
+For example, the adjustable, non-breaking escape sequence @code{\~}
+@c BEGIN Keep in sync with groff_diff(7) and groff_man_style(7).
+is also supported by Heirloom Doctools @code{troff} 050915 (September
+2005), @code{mandoc} 1.9.5 (2009-09-21), @code{neatroff} (commit
+1c6ab0f6e, 2016-09-13), and Plan@tie{}9 from User Space @code{troff}
+(commit 93f8143600, 2022-08-12), but not by Solaris or Documenter's
+Workbench @code{troff}s.
+@c as of this writing, 2022-08-13
+@c END Keep in sync with groff_diff(7) and groff_man_style(7).
+@xref{Manipulating Filling and Adjustment}.
+
+@cindex @code{\A}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\|}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\^}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\&}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\@{}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\@}}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\@key{SP}}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\'}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\`}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\-}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\_}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\!}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\%}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\c}, incompatibilities with @acronym{AT&T} @code{troff}
+GNU @code{troff} does not allow the use of the escape sequences
+@code{\|}, @code{\^}, @code{\&}, @code{\@{}, @code{\@}},
+@code{\@key{SP}}, @code{\'}, @code{\`}, @code{\-}, @code{\_}, @code{\!},
+@code{\%}, and @code{\c} in identifiers; @acronym{AT&T} @code{troff}
+does. The @code{\A} escape sequence (@pxref{Identifiers}) may be
+helpful in avoiding use of these escape sequences in names.
+
+@cindex adjustment to both margins, difference from @acronym{AT&T} @code{troff}
+@cindex rivers
+When adjusting to both margins, @acronym{AT&T} @code{troff} at first
+adjusts spaces starting from the right; GNU @code{troff} begins from
+the left. Both implementations adjust spaces from opposite ends on
+alternating output lines in this adjustment mode to prevent ``rivers''
+in the text.
+
+@cindex hyphenation, incompatibilities with @acronym{AT&T} @code{troff}
+GNU @code{troff} does not always hyphenate words as @acronym{AT&T}
+@code{troff} does. The @acronym{AT&T} implementation uses a set of
+hard-coded rules specific to English, while GNU @code{troff} uses
+language-specific hyphenation pattern files derived from @TeX{}.
+Furthermore, in old versions of @code{troff} there was a limited amount
+of space to store hyphenation exceptions (arguments to the @code{hw}
+request); GNU @code{troff} has no such restriction.
+
+@cindex output device name string (@code{.T}), in other implementations
+GNU @code{troff} predefines a string @code{.T} containing the argument
+given to the @option{-T} command-line option, namely the current output
+device (for example, @samp{pdf} or @samp{utf8}). The existence of this
+string is a common feature of post-CSTR@tie{}#54
+@code{troff}s@footnote{DWB@tie{}3.3, Solaris, Heirloom Doctools, and
+Plan@tie{}9 @code{troff} all support it.} but valid values are specific
+to each implementation.
+
+@cindex removal of read-only registers, incompatibility with @acronym{AT&T} @code{troff}
+@cindex register, read-only, removal, incompatibility with @acronym{AT&T} @code{troff}
+@cindex read-only register removal, incompatibility with @acronym{AT&T} @code{troff}
+@acronym{AT&T} @code{troff} ignored attempts to remove read-only
+registers; GNU @code{troff} honors such requests. @xref{Built-in
+Registers}.
+
+@cindex output device usage register (@code{.T}), incompatibility with @acronym{AT&T} @code{troff}
+The (read-only) register @code{.T} interpolates@tie{}1 if GNU
+@code{troff} is called with the @option{-T} command-line option, and
+0@tie{}otherwise. This behavior differs from AT&T @code{troff}, which
+interpolated@tie{}1 only if @code{nroff} was the formatter and was
+called with @option{-T}.
+
+@cindex @code{lf} request, incompatibilities with @acronym{AT&T} @code{troff}
+@acronym{AT&T} @code{troff} and other implementations handle the
+@code{lf} request differently. For them, its @var{line} argument
+changes the line number of the @emph{current} line.
+
+@cindex environment availability and naming, incompatibilities with
+@acronym{AT&T} @code{troff} had only environments named @samp{0},
+@samp{1}, and @samp{2}. In GNU @code{troff}, any number of environments
+may exist, using any valid identifiers for their names
+(@pxref{Identifiers}.)
+
+@cindex fractional point sizes
+@cindex fractional type sizes
+@cindex point sizes, fractional
+@cindex type sizes, fractional
+@cindex sizes, fractional
+@cindex @code{ps} request, incompatibilities with @acronym{AT&T} @code{troff}
+Fractional type sizes cause one noteworthy incompatibility. In
+@acronym{AT&T} @code{troff} the @code{ps} request ignores scaling units
+and thus @samp{.ps 10u} sets the type size to 10@tie{}points, whereas in
+GNU @code{troff} it sets the type size to 10@tie{}@emph{scaled} points.
+@xref{Using Fractional Type Sizes}.
+
+@cindex @code{ab} request, incompatibilities with @acronym{AT&T} @code{troff}
+The @code{ab} request differs from @acronym{AT&T} @code{troff}:
+GNU @code{troff} writes no message to the standard error stream if no
+arguments are given, and it exits with a failure status instead of a
+successful one.
+
+@cindex @code{bp} request, incompatibilities with @acronym{AT&T} @code{troff}
+The @code{bp} request differs from @acronym{AT&T} @code{troff}:
+GNU @code{troff} does not accept a scaling unit on the argument, a page
+number; the former (somewhat uselessly) does.
+
+@cindex @code{pm} request, incompatibilities with @acronym{AT&T} @code{troff}
+The @code{pm} request differs from @acronym{AT&T} @code{troff}:
+GNU @code{troff} reports the sizes of macros, strings, and diversions in
+bytes and ignores an argument to report only the sum of the sizes.
+
+@cindex @code{ss} request, incompatibilities with @acronym{AT&T} @code{troff}
+Unlike @acronym{AT&T} @code{troff}, GNU @code{troff} does not ignore the
+@code{ss} request if the output is a terminal device; instead, the
+values of minimal inter-word and additional inter-sentence space are
+each rounded down to the nearest multiple of@tie{}12.
+
+@cindex @code{bd} request, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{cs} request, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{tr} request, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{fp} request, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex input characters and output glyphs, compatibility with @acronym{AT&T} @code{troff}
+@cindex output glyphs, and input characters, compatibility with @acronym{AT&T} @code{troff}
+@cindex characters, input, and output glyphs, compatibility with @acronym{AT&T} @code{troff}
+@cindex glyphs, output, and input characters, compatibility with @acronym{AT&T} @code{troff}
+In GNU @code{troff} there is a fundamental difference between
+(unformatted) characters and (formatted) glyphs. Everything that
+affects how a glyph is output is stored with the glyph node; once a
+glyph node has been constructed, it is unaffected by any subsequent
+requests that are executed, including @code{bd}, @code{cs}, @code{tkf},
+@code{tr}, or @code{fp} requests. Normally, glyphs are constructed from
+characters immediately before the glyph is added to an output line.
+Macros, diversions, and strings are all, in fact, the same type of
+object; they contain a sequence of intermixed character and glyph nodes.
+Special characters transform from one to the other:@: before being added
+to the output, they behave as characters; afterward, they are glyphs. A
+glyph node does not behave like a character node when it is processed by
+a macro:@: it does not inherit any of the special properties that the
+character from which it was constructed might have had. For example,
+the input
+
+@Example
+.di x
+\\\\
+.br
+.di
+.x
+@endExample
+
+@noindent
+produces @samp{\\} in GNU @code{troff}. Each pair of backslashes
+becomes one backslash @emph{glyph}; the resulting backslashes are thus
+not interpreted as escape @emph{characters} when they are reread as the
+diversion is output. @acronym{AT&T} @code{troff} @emph{would} interpret
+them as escape characters when rereading them and end up printing one
+@samp{\}.
+
+@cindex printing backslash (@code{\\}, @code{\e}, @code{\E}, @code{\[rs]})
+@cindex backslash, printing (@code{\\}, @code{\e}, @code{\E}, @code{\[rs]})
+@cindex @code{\e}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\!}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex @code{\?}, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex transparent output, incompatibilities with @acronym{AT&T} @code{troff}
+@cindex output, transparent, incompatibilities with @acronym{AT&T} @code{troff}
+One correct way to obtain a printable backslash in most documents is to
+use the @code{\e} escape sequence; this always prints a single instance
+of the current escape character,@footnote{Naturally, if you've changed
+the escape character, you need to prefix the @code{e} with whatever it
+is---and you'll likely get something other than a backslash in the
+output.} regardless of whether or not it is used in a diversion; it
+also works in both GNU @code{troff} and @acronym{AT&T} @code{troff}.
+
+The other correct way, appropriate in contexts independent of the
+backslash's common use as a @code{troff} escape character---perhaps in
+discussion of character sets or other programming languages---is
+the character escape @code{\(rs} or @code{\[rs]}, for ``reverse
+solidus'', from its name in the @acronym{ECMA-6} (@acronym{ISO/IEC} 646)
+standard.@footnote{The @code{rs} special character identifier was not
+defined in @acronym{AT&T} @code{troff}'s font description files, but is
+in those of its lineal descendant, Heirloom Doctools @code{troff}, as of
+the latter's 060716 release (July 2006).}
+
+To store an escape sequence in a diversion that is interpreted when the
+diversion is reread, either use the traditional @code{\!} transparent
+output facility, or, if this is unsuitable, the new @code{\?} escape
+sequence. @xref{Diversions} and @ref{Gtroff Internals}.
+
+In the somewhat pathological case where a diversion exists containing a
+partially collected line and a partially collected line at the top-level
+diversion has never existed, @acronym{AT&T} @code{troff} will output the
+partially collected line at the end of input; GNU @code{troff} will not.
+
+@codequotebacktick off
+@codequoteundirected off
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node File Formats, Copying This Manual, GNU troff Reference, Top
+@chapter File Formats
+@cindex file formats
+@cindex formats, file
+
+All files read and written by @code{gtroff} are text files. The
+following two sections describe their format.
+
+@menu
+* gtroff Output::
+* Device and Font Description Files::
+@end menu
+
+
+@c =====================================================================
+
+@codequotebacktick on
+@codequoteundirected on
+
+@c BEGIN TODO: Make parallel with groff_out(5).
+@node gtroff Output, Device and Font Description Files, File Formats, File Formats
+@section @code{gtroff} Output
+@cindex @code{gtroff}, output
+@cindex output, @code{gtroff}
+
+This section describes the @code{groff} intermediate output format
+produced by GNU @code{troff}.
+
+As @code{groff} is a wrapper program around GNU @code{troff} and
+automatically calls an output driver (or ``postprocessor''), this output
+does not show up normally. This is why it is called
+@emph{intermediate}. @code{groff} provides the option @option{-Z} to
+inhibit postprocessing such that the produced intermediate output is
+sent to standard output just as it is when calling GNU @code{troff}
+directly.
+
+@cindex @code{troff} output
+@cindex output, @code{troff}
+@cindex intermediate output
+@cindex output, intermediate
+Here, the term @dfn{troff output} describes what is output by
+GNU @code{troff}, while @dfn{intermediate output} refers to the language
+that is accepted by the parser that prepares this output for the output
+drivers. This parser handles whitespace more flexibly than
+@acronym{AT&T}'s implementation and implements obsolete elements for
+compatibility; otherwise, both formats are the same.@footnote{The parser
+and postprocessor for intermediate output can be found in the file@*
+@file{@var{groff-source-dir}/src/libs/libdriver/input.cpp}.}
+
+The main purpose of the intermediate output concept is to facilitate the
+development of postprocessors by providing a common programming
+interface for all devices. It has a language of its own that is
+completely different from the @code{gtroff} language. While the
+@code{gtroff} language is a high-level programming language for text
+processing, the intermediate output language is a kind of low-level
+assembler language by specifying all positions on the page for writing
+and drawing.
+
+The intermediate output produced by @code{gtroff} is fairly readable,
+while output from @acronym{AT&T} @code{troff} is rather hard to
+understand because of strange habits that are still supported, but not
+used any longer by @code{gtroff}.
+
+@menu
+* Language Concepts::
+* Command Reference::
+* Intermediate Output Examples::
+* Output Language Compatibility::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Language Concepts, Command Reference, gtroff Output, gtroff Output
+@subsection Language Concepts
+
+The fundamental operation of the GNU @code{troff} formatter is the
+translation of the @code{groff} input language into a device-independent
+form primarily concerned with what has to be written or drawn at
+specific positions on the output device. This language is simple and
+imperative. In the following discussion, the term @dfn{command} always
+refers to this intermediate output language, and never to the
+@code{groff} language intended for direct use by document authors.
+Intermediate output commands comprise several categories: glyph output;
+font, color, and text size selection; motion of the printing position;
+page advancement; drawing of geometric objects; and device control
+commands, a catch-all for operations not easily classified as any of the
+foregoing, such as directives to start and stop output, identify the
+intended output device, or place URL hyperlinks in supported output
+formats.
+
+@menu
+* Separation::
+* Argument Units::
+* Document Parts::
+@end menu
+
+@node Separation, Argument Units, Language Concepts, Language Concepts
+@subsubsection Separation
+
+@acronym{AT&T} @code{troff} output has strange requirements regarding
+whitespace. The @code{gtroff} output parser, however, is more tolerant,
+making whitespace maximally optional. Such characters, i.e., the tab,
+space, and newline, always have a syntactical meaning. They are never
+printable because spacing within the output is always done by
+positioning commands.
+
+Any sequence of space or tab characters is treated as a single
+@dfn{syntactical space}. It separates commands and arguments, but is
+only required when there would occur a clashing between the command code
+and the arguments without the space. Most often, this happens when
+variable-length command names, arguments, argument lists, or command
+clusters meet. Commands and arguments with a known, fixed length need
+not be separated by syntactical space.
+
+A line break is a syntactical element, too. Every command argument can
+be followed by whitespace, a comment, or a newline character. Thus a
+@dfn{syntactical line break} is defined to consist of optional
+syntactical space that is optionally followed by a comment, and a
+newline character.
+
+The normal commands, those for positioning and text, consist of a single
+letter taking a fixed number of arguments. For historical reasons, the
+parser allows stacking of such commands on the same line, but
+fortunately, in @code{gtroff}'s intermediate output, every command with
+at least one argument is followed by a line break, thus providing
+excellent readability.
+
+The other commands---those for drawing and device controlling---have a
+more complicated structure; some recognize long command names, and some
+take a variable number of arguments. So all @samp{D} and @samp{x}
+commands were designed to request a syntactical line break after their
+last argument. Only one command, @w{@samp{x X}}, has an argument that
+can span several input lines; all other commands must have all of
+their arguments on the same line as the command, i.e., the arguments may
+not be split by a line break.
+
+Empty lines (these are lines containing only space and/or a comment),
+can occur everywhere. They are just ignored.
+
+@node Argument Units, Document Parts, Separation, Language Concepts
+@subsubsection Argument Units
+
+Some commands take integer arguments that are assumed to represent
+values in a measurement unit, but the letter for the corresponding
+scaling unit is not written with the output command arguments. Most
+commands assume the scaling unit @samp{u}, the basic unit of the device,
+some use @samp{z}, the scaled point unit of the device, while others,
+such as the color commands, expect plain integers.
+
+Single characters can have the eighth bit set, as can the names of
+fonts and special characters. The names of characters and fonts can be
+of arbitrary length. A character that is to be printed is always in
+the current font.
+
+A string argument is always terminated by the next whitespace character
+(space, tab, or newline); an embedded @samp{#} character is regarded as
+part of the argument, not as the beginning of a comment command. An
+integer argument is already terminated by the next non-digit character,
+which then is regarded as the first character of the next argument or
+command.
+
+@node Document Parts, , Argument Units, Language Concepts
+@subsubsection Document Parts
+
+A correct intermediate output document consists of two parts, the
+@dfn{prologue} and the @dfn{body}.
+
+The task of the prologue is to set the general device parameters using
+three exactly specified commands. @code{gtroff}'s prologue is
+guaranteed to consist of the following three lines (in that order):
+
+@Example
+x T @var{device}
+x res @var{n} @var{h} @var{v}
+x init
+@endExample
+
+@noindent
+with the arguments set as outlined in @ref{Device Control Commands}.
+The parser for the intermediate output format is able to interpret
+additional whitespace and comments as well even in the prologue.
+
+The body is the main section for processing the document data.
+Syntactically, it is a sequence of any commands different from the ones
+used in the prologue. Processing is terminated as soon as the first
+@w{@samp{x stop}} command is encountered; the last line of any
+@code{gtroff} intermediate output always contains such a command.
+
+Semantically, the body is page oriented. A new page is started by a
+@samp{p} command. Positioning, writing, and drawing commands are always
+done within the current page, so they cannot occur before the first
+@samp{p} command. Absolute positioning (by the @samp{H} and @samp{V}
+commands) is done relative to the current page; all other positioning is
+done relative to the current location within this page.
+
+@c ---------------------------------------------------------------------
+
+@node Command Reference, Intermediate Output Examples, Language Concepts, gtroff Output
+@subsection Command Reference
+
+This section describes all intermediate output commands, both from
+@acronym{AT&T} @code{troff} as well as the @code{gtroff} extensions.
+
+@menu
+* Comment Command::
+* Simple Commands::
+* Graphics Commands::
+* Device Control Commands::
+* Obsolete Command::
+@end menu
+
+@node Comment Command, Simple Commands, Command Reference, Command Reference
+@subsubsection Comment Command
+
+@table @code
+@item #@var{anything}@angles{end of line}
+A comment. Ignore any characters from the @samp{#} character up to the
+next newline character.
+
+This command is the only possibility for commenting in the intermediate
+output. Each comment can be preceded by arbitrary syntactical space;
+every command can be terminated by a comment.
+@end table
+
+@node Simple Commands, Graphics Commands, Comment Command, Command Reference
+@subsubsection Simple Commands
+
+The commands in this subsection have a command code consisting of a
+single character, taking a fixed number of arguments. Most of them are
+commands for positioning and text writing. These commands are tolerant
+of whitespace. Optionally, syntactical space can be inserted before,
+after, and between the command letter and its arguments. All of these
+commands are stackable; i.e., they can be preceded by other simple
+commands or followed by arbitrary other commands on the same line. A
+separating syntactical space is necessary only when two integer
+arguments would clash or if the preceding argument ends with a string
+argument.
+
+@table @code
+@ignore
+.if (\n[@USE_ENV_STACK] == 1) \{\
+.command {
+Open a new environment by copying the actual device configuration data
+to the environment stack.
+.
+The current environment is setup by the device specification and
+manipulated by the setting commands.
+.
+.
+.command }
+Close the actual environment (opened by a preceding
+.BR { \~command)
+and restore the previous environment from the environment
+stack as the actual device configuration data.
+.
+\} \" endif @USE_ENV_STACK
+@end ignore
+
+@item C @var{id}@angles{whitespace}
+Typeset the glyph of the special character @var{id}. Trailing
+syntactical space is necessary to allow special character names of
+arbitrary length. The drawing position is not advanced.
+
+@item c @var{g}
+Typeset the glyph of the ordinary character@tie{}@var{c}. The drawing
+position is not advanced.
+
+@item f @var{n}
+Select the font mounted at position@tie{}@var{n}. @var{n}@tie{}cannot
+be negative.
+
+@item H @var{n}
+Horizontally move the drawing position to @var{n}@tie{}basic units from
+the left edge of the page. @var{n}@tie{}cannot be negative.
+
+@item h @var{n}
+Move the drawing position right @var{n} basic units. @acronym{AT&T}
+@code{troff} allowed negative @var{n}; GNU @code{troff} does not produce
+such values, but @code{groff}'s output driver library handles them.
+
+@item m @var{color-scheme} @r{[}@var{component} @dots{}@r{]}
+Select the stroke color using the @var{component}s in the color space
+@var{scheme}. Each @var{component} is an integer between 0 and 65535.
+The quantity of components and their meanings vary with each
+@var{scheme}. This command is a @code{groff} extension.
+
+@table @code
+@item mc @var{cyan} @var{magenta} @var{yellow}
+Use the CMY color scheme with components cyan, magenta, and yellow.
+
+@item md
+Use the default color (no components; black in most cases).
+
+@item mg @var{gray}
+Use a grayscale color scheme with a component ranging between 0 (black)
+and 65535 (white).
+
+@item mk @var{cyan} @var{magenta} @var{yellow} @var{black}
+Use the CMYK color scheme with components cyan, magenta, yellow, and
+black.
+
+@item mr @var{red} @var{green} @var{blue}
+Use the RGB color scheme with components red, green, and blue.
+@end table
+
+@item N @var{n}
+Typeset the glyph with index@tie{}@var{n} in the current font.
+@var{n}@tie{}is normally a non-negative integer. The drawing position
+is not advanced. The @code{html} and @code{xhtml} devices use this
+command with negative@tie{}@var{n} to produce unbreakable space; the
+absolute value of @var{n} is taken and interpreted in basic units.
+
+@item n @var{b} @var{a}
+Indicate a break. No action is performed; the command is present to
+make the output more easily parsed. The integers @var{b}
+and@tie{}@var{a} describe the vertical space amounts before and after
+the break, respectively. GNU @code{troff} issues this command but
+@code{groff}'s output driver library ignores it. See @code{v} and
+@code{V} below.
+
+@item p @var{n}
+Begin a new page, setting its number to@tie{}@var{n}. Each page is
+independent, even from those using the same number. The vertical
+drawing position is set to@tie{}0. All positioning, writing, and
+drawing commands are interpreted in the context of a page, so a
+@code{p}@tie{}command must precede them.
+
+@item s @var{n}
+Set type size to @var{n} scaled points (unit@tie{}@code{z} in GNU
+@code{troff}.
+@acronym{AT&T} @code{troff} used unscaled points @code{p} instead;
+see @ref{Output Language Compatibility}.
+
+@item t @var{xyz}@angles{whitespace}
+@itemx t @var{xyz} @var{dummy-arg}@angles{whitespace}
+Typeset a word @var{xyz}; that is, set a sequence of ordinary glyphs
+named @var{x}, @var{y}, @var{z}, @dots{}, terminated by a space
+character or a line break; an optional second integer argument is
+ignored (this allows the formatter to generate an even number of
+arguments). @c XXX: Why?
+Each glyph is set at the current drawing position, and the position is
+then advanced horizontally by the glyph's width. A glyph's width is
+read from its metrics in the font description file, scaled to the
+current type size, and rounded to a multiple of the horizontal motion
+quantum. Use the @code{C} command to emplace glyphs of special
+characters. The @code{t}@tie{}command is a @code{groff} extension and
+is output only for devices whose @file{DESC} file contains the
+@code{tcommand} directive; see @ref{DESC File Format}.
+
+@item u @var{n} @var{xyz}@angles{whitespace}
+Typeset word @var{xyz} with track kerning. As @code{t}, but after
+placing each glyph, the drawing position is further advanced
+horizontally by@tie{}@var{n} basic units (@code{u}). The
+@code{u}@tie{}command is a @code{groff} extension and is output only for
+devices whose @file{DESC} file contains the @code{tcommand} directive;
+see @ref{DESC File Format}.
+
+@item V @var{n}
+Vertically move the drawing position to @var{n}@tie{}basic units from
+the top edge of the page. @var{n}@tie{}cannot be negative.
+
+@item v @var{n}
+Move the drawing position down @var{n} basic units. @acronym{AT&T}
+@code{troff} allowed negative @var{n}; GNU @code{troff} does not produce
+such values, but @code{groff}'s output driver library handles them.
+
+@item w
+Indicate an inter-word space. No action is performed; the command is
+present to make the output more easily parsed. Only adjustable,
+breakable inter-word spaces are thus described; those resulting from
+@code{\~} or horizontal motion escape sequences are not. GNU
+@code{troff} issues this command but @code{groff}'s output driver
+library ignores it. See @code{h} and @code{H} above.
+@end table
+
+@node Graphics Commands, Device Control Commands, Simple Commands, Command Reference
+@subsubsection Graphics Commands
+
+Each graphics or drawing command in the intermediate output starts with
+the letter @samp{D}, followed by one or two characters that specify a
+subcommand; this is followed by a fixed or variable number of integer
+arguments that are separated by a single space character. A @samp{D}
+command may not be followed by another command on the same line (apart
+from a comment), so each @samp{D} command is terminated by a syntactical
+line break.
+
+@code{gtroff} output follows the classical spacing rules (no space
+between command and subcommand, all arguments are preceded by a single
+space character), but the parser allows optional space between the
+command letters and makes the space before the first argument optional.
+As usual, each space can be any sequence of tab and space characters.
+
+Some graphics commands can take a variable number of arguments. In this
+case, they are integers representing a size measured in basic units
+@samp{u}. The arguments called @var{h1}, @var{h2}, @dots{}, @var{hn}
+stand for horizontal distances where positive means right, negative
+left. The arguments called @var{v1}, @var{v2}, @dots{}, @var{vn} stand
+for vertical distances where positive means down, negative up. All
+these distances are offsets relative to the current location.
+
+Each graphics command directly corresponds to a similar @code{gtroff}
+@code{\D} escape sequence. @xref{Drawing Geometric Objects}.
+
+Unknown @samp{D} commands are assumed to be device-specific. Its
+arguments are parsed as strings; the whole information is then sent to
+the postprocessor.
+
+In the following command reference, the syntax element @angles{line
+break} means a syntactical line break as defined above.
+
+@table @code
+@item D~ @var{h1} @var{v1} @var{h2} @var{v2} @dots{} @var{hn} @var{vn}@angles{line break}
+Draw B-spline from current position to offset (@var{h1},@var{v1}), then
+to offset (@var{h2},@var{v2}), if given, etc., up to
+(@var{hn},@var{vn}). This command takes a variable number of argument
+pairs; the current position is moved to the terminal point of the drawn
+curve.
+
+@item Da @var{h1} @var{v1} @var{h2} @var{v2}@angles{line break}
+Draw arc from current position to
+(@var{h1},@var{v1})@math{+}(@var{h2},@var{v2}) with center at
+(@var{h1},@var{v1}); then move the current position to the final point
+of the arc.
+
+@item DC @var{d}@angles{line break}
+@itemx DC @var{d} @var{dummy-arg}@angles{line break}
+Draw a solid circle using the current fill color with
+diameter@tie{}@var{d} (integer in basic units @samp{u}) with leftmost
+point at the current position; then move the current position to the
+rightmost point of the circle. An optional second integer argument is
+ignored (this allows the formatter to generate an even number of
+arguments). This command is a @code{gtroff} extension.
+
+@item Dc @var{d}@angles{line break}
+Draw circle line with diameter@tie{}@var{d} (integer in basic units
+@samp{u}) with leftmost point at the current position; then move the
+current position to the rightmost point of the circle.
+
+@item DE @var{h} @var{v}@angles{line break}
+Draw a solid ellipse in the current fill color with a horizontal
+diameter of@tie{}@var{h} and a vertical diameter of@tie{}@var{v} (both
+integers in basic units @samp{u}) with the leftmost point at the current
+position; then move to the rightmost point of the ellipse. This command
+is a @code{gtroff} extension.
+
+@item De @var{h} @var{v}@angles{line break}
+Draw an outlined ellipse with a horizontal diameter of@tie{}@var{h} and
+a vertical diameter of@tie{}@var{v} (both integers in basic units
+@samp{u}) with the leftmost point at current position; then move to the
+rightmost point of the ellipse.
+
+@item DF @var{color-scheme} @r{[}@var{component} @dots{}@r{]}@angles{line break}
+Set fill color for solid drawing objects using different color schemes;
+the analogous command for setting the color of text, line graphics, and
+the outline of graphic objects is @samp{m}. The color components are
+specified as integer arguments between 0 and 65535. The number of color
+components and their meaning vary for the different color schemes.
+These commands are generated by @code{gtroff}'s escape sequences
+@samp{\D'F @dots{}'} and @code{\M} (with no other corresponding
+graphics commands). No position changing. This command is a
+@code{gtroff} extension.
+
+@table @code
+@item DFc @var{cyan} @var{magenta} @var{yellow}@angles{line break}
+Set fill color for solid drawing objects using the CMY color scheme,
+having the 3@tie{}color components @var{cyan}, @var{magenta}, and
+@var{yellow}.
+
+@item DFd@angles{line break}
+Set fill color for solid drawing objects to the default fill color value
+(black in most cases). No component arguments.
+
+@item DFg @var{gray}@angles{line break}
+Set fill color for solid drawing objects to the shade of gray given by
+the argument, an integer between 0 (black) and 65535 (white).
+
+@item DFk @var{cyan} @var{magenta} @var{yellow} @var{black}@angles{line break}
+Set fill color for solid drawing objects using the CMYK color scheme,
+having the 4@tie{}color components @var{cyan}, @var{magenta},
+@var{yellow}, and @var{black}.
+
+@item DFr @var{red} @var{green} @var{blue}@angles{line break}
+Set fill color for solid drawing objects using the RGB color scheme,
+having the 3@tie{}color components @var{red}, @var{green}, and
+@var{blue}.
+@end table
+
+@item Df @var{n}@angles{line break}
+The argument@tie{}@var{n} must be an integer in the range @math{-32767}
+to 32767.
+
+@table @asis
+@item @math{0 @leq{} @var{n} @leq{} 1000}
+Set the color for filling solid drawing objects to a shade of gray,
+where 0 corresponds to solid white, 1000 (the default) to solid black,
+and values in between to intermediate shades of gray; this is obsoleted
+by command @samp{DFg}.
+
+@item @math{@var{n} < 0} or @math{@var{n} > 1000}
+Set the filling color to the color that is currently being used for the
+text and the outline, see command @samp{m}. For example, the command
+sequence
+
+@Example
+mg 0 0 65535
+Df -1
+@endExample
+
+@noindent
+sets all colors to blue.
+@end table
+
+@noindent
+No position changing. This command is a @code{gtroff} extension.
+
+@item Dl @var{h} @var{v}@angles{line break}
+Draw line from current position to offset (@var{h},@var{v}) (integers in
+basic units @samp{u}); then set current position to the end of the drawn
+line.
+
+@item Dp @var{h1} @var{v1} @var{h2} @var{v2} @dots{} @var{hn} @var{vn}@angles{line break}
+Draw a polygon line from current position to offset (@var{h1},@var{v1}),
+from there to offset (@var{h2},@var{v2}), etc., up to offset
+(@var{hn},@var{vn}), and from there back to the starting position. For
+historical reasons, the position is changed by adding the sum of all
+arguments with odd index to the actual horizontal position and the even
+ones to the vertical position. Although this doesn't make sense it is
+kept for compatibility.
+@ignore
+As the polygon is closed, the end of drawing is the starting point, so
+the position doesn't change.
+@end ignore
+This command is a @code{gtroff} extension.
+
+@item DP @var{h1} @var{v1} @var{h2} @var{v2} @dots{} @var{hn} @var{vn}@angles{line break}
+Draw a solid polygon in the current fill color rather than an outlined
+polygon, using the same arguments and positioning as the corresponding
+@samp{Dp} command.
+@ignore
+No position changing.
+@end ignore
+This command is a @code{gtroff} extension.
+
+@item Dt @var{n}@angles{line break}
+Set the current line thickness to@tie{}@var{n} (an integer in basic
+units @samp{u}) if @math{@var{n}>0}; if @math{@var{n}=0} select the
+smallest available line thickness; if @math{@var{n}<0} set the line
+thickness proportional to the type size (this is the default before the
+first @samp{Dt} command was specified). For historical reasons, the
+horizontal position is changed by adding the argument to the actual
+horizontal position, while the vertical position is not changed.
+Although this doesn't make sense it is kept for compatibility.
+@ignore
+No position changing.
+@end ignore
+This command is a @code{gtroff} extension.
+@end table
+
+@node Device Control Commands, Obsolete Command, Graphics Commands, Command Reference
+@subsubsection Device Control Commands
+
+Each device control command starts with the letter @samp{x}, followed by
+a space character (optional or arbitrary space or tab in @code{gtroff})
+and a subcommand letter or word; each argument (if any) must be preceded
+by a syntactical space. All @samp{x} commands are terminated by a
+syntactical line break; no device control command can be followed by
+another command on the same line (except a comment).
+
+The subcommand is basically a single letter, but to increase
+readability, it can be written as a word, i.e., an arbitrary sequence of
+characters terminated by the next tab, space, or newline character. All
+characters of the subcommand word but the first are simply ignored. For
+example, @code{gtroff} outputs the initialization command @w{@samp{x i}}
+as @w{@samp{x init}} and the resolution command @w{@samp{x r}} as
+@w{@samp{x res}}.
+
+In the following, the syntax element @angles{line break} means a
+syntactical line break (@pxref{Separation}).
+
+@table @code
+@item xF @var{name}@angles{line break}
+The @samp{F} stands for @var{Filename}.
+
+Use @var{name} as the intended name for the current file in error
+reports. This is useful for remembering the original file name when
+@code{gtroff} uses an internal piping mechanism. The input file is not
+changed by this command. This command is a @code{gtroff} extension.
+
+@item xf @var{n} @var{s}@angles{line break}
+The @samp{f} stands for @var{font}.
+
+Mount font position@tie{}@var{n} (a non-negative integer) with font
+named@tie{}@var{s} (a text word). @xref{Font Positions}.
+
+@item xH @var{n}@angles{line break}
+The @samp{H} stands for @var{Height}.
+
+Set glyph height to@tie{}@var{n} (a positive integer in scaled points
+@samp{z}). @acronym{AT&T} @code{troff} uses the unit points (@samp{p})
+instead. @xref{Output Language Compatibility}.
+
+@item xi@angles{line break}
+The @samp{i} stands for @var{init}.
+
+Initialize device. This is the third command of the prologue.
+
+@item xp@angles{line break}
+The @samp{p} stands for @var{pause}.
+
+Parsed but ignored. The @acronym{AT&T} @code{troff} manual documents
+this command as
+
+@display
+pause device, can be restarted
+@end display
+
+but GNU @code{troff} output drivers do nothing with this command.
+
+@item xr @var{n} @var{h} @var{v}@angles{line break}
+The @samp{r} stands for @var{resolution}.
+
+Resolution is@tie{}@var{n}, while @var{h} is the minimal horizontal
+motion, and @var{v} the minimal vertical motion possible with this
+device; all arguments are positive integers in basic units @samp{u} per
+inch. This is the second command of the prologue.
+
+@item xS @var{n}@angles{line break}
+The @samp{S} stands for @var{Slant}.
+
+Set slant to@tie{}@var{n} (an integer in basic units @samp{u}).
+
+@item xs@angles{line break}
+The @samp{s} stands for @var{stop}.
+
+Terminates the processing of the current file; issued as the last
+command of any intermediate @code{troff} output.
+
+@item xt@angles{line break}
+The @samp{t} stands for @var{trailer}.
+
+Generate trailer information, if any. In GNU @code{troff}, this is
+ignored.
+
+@item xT @var{xxx}@angles{line break}
+The @samp{T} stands for @var{Typesetter}.
+
+Set the name of the output driver to @var{xxx}, a sequence of
+non-whitespace characters terminated by whitespace. The possible names
+correspond to those of @code{groff}'s @option{-T} option. This is the
+first command of the prologue.
+
+@item xu @var{n}@angles{line break}
+The @samp{u} stands for @var{underline}.
+
+Configure underlining of spaces. If @var{n} is@tie{}1, start
+underlining of spaces; if @var{n} is@tie{}0, stop underlining of spaces.
+This is needed for the @code{cu} request in @code{nroff} mode and is
+ignored otherwise. This command is a @code{gtroff} extension.
+
+@item xX @var{anything}@angles{line break}
+The @samp{x} stands for @var{X-escape}.
+
+Send string @var{anything} uninterpreted to the device. If the line
+following this command starts with a @samp{+} character this line is
+interpreted as a continuation line in the following sense. The @samp{+}
+is ignored, but a newline character is sent instead to the device, the
+rest of the line is sent uninterpreted. The same applies to all
+following lines until the first character of a line is not a @samp{+}
+character. This command is generated by the @code{gtroff} escape
+sequence @code{\X}. The line-continuing feature is a @code{gtroff}
+extension.
+@end table
+
+@node Obsolete Command, , Device Control Commands, Command Reference
+@subsubsection Obsolete Command
+In @acronym{AT&T} @code{troff} output, the writing of a single glyph is
+mostly done by a very strange command that combines a horizontal move
+and a single character giving the glyph name. It doesn't have a command
+code, but is represented by a 3-character argument consisting of exactly
+2@tie{}digits and a character.
+
+@table @asis
+@item @var{dd}@var{g}
+Move right @var{dd} (exactly two decimal digits) basic units @samp{u},
+then print glyph@tie{}@var{g} (represented as a single character).
+
+In GNU @code{troff}, arbitrary syntactical space around and within this
+command is allowed. Only when a preceding command on the same line ends
+with an argument of variable length is a separating space obligatory.
+In @acronym{AT&T} @code{troff}, large clusters of these and other
+commands are used, mostly without spaces; this made such output almost
+unreadable.
+@end table
+
+For modern high-resolution devices, this command does not make sense
+because the width of the glyphs can become much larger than two decimal
+digits. In @code{gtroff}, this is only used for the devices @code{X75},
+@code{X75-12}, @code{X100}, and @code{X100-12}. For other devices, the
+commands @samp{t} and @samp{u} provide a better functionality.
+
+@c ---------------------------------------------------------------------
+
+@node Intermediate Output Examples, Output Language Compatibility, Command Reference, gtroff Output
+@subsection Intermediate Output Examples
+
+This section presents the intermediate output generated from the same
+input for three different devices. The input is the sentence @samp{hell
+world} fed into @code{gtroff} on the command line.
+
+@table @asis
+@item High-resolution device @code{ps}
+
+This is the standard output of @code{gtroff} if no @option{-T} option is
+given.
+
+@example
+@group
+shell> echo "hell world" | groff -Z -T ps
+
+x T ps
+x res 72000 1 1
+x init
+@end group
+p1
+x font 5 TR
+f5
+s10000
+V12000
+H72000
+thell
+wh2500
+tw
+H96620
+torld
+n12000 0
+@group
+x trailer
+V792000
+x stop
+@end group
+@end example
+
+@noindent
+This output can be fed into @code{grops} to get its representation as a
+PostScript file.
+
+@item Low-resolution device @code{latin1}
+
+This is similar to the high-resolution device except that the
+positioning is done at a minor scale. Some comments (lines starting
+with @samp{#}) were added for clarification; they were not generated by
+the formatter.
+
+@example
+@group
+shell> echo "hell world" | groff -Z -T latin1
+
+# prologue
+x T latin1
+x res 240 24 40
+x init
+@end group
+# begin a new page
+p1
+# font setup
+x font 1 R
+f1
+s10
+# initial positioning on the page
+V40
+H0
+# write text 'hell'
+thell
+# inform about space, and issue a horizontal jump
+wh24
+# write text 'world'
+tworld
+# announce line break, but do nothing because...
+n40 0
+@group
+# ...the end of the document has been reached
+x trailer
+V2640
+x stop
+@end group
+@end example
+
+@noindent
+This output can be fed into @code{grotty} to get a formatted text
+document.
+
+@item @acronym{AT&T} @code{troff} output
+Since a computer monitor has a much lower resolution than modern
+printers, the intermediate output for X11 devices can use the
+jump-and-write command with its 2-digit displacements.
+
+@example
+@group
+shell> echo "hell world" | groff -Z -T X100
+
+x T X100
+x res 100 1 1
+x init
+@end group
+p1
+x font 5 TR
+f5
+s10
+V16
+H100
+# write text with jump-and-write commands
+ch07e07l03lw06w11o07r05l03dh7
+n16 0
+@group
+x trailer
+V1100
+x stop
+@end group
+@end example
+
+@noindent
+This output can be fed into @code{xditview} or @code{gxditview} for
+displaying in@tie{}X.
+
+Due to the obsolete jump-and-write command, the text clusters in the
+@acronym{AT&T} @code{troff} output are almost unreadable.
+@end table
+
+@c ---------------------------------------------------------------------
+
+@node Output Language Compatibility, , Intermediate Output Examples, gtroff Output
+@subsection Output Language Compatibility
+
+The intermediate output language of @acronym{AT&T} @code{troff} was
+first documented in @cite{A Typesetter-independent TROFF}, by Brian
+Kernighan, and by 1992 the @acronym{AT&T} @code{troff} manual was
+updated to incorprate a description of it.
+
+The GNU @code{troff} intermediate output format is compatible with this
+specification except for the following features.
+
+@itemize @bullet
+@item
+The classical quasi-device independence is not yet implemented.
+
+@item
+The old hardware was very different from what we use today. So the
+@code{groff} devices are also fundamentally different from the ones
+in @acronym{AT&T} @code{troff}. For example, the @acronym{AT&T}
+PostScript device is called @code{post} and has a resolution of only 720
+units per inch, suitable for printers 20 years ago, while @code{groff}'s
+@code{ps} device has a resolution of 72000 units per inch. Maybe, by
+implementing some rescaling mechanism similar to the classical
+quasi-device independence, @code{groff} could emulate @acronym{AT&T}'s
+@code{post} device.
+
+@item
+The B-spline command @samp{D~} is correctly handled by the intermediate
+output parser, but the drawing routines aren't implemented in some of
+the postprocessor programs.
+
+@item
+The argument of the commands @samp{s} and @w{@samp{x H}} has the
+implicit unit scaled point @samp{z} in @code{gtroff}, while
+@acronym{AT&T} @code{troff} has point (@samp{p}). This isn't an
+incompatibility but a compatible extension, for both units coincide for
+all devices without a @code{sizescale} parameter in the @file{DESC}
+file, including all postprocessors from @acronym{AT&T} and
+@code{groff}'s text devices. The few @code{groff} devices with a
+@code{sizescale} parameter either do not exist for @acronym{AT&T}
+@code{troff}, have a different name, or seem to have a different
+resolution. So conflicts are very unlikely.
+
+@item
+The position changing after the commands @samp{Dp}, @samp{DP}, and
+@samp{Dt} is illogical, but as old versions of @code{gtroff} used this
+feature it is kept for compatibility reasons.
+
+@ignore
+Temporarily, there existed some confusion on the positioning after the
+@samp{D} commands that are @code{groff} extensions. This has been
+clarified by establishing the classical rule for all @code{groff}
+drawing commands:
+
+@itemize
+@item
+The position after a graphic object has been drawn is at its end; for
+circles and ellipses, the `end' is at the right side.
+
+@item
+From this, the positionings specified for the drawing commands above
+follow quite naturally.
+@end itemize
+@end ignore
+
+@end itemize
+@c END TODO: Make parallel with groff_out(5).
+
+
+@c =====================================================================
+
+@c BEGIN Keep parallel with groff_font(5).
+@node Device and Font Description Files, , gtroff Output, File Formats
+@section Device and Font Description Files
+@cindex font files
+@cindex files, font
+
+The @code{groff} font and output device description formats are slight
+extensions of those used by @acronym{AT&T} device-independent
+@code{troff}. In distinction to the @acronym{AT&T} implementation,
+@code{groff} lacks a binary format; all files are text
+files.@footnote{Plan@tie{}9 @code{troff} has also abandoned the binary
+format.} The device and font description files for a device @var{name}
+are stored in a @file{dev@var{name}} directory. The device description
+file is called @file{DESC}, and, for each font supported by the device,
+a font description file is called@tie{}@file{@var{f}}, where
+@var{f}@tie{}is usually an abbreviation of a font's name and/or style.
+For example, the @code{ps} (PostScript) device has @code{groff} font
+description files for Times roman (@file{TR}) and Zapf Chancery Medium
+italic (@file{ZCMI}), among many others, while the @code{utf8} device
+(for terminal emulators) has only font descriptions for the roman,
+italic, bold, and bold-italic styles (@file{R}, @file{I}, @file{B}, and
+@file{BI}, respectively).
+
+Device and font description files are read both by the formatter, GNU
+@code{troff}, and by output drivers. The programs delegate these files'
+processing to an internal library, @file{libgroff}, ensuring their
+consistent interpretation.
+
+@menu
+* DESC File Format::
+* Font Description File Format::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node DESC File Format, Font Description File Format, Device and Font Description Files, Device and Font Description Files
+@subsection @file{DESC} File Format
+@cindex @file{DESC} file format
+@cindex font description file format
+@cindex format of font description file
+
+The @file{DESC} file contains a series of directives; each begins a
+line. Their order is not important, with two exceptions: (1) the
+@code{res} directive must precede any @code{papersize} directive; and
+(2) the @code{charset} directive must come last (if at all). If a
+directive name is repeated, later entries in the file override previous
+ones (except that the paper dimensions are computed based on the
+@code{res} directive last seen when @code{papersize} is encountered).
+Spaces and/or tabs separate words and are ignored at line boundaries.
+@cindex comments in device description files
+@cindex device description files, comments
+@kindex #
+Comments start with the @samp{#} character and extend to the end of a
+line. Empty lines are ignored.
+
+@table @code
+@item family @var{fam}
+@kindex family
+The default font family is @var{fam}.
+
+@item fonts @var{n} @var{F1} @r{@dots{}} @var{Fn}
+@kindex fonts
+Fonts @var{F1}, @dots{}, @var{Fn} are mounted at font positions
+@var{m}+1, @dots{}, @var{m}+@var{n} where @var{m} is the number of
+@code{styles} (see below). This directive may extend over more than one
+line. A font name of@tie{}@code{0} causes no font to be mounted at the
+corresponding position.
+
+@item hor @var{n}
+@kindex hor
+@cindex horizontal motion quantum
+@cindex motion quantum, horizontal
+@cindex quantum, horizontal motion
+@cindex horizontal resolution
+@cindex resolution, horizontal
+The horizontal motion quantum is @var{n}@tie{}basic units. All
+horizontal quantities are rounded to multiples of@tie{}@var{n}.
+
+@item image_generator @var{program}
+@kindex image_generator
+@cindex PostScript, PNG image generation
+@cindex PNG image generation from PostScript
+Use @var{program} to generate PNG images from PostScript input. Under
+GNU/Linux, this is usually @code{gs}, but under other systems (notably
+Cygwin) it might be set to another name. The @code{grohtml} driver uses
+this directive.
+
+@item paperlength @var{n}
+@kindex paperlength
+The vertical dimension of the output medium is @var{n}@tie{}basic units
+(deprecated: use @code{papersize} instead).
+
+@item papersize @var{format-or-dimension-pair-or-file-name} @r{@dots{}}
+@kindex papersize
+The dimensions of the output medium are as according to the
+argument, which is either a standard paper format, a pair of dimensions,
+or the name of a plain text file containing either of the foregoing.
+
+Recognized paper formats are the ISO and DIN formats
+@code{A0}--@code{A7}, @code{B0}--@code{B7}, @code{C0}--@code{C7},
+@code{D0}--@code{D7}; the U.S.@: paper types @code{letter},
+@code{legal}, @code{tabloid}, @code{ledger}, @code{statement}, and
+@code{executive}; and the envelope formats @code{com10}, @code{monarch},
+and @code{DL}. Matching is performed without regard for lettercase.
+
+Alternatively, the argument can be a custom paper format in the format
+@code{@var{length},@var{width}} (with no spaces before or after the
+comma). Both @var{length} and @var{width} must have a unit appended;
+valid units are @samp{i} for inches, @samp{c} for centimeters, @samp{p}
+for points, and @samp{P} for picas. Example: @samp{12c,235p}. An
+argument that starts with a digit is always treated as a custom paper
+format.
+
+Finally, the argument can be a file name (e.g., @file{/etc/papersize});
+if the file can be opened, the first line is read and a match attempted
+against each of the other forms. No comment syntax is supported.
+
+More than one argument can be specified;
+each is scanned in turn and the first valid paper specification used.
+
+@item paperwidth @var{n}
+@kindex paperwidth
+The horizontal dimension of the output medium is @var{n}@tie{}basic
+units (deprecated: use @code{papersize} instead).
+
+@item pass_filenames
+@kindex pass_filenames
+Direct GNU @code{troff} to emit the name of the source file being
+processed. This is achieved with the intermediate output command
+@samp{x F}, which @code{grohtml} interprets.
+
+@item postpro @var{program}
+@kindex postpro
+Use @var{program} as the postprocessor.
+
+@item prepro @var{program}
+@kindex prepro
+Use @var{program} as a preprocessor. The @code{html} and @code{xhtml}
+output devices use this directive.
+
+@item print @var{program}
+@kindex print
+Use @var{program} as a spooler program for printing. If omitted, the
+@option{-l} and @option{-L} options of @code{groff} are ignored.
+
+@item res @var{n}
+@kindex res
+@cindex device resolution
+@cindex resolution, device
+The device resolution is @var{n}@tie{}basic units per inch.
+
+@item sizes @var{s1} @r{@dots{}} @var{sn} 0
+@kindex sizes
+The device has fonts at @var{s1}, @dots{}, @var{sn} scaled points (see
+below). The list of sizes must be terminated by@tie{}@code{0}. Each
+@var{si} can also be a range of sizes @var{m}--@var{n}. The list can
+extend over more than one line.
+
+@item sizescale @var{n}
+@kindex sizescale
+A typographical point is subdivided into @var{n}@tie{}scaled points.
+The default is@tie{}@code{1}. @xref{Using Fractional Type Sizes}.
+
+@item styles @var{S1} @r{@dots{}} @var{Sm}
+@kindex styles
+The first@tie{}@var{m} mounting positions are associated with styles
+@var{S1}, @dots{}, @var{Sm}.
+
+@item tcommand
+@kindex tcommand
+The postprocessor can handle the @samp{t} and @samp{u} intermediate
+output commands.
+
+@item unicode
+@kindex unicode
+The output device supports the complete Unicode repertoire. This
+directive is useful only for devices that produce character entities
+instead of glyphs.
+
+If @code{unicode} is present, no @code{charset} section is required in
+the font description files since the Unicode handling built into
+@code{groff} is used. However, if there are entries in a font
+description file's @code{charset} section, they either override the
+default mappings for those particular characters or add new mappings
+(normally for composite characters).
+
+The @code{utf8}, @code{html}, and @code{xhtml} output devices use this
+directive.
+
+@item unitwidth @var{n}
+@kindex unitwidth
+Quantities in the font description files are in basic units for fonts
+whose type size is @var{n}@tie{}scaled points.
+
+@item unscaled_charwidths
+@kindex unscaled_charwidths
+Make the font handling module always return unscaled character widths.
+The @code{grohtml} driver uses this directive.
+
+@item use_charnames_in_special
+@kindex use_charnames_in_special
+GNU @code{troff} should encode special characters inside device control
+commands; see @ref{Postprocessor Access}. The @code{grohtml} driver
+uses this directive.
+
+@item vert @var{n}
+@kindex vert
+@cindex vertical motion quantum
+@cindex motion quantum, vertical
+@cindex quantum, vertical motion
+@cindex vertical resolution
+@cindex resolution, vertical
+The vertical motion quantum is @var{n}@tie{}basic units. All vertical
+quantities are rounded to multiples of@tie{}@var{n}.
+
+@item charset
+@kindex charset
+This line and everything following it in the file are ignored. It is
+recognized for compatibility with other @code{troff} implementations.
+In GNU @code{troff}, character set repertoire is described on a
+per-font basis.
+@end table
+
+@kindex spare1
+@kindex spare2
+@kindex biggestfont
+GNU @code{troff} recognizes but ignores the directives @code{spare1},
+@code{spare2}, and @code{biggestfont}.
+
+The @code{res}, @code{unitwidth}, @code{fonts}, and @code{sizes} lines
+are mandatory. Directives not listed above are ignored by GNU
+@code{troff} but may be used by postprocessors to obtain further
+information about the device.
+
+@c ---------------------------------------------------------------------
+
+@node Font Description File Format, , DESC File Format, Device and Font Description Files
+@subsection Font Description File Format
+@cindex font file, format
+@cindex font description file, format
+@cindex format of font files
+@cindex format of font description files
+
+On typesetting output devices, each font is typically available at
+multiple sizes. While paper measurements in the device description file
+are in absolute units, measurements applicable to fonts must be
+proportional to the type size. @code{groff} achieves this using the
+precedent set by @acronym{AT&T} device-independent @code{troff}: one
+font size is chosen as a norm, and all others are scaled linearly
+relative to that basis. The ``unit width'' is the number of basic units
+per point when the font is rendered at this nominal size.
+
+For instance, @code{groff}'s @code{lbp} device uses a @code{unitwidth}
+of@tie{}800. Its Times roman font @samp{TR} has a @code{spacewidth}
+of@tie{}833; this is also the width of its comma, period, centered
+period, and mathematical asterisk, while its @samp{M} is 2,963 basic
+units. Thus, an @samp{M} on the @code{lbp} device is 2,963 basic units
+wide at a notional type size of 800@tie{}points.@footnote{800-point type
+is not practical for most purposes, but using it enables the quantities
+in the font description files to be expressed as integers.}
+
+A font description file has two sections. The first is a sequence of
+directives, and is parsed similarly to the @file{DESC} file described
+above. Except for the directive names that begin the second section,
+their ordering is immaterial. Later directives of the same name
+override earlier ones, spaces and tabs are handled in the same way,
+@cindex comments in font description files
+@cindex font description files, comments
+@kindex #
+and the same comment syntax is supported. Empty lines are ignored
+throughout.
+
+@table @code
+@item name @var{f}
+@kindex name
+The name of the font is@tie{}@var{f}. @samp{DESC} is an invalid font
+name. Simple integers are valid, but their use is
+discouraged.@footnote{@code{groff} requests and escape sequences
+interpret non-negative font names as mounting positions instead.
+Further, a font named @samp{0} cannot be automatically mounted by the
+@code{fonts} directive of a @file{DESC} file.}
+
+@item spacewidth @var{n}
+@kindex spacewidth
+The width of an unadjusted inter-word space is @var{n}@tie{}basic units.
+@end table
+
+The directives above must appear in the first section; those below are
+optional.
+
+@table @code
+@item slant @var{n}
+@kindex slant
+The font's glyphs have a slant of @var{n}@tie{}degrees; a positive
+@var{n} slants in the direction of text flow.
+
+@item ligatures @var{lig1} @r{@dots{}} @var{lign} @r{[}0@r{]}
+@kindex ligatures
+Glyphs @var{lig1}, @dots{}, @var{lign} are ligatures; possible ligatures
+are @samp{ff}, @samp{fi}, @samp{fl}, @samp{ffi} and @samp{ffl}. For
+compatibility with other @code{troff} implementations, the list of
+ligatures may be terminated with a@tie{}@code{0}. The list of ligatures
+must not extend over more than one line.
+
+@item special
+@cindex special fonts
+@kindex special
+The font is @dfn{special}: when a glyph is requested that is not present
+in the current font, it is sought in any mounted fonts that bear this
+property.
+@end table
+
+Other directives in this section are ignored by GNU @code{troff}, but
+may be used by postprocessors to obtain further information about the
+font.
+
+The second section contains one or two subsections. These can appear in
+either order; the first one encountered commences the second section.
+Each starts with a directive on a line by itself. A @code{charset}
+subsection is mandatory unless the associated @file{DESC} file contains
+the @code{unicode} directive. Another subsection, @code{kernpairs},
+is optional.
+
+@kindex charset
+The directive @code{charset} starts the character set
+subsection.@footnote{For typesetter devices, this directive is misnamed
+since it starts a list of glyphs, not characters.} It precedes a series
+of glyph descriptions, one per line. Each such glyph description
+comprises a set of fields separated by spaces or tabs and organized as
+follows.
+
+@quotation
+@var{name} @var{metrics} @var{type} @var{code} [@var{entity-name}]
+[@code{--} @var{comment}]
+@end quotation
+
+@cindex 8-bit input
+@cindex input, 8-bit
+@cindex accessing unnamed glyphs with @code{\N}
+@cindex unnamed glyphs, accessing with @code{\N}
+@cindex characters, unnamed, accessing with @code{\N}
+@cindex glyphs, unnamed, accessing with @code{\N}
+@kindex ---
+@noindent
+@var{name} identifies the glyph:
+@c XXX: Move this footnote to a more general discussion since it is
+@c applicable to the groff system overall.
+@c
+@c @footnote{The distinction between input, characters, and output,
+@c glyphs, is not clearly separated in the terminology of @code{groff};
+@c for example, the @code{char} request should be called @code{glyph}
+@c since it defines an output entity.}
+if @var{name} is a printable character@tie{}@var{c}, it corresponds to
+the @code{troff} ordinary character@tie{}@var{c}. If @var{name} is a
+multi-character sequence not beginning with @code{\}, it corresponds to
+the GNU @code{troff} special character escape sequence
+@samp{\[@var{name}]}. A name consisting of three minus signs,
+@samp{---}, is special and indicates that the glyph is unnamed: such
+glyphs can be accessed only by the @code{\N} escape sequence in
+@code{troff}. A special character named @samp{---} can still be defined
+using @code{char} and similar requests. The @var{name} @samp{\-}
+defines the minus sign glyph. Finally, @var{name} can be the
+unbreakable one-sixth and one-twelfth space escape sequences, @code{\|}
+and @code{\^} (``thin'' and ``hair'' spaces, respectively), in which
+case only the width metric described below is interpreted; a font can
+thus customize the widths of these spaces.
+@c XXX: For exhaustivity purposes...you can define "\whatever", which
+@c has to be accessed with \C'\\whatever' or \[\\whatever], but the
+@c parser matches predefined escape sequences before looking up special
+@c characters. Most such definitions are inaccessible from the
+@c language, because nearly every '\x', where 'x' is a Unicode basic
+@c Latin character, is a predefined groff escape sequence.
+@c
+@c XXX: Commented out because the charXXX feature is very legacy, and as
+@c noted below, discouraged in font description files.
+@c
+@c GNU @code{troff} supports 8-bit input characters; however some
+@c utilities have difficulties with eight-bit characters. For this
+@c reason, there is a convention that the entity name @samp{char@var{n}}
+@c is equivalent to the single input character whose code
+@c is@tie{}@var{n}. For example, @samp{char163} would be equivalent to
+@c the character with code@tie{}163, which is the pounds sterling sign
+@c in the ISO@tie{}@w{Latin-1} character set. You shouldn't use
+@c @samp{char@var{n}} entities in font description files since they are
+@c related to input, not output. Otherwise, you get hard-coded
+@c connections between input and output encoding, which prevents use of
+@c different (input) character sets.
+
+The form of the @var{metrics} field is as follows.
+
+@display
+@group
+@var{width}[@code{,}[@var{height}[@code{,}[@var{depth}[@code{,}[@var{italic-correction}
+ [@code{,}[@var{left-italic-correction}[@code{,}[@var{subscript-correction}]]]]]]]]]]
+@end group
+@end display
+
+@noindent
+There must not be any spaces, tabs, or newlines between these
+@dfn{subfields} (which have been split here into two lines only for
+better legibility). The subfields are in basic units expressed as
+decimal integers. Unspecified subfields default to@tie{}@code{0}.
+Since there is no associated binary format, these values are not
+required to fit into the C language data type @samp{char} as they are in
+@acronym{AT&T} device-independent @code{troff}.
+
+The @var{width} subfield gives the width of the glyph. The @var{height}
+subfield gives the height of the glyph (upward is positive); if a glyph
+does not extend above the baseline, it should be given a zero height,
+rather than a negative height. The @var{depth} subfield gives the depth
+of the glyph, that is, the distance below the baseline to which the
+glyph extends (downward is positive); if a glyph does not extend below
+the baseline, it should be given a zero depth, rather than a negative
+depth. Italic corrections are relevant to glyphs in italic or oblique
+styles. The @var{italic-correction} is the amount of space that should
+be added after an oblique glyph to be followed immediately by an upright
+glyph. The @var{left-italic-correction} is the amount of space that
+should be added before an oblique glyph to be preceded immediately by an
+upright glyph. The @var{subscript-correction} is the amount of space
+that should be added after an oblique glyph to be followed by a
+subscript; it should be less than the italic correction.
+
+For fonts used with typesetting devices, the @var{type} field gives a
+featural description of the glyph: it is a bit mask recording whether
+the glyph is an ascender, descender, both, or neither. When a @code{\w}
+escape sequence is interpolated, these values are bitwise or-ed
+together for each glyph and stored in the @code{nr} register. In font
+descriptions for terminal devices, all glyphs might have a type of zero,
+regardless of their appearance.
+
+@table @code
+@item 0
+means the glyph lies entirely between the baseline and a horizontal line
+at the ``x-height'' of the font; typical examples are @samp{a},
+@samp{c}, and @samp{x};
+
+@item 1
+means the glyph descends below the baseline, like @samp{p};
+
+@item 2
+means the glyph ascends above the font's x-height, like @samp{A} or
+@samp{b}; and
+
+@item 3
+means the glyph is both an ascender and a descender---this is true of
+parentheses in some fonts.
+@end table
+
+The @var{code} field gives a numeric identifier that the postprocessor
+uses to render the glyph. The glyph can be specified to @code{troff}
+using this code by means of the @code{\N} escape sequence. @var{code}
+can be any integer.@footnote{that is, any integer parsable by the C
+standard library's @cite{strtol@r{(3)}} function}
+
+The @var{entity-name} field defines an identifier for the glyph that the
+postprocessor uses to print the GNU @code{troff} glyph @var{name}. This
+field is optional; it was introduced so that the @code{grohtml} output
+driver could encode its character set. For example, the glyph
+@samp{\[Po]} is represented by @samp{&pound;} in @acronym{HTML} 4.0.
+For efficiency, these data are now compiled directly into
+@code{grohtml}. @code{grops} uses the field to build sub-encoding
+arrays for PostScript fonts containing more than 256 glyphs. Anything
+on the line after the @var{entity-name} field or @samp{--} is ignored.
+
+A line in the @code{charset} section can also have the form
+
+@Example
+@var{name} "
+@endExample
+
+@noindent
+identifying @var{name} as another name for the glyph mentioned in the
+preceding line. Such aliases can be chained.
+
+@kindex kernpairs
+The directive @code{kernpairs} starts a list of kerning adjustments to
+be made to adjacent glyph pairs from this font. It contains a sequence
+of lines formatted as follows.
+
+@Example
+@var{g1} @var{g2} @var{n}
+@endExample
+
+@noindent
+The foregoing means that when glyph @var{g1} is typeset immediately
+before @var{g2}, the space between them should be increased
+by@tie{}@var{n}. Most kerning pairs should have a negative value
+for@tie{}@var{n}.
+@c END Keep parallel with groff_font(5).
+
+@codequotebacktick off
+@codequoteundirected off
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node Copying This Manual, Request Index, Font Description File Format, Top
+@appendix Copying This Manual
+
+@include fdl.texi
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@c This'll do us for the rest of the file...
+@codequotebacktick on
+@codequoteundirected on
+
+@node Request Index, Escape Sequence Index, Copying This Manual, Top
+@appendix Request Index
+
+Request names appear without a leading control character; the defaults
+are @code{.} for the regular control character and @code{'} for the
+no-break control character.
+
+@printindex rq
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node Escape Sequence Index, Operator Index, Request Index, Top
+@appendix Escape Sequence Index
+
+The escape character, @code{\} by default, is always followed by at
+least one more input character, making an escape @emph{sequence}. Any
+input token @code{\@var{X}} with @var{X} not in the list below emits a
+warning and interpolates glyph @var{X}. Note the entries for @code{\.},
+which may be obscured by the leader dots, and for @code{\@key{RET}} and
+@code{\@key{SP}}, which are sorted alphabetically, not by code point
+order.
+
+@printindex es
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node Operator Index, Register Index, Escape Sequence Index, Top
+@appendix Operator Index
+
+@printindex op
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node Register Index, Macro Index, Operator Index, Top
+@appendix Register Index
+
+The macro package or program a specific register belongs to is appended
+in brackets.
+
+A register name@tie{}@code{x} consisting of exactly one character can be
+accessed as @samp{\nx}. A register name @code{xx} consisting of exactly
+two characters can be accessed as @samp{\n(xx}. Register names
+@code{xxx} of any length can be accessed as @samp{\n[xxx]}.
+
+@printindex vr
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node Macro Index, String Index, Register Index, Top
+@appendix Macro Index
+
+The macro package a specific macro belongs to is appended in brackets.
+They appear without the leading control character (normally @samp{.}).
+
+@printindex ma
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node String Index, File Keyword Index, Macro Index, Top
+@appendix String Index
+
+The macro package or program a that defines or uses each string is
+appended in brackets. (Only one string, @code{.T}, is defined by the
+@code{troff} formatter itself.) @xref{Strings}.
+
+
+@printindex st
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node File Keyword Index, Program and File Index, String Index, Top
+@appendix File Keyword Index
+
+@printindex ky
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node Program and File Index, Concept Index, File Keyword Index, Top
+@appendix Program and File Index
+
+@printindex pg
+
+
+
+@c =====================================================================
+@c =====================================================================
+
+@node Concept Index, , Program and File Index, Top
+@appendix Concept Index
+
+@printindex cp
+
+
+@bye
+
+@c Local Variables:
+@c mode: texinfo
+@c coding: latin-1
+@c fill-column: 72
+@c End:
+@c vim: set textwidth=72:
diff --git a/doc/groff.txt b/doc/groff.txt
new file mode 100644
index 0000000..fab73d4
--- /dev/null
+++ b/doc/groff.txt
@@ -0,0 +1,18123 @@
+GNU 'troff'
+1 Introduction
+ 1.1 Background
+ 1.2 What Is 'groff'?
+ 1.3 'groff' Capabilities
+ 1.4 Macro Packages
+ 1.5 Preprocessors
+ 1.6 Output Devices
+ 1.7 Installation
+ 1.8 Conventions Used in This Manual
+ 1.9 Credits
+2 Invoking 'groff'
+ 2.1 Options
+ 2.2 Environment
+ 2.3 Macro Directories
+ 2.4 Font Directories
+ 2.5 Paper Format
+ 2.6 Invocation Examples
+3 Tutorial for Macro Users
+ 3.1 Basics
+ 3.2 Common Features
+ 3.2.1 Paragraphs
+ 3.2.2 Sections and Chapters
+ 3.2.3 Headers and Footers
+ 3.2.4 Page Layout
+ 3.2.5 Displays and Keeps
+ 3.2.6 Footnotes and Endnotes
+ 3.2.7 Table of Contents
+ 3.2.8 Indexing
+ 3.2.9 Document Formats
+ 3.2.10 Columnation
+ 3.2.11 Font and Size Changes
+ 3.2.12 Predefined Text
+ 3.2.13 Preprocessor Support
+ 3.2.14 Configuration and Customization
+4 Macro Packages
+ 4.1 'man'
+ 4.1.1 Optional 'man' extensions
+ Custom headers and footers
+ Ultrix-specific man macros
+ Simple example
+ 4.2 'mdoc'
+ 4.3 'me'
+ 4.4 'mm'
+ 4.5 'mom'
+ 4.6 'ms'
+ 4.6.1 Introduction
+ 4.6.1.1 Basic information
+ 4.6.2 Document Structure
+ 4.6.3 Document Control Settings
+ Margin settings
+ Titles (headers, footers)
+ Text settings
+ Paragraph settings
+ Heading settings
+ Footnote settings
+ Display settings
+ Other settings
+ 4.6.4 Document Description Macros
+ 4.6.5 Body Text
+ 4.6.5.1 Text settings
+ 4.6.5.2 Typographical symbols
+ 4.6.5.3 Paragraphs
+ 4.6.5.4 Headings
+ 4.6.5.5 Typeface and decoration
+ 4.6.5.6 Lists
+ 4.6.5.7 Indented regions
+ 4.6.5.8 Keeps, boxed keeps, and displays
+ 4.6.5.9 Tables, figures, equations, and references
+ 4.6.5.10 Footnotes
+ 4.6.5.11 Language and localization
+ 4.6.6 Page layout
+ 4.6.6.1 Headers and footers
+ 4.6.6.2 Tab stops
+ 4.6.6.3 Margins
+ 4.6.6.4 Multiple columns
+ 4.6.6.5 Creating a table of contents
+ 4.6.7 Differences from AT&T 'ms'
+ 4.6.7.1 Unix Version 7 'ms' macros not implemented by 'groff' 'ms'
+ 4.6.8 Legacy Features
+ AT&T accent mark strings
+ Berkeley accent mark and glyph strings
+ 4.6.9 Naming Conventions
+5 GNU 'troff' Reference
+ 5.1 Text
+ 5.1.1 Filling
+ 5.1.2 Sentences
+ 5.1.3 Hyphenation
+ 5.1.4 Breaking
+ 5.1.5 Adjustment
+ 5.1.6 Tabs and Leaders
+ 5.1.7 Requests and Macros
+ 5.1.8 Macro Packages
+ 5.1.9 Input Encodings
+ 5.1.10 Input Conventions
+ 5.2 Page Geometry
+ 5.3 Measurements
+ 5.3.1 Motion Quanta
+ 5.3.2 Default Units
+ 5.4 Numeric Expressions
+ 5.5 Identifiers
+ 5.6 Formatter Instructions
+ 5.6.1 Control Characters
+ 5.6.2 Invoking Requests
+ 5.6.3 Calling Macros
+ 5.6.4 Using Escape Sequences
+ 5.6.5 Delimiters
+ 5.7 Comments
+ 5.8 Registers
+ 5.8.1 Setting Registers
+ 5.8.2 Interpolating Registers
+ 5.8.3 Auto-increment
+ 5.8.4 Assigning Register Formats
+ 5.8.5 Built-in Registers
+ 5.9 Manipulating Filling and Adjustment
+ 5.10 Manipulating Hyphenation
+ 5.11 Manipulating Spacing
+ 5.12 Tabs and Fields
+ 5.12.1 Leaders
+ 5.12.2 Fields
+ 5.13 Character Translations
+ 5.14 'troff' and 'nroff' Modes
+ 5.15 Line Layout
+ 5.16 Line Continuation
+ 5.17 Page Layout
+ 5.18 Page Control
+ 5.19 Using Fonts
+ 5.19.1 Selecting Fonts
+ 5.19.2 Font Families
+ 5.19.3 Font Positions
+ 5.19.4 Using Symbols
+ 5.19.5 Character Classes
+ 5.19.6 Special Fonts
+ 5.19.7 Artificial Fonts
+ 5.19.8 Ligatures and Kerning
+ 5.19.9 Italic Corrections
+ 5.19.10 Dummy Characters
+ 5.20 Manipulating Type Size and Vertical Spacing
+ 5.20.1 Changing the Type Size
+ 5.20.2 Changing the Vertical Spacing
+ 5.20.3 Using Fractional Type Sizes
+ 5.21 Colors
+ 5.22 Strings
+ 5.23 Conditionals and Loops
+ 5.23.1 Operators in Conditionals
+ 5.23.2 if-then
+ 5.23.3 if-else
+ 5.23.4 Conditional Blocks
+ 5.23.5 while
+ 5.24 Writing Macros
+ 5.24.1 Parameters
+ 5.24.2 Copy Mode
+ 5.25 Page Motions
+ 5.26 Drawing Geometric Objects
+ 5.27 Deferring Output
+ 5.28 Traps
+ 5.28.1 Vertical Position Traps
+ 5.28.1.1 Page Location Traps
+ 5.28.1.2 The Implicit Page Trap
+ 5.28.1.3 Diversion Traps
+ 5.28.2 Input Line Traps
+ 5.28.3 Blank Line Traps
+ 5.28.4 Leading Space Traps
+ 5.28.5 End-of-input Traps
+ 5.29 Diversions
+ 5.30 Punning Names
+ 5.31 Environments
+ 5.32 Suppressing Output
+ 5.33 I/O
+ 5.34 Postprocessor Access
+ 5.35 Miscellaneous
+ 5.36 'gtroff' Internals
+ 5.37 Debugging
+ 5.37.1 Warnings
+ 5.38 Implementation Differences
+ 5.38.1 Safer Mode
+ 5.38.2 Compatibility Mode
+ 5.38.3 Other Differences
+6 File Formats
+ 6.1 'gtroff' Output
+ 6.1.1 Language Concepts
+ 6.1.1.1 Separation
+ 6.1.1.2 Argument Units
+ 6.1.1.3 Document Parts
+ 6.1.2 Command Reference
+ 6.1.2.1 Comment Command
+ 6.1.2.2 Simple Commands
+ 6.1.2.3 Graphics Commands
+ 6.1.2.4 Device Control Commands
+ 6.1.2.5 Obsolete Command
+ 6.1.3 Intermediate Output Examples
+ 6.1.4 Output Language Compatibility
+ 6.2 Device and Font Description Files
+ 6.2.1 'DESC' File Format
+ 6.2.2 Font Description File Format
+Appendix A Copying This Manual
+Appendix B Request Index
+Appendix C Escape Sequence Index
+Appendix D Operator Index
+Appendix E Register Index
+Appendix F Macro Index
+Appendix G String Index
+Appendix H File Keyword Index
+Appendix I Program and File Index
+Appendix J Concept Index
+GNU 'troff'
+***********
+
+This manual documents GNU 'troff' version 1.23.0.
+
+ Copyright © 1994-2023 Free Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts, and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+
+1 Introduction
+**************
+
+GNU 'roff' (or 'groff') is a programming system for typesetting
+documents. It is highly flexible and has been used extensively for over
+thirty years.
+
+1.1 Background
+==============
+
+M. Douglas McIlroy, formerly of AT&T Bell Laboratories and present at
+the creation of the Unix operating system, offers an authoritative
+historical summary.
+
+ The prime reason for Unix was the desire of Ken [Thompson], Dennis
+ [Ritchie], and Joe Ossanna to have a pleasant environment for
+ software development. The fig leaf that got the nod from ...
+ management was that an early use would be to develop a
+ "stand-alone" word-processing system for use in typing pools and
+ secretarial offices. Perhaps they had in mind "dedicated", as
+ distinct from "stand-alone"; that's what eventuated in various
+ cases, most notably in the legal/patent department and in the AT&T
+ CEO's office.
+
+ Both those systems were targets of opportunity, not foreseen from
+ the start. When Unix was up and running on the PDP-11, Joe got
+ wind of the legal department having installed a commercial word
+ processor. He went to pitch Unix as an alternative and clinched a
+ trial by promising to make 'roff' able to number lines by tomorrow
+ in order to fulfill a patent-office requirement that the commercial
+ system did not support.
+
+ Modems were installed so legal-department secretaries could try the
+ Research machine. They liked it and Joe's superb customer service.
+ Soon the legal department got a system of their own. Joe went on
+ to create 'nroff' and 'troff'. Document preparation became a
+ widespread use of Unix, but no stand-alone word-processing system
+ was ever undertaken.
+
+ A history relating 'groff' to its predecessors 'roff', 'nroff', and
+'troff' is available in the 'roff(7)' man page.
+
+1.2 What Is 'groff'?
+====================
+
+'groff' (GNU 'roff') is a typesetting system that reads plain text input
+files that include formatting commands to produce output in PostScript,
+PDF, HTML, DVI, or other formats, or for display to a terminal.
+Formatting commands can be low-level typesetting primitives, macros from
+a supplied package, or user-defined macros. All three approaches can be
+combined.
+
+ A reimplementation and extension of the typesetter from AT&T Unix,
+'groff' is present on most POSIX systems owing to its long association
+with Unix manuals (including man pages). It and its predecessor are
+notable for their production of several best-selling software
+engineering texts. 'groff' is capable of producing typographically
+sophisticated documents while consuming minimal system resources.
+
+1.3 'groff' Capabilities
+========================
+
+GNU 'troff' is a typesetting document formatter; it provides a wide
+range of low-level text and page operations within the framework of a
+programming language. These operations compose to generate footnotes,
+tables of contents, mathematical equations, diagrams, multi-column text,
+and other elements of typeset works. Here is a survey of formatter
+features; all are under precise user control.
+
+ * text filling, breaking, alignment to the left or right margin;
+ centering
+
+ * adjustment of inter-word space size to justify text, and of
+ inter-sentence space size to suit local style conventions
+
+ * automatic and manual determination of hyphenation break points
+
+ * pagination
+
+ * selection of any font available to the output device
+
+ * adjustment of type size and vertical spacing (or "leading")
+
+ * configuration of line length and indentation amounts; columnation
+
+ * drawing of geometric primitives (lines, arcs, polygons, circles,
+ ...)
+
+ * setup of stroke and fill colors (where supported by the output
+ device)
+
+ * embedding of hyperlinks, images, document metadata, and other
+ inclusions (where supported by the output device)
+
+1.4 Macro Packages
+==================
+
+Elemental typesetting functions can be be challenging to use directly
+with complex documents. A "macro" facility specifies how certain
+routine operations, such as starting paragraphs, or printing headers and
+footers, should be performed in terms of those low-level instructions.
+Macros can be specific to one document or collected together into a
+"macro package" for use by many. Several macro packages available; the
+most widely used are provided with 'groff'. They are 'man', 'mdoc',
+'me', 'mm', 'mom', and 'ms'.
+
+1.5 Preprocessors
+=================
+
+An alternative approach to complexity management, particularly when
+constructing tables, setting mathematics, or drawing diagrams, lies in
+preprocessing. A "preprocessor" employs a domian-specific language to
+ease the generation of tables, equations, and so forth in terms that are
+convenient for human entry. Each preprocessor reads a document and
+translates the parts of it that apply to it into GNU 'troff' input.
+Command-line options to 'groff' tell it which preprocessors to use.
+
+ 'groff' provides preprocessors for laying out tables ('gtbl'),
+typesetting equations ('geqn'), drawing diagrams ('gpic' and 'ggrn'),
+inserting bibliographic references ('grefer'), and drawing chemical
+structures ('gchem'). An associated program that is useful when dealing
+with preprocessors is 'gsoelim'.(1) (*note Preprocessor
+Intro-Footnote-1::)
+
+ 'groff' also supports 'grap', a preprocessor for drawing graphs. A
+free implementation of it can be obtained separately.
+
+ Unique to 'groff' is the 'preconv' preprocessor that enables 'groff'
+to handle documents in a variety of input encodings.
+
+ Other preprocessors exist, but no free implementations are known. An
+example is 'ideal', which draws diagrams using a mathematical constraint
+language.
+
+ (1) The 'g' prefix is not used on all systems; see *note Invoking
+groff::.
+
+1.6 Output Devices
+==================
+
+GNU 'troff''s output is in a device-independent page description
+language, which is then read by an "output driver" that translates this
+language into a file format or byte stream that a piece of (possibly
+emulated) hardware understands. 'groff' features output drivers for
+PostScript devices, terminal emulators (and other simple typewriter-like
+machines), X11 (for previewing), TeX DVI, HP LaserJet 4/PCL5 and Canon
+LBP printers (which use CaPSL), HTML, XHTML, and PDF.
+
+1.7 Installation
+================
+
+Locate installation instructions in the files 'INSTALL',
+'INSTALL.extra', and 'INSTALL.REPO' in the 'groff' source distribution.
+Being a GNU project, 'groff' supports the familiar './configure && make'
+command sequence.
+
+1.8 Conventions Used in This Manual
+===================================
+
+We apply the term "groff" to the language documented here, the GNU
+implementation of the overall system, the project that develops that
+system, and the command of that name. In the first sense, 'groff' is an
+extended dialect of the 'roff' language, for which many similar
+implementations exist.
+
+ The 'roff' language features several major categories for which many
+items are predefined. Presentations of these items feature the form in
+which the item is most commonly used on the left, and, aligned to the
+right margin, the name of the category in brackets.
+
+ -- Register: \n[example]
+ The register 'example' is one that that 'groff' _doesn't_
+ predefine. You can create it yourself, though; see *note Setting
+ Registers::.
+
+ To make this document useful as a reference and not merely amiable
+bedtime reading, we tend to present these syntax items in exhaustive
+detail when they arise. References to topics discussed later in the
+text are frequent; skip material you don't understand yet.
+
+ We use Texinfo's "result" (=>) and error-> notations to present
+output written to the standard output and standard error streams,
+respectively. Diagnostic messages from the GNU 'troff' formatter and
+other programs are examples of the latter, but the formatter can also be
+directed to write user-specified messages to the standard error stream.
+The notation then serves to identify the output stream and does not
+necessarily mean that an error has occurred.(1) (*note Conventions Used
+in This Manual-Footnote-1::)
+
+ $ echo "Twelve o'clock and" | groff -Tascii | sed '/^$/d'
+ => Twelve o'clock and
+ $ echo '.tm all is well.' | groff > /dev/null
+ error-> all is well.
+
+ Sometimes we use => somewhat abstractly to represent formatted text
+that you will need to use a PostScript or PDF viewer program (or a
+printer) to observe. While arguably an abuse of notation, we think this
+preferable to requiring the reader to understand the syntax of these
+page description languages.
+
+ We also present diagnostic messages in an abbreviated form, often
+omitting the name of the program issuing them, the input file name, and
+line number or other positional information when such data do not serve
+to illuminate the topic under discussion.
+
+ Most examples are of 'roff' language input that would be placed in a
+text file. Occasionally, we start an example with a '$' character to
+indicate a shell prompt, as seen above.
+
+ You are encouraged to try the examples yourself, and to alter them to
+better learn 'groff''s behavior. Our examples frequently need to direct
+the formatter to set a line length (with '.ll') that will fit within the
+page margins of this manual. We mention this so that you know why it is
+there before we discuss the 'll' request formally.(2) (*note
+Conventions Used in This Manual-Footnote-2::)
+
+ (1) Unix and related operating systems distinguish standard output
+and standard error streams _because_ of 'troff':
+<https://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html>.
+
+ (2) *Note Line Layout::.
+
+1.9 Credits
+===========
+
+We adapted portions of this manual from existing documents. James
+Clark's man pages were an essential resource; we have updated them in
+parallel with the development of this manual. We based the tutorial for
+macro users on Eric Allman's introduction to his 'me' macro package
+(which we also provide, little altered from 4.4BSD). Larry Kollar
+contributed much of the material on the 'ms' macro package.
+
+2 Invoking 'groff'
+******************
+
+This chapter focuses on how to invoke the 'groff' front end. This front
+end takes care of the details of constructing the pipeline among the
+preprocessors, 'gtroff' and the postprocessor.
+
+ It has become a tradition that GNU programs get the prefix 'g' to
+distinguish them from their original counterparts provided by the host
+(*note Environment::). Thus, for example, 'geqn' is GNU 'eqn'. On
+operating systems like GNU/Linux or the Hurd, which don't contain
+proprietary versions of 'troff', and on MS-DOS/MS-Windows, where 'troff'
+and associated programs are not available at all, this prefix is omitted
+since GNU 'troff' is the only incarnation of 'troff' used. Exception:
+'groff' is never replaced by 'roff'.
+
+ In this document, we consequently say 'gtroff' when talking about the
+GNU 'troff' program. All other implementations of 'troff' are called
+AT&T 'troff', which is the common origin of almost all 'troff'
+implementations(1) (*note Invoking groff-Footnote-1::) (with more or
+less compatible changes). Similarly, we say 'gpic', 'geqn', and so on.
+
+ (1) Besides 'groff', 'neatroff' is an exception.
+
+2.1 Options
+===========
+
+'groff' normally runs the 'gtroff' program and a postprocessor
+appropriate for the selected device. The default device is 'ps' (but it
+can be changed when 'groff' is configured and built). It can optionally
+preprocess with any of 'gpic', 'geqn', 'gtbl', 'ggrn', 'grap', 'gchem',
+'grefer', 'gsoelim', or 'preconv'.
+
+ This section documents only options to the 'groff' front end. Many
+of the arguments to 'groff' are passed on to 'gtroff'; therefore, those
+are also included. Arguments to preprocessors and output drivers can be
+found in the man pages 'gpic(1)', 'geqn(1)', 'gtbl(1)', 'ggrn(1)',
+'grefer(1)', 'gchem(1)', 'gsoelim(1)', 'preconv(1)', 'grotty(1)',
+'grops(1)', 'gropdf(1)', 'grohtml(1)', 'grodvi(1)', 'grolj4(1)',
+'grolbp(1)', and 'gxditview(1)'.
+
+ The command-line format for 'groff' is:
+
+ groff [ -abceghijklpstvzCEGNRSUVXZ ] [ -dCS ] [ -DARG ]
+ [ -fFAM ] [ -FDIR ] [ -IDIR ] [ -KARG ]
+ [ -LARG ] [ -mNAME ] [ -MDIR ] [ -nNUM ]
+ [ -oLIST ] [ -PARG ] [ -rCN ] [ -TDEV ]
+ [ -wNAME ] [ -WNAME ] [ FILES... ]
+
+ The command-line format for 'gtroff' is as follows.
+
+ gtroff [ -abcivzCERU ] [ -dCS ] [ -fFAM ] [ -FDIR ]
+ [ -mNAME ] [ -MDIR ] [ -nNUM ] [ -oLIST ]
+ [ -rCN ] [ -TNAME ] [ -wNAME ] [ -WNAME ]
+ [ FILES... ]
+
+Obviously, many of the options to 'groff' are actually passed on to
+'gtroff'.
+
+ Options without an argument can be grouped behind a single '-'. A
+filename of '-' denotes the standard input. Whitespace is permitted
+between an option and its argument.
+
+ The 'grog' command can be used to guess the correct 'groff' command
+to format a file. See its man page 'grog(1)'; type 'man grog' at the
+command line to view it.
+
+ 'groff''s command-line options are as follows.
+
+'-a'
+ Generate a plain text approximation of the typeset output. The
+ read-only register '.A' is set to 1. *Note Built-in Registers::.
+ This option produces a sort of abstract preview of the formatted
+ output.
+
+ * Page breaks are marked by a phrase in angle brackets; for
+ example, '<beginning of page>'.
+
+ * Lines are broken where they would be in the formatted output.
+
+ * A horizontal motion of any size is represented as one space.
+ Adjacent horizontal motions are not combined. Inter-sentence
+ space nodes (those arising from the second argument to the
+ 'ss' request) are not represented.
+
+ * Vertical motions are not represented.
+
+ * Special characters are rendered in angle brackets; for
+ example, the default soft hyphen character appears as '<hy>'.
+
+ The above description should not be considered a specification; the
+ details of '-a' output are subject to change.
+
+'-b'
+ Write a backtrace reporting the state of 'gtroff''s input parser to
+ the standard error stream with each diagnostic message. The line
+ numbers given in the backtrace might not always be correct, because
+ 'gtroff''s idea of line numbers can be confused by requests that
+ append to macros.
+
+'-c'
+ Start with color output disabled.
+
+'-C'
+ Enable AT&T 'troff' compatibility mode; implies '-c'. *Note
+ Implementation Differences::, for the list of incompatibilities
+ between 'groff' and AT&T 'troff'.
+
+'-dCTEXT'
+'-dSTRING=TEXT'
+ Define 'roff' string C or STRING as T or TEXT. C must be one
+ character; STRING can be of arbitrary length. Such string
+ assignments happen before any macro file is loaded, including the
+ startup file. Due to 'getopt_long' limitations, C cannot be, and
+ STRING cannot contain, an equals sign, even though that is a valid
+ character in a 'roff' identifier.
+
+'-DENC'
+ Set fallback input encoding used by 'preconv' to ENC; implies '-k'.
+
+'-e'
+ Run 'geqn' preprocessor.
+
+'-E'
+ Inhibit 'gtroff' error messages. This option does _not_ suppress
+ messages sent to the standard error stream by documents or macro
+ packages using 'tm' or related requests.
+
+'-fFAM'
+ Use FAM as the default font family. *Note Font Families::.
+
+'-FDIR'
+ Search in directory 'DIR' for the selected output device's
+ directory of device and font description files. See the
+ description of 'GROFF_FONT_PATH' in *note Environment:: below for
+ the default search locations and ordering.
+
+'-g'
+ Run 'ggrn' preprocessor.
+
+'-G'
+ Run 'grap' preprocessor; implies '-p'.
+
+'-h'
+ Display a usage message and exit.
+
+'-i'
+ Read the standard input after all the named input files have been
+ processed.
+
+'-IDIR'
+ Search the directory DIR for files named in several contexts;
+ implies '-g' and '-s'.
+
+ * 'gsoelim' replaces 'so' requests with the contents of their
+ file name arguments.
+
+ * 'gtroff' searches for files named as operands in its command
+ line and as arguments to 'psbb', 'so', and 'soquiet' requests.
+
+ * Output drivers may search for files; for instance, 'grops'
+ looks for files named in '\X'ps: import ...'', '\X'ps: file
+ ...'', and '\X'pdf: pdfpic ...'' device control escape
+ sequences.
+
+ This option may be specified more than once; the directories are
+ searched in the order specified. If you want to search the current
+ directory before others, add '-I .' at the desired place. The
+ current working directory is otherwise searched last. '-I' works
+ similarly to, and is named for, the "include" option of Unix C
+ compilers.
+
+ '-I' options are passed to 'gsoelim', 'gtroff', and output drivers;
+ with the flag letter changed to '-M', they are also passed to
+ 'ggrn'.
+
+'-j'
+ Run 'gchem' preprocessor. Implies '-p'.
+
+'-k'
+ Run 'preconv' preprocessor. Refer to its man page for its behavior
+ if neither of 'groff''s '-K' or '-D' options is also specified.
+
+'-KENC'
+ Set input encoding used by 'preconv' to ENC; implies '-k'.
+
+'-l'
+ Send the output to a spooler for printing. The 'print' directive
+ in the device description file specifies the default command to be
+ used; see *note Device and Font Description Files::. See options
+ '-L' and '-X'.
+
+'-LARG'
+ Pass ARG to the print spooler program. If multiple ARGs are
+ required, pass each with a separate '-L' option. 'groff' does not
+ prefix an option dash to ARG before passing it to the spooler
+ program.
+
+'-mNAME'
+ Process the file 'NAME.tmac' prior to any input files. If not
+ found, 'tmac.NAME' is attempted. NAME (in both arrangements) is
+ presumed to be a macro file; see the description of
+ 'GROFF_TMAC_PATH' in *note Environment:: below for the default
+ search locations and ordering. This option and its argument are
+ also passed to 'geqn', 'grap', and 'ggrn'.
+
+'-MDIR'
+ Search directory 'DIR' for macro files; see the description of
+ 'GROFF_TMAC_PATH' in *note Environment:: below for the default
+ search locations and ordering. This option and its argument are
+ also passed to 'geqn', 'grap', and 'ggrn'.
+
+'-nNUM'
+ Number the first page NUM.
+
+'-N'
+ Prohibit newlines between 'eqn' delimiters: pass '-N' to 'geqn'.
+
+'-oLIST'
+ Output only pages in LIST, which is a comma-separated list of page
+ ranges; 'N' means page N, 'M-N' means every page between M and N,
+ '-N' means every page up to N, 'N-' means every page from N on.
+ 'gtroff' stops processing and exits after formatting the last page
+ enumerated in LIST.
+
+'-p'
+ Run 'gpic' preprocessor.
+
+'-PARG'
+ Pass ARG to the postprocessor. If multiple ARGs are required, pass
+ each with a separate '-P' option. 'groff' does not prefix an
+ option dash to ARG before passing it to the postprocessor.
+
+'-rCNUMERIC-EXPRESSION'
+'-rREGISTER=EXPR'
+ Set 'roff' register C or REGISTER to the value NUMERIC-EXPRESSION
+ (*note Numeric Expressions::). C must be one character; REGISTER
+ can be of arbitrary length. Such register assignments happen
+ before any macro file is loaded, including the startup file. Due
+ to 'getopt_long' limitations, C cannot be, and REGISTER cannot
+ contain, an equals sign, even though that is a valid character in a
+ 'roff' identifier.
+
+'-R'
+ Run 'grefer' preprocessor. No mechanism is provided for passing
+ arguments to 'grefer' because most 'grefer' options have equivalent
+ language elements that can be specified within the document.
+
+ 'gtroff' also accepts a '-R' option, which is not accessible via
+ 'groff'. This option prevents the loading of the 'troffrc' and
+ 'troffrc-end' files.
+
+'-s'
+ Run 'gsoelim' preprocessor.
+
+'-S'
+ Operate in "safer" mode; see '-U' below for its opposite. For
+ security reasons, safer mode is enabled by default.
+
+'-t'
+ Run 'gtbl' preprocessor.
+
+'-TDEV'
+ Direct 'gtroff' to format the input for the output device DEV.
+ 'groff' then calls an output driver to convert 'gtroff''s output to
+ a form appropriate for DEV. The following output devices are
+ available.
+
+ 'ps'
+ For PostScript printers and previewers.
+
+ 'pdf'
+ For PDF viewers or printers.
+
+ 'dvi'
+ For TeX DVI format.
+
+ 'X75'
+ For a 75dpi X11 previewer.
+
+ 'X75-12'
+ For a 75dpi X11 previewer with a 12-point base font in the
+ document.
+
+ 'X100'
+ For a 100dpi X11 previewer.
+
+ 'X100-12'
+ For a 100dpi X11 previewer with a 12-point base font in the
+ document.
+
+ 'ascii'
+ For typewriter-like devices using the (7-bit) ASCII (ISO 646)
+ character set.
+
+ 'latin1'
+ For typewriter-like devices that support the Latin-1
+ (ISO 8859-1) character set.
+
+ 'utf8'
+ For typewriter-like devices that use the Unicode (ISO 10646)
+ character set with UTF-8 encoding.
+
+ 'cp1047'
+ For typewriter-like devices that use the EBCDIC encoding IBM
+ code page 1047.
+
+ 'lj4'
+ For HP LaserJet4-compatible (or other PCL5-compatible)
+ printers.
+
+ 'lbp'
+ For Canon CaPSL printers (LBP-4 and LBP-8 series laser
+ printers).
+
+ 'html'
+ 'xhtml'
+ To produce HTML and XHTML output, respectively. This driver
+ consists of two parts, a preprocessor ('pre-grohtml') and a
+ postprocessor ('post-grohtml').
+
+ The predefined GNU 'troff' string '.T' contains the name of the
+ output device; the read-only register '.T' is set to 1 if this
+ option is used (which is always true if 'groff' is used to call GNU
+ 'troff'). *Note Built-in Registers::.
+
+ The postprocessor to be used for a device is specified by the
+ 'postpro' command in the device description file. (*Note Device
+ and Font Description Files::.) This can be overridden with the
+ '-X' option.
+
+'-U'
+ Operate in "unsafe mode", which enables the 'open', 'opena', 'pi',
+ 'pso', and 'sy' requests. These requests are disabled by default
+ because they allow an untrusted input document to write to
+ arbitrary file names and run arbitrary commands. This option also
+ adds the current directory to the macro package search path; see
+ the '-m' option above. '-U' is passed to 'gpic' and 'gtroff'.
+
+'-v'
+ Write version information for 'groff' and all programs run by it to
+ the standard output stream; that is, the given command line is
+ processed in the usual way, passing '-v' to the formatter and any
+ pre- or postprocessors invoked.
+
+'-V'
+ Output the pipeline that would be run by 'groff' (as a wrapper
+ program) to the standard output stream, but do not execute it. If
+ given more than once, the pipeline is both written to the standard
+ error stream and run.
+
+'-wCATEGORY'
+ Enable warnings in CATEGORY. Categories are listed in *note
+ Warnings::.
+
+'-WCATEGORY'
+ Inhibit warnings in CATEGORY. Categories are listed in *note
+ Warnings::.
+
+'-X'
+ Use 'gxditview' instead of the usual postprocessor to (pre)view a
+ document on an X11 display. Combining this option with '-Tps' uses
+ the font metrics of the PostScript device, whereas the '-TX75' and
+ '-TX100' options use the metrics of X11 fonts.
+
+'-z'
+ Suppress formatted output from 'gtroff'.
+
+'-Z'
+ Disable postprocessing. 'gtroff' output will appear on the
+ standard output stream (unless suppressed with '-z'; see *note
+ gtroff Output:: for a description of this format.
+
+2.2 Environment
+===============
+
+There are also several environment variables (of the operating system,
+not within 'gtroff') that can modify the behavior of 'groff'.
+
+'GROFF_BIN_PATH'
+ This search path, followed by 'PATH', is used for commands executed
+ by 'groff'.
+
+'GROFF_COMMAND_PREFIX'
+ If this is set to X, then 'groff' runs 'Xtroff' instead of
+ 'gtroff'. This also applies to 'tbl', 'pic', 'eqn', 'grn', 'chem',
+ 'refer', and 'soelim'. It does not apply to 'grops', 'grodvi',
+ 'grotty', 'pre-grohtml', 'post-grohtml', 'preconv', 'grolj4',
+ 'gropdf', and 'gxditview'.
+
+ The default command prefix is determined during the installation
+ process. If a non-GNU 'troff' system is found, prefix 'g' is used,
+ none otherwise.
+
+'GROFF_ENCODING'
+ The value of this variable is passed to the 'preconv'
+ preprocessor's '-e' option to select the character encoding of
+ input files. This variable's existence implies the 'groff' option
+ '-k'. If set but empty, 'groff' calls 'preconv' without an '-e'
+ option. 'groff''s '-K' option overrides 'GROFF_ENCODING'. See the
+ 'preconv(7)' man page; type 'man preconv' at the command line to
+ view it.
+
+'GROFF_FONT_PATH'
+ A list of directories in which to seek the selected output device's
+ directory of device and font description files. GNU 'troff' will
+ search directories given as arguments to any specified '-F' options
+ before these, and a built-in list of directories after them. *Note
+ Font Directories:: and the 'troff(1)' or 'gtroff(1)' man pages.
+
+'GROFF_TMAC_PATH'
+ A list of directories in which to seek macro files. GNU 'troff'
+ will search directories given as arguments to any specified '-M'
+ options before these, and a built-in list of directories after
+ them. *Note Macro Directories:: and the 'troff(1)' or 'gtroff(1)'
+ man pages.
+
+'GROFF_TMPDIR'
+ The directory in which 'groff' creates temporary files. If this is
+ not set and 'TMPDIR' is set, temporary files are created in that
+ directory. Otherwise temporary files are created in a
+ system-dependent default directory (on Unix and GNU/Linux systems,
+ this is usually '/tmp'). 'grops', 'grefer', 'pre-grohtml', and
+ 'post-grohtml' can create temporary files in this directory.
+
+'GROFF_TYPESETTER'
+ Sets the default output device. If empty or not set, a build-time
+ default (often 'ps') is used. The '-TDEV' option overrides
+ 'GROFF_TYPESETTER'.
+
+'SOURCE_DATE_EPOCH'
+ A timestamp (expressed as seconds since the Unix epoch) to use as
+ the output creation timestamp in place of the current time. The
+ time is converted to human-readable form using 'localtime(3)' when
+ the formatter starts up and stored in registers usable by documents
+ and macro packages (*note Built-in Registers::).
+
+'TZ'
+ The time zone to use when converting the current time (or value of
+ 'SOURCE_DATE_EPOCH') to human-readable form; see 'tzset(3)'.
+
+ MS-DOS and MS-Windows ports of 'groff' use semicolons, rather than
+colons, to separate the directories in the lists described above.
+
+2.3 Macro Directories
+=====================
+
+A macro file must have a name in the form 'NAME.tmac' or 'tmac.NAME' and
+be placed in a "tmac directory" to be found by the '-mNAME' command-line
+option.(1) (*note Macro Directories-Footnote-1::) Together, these
+directories constitute the "tmac path". Each directory is searched in
+the following order until the desired macro file is found or the list is
+exhausted.
+
+ * Directories specified with GNU 'troff''s or 'groff''s '-M'
+ command-line option.
+
+ * Directories listed in the 'GROFF_TMAC_PATH' environment variable.
+
+ * The current working directory (only if in unsafe mode using the
+ '-U' command-line option).
+
+ * The user's home directory, 'HOME'.
+
+ * A platform-dependent directory, a site-local (platform-independent)
+ directory, and the main tmac directory. The locations
+ corresponding to your installation are listed in section
+ "Environment" of 'gtroff(1)'. If not otherwise configured, they
+ are as follows.
+
+ /usr/local/lib/groff/site-tmac
+ /usr/local/share/groff/site-tmac
+ /usr/local/share/groff/1.23.0/tmac
+
+ The foregoing assumes that the version of 'groff' is 1.23.0, and
+ that the installation prefix was '/usr/local'. It is possible to
+ fine-tune these locations during the source configuration process.
+
+ (1) The 'mso' request does not have these limitations. *Note I/O::.
+
+2.4 Font Directories
+====================
+
+'groff' enforces few restrictions on how font description files are
+named. For its family/style mechanism to work (*note Font Families::),
+the names of fonts within a family should start with the family name,
+followed by the style. For example, the Times family uses 'T' for the
+family name and 'R', 'B', 'I', and 'BI' to indicate the styles 'roman',
+'bold', 'italic', and 'bold italic', respectively. Thus the final font
+names are 'TR', 'TB', 'TI', and 'TBI'.
+
+ Font description files are kept in "font directories", which together
+constitute the "font path". The search procedure always appends the
+directory 'dev'NAME, where NAME is the name of the output device.
+Assuming TeX DVI output, and '/foo/bar' as a font directory, the font
+description files for 'grodvi' must be in '/foo/bar/devdvi'. Each
+directory in the font path is searched in the following order until the
+desired font description file is found or the list is exhausted.
+
+ * Directories specified with GNU 'troff''s or 'groff''s '-f'
+ command-line option. All output drivers (and some preprocessors)
+ support this option as well, because they require information about
+ the glyphs to be rendered in the document.
+
+ * Directories listed in the 'GROFF_FONT_PATH' environment variable.
+
+ * A site-local directory and the main font description directory.
+ The locations corresponding to your installation are listed in
+ section "Environment" of 'gtroff(1)'. If not otherwise configured,
+ they are as follows.
+
+ /usr/local/share/groff/site-font
+ /usr/local/share/groff/1.23.0/font
+
+ The foregoing assumes that the version of 'groff' is 1.23.0, and
+ that the installation prefix was '/usr/local'. It is possible to
+ fine-tune these locations during the source configuration process.
+
+2.5 Paper Format
+================
+
+In 'groff', the page dimensions for the formatter GNU 'troff' and for
+output devices are handled separately. *Note Page Layout::, for
+vertical manipulation of the page size, and *Note Line Layout::, for
+horizontal changes. The 'papersize' macro package, normally loaded by
+'troffrc' at startup, provides an interface for configuring page
+dimensions by convenient names, like 'letter' or 'a4'; see
+'groff_tmac(5)'. The default used by the formatter depends on its build
+configuration, but is usually one of the foregoing, as geographically
+appropriate.
+
+ It is up to each macro package to respect the page dimensions
+configured in this way.
+
+ For each output device, the size of the output medium can be set in
+its 'DESC' file. Most output drivers also recognize a command-line
+option '-p' to override the default dimensions and an option '-l' to use
+landscape orientation. *Note DESC File Format::, for a description of
+the 'papersize' keyword, which takes an argument of the same form as
+'-p'. The output driver's man page, such as 'grops(1)', may also be
+helpful.
+
+ 'groff' uses the command-line option '-P' to pass options to
+postprocessors; for example, use the following for PostScript output on
+A4 paper in landscape orientation.
+
+ groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
+
+2.6 Invocation Examples
+=======================
+
+'roff' systems are best known for formatting man pages. Once a 'man'
+librarian program has located a man page, it may execute a 'groff'
+command much like the following.
+
+ groff -t -man -Tutf8 /usr/share/man/man1/groff.1
+
+ The librarian will also pipe the output through a pager, which might
+not interpret the SGR terminal escape sequences 'groff' emits for
+boldface, underlining, or italics; see the 'grotty(1)' man page for a
+discussion.
+
+ To process a 'roff' input file using the preprocessors 'gtbl' and
+'gpic' and the 'me' macro package in the way to which AT&T 'troff' users
+were accustomed, one would type (or script) a pipeline.
+
+ gpic foo.me | gtbl | gtroff -me -Tutf8 | grotty
+
+ Using 'groff', this pipe can be shortened to an equivalent command.
+
+ groff -p -t -me -T utf8 foo.me
+
+ An even easier way to do this is to use 'grog' to guess the
+preprocessor and macro options and execute the result by using the
+command substitution feature of the shell.
+
+ $(grog -Tutf8 foo.me)
+
+ Each command-line option to a postprocessor must be specified with
+any required leading dashes '-' because 'groff' passes the arguments
+as-is to the postprocessor; this permits arbitrary arguments to be
+transmitted. For example, to pass a title to the 'gxditview'
+postprocessor, the shell commands
+
+ groff -X -P -title -P 'trial run' mydoc.t
+
+and
+
+ groff -X -Z mydoc.t | gxditview -title 'trial run' -
+
+are equivalent.
+
+3 Tutorial for Macro Users
+**************************
+
+Most users of the 'roff' language employ a macro package to format their
+documents. Successful macro packages ease the composition process;
+their users need not have mastered the full formatting language, nor
+understand features like diversions, traps, and environments. This
+chapter aims to familiarize you with basic concepts and mechanisms
+common to many macro packages (like "displays"). If you prefer a
+meticulous and comprehensive presentation, try *note GNU troff
+Reference:: instead.
+
+3.1 Basics
+==========
+
+Let us first survey some basic concepts necessary to use a macro package
+fruitfully.(1) (*note Basics-Footnote-1::) References are made
+throughout to more detailed information.
+
+ GNU 'troff' reads an input file prepared by the user and outputs a
+formatted document suitable for publication or framing. The input
+consists of text, or words to be printed, and embedded commands
+(requests and escape sequences), which tell GNU 'troff' how to format
+the output. *Note Formatter Instructions::.
+
+ The word argument is used in this chapter to mean a word or number
+that appears on the same line as a request, and which modifies the
+meaning of that request. For example, the request
+
+ .sp
+
+spaces one line, but
+
+ .sp 4
+
+spaces four lines. The number 4 is an argument to the 'sp' request,
+which says to space four lines instead of one. Arguments are separated
+from the request and from each other by spaces (_not_ tabs). *Note
+Invoking Requests::.
+
+ The primary function of GNU 'troff' is to collect words from input
+lines, fill output lines with those words, adjust the line to the
+right-hand margin by widening spaces, and output the result. For
+example, the input:
+
+ Now is the time
+ for all good men
+ to come to the aid
+ of their party.
+ Four score and seven
+ years ago, etc.
+
+is read, packed onto output lines, and justified to produce:
+
+ => Now is the time for all good men to come to the aid of
+ => their party. Four score and seven years ago, etc.
+
+ Sometimes a new output line should be started even though the current
+line is not yet full--for example, at the end of a paragraph. To do
+this it is possible to force a break, starting a new output line. Some
+requests cause a break automatically, as do (normally) blank input lines
+and input lines beginning with a space or tab.
+
+ Not all input lines are text lines--words to be formatted. Some are
+control lines that tell a macro package (or GNU 'troff' directly) how to
+format the text. Control lines start with a dot ('.') or an apostrophe
+(''') as the first character, and can be followed by a macro call.
+
+ The formatter also does more complex things, such as automatically
+numbering pages, skipping over page boundaries, putting footnotes in the
+correct place, and so forth.
+
+ Here are a few hints for preparing text for input to GNU 'troff'.
+
+ * First, keep the input lines short. Short input lines are easier to
+ edit, and GNU 'troff' packs words onto longer lines anyhow.
+
+ * In keeping with this, it is helpful to begin a new line after every
+ comma or phrase, since common corrections are to add or delete
+ sentences or phrases.
+
+ * End each sentence with two spaces--or better, start each sentence
+ on a new line. GNU 'troff' recognizes characters that usually end
+ a sentence, and inserts inter-sentence space accordingly.
+
+ * Do not hyphenate words at the end of lines--GNU 'troff' is smart
+ enough to hyphenate words as needed, but is not smart enough to
+ take hyphens out and join a word back together. Also, words such
+ as "mother-in-law" should not be broken over a line, since then a
+ space can occur where not wanted, such as "mother- in-law".
+
+ We offer further advice in *note Input Conventions::.
+
+ GNU 'troff' permits alteration of the distance between lines of text.
+This is termed vertical spacing and is expressed in the same units as
+the type size--the point. The default is 10-point type on 12-point
+spacing. To get double-spaced text you would set the vertical spacing
+to 24 points. Some, but not all, macro packages expose a macro or
+register to configure the vertical spacing.
+
+ A number of requests allow you to change the way the output is
+arranged on the page, sometimes called the layout of the output page.
+Most macro packages don't supply macros for performing these (at least
+not without performing other actions besides), as they are such basic
+operations. The macro packages for writing man pages, 'man' and 'mdoc',
+don't encourage explicit use of these requests at all.
+
+ The request '.sp N' leaves N lines of blank space. N can be omitted
+(skipping a single line) or can be of the form Ni (for N inches) or Nc
+(for N centimeters). For example, the input:
+
+ .sp 1.5i
+ My thoughts on the subject
+ .sp
+
+leaves one and a half inches of space, followed by the line "My thoughts
+on the subject", followed by a single blank line (more measurement units
+are available; see *note Measurements::).
+
+ If you seek precision in spacing, be advised when using a macro
+package that it might not honor 'sp' requests as you expect; it can use
+a formatter feature called no-space mode to prevent excess space from
+accumulating. Macro packages typically offer registers to control
+spacing between paragraphs, before section headings, and around displays
+(discussed below); use these facilities preferentially. *Note
+Manipulating Spacing::.
+
+ Text lines can be centered by using the 'ce' request. The line after
+'ce' is centered (horizontally) on the page. To center more than one
+line, use '.ce N' (where N is the number of lines to center), followed
+by the N lines. To center many lines without counting them, type:
+
+ .ce 1000
+ lines to center
+ .ce 0
+
+The '.ce 0' request tells GNU 'troff' to center zero more lines, in
+other words, stop centering.
+
+ GNU 'troff' also offers the 'rj' request for right-aligning text. It
+works analogously to 'ce' and is convenient for setting epigraphs.
+
+ The 'bp' request starts a new page; this necessarily implies an
+ordinary (line) break.
+
+ All of these requests cause a break; that is, they always start a new
+line. To start a new line without performing any other action, use
+'br'. If you invoke them with the apostrophe ''', the no-break control
+character, the (initial) break they normally perform is suppressed.
+''br' does nothing.
+
+ (1) The remainder of this chapter is based on 'Writing Papers with
+nroff using -me' by Eric P. Allman, which is distributed with 'groff' as
+'meintro.me'.
+
+3.2 Common Features
+===================
+
+GNU 'troff' provides low-level operations for formatting a document.
+Many routine operations are undertaken in nearly all documents that
+require a series of such primitive operations to be performed. These
+common tasks are grouped into macros, which are then collected into a
+macro package.
+
+ Macro packages come in two varieties: "major" or "full-service" ones
+that manage page layout, and "minor" or "auxiliary" ones that do not,
+instead fulfilling narrow, specific tasks. Find a list in the
+'groff_tmac(5)' man page. Type 'man groff_tmac' at the command line to
+view it.
+
+ We survey several capabilities of full-service macro package below.
+Each package employs its own macros to exercise them. For details,
+consult its man page or, for 'ms', see *note ms::.
+
+3.2.1 Paragraphs
+----------------
+
+Paragraphs can be separated and indented in various ways. Some start
+with a blank line and have a first-line indentation, like most of the
+ones in this manual. Block paragraphs omit the indentation.
+
+ => Some men look at constitutions with sanctimonious
+ => reverence, and deem them like the ark of the
+ => covenant, too sacred to be touched.
+
+We also frequently encounter tagged paragraphs, which begin with a tag
+or label at the left margin and indent the remaining text.
+
+ => one This is the first paragraph. Notice how the
+ => first line of the resulting paragraph lines
+ => up with the other lines in the paragraph.
+
+If the tag is too wide for the indentation, the line is broken.
+
+ => longlabel
+ => The label does not align with the subsequent
+ => lines, but they align with each other.
+
+A variation of the tagged paragraph is the itemized or enumerated
+paragraph, which might use punctuation or a digit for a tag,
+respectively. These are frequently used to construct lists.
+
+ => o This list item starts with a bullet. When
+ => producing output for a device using the ASCII
+ => character set, an 'o' is formatted instead.
+
+Often, use of the same macro without a tag continues such a discussion.
+
+ => -xyz This option is recognized but ignored.
+ =>
+ => It had a security hole that we don't discuss.
+
+3.2.2 Sections and Chapters
+---------------------------
+
+The simplest kind of section heading is unnumbered, set in a bold or
+italic style, and occupies a line by itself. Others possess
+automatically numbered multi-level headings and/or different typeface
+styles or sizes at different levels. More sophisticated macro packages
+supply macros for designating chapters and appendices.
+
+3.2.3 Headers and Footers
+-------------------------
+
+Headers and footers occupy the top and bottom of each page,
+respectively, and contain data like the page number and the article or
+chapter title. Their appearance is not affected by the running text.
+Some packages allow for different titles on even- and odd-numbered pages
+(for printed, bound material).
+
+ Headers and footers are together called titles, and comprise three
+parts: left-aligned, centered, and right-aligned. A '%' character
+appearing anywhere in a title is automatically replaced by the page
+number. *Note Page Layout::.
+
+3.2.4 Page Layout
+-----------------
+
+Most macro packages let the user specify the size of the page margins.
+The top and bottom margins are typically handled differently than the
+left and right margins; the latter two are derived from the page offset,
+indentation, and line length. *Note Line Layout::. Commonly, packages
+support registers to tune these values.
+
+3.2.5 Displays and Keeps
+------------------------
+
+Displays are sections of text set off from the surrounding material
+(typically paragraphs), often differing in indentation, and/or spacing.
+Tables, block quotations, and figures are displayed. Equations and code
+examples, when not much shorter than an output line, often are. Lists
+may or may not be. Packages for setting man pages support example
+displays but not keeps.
+
+ A keep is a group of output lines, often a display, that is formatted
+on a single page if possible; it causes a page break to happen early so
+as to not interrupt the kept material.
+
+ Floating keeps can move, or "float", relative to the text around them
+in the input. They are useful for displays that are captioned and
+referred to by name, as with "See figure 3". Depending on the package,
+a floating keep appears at the bottom of the current page if it fits,
+and at the top of the next otherwise. Alternatively, floating keeps
+might be deferred to the end of a section. Using a floating keep can
+avoid the large vertical spaces that may precede a tall keep of the
+ordinary sort when it won't fit on the page.
+
+3.2.6 Footnotes and Endnotes
+----------------------------
+
+Footnotes and endnotes are forms of delayed formatting. They are
+recorded at their points of relevance in the input, but not formatted
+there. Instead, a mark cues the reader to check the "foot", or bottom,
+of the current page, or in the case of endnotes, an annotation list
+later in the document. Macro packages that support these features also
+supply a means of automatically numbering either type of annotation.
+
+3.2.7 Table of Contents
+-----------------------
+
+A package may handle a table of contents by directing section heading
+macros to save section heading text and the page number where it occurs
+for use in a later entry for a table of contents. It writes the
+collected entries at the end of the document, once all are known, upon
+request. A row of dots (a leader) bridges the text on the left with its
+location on the right. Other collections might work in this manner,
+providing lists of figures or tables.
+
+ A table of contents is often found at the end of a GNU 'troff'
+document because the formatter processes the document in a single pass.
+The 'gropdf' output driver supports a PDF feature that relocates pages
+at the time the document is rendered; see the 'gropdf(1)' man page.
+Type 'man gropdf' at the command line to view it.
+
+3.2.8 Indexing
+--------------
+
+An index is similar to a table of contents, in that entry labels and
+locations must be collected, but poses a greater challenge because it
+needs to be sorted before it is output. Here, processing the document
+in multiple passes is inescapable, and tools like the 'makeindex'
+program are necessary.
+
+3.2.9 Document Formats
+----------------------
+
+Some macro packages supply stock configurations of certain documents,
+like business letters and memoranda. These often also have provision
+for a cover sheet, which may be rigid in its format. With these
+features, it is even more important to use the package's macros in
+preference to the formatter requests presented earlier, where possible.
+
+3.2.10 Columnation
+------------------
+
+Macro packages apart from 'man' and 'mdoc' for man page formatting offer
+a facility for setting multiple columns on the page.
+
+3.2.11 Font and Size Changes
+----------------------------
+
+The formatter's requests and escape sequences for setting the typeface
+and size are not always intuitive, so all macro packages provide macros
+to make these operations simpler. They also make it more convenient to
+change typefaces in the middle of a word and can handle italic
+corrections automatically. *Note Italic Corrections::.
+
+3.2.12 Predefined Text
+----------------------
+
+Most macro packages supply predefined strings to set prepared text like
+the date, or to perform operations like super- and subscripting.
+
+3.2.13 Preprocessor Support
+---------------------------
+
+All macro packages provide support for various preprocessors and may
+extend their functionality by defining macros to set their contents in
+displays. Examples include 'TS' and 'TE' for 'gtbl', 'EQ' and 'EN' for
+'geqn', and 'PS' and 'PE' for 'gpic'.
+
+3.2.14 Configuration and Customization
+--------------------------------------
+
+Packages provide means of customizing many of the details of how the
+package behaves. These range from setting the default type size to
+changing the appearance of section headers.
+
+4 Macro Packages
+****************
+
+This chapter surveys the "major" macro packages that come with 'groff'.
+One, 'ms', is presented in detail.
+
+ Major macro packages are also sometimes described as "full-service"
+due to the breadth of features they provide and because more than one
+cannot be used by the same document; for example
+
+ groff -m man foo.man -m ms bar.doc
+
+doesn't work. Option arguments are processed before non-option
+arguments; the above (failing) sample is thus reordered to
+
+ groff -m man -m ms foo.man bar.doc
+
+ Many auxiliary, or "minor", macro packages are also available. They
+may in general be used with any full-service macro package and handle a
+variety of tasks from character encoding selection, to language
+localization, to inlining of raster images. See the 'groff_tmac(5)' man
+page for a list. Type 'man groff_tmac' at the command line to view it.
+
+4.1 'man'
+=========
+
+The 'man' macro package is the most widely used and probably the most
+important ever developed for 'troff'. It is easy to use, and a vast
+majority of manual pages ("man pages") are written in it.
+
+ 'groff''s implementation is documented in the 'groff_man(7)' man
+page. Type 'man groff_man' at the command line to view it.
+
+4.1.1 Optional 'man' extensions
+-------------------------------
+
+Use the file 'man.local' for local extensions to the 'man' macros or for
+style changes.
+
+Custom headers and footers
+..........................
+
+In 'groff' versions 1.18.2 and later, you can specify custom headers and
+footers by redefining the following macros in 'man.local'.
+
+ -- Macro: .PT
+ Control the content of the headers. Normally, the header prints
+ the command name and section number on either side, and the
+ optional fifth argument to 'TH' in the center.
+
+ -- Macro: .BT
+ Control the content of the footers. Normally, the footer prints
+ the page number and the third and fourth arguments to 'TH'.
+
+ Use the 'FT' register to specify the footer position. The default
+ is -0.5i.
+
+Ultrix-specific man macros
+..........................
+
+The 'groff' source distribution includes a file named 'man.ultrix',
+containing macros compatible with the Ultrix variant of 'man'. Copy
+this file into 'man.local' (or use the 'mso' request to load it) to
+enable the following macros.
+
+ -- Macro: .CT key
+ Print '<CTRL/KEY>'.
+
+ -- Macro: .CW
+ Print subsequent text using a "constant-width" (monospaced)
+ typeface (Courier roman).
+
+ -- Macro: .Ds
+ Begin a non-filled display.
+
+ -- Macro: .De
+ End a non-filled display started with 'Ds'.
+
+ -- Macro: .EX [indent]
+ Begin a non-filled display using a monospaced typeface (Courier
+ roman). Use the optional INDENT argument to indent the display.
+
+ -- Macro: .EE
+ End a non-filled display started with 'EX'.
+
+ -- Macro: .G [text]
+ Set TEXT in Helvetica. If no text is present on the line where the
+ macro is called, then the text of the next line appears in
+ Helvetica.
+
+ -- Macro: .GL [text]
+ Set TEXT in Helvetica oblique. If no text is present on the line
+ where the macro is called, then the text of the next line appears
+ in Helvetica Oblique.
+
+ -- Macro: .HB [text]
+ Set TEXT in Helvetica bold. If no text is present on the line
+ where the macro is called, then all text up to the next 'HB'
+ appears in Helvetica bold.
+
+ -- Macro: .TB [text]
+ Identical to 'HB'.
+
+ -- Macro: .MS title sect [punct]
+ Set a man page reference in Ultrix format. The TITLE is in Courier
+ instead of italic. Optional punctuation follows the section number
+ without an intervening space.
+
+ -- Macro: .NT [C] [title]
+ Begin a note. Print the optional title, or the word "Note",
+ centered on the page. Text following the macro makes up the body
+ of the note, and is indented on both sides. If the first argument
+ is 'C', the body of the note is printed centered (the second
+ argument replaces the word "Note" if specified).
+
+ -- Macro: .NE
+ End a note begun with 'NT'.
+
+ -- Macro: .PN path [punct]
+ Set the path name in a monospaced typeface (Courier roman),
+ followed by optional punctuation.
+
+ -- Macro: .Pn [punct] path [punct]
+ If called with two arguments, identical to 'PN'. If called with
+ three arguments, set the second argument in a monospaced typeface
+ (Courier roman), bracketed by the first and third arguments in the
+ current font.
+
+ -- Macro: .R
+ Switch to roman font and turn off any underlining in effect.
+
+ -- Macro: .RN
+ Print the string '<RETURN>'.
+
+ -- Macro: .VS [4]
+ Start printing a change bar in the margin if the number '4' is
+ specified. Otherwise, this macro does nothing.
+
+ -- Macro: .VE
+ End printing the change bar begun by 'VS'.
+
+Simple example
+..............
+
+The following example 'man.local' file alters the 'SH' macro to add some
+extra vertical space before printing the heading. Headings are printed
+in Helvetica bold.
+
+ .\" Make the heading fonts Helvetica
+ .ds HF HB
+ .
+ .\" Put more space in front of headings.
+ .rn SH SH-orig
+ .de SH
+ . if t .sp (u;\\n[PD]*2)
+ . SH-orig \\$*
+ ..
+
+4.2 'mdoc'
+==========
+
+'groff''s implementation of the BSD 'doc' package for man pages is
+documented in the 'groff_mdoc(7)' man page. Type 'man groff_mdoc' at
+the command line to view it.
+
+4.3 'me'
+========
+
+'groff''s implementation of the BSD 'me' macro package is documented
+using itself. A tutorial, 'meintro.me', and reference, 'meref.me', are
+available in 'groff''s documentation directory. A 'groff_me(7)' man
+page is also available and identifies the installation path for these
+documents. Type 'man groff_me' at the command line to view it.
+
+ A French translation of the tutorial is available as 'meintro_fr.me'
+and installed parallel to the English version.
+
+4.4 'mm'
+========
+
+'groff''s implementation of the AT&T memorandum macro package is
+documented in the 'groff_mm(7)' man page. Type 'man groff_mm' at the
+command line) to view it.
+
+ A Swedish localization of 'mm' is also available; see
+'groff_mmse(7)'.
+
+4.5 'mom'
+=========
+
+The main documentation files for the 'mom' macros are in HTML format.
+Additional, useful documentation is in PDF format. See the 'groff(1)'
+man page, section "Installation Directories", for their location.
+
+ * 'toc.html' Entry point to the full mom manual.
+
+ * 'macrolist.html' Hyperlinked index of macros with brief
+ descriptions, arranged by category.
+
+ * 'mom-pdf.pdf' PDF features and usage.
+
+ The mom macros are in active development between 'groff' releases.
+The most recent version, along with up-to-date documentation, is
+available at <http://www.schaffter.ca/mom/mom-05.html>.
+
+ The 'groff_mom(7)' man page (type 'man groff_mom' at the command
+line) contains a partial list of available macros, however their usage
+is best understood by consulting the HTML documentation.
+
+4.6 'ms'
+========
+
+The 'ms' ("manuscript") package is suitable for the preparation of
+letters, memoranda, reports, and books. These 'groff' macros feature
+cover page and table of contents generation, automatically numbered
+headings, several paragraph styles, a variety of text styling options,
+footnotes, and multi-column page layouts. 'ms' supports the 'tbl',
+'eqn', 'pic', and 'refer' preprocessors for inclusion of tables,
+mathematical equations, diagrams, and standardized bibliographic
+citations. This implementation is mostly compatible with the documented
+interface and behavior of AT&T Unix Version 7 'ms'. Many extensions
+from 4.2BSD (Berkeley) and Tenth Edition Research Unix have been
+recreated.
+
+4.6.1 Introduction
+------------------
+
+The 'ms' macros are the oldest surviving package for 'roff' systems.(1)
+(*note ms Introduction-Footnote-1::) While the 'man' package was
+designed for brief reference documents, the 'ms' macros are also
+suitable for longer works intended for printing and possible
+publication.
+
+ (1) While manual _pages_ are older, early ones used macros supplanted
+by the 'man' package of Seventh Edition Unix (1979). 'ms' shipped with
+Sixth Edition (1975) and was documented by Mike Lesk in a Bell Labs
+internal memorandum.
+
+4.6.1.1 Basic information
+.........................
+
+'ms' documents are plain text files; prepare them with your preferred
+text editor. If you're in a hurry to start, know that 'ms' needs one of
+its macros called at the beginning of a document so that it can
+initialize. A "macro" is a formatting instruction to 'ms'. Put a macro
+call on a line by itself. Use '.PP' if you want your paragraph's first
+line to be indented, or '.LP' if you don't.
+
+ After that, start typing normally. It is a good practice to start
+each sentence on a new line, or to put two spaces after sentence-ending
+punctuation, so that the formatter knows where the sentence boundaries
+are. You can separate paragraphs with further paragraphing macros, or
+with blank lines, and you can indent with tabs. When you need one of
+the features mentioned earlier (*note ms::), return to this part of the
+manual.
+
+ Format the document with the 'groff' command. 'nroff' can be useful
+for previewing.
+
+ $ editor radical.ms
+ $ nroff -ww -z -ms radical.ms # check for errors
+ $ nroff -ms radical.ms | less -R
+ $ groff -T ps -ms radical.ms > radical.ps
+ $ see radical.ps
+
+ Our 'radical.ms' document might look like this.
+
+ .LP
+ Radical novelties are so disturbing that they tend to be
+ suppressed or ignored, to the extent that even the
+ possibility of their existence in general is more often
+ denied than admitted.
+
+ ->That's what Dijkstra said, anyway.
+
+ 'ms' exposes many aspects of document layout to user control via
+'groff''s "registers" and "strings", which store numbers and text,
+respectively. Measurements in 'groff' are expressed with a suffix
+called a "scaling unit".
+
+'i'
+ inches
+
+'c'
+ centimeters
+
+'p'
+ points (1/72 inch)
+
+'P'
+ picas (1/6 inch)
+
+'v'
+ vees; current vertical spacing
+
+'m'
+ ems; width of an "M" in the current font
+
+'n'
+ ens; one-half em
+
+ Set registers with the 'nr' request and strings with the 'ds'
+request. "Requests" are like macro calls; they go on lines by
+themselves and start with the "control character", a dot ('.'). The
+difference is that they directly instruct the formatter program, rather
+than the macro package. We'll discuss a few as applicable. It is wise
+to specify a scaling unit when setting any register that represents a
+length, size, or distance.
+
+ .nr PS 10.5p \" Use 10.5-point type.
+ .ds FAM P \" Use Palatino font family.
+
+In the foregoing, we see that '\"' begins a comment. This is an example
+of an "escape sequence", the other kind of formatting instruction.
+Escape sequences can appear anywhere. They begin with the escape
+character ('\') and are followed by at least one more character. 'ms'
+documents tend to use only a few of 'groff''s many requests and escape
+sequences; see *note Request Index:: and *note Escape Sequence Index::
+or the 'groff(7)' man page for complete lists.
+
+'\"'
+ Begin comment; ignore remainder of line.
+
+'\n[REG]'
+ Interpolate value of register REG.
+
+'\*[STR]'
+ Interpolate contents of string STR.
+
+'\*S'
+ abbreviation of '\*[S]'; the name S must be only one character
+
+'\[CHAR]'
+ Interpolate glyph of special character named CHAR.
+
+'\&'
+ dummy character
+
+'\~'
+ Insert an unbreakable space that is adjustable like a normal space.
+
+'\|'
+ Move horizontally by one-sixth em ("thin space").
+
+ Prefix any words that start with a dot '.' or neutral apostrophe '''
+with '\&' if they are at the beginning of an input line (or might become
+that way in editing) to prevent them from being interpreted as macro
+calls or requests. Suffix '.', '?', and '!' with '\&' when needed to
+cancel end-of-sentence detection.
+
+ My exposure was \&.5 to \&.6 Sv of neutrons, said Dr.\&
+ Wallace after the criticality incident.
+
+4.6.2 Document Structure
+------------------------
+
+The 'ms' macro package expects a certain amount of structure: a
+well-formed document contains at least one paragraphing or heading macro
+call. Longer documents have a structure as follows.
+
+*Document type*
+ Calling the 'RP' macro at the beginning of your document puts the
+ document description (see below) on a cover page. Otherwise, 'ms'
+ places the information (if any) on the first page, followed
+ immediately by the body text. Some document types found in other
+ 'ms' implementations are specific to AT&T or Berkeley, and are not
+ supported by 'groff' 'ms'.
+
+*Format and layout*
+ By setting registers and strings, you can configure your document's
+ typeface, margins, spacing, headers and footers, and footnote
+ arrangement. *Note ms Document Control Settings::.
+
+*Document description*
+ A document description consists of any of: a title, one or more
+ authors' names and affiliated institutions, an abstract, and a date
+ or other identifier. *Note ms Document Description Macros::.
+
+*Body text*
+ The main matter of your document follows its description (if any).
+ 'ms' supports highly structured text consisting of paragraphs
+ interspersed with multi-level headings (chapters, sections,
+ subsections, and so forth) and augmented by lists, footnotes,
+ tables, diagrams, and similar material. *Note ms Body Text::.
+
+*Tables of contents*
+ Macros enable the collection of entries for a table of contents (or
+ index) as the material they discuss appears in the document. You
+ then call a macro to emit the table of contents at the end of your
+ document. The table of contents must necessarily follow the rest
+ of the text since GNU 'troff' is a single-pass formatter; it thus
+ cannot determine the page number of a division of the text until it
+ has been set and output. Since 'ms' was designed for the
+ production of hard copy, the traditional procedure was to manually
+ relocate the pages containing the table of contents between the
+ cover page and the body text. Today, page resequencing is more
+ often done in the digital domain. An index works similarly, but
+ because it typically needs to be sorted after collection, its
+ preparation requires separate processing.
+
+4.6.3 Document Control Settings
+-------------------------------
+
+'ms' exposes many aspects of document layout to user control via 'groff'
+requests. To use them, you must understand how to define registers and
+strings.
+
+ -- Request: .nr reg value
+ Set register REG to VALUE. If REG doesn't exist, GNU 'troff'
+ creates it.
+
+ -- Request: .ds name contents
+ Set string NAME to CONTENTS.
+
+ A list of document control registers and strings follows. For any
+parameter whose default is unsatisfactory, define its register or string
+before calling any 'ms' macro other than 'RP'.
+
+Margin settings
+...............
+
+ -- Register: \n[PO]
+ Defines the page offset (i.e., the left margin).
+
+ Effective: next page.
+
+ Default: Varies by output device and paper format; 1i is used for
+ typesetters using U.S. letter paper, and zero for terminals. *Note
+ Paper Format::.
+
+ -- Register: \n[LL]
+ Defines the line length (i.e., the width of the body text).
+
+ Effective: next paragraph.
+
+ Default: Varies by output device and paper format; 6.5i is used for
+ typesetters using U.S. letter paper (*note Paper Format::) and 65n
+ on terminals.
+
+ -- Register: \n[LT]
+ Defines the title line length (i.e., the header and footer width).
+ This is usually the same as 'LL', but need not be.
+
+ Effective: next paragraph.
+
+ Default: Varies by output device and paper format; 6.5i is used for
+ typesetters using U.S. letter paper (*note Paper Format::) and 65n
+ on terminals.
+
+ -- Register: \n[HM]
+ Defines the header margin height at the top of the page.
+
+ Effective: next page.
+
+ Default: 1i.
+
+ -- Register: \n[FM]
+ Defines the footer margin height at the bottom of the page.
+
+ Effective: next page.
+
+ Default: 1i.
+
+Titles (headers, footers)
+.........................
+
+ -- String: \*[LH]
+ Defines the text displayed in the left header position.
+
+ Effective: next header.
+
+ Default: empty.
+
+ -- String: \*[CH]
+ Defines the text displayed in the center header position.
+
+ Effective: next header.
+
+ Default: '-\n[%]-'.
+
+ -- String: \*[RH]
+ Defines the text displayed in the right header position.
+
+ Effective: next header.
+
+ Default: empty.
+
+ -- String: \*[LF]
+ Defines the text displayed in the left footer position.
+
+ Effective: next footer.
+
+ Default: empty.
+
+ -- String: \*[CF]
+ Defines the text displayed in the center footer position.
+
+ Effective: next footer.
+
+ Default: empty.
+
+ -- String: \*[RF]
+ Defines the text displayed in the right footer position.
+
+ Effective: next footer.
+
+ Default: empty.
+
+Text settings
+.............
+
+ -- Register: \n[PS]
+ Defines the type size of the body text.
+
+ Effective: next paragraph.
+
+ Default: 10p.
+
+ -- Register: \n[VS]
+ Defines the vertical spacing (type size plus leading).
+
+ Effective: next paragraph.
+
+ Default: 12p.
+
+ -- Register: \n[HY]
+ Defines the automatic hyphenation mode used with the 'hy' request.
+ Setting 'HY' to 0 is equivalent to using the 'nh' request. This is
+ a Tenth Edition Research Unix extension.
+
+ Effective: next paragraph.
+
+ Default: 6.
+
+ -- String: \*[FAM]
+ Defines the font family used to typeset the document. This is a
+ GNU extension.
+
+ Effective: next paragraph.
+
+ Default: defined by the output device; often 'T' (*note ms Body
+ Text::)
+
+Paragraph settings
+..................
+
+ -- Register: \n[PI]
+ Defines the indentation amount used by the 'PP', 'IP' (unless
+ overridden by an optional argument), 'XP', and 'RS' macros.
+
+ Effective: next paragraph.
+
+ Default: 5n.
+
+ -- Register: \n[PD]
+ Defines the space between paragraphs.
+
+ Effective: next paragraph.
+
+ Default: 0.3v (1v on low-resolution devices).
+
+ -- Register: \n[QI]
+ Defines the indentation amount used on both sides of a paragraph
+ set with the 'QP' or between the 'QS' and 'QE' macros.
+
+ Effective: next paragraph.
+
+ Default: 5n.
+
+ -- Register: \n[PORPHANS]
+ Defines the minimum number of initial lines of any paragraph that
+ must be kept together to avoid isolated lines at the bottom of a
+ page. If a new paragraph is started close to the bottom of a page,
+ and there is insufficient space to accommodate 'PORPHANS' lines
+ before an automatic page break, then a page break is forced before
+ the start of the paragraph. This is a GNU extension.
+
+ Effective: next paragraph.
+
+ Default: 1.
+
+Heading settings
+................
+
+ -- Register: \n[PSINCR]
+ Defines an increment in type size to be applied to a heading at a
+ lesser depth than that specified in 'GROWPS'. The value of
+ 'PSINCR' should be specified in points with the p scaling unit and
+ may include a fractional component; for example, '.nr PSINCR 1.5p'
+ sets a type size increment of 1.5p. This is a GNU extension.
+
+ Effective: next heading.
+
+ Default: 1p.
+
+ -- Register: \n[GROWPS]
+ Defines the heading depth above which the type size increment set
+ by 'PSINCR' becomes effective. For each heading depth less than
+ the value of 'GROWPS', the type size is increased by 'PSINCR'.
+ Setting 'GROWPS' to any value less than 2 disables the incremental
+ heading size feature. This is a GNU extension.
+
+ Effective: next heading.
+
+ Default: 0.
+
+ -- Register: \n[HORPHANS]
+ Defines the minimum number of lines of an immediately succeeding
+ paragraph that should be kept together with any heading introduced
+ by the 'NH' or 'SH' macros. If a heading is placed close to the
+ bottom of a page, and there is insufficient space to accommodate
+ both the heading and at least 'HORPHANS' lines of the following
+ paragraph, before an automatic page break, then the page break is
+ forced before the heading. This is a GNU extension.
+
+ Effective: next paragraph.
+
+ Default: 1.
+
+ -- String: \*[SN-STYLE]
+ Defines the style used to print numbered headings. *Note Headings
+ in ms::. This is a GNU extension.
+
+ Effective: next heading.
+
+ Default: alias of 'SN-DOT'
+
+Footnote settings
+.................
+
+ -- Register: \n[FI]
+ Defines the footnote indentation. This is a Berkeley extension.
+
+ Effective: next footnote.
+
+ Default: 2n.
+
+ -- Register: \n[FF]
+ Defines the format of automatically numbered footnotes, and those
+ for which the 'FS' request is given a marker argument, at the
+ bottom of a column or page. This is a Berkeley extension.
+ '0'
+ Set an automatic number(1) (*note ms Document Control
+ Settings-Footnote-1::) as a superscript (on typesetter
+ devices) or surrounded by square brackets (on terminals). The
+ footnote paragraph is indented as with 'PP' if there is an
+ 'FS' argument or an automatic number, and as with 'LP'
+ otherwise. This is the default.
+
+ '1'
+ As '0', but set the marker as regular text and follow an
+ automatic number with a period.
+
+ '2'
+ As '1', but without indentation (like 'LP').
+
+ '3'
+ As '1', but set the footnote paragraph with the marker hanging
+ (like 'IP').
+
+ Effective: next footnote.
+
+ Default: 0.
+
+ -- Register: \n[FPS]
+ Defines the footnote type size.
+
+ Effective: next footnote.
+
+ Default: '\n[PS] - 2p'.
+
+ -- Register: \n[FVS]
+ Defines the footnote vertical spacing.
+
+ Effective: next footnote.
+
+ Default: '\n[FPS] + 2p'.
+
+ -- Register: \n[FPD]
+ Defines the footnote paragraph spacing. This is a GNU extension.
+
+ Effective: next footnote.
+
+ Default: '\n[PD] / 2'.
+
+ -- String: \*[FR]
+ Defines the ratio of the footnote line length to the current line
+ length. This is a GNU extension.
+
+ Effective: next footnote in single-column arrangements, next page
+ otherwise.
+
+ Default: '11/12'.
+
+Display settings
+................
+
+ -- Register: \n[DD]
+ Sets the display distance--the vertical spacing before and after a
+ display, a 'tbl' table, an 'eqn' equation, or a 'pic' image. This
+ is a Berkeley extension.
+
+ Effective: next display boundary.
+
+ Default: 0.5v (1v on low-resolution devices).
+
+ -- Register: \n[DI]
+ Sets the default amount by which to indent a display started with
+ 'DS' and 'ID' without arguments, to '.DS I' without an indentation
+ argument, and to equations set with '.EQ I'. This is a GNU
+ extension.
+
+ Effective: next indented display.
+
+ Default: 0.5i.
+
+Other settings
+..............
+
+ -- Register: \n[MINGW]
+ Defines the default minimum width between columns in a multi-column
+ document. This is a GNU extension.
+
+ Effective: next page.
+
+ Default: 2n.
+
+ -- Register: \n[TC-MARGIN]
+ Defines the width of the field in which page numbers are set in a
+ table of contents entry; the right margin thus moves inboard by
+ this amount. This is a GNU extension.
+
+ Effective: next 'PX' call.
+
+ Default: '\w'000''
+
+ (1) defined in *note ms Footnotes::
+
+4.6.4 Document Description Macros
+---------------------------------
+
+Only the simplest document lacks a title.(1) (*note ms Document
+Description Macros-Footnote-1::) As its level of sophistication (or
+complexity) increases, it tends to acquire a date of revision,
+explicitly identified authors, sponsoring institutions for authors, and,
+at the rarefied heights, an abstract of its content. Define these data
+by calling the macros below in the order shown; 'DA' or 'ND' can be
+called to set the document date (or other identifier) at any time before
+(a) the abstract, if present, or (b) its information is required in a
+header or footer. Use of these macros is optional, except that 'TL' is
+mandatory if any of 'RP', 'AU', 'AI', or 'AB' is called, and 'AE' is
+mandatory if 'AB' is called.
+
+ -- Macro: .RP [no-repeat-info] [no-renumber]
+ Use the "report" (AT&T: "released paper") format for your document,
+ creating a separate cover page. The default arrangement is to
+ place most of the document description (title, author names and
+ institutions, and abstract, but not the date) at the top of the
+ first page. If the optional 'no-repeat-info' argument is given,
+ 'ms' produces a cover page but does not repeat any of its
+ information subsequently (but see the 'DA' macro below regarding
+ the date). Normally, 'RP' sets the page number following the cover
+ page to 1. Specifying the optional 'no-renumber' argument
+ suppresses this alteration. Optional arguments can occur in any
+ order. 'no' is recognized as a synonym of 'no-repeat-info' for
+ 'AT&T' compatibility.
+
+ -- Macro: .TL
+ Specify the document title. 'ms' collects text on input lines
+ following this call into the title until reaching 'AU', 'AB', or a
+ heading or paragraphing macro call.
+
+ -- Macro: .AU
+ Specify an author's name. 'ms' collects text on input lines
+ following this call into the author's name until reaching 'AI',
+ 'AB', another 'AU', or a heading or paragraphing macro call. Call
+ it repeatedly to specify multiple authors.
+
+ -- Macro: .AI
+ Specify the preceding author's institution. An 'AU' call is
+ usefully followed by at most one 'AI' call; if there are more, the
+ last 'AI' call controls. 'ms' collects text on input lines
+ following this call into the author's institution until reaching
+ 'AU', 'AB', or a heading or paragraphing macro call.
+
+ -- Macro: .DA [x ...]
+ Typeset the current date, or any arguments X, in the center footer,
+ and, if 'RP' is also called, left-aligned at the end of the
+ description information on the cover page.
+
+ -- Macro: .ND [x ...]
+ Typeset the current date, or any arguments X, if 'RP' is also
+ called, left-aligned at the end of the document description on the
+ cover page. This is 'groff' 'ms''s default.
+
+ -- Macro: .AB [no]
+ Begin the abstract. 'ms' collects text on input lines following
+ this call into the abstract until reaching an 'AE' call. By
+ default, 'ms' places the word "ABSTRACT" centered and in italics
+ above the text of the abstract. The optional argument 'no'
+ suppresses this heading.
+
+ -- Macro: .AE
+ End the abstract.
+
+ An example document description, using a cover page, follows.
+
+ .RP
+ .TL
+ The Inevitability of Code Bloat
+ in Commercial and Free Software
+ .AU
+ J.\& Random Luser
+ .AI
+ University of West Bumblefuzz
+ .AB
+ This report examines the long-term growth of the code
+ bases in two large,
+ popular software packages;
+ the free Emacs and the commercial Microsoft Word.
+ While differences appear in the type or order of
+ features added,
+ due to the different methodologies used,
+ the results are the same in the end.
+ .PP
+ The free software approach is shown to be superior in
+ that while free software can become as bloated as
+ commercial offerings,
+ free software tends to have fewer serious bugs and the
+ added features are more in line with user demand.
+ .AE
+
+ ...the rest of the paper...
+
+ (1) Distinguish a document title from "titles", which are what 'roff'
+systems call headers and footers collectively.
+
+4.6.5 Body Text
+---------------
+
+A variety of macros, registers, and strings can be used to structure and
+style the body of your document. They organize your text into
+paragraphs, headings, footnotes, and inclusions of material such as
+tables and figures.
+
+4.6.5.1 Text settings
+.....................
+
+The 'FAM' string, a GNU extension, sets the font family for body text;
+the default is 'T'. The 'PS' and 'VS' registers set the type size and
+vertical spacing (distance between text baselines), respectively. The
+font family and type size are ignored on terminal devices. Setting
+these parameters before the first call of a heading, paragraphing, or
+(non-date) document description macro also applies them to headers,
+footers, and (for 'FAM') footnotes.
+
+ Which font families are available depends on the output device; as a
+convention, 'T' selects a serif family ("Times"), 'H' a sans-serif
+family ("Helvetica"), and 'C' a monospaced family ("Courier"). The man
+page for the output driver documents its font repertoire. Consult the
+'groff(1)' man page for lists of available output devices and their
+drivers.
+
+ The hyphenation mode (as used by the 'hy' request) is set from the
+'HY' register. Setting 'HY' to '0' is equivalent to using the 'nh'
+request. This is a Tenth Edition Research Unix extension.
+
+4.6.5.2 Typographical symbols
+.............................
+
+'ms' provides a few strings to obtain typographical symbols not easily
+entered with the keyboard. These and many others are available as
+special character escape sequences--see the 'groff_char(7)' man page.
+
+ -- String: \*[-]
+ Interpolate an em dash.
+
+ -- String: \*[Q]
+ -- String: \*[U]
+ Interpolate typographer's quotation marks where available, and
+ neutral double quotes otherwise. '\*Q' is the left quote and '\*U'
+ the right.
+
+4.6.5.3 Paragraphs
+..................
+
+Paragraphing macros "break", or terminate, any pending output line so
+that a new paragraph can begin. Several paragraph types are available,
+differing in how indentation applies to them: to left, right, or both
+margins; to the first output line of the paragraph, all output lines, or
+all but the first. All paragraphing macro calls cause the insertion of
+vertical space in the amount stored in the 'PD' register, except at page
+or column breaks. Alternatively, a blank input line breaks the output
+line and vertically spaces by one vee.
+
+ -- Macro: .LP
+ Set a paragraph without any (additional) indentation.
+
+ -- Macro: .PP
+ Set a paragraph with a first-line left indentation in the amount
+ stored in the 'PI' register.
+
+ -- Macro: .IP [marker [width]]
+ Set a paragraph with a left indentation. The optional MARKER is
+ not indented and is empty by default. It has several applications;
+ see *note Lists in ms::. WIDTH overrides the indentation amount
+ stored in the 'PI' register; its default unit is 'n'. Once
+ specified, WIDTH applies to further 'IP' calls until specified
+ again or a heading or different paragraphing macro is called.
+
+ -- Macro: .QP
+ Set a paragraph indented from both left and right margins by the
+ amount stored in the 'QI' register.
+
+ -- Macro: .QS
+ -- Macro: .QE
+ Begin ('QS') and end ('QE') a region where each paragraph is
+ indented from both margins by the amount stored in the 'QI'
+ register. The text between 'QS' and 'QE' can be structured further
+ by use of other paragraphing macros.
+
+ -- Macro: .XP
+ Set an "exdented" paragraph--one with a left indentation in the
+ amount stored in the 'PI' register on every line _except_ the first
+ (also known as a hanging indent). This is a Berkeley extension.
+
+ The following example illustrates the use of paragraphing macros.
+
+ .NH 2
+ Cases used in the 2001 study
+ .LP
+ Two software releases were considered for this report.
+ .PP
+ The first is commercial software;
+ the second is free.
+ .IP \[bu]
+ Microsoft Word for Windows,
+ starting with version 1.0 through the current version
+ (Word 2000).
+ .IP \[bu]
+ GNU Emacs,
+ from its first appearance as a standalone editor through
+ the current version (v20).
+ See [Bloggs 2002] for details.
+ .QP
+ Franklin's Law applied to software:
+ software expands to outgrow both RAM and disk space over
+ time.
+ .SH
+ Bibliography
+ .XP
+ Bloggs, Joseph R.,
+ .I "Everyone's a Critic" ,
+ Underground Press, March 2002.
+ A definitive work that answers all questions and
+ criticisms about the quality and usability of free
+ software.
+
+4.6.5.4 Headings
+................
+
+Use headings to create a sequential or hierarchical structure for your
+document. The 'ms' macros print headings in *bold* using the same font
+family and, by default, type size as the body text. Headings are
+available with and without automatic numbering. Text on input lines
+following the macro call becomes the heading's title. Call a
+paragraphing macro to end the heading text and start the section's
+content.
+
+ -- Macro: .NH [depth]
+ -- Macro: .NH S heading-depth-index ...
+ Set an automatically numbered heading.
+
+ 'ms' produces a numbered heading the form A.B.C..., to any depth
+ desired, with the numbering of each depth increasing automatically
+ and being reset to zero when a more significant level is increased.
+ "1" is the most significant or coarsest division of the document.
+ Only non-zero values are output. If DEPTH is omitted, it is taken
+ to be '1'.
+
+ If you specify DEPTH such that an ascending gap occurs relative to
+ the previous 'NH' call--that is, you "skip a depth", as by '.NH 1'
+ and then '.NH 3'--'groff' 'ms' emits a warning on the standard
+ error stream.
+
+ Alternatively, you can give 'NH' a first argument of 'S', followed
+ by integers to number the heading depths explicitly. Further
+ automatic numbering, if used, resumes using the specified indices
+ as their predecessors. This feature is a Berkeley extension.
+
+ An example may be illustrative.
+
+ .NH 1
+ Animalia
+ .NH 2
+ Arthropoda
+ .NH 3
+ Crustacea
+ .NH 2
+ Chordata
+ .NH S 6 6 6
+ Daimonia
+ .NH 1
+ Plantae
+
+ The above results in numbering as follows; the vertical space that
+normally precedes each heading is omitted.
+
+ 1. Animalia
+ 1.1. Arthropoda
+ 1.1.1. Crustacea
+ 1.2. Chordata
+ 6.6.6. Daimonia
+ 7. Plantae
+
+ -- String: \*[SN-STYLE]
+ -- String: \*[SN-DOT]
+ -- String: \*[SN-NO-DOT]
+ -- String: \*[SN]
+ After 'NH' is called, the assigned number is made available in the
+ strings 'SN-DOT' (as it appears in a printed heading with default
+ formatting, followed by a terminating period) and 'SN-NO-DOT' (with
+ the terminating period omitted). These are GNU extensions.
+
+ You can control the style used to print numbered headings by
+ defining an appropriate alias for the string 'SN-STYLE'. By
+ default, 'SN-STYLE' is aliased to 'SN-DOT'. If you prefer to omit
+ the terminating period from numbers appearing in numbered headings,
+ you may define the alias as follows.
+
+ .als SN-STYLE SN-NO-DOT
+
+ Any such change in numbering style becomes effective from the next
+ use of 'NH' following redefinition of the alias for 'SN-STYLE'.
+ The formatted number of the current heading is available in the
+ 'SN' string (a feature first documented by Berkeley), which
+ facilitates its inclusion in, for example, table captions, equation
+ labels, and 'XS'/'XA'/'XE' table of contents entries.
+
+ -- Macro: .SH [depth]
+ Set an unnumbered heading.
+
+ The optional DEPTH argument is a GNU extension indicating the
+ heading depth corresponding to the DEPTH argument of 'NH'. It
+ matches the type size at which the heading is set to that of a
+ numbered heading at the same depth when the 'GROWPS' and 'PSINCR'
+ heading size adjustment mechanism is in effect.
+
+ If the 'GROWPS' register is set to a value greater than the LEVEL
+argument to 'NH' or 'SH', the type size of a heading produced by these
+macros increases by 'PSINCR' units over the size specified by 'PS'
+multiplied by the difference of 'GROWPS' and LEVEL. The value stored in
+'PSINCR' is interpreted in 'groff' basic units; the 'p' scaling unit
+should be employed when assigning a value specified in points. For
+example, the sequence
+
+ .nr PS 10
+ .nr GROWPS 3
+ .nr PSINCR 1.5p
+ .NH 1
+ Carnivora
+ .NH 2
+ Felinae
+ .NH 3
+ Felis catus
+ .SH 2
+ Machairodontinae
+
+will cause "1. Carnivora" to be printed in 13-point text, followed by
+"1.1. Felinae" in 11.5-point text, while "1.1.1. Felis catus" and all
+more deeply nested heading levels will remain in the 10-point text
+specified by the 'PS' register. "Machairodontinae" is printed at 11.5
+points, since it corresponds to heading level 2.
+
+ The 'HORPHANS' register operates in conjunction with the 'NH' and
+'SH' macros to inhibit the printing of isolated headings at the bottom
+of a page; it specifies the minimum number of lines of an immediately
+subsequent paragraph that must be kept on the same page as the heading.
+If insufficient space remains on the current page to accommodate the
+heading and this number of lines of paragraph text, a page break is
+forced before the heading is printed. Any display macro call or 'tbl',
+'pic', or 'eqn' region between the heading and the subsequent paragraph
+suppresses this grouping. *Note ms keeps and displays:: and *note ms
+Insertions::.
+
+4.6.5.5 Typeface and decoration
+...............................
+
+The 'ms' macros provide a variety of ways to style text. Attend closely
+to the ordering of arguments labeled PRE and POST, which is not
+intuitive. Support for PRE arguments is a GNU extension.(1) (*note
+Typeface and decoration-Footnote-1::)
+
+ -- Macro: .B [text [post [pre]]]
+ Style TEXT in bold, followed by POST in the previous font style
+ without intervening space, and preceded by PRE similarly. Without
+ arguments, 'ms' styles subsequent text in bold until the next
+ paragraphing, heading, or no-argument typeface macro call.
+
+ -- Macro: .R [text [post [pre]]]
+ As 'B', but use the roman style (upright text of normal weight)
+ instead of bold. Argument recognition is a GNU extension.
+
+ -- Macro: .I [text [post [pre]]]
+ As 'B', but use an italic or oblique style instead of bold.
+
+ -- Macro: .BI [text [post [pre]]]
+ As 'B', but use a bold italic or bold oblique style instead of
+ upright bold. This is a Tenth Edition Research Unix extension.
+
+ -- Macro: .CW [text [post [pre]]]
+ As 'B', but use a constant-width (monospaced) roman typeface
+ instead of bold. This is a Tenth Edition Research Unix extension.
+
+ -- Macro: .BX [text]
+ Typeset TEXT and draw a box around it. On terminal devices,
+ reverse video is used instead. If you want TEXT to contain space,
+ use unbreakable space or horizontal motion escape sequences ('\~',
+ '\<SP>', '\^', '\|', '\0' or '\h').
+
+ -- Macro: .UL [text [post]]
+ Typeset TEXT with an underline. POST, if present, is set after
+ TEXT with no intervening space.
+
+ -- Macro: .LG
+ Set subsequent text in larger type (two points larger than the
+ current size) until the next type size, paragraphing, or heading
+ macro call. You can specify this macro multiple times to enlarge
+ the type size as needed.
+
+ -- Macro: .SM
+ Set subsequent text in smaller type (two points smaller than the
+ current size) until the next type size, paragraphing, or heading
+ macro call. You can specify this macro multiple times to reduce
+ the type size as needed.
+
+ -- Macro: .NL
+ Set subsequent text at the normal type size (the amount in the 'PS'
+ register).
+
+ PRE and POST arguments are typically used to simplify the attachment
+of punctuation to styled words. When PRE is used, a hyphenation control
+escape sequence '\%' that would ordinarily start TEXT must start PRE
+instead to have the desired effect.
+
+ The CS course's students found one C language keyword
+ .CW static ) \%(
+ most troublesome.
+
+ The foregoing example produces output as follows.
+
+ The CS course's students found one C language keyword (static)
+ most troublesome.
+
+ You can use the output line continuation escape sequence '\c' to
+achieve the same result (*note Line Continuation::). It is also
+portable to older 'ms' implementations.
+
+ The CS course's students found one C language keyword
+ \%(\c
+ .CW \%static )
+ most troublesome.
+
+ 'groff' 'ms' also offers strings to begin and end super- and
+subscripting. These are GNU extensions.
+
+ -- String: \*[{]
+ -- String: \*[}]
+ Begin and end superscripting, respectively.
+
+ -- String: \*[<]
+ -- String: \*[>]
+ Begin and end subscripting, respectively.
+
+ Rather than calling the 'CW' macro, in 'groff' 'ms' you might prefer
+to change the font family to Courier by setting the 'FAM' string to 'C'.
+You can then use all four style macros above, returning to the default
+family (Times) with '.ds FAM T'. Because changes to 'FAM' take effect
+only at the next paragraph, 'CW' remains useful to "inline" a change to
+the font family, similarly to the practice of this document in noting
+syntactical elements of 'ms' and 'groff'.
+
+ (1) This idiosyncrasy arose through feature accretion; for example,
+the 'B' macro in Version 6 Unix 'ms' (1975) accepted only one argument,
+the text to be set in boldface. By Version 7 (1979) it recognized a
+second argument; in 1990, 'groff' 'ms' added a "pre" argument, placing
+it third to avoid breaking support for older documents.
+
+4.6.5.6 Lists
+.............
+
+The MARKER argument to the 'IP' macro can be employed to present a
+variety of lists; for instance, you can use a bullet glyph ('\[bu]') for
+unordered lists, a number (or auto-incrementing register) for numbered
+lists, or a word or phrase for glossary-style or definition lists. If
+you set the paragraph indentation register 'PI' before calling 'IP', you
+can later reorder the items in the list without having to ensure that a
+WIDTH argument remains affixed to the first call.
+
+ The following is an example of a bulleted list.
+
+ .nr PI 2n
+ A bulleted list:
+ .IP \[bu]
+ lawyers
+ .IP \[bu]
+ guns
+ .IP \[bu]
+ money
+
+ A bulleted list:
+
+ * lawyers
+
+ * guns
+
+ * money
+
+ The following is an example of a numbered list.
+
+ .nr step 0 1
+ .nr PI 3n
+ A numbered list:
+ .IP \n+[step]
+ lawyers
+ .IP \n+[step]
+ guns
+ .IP \n+[step]
+ money
+
+ A numbered list:
+
+ 1. lawyers
+
+ 2. guns
+
+ 3. money
+
+ Here we have employed the 'nr' request to create a register of our
+own, 'step'. We initialized it to zero and assigned it an
+auto-increment of 1. Each time we use the escape sequence '\n+[PI]'
+(note the plus sign), the formatter applies the increment just before
+interpolating the register's value. Preparing the 'PI' register as well
+enables us to rearrange the list without the tedium of updating macro
+calls.
+
+ The next example illustrates a glossary-style list.
+
+ A glossary-style list:
+ .IP lawyers 0.4i
+ Two or more attorneys.
+ .IP guns
+ Firearms,
+ preferably large-caliber.
+ .IP money
+ Gotta pay for those
+ lawyers and guns!
+
+ A glossary-style list:
+
+ lawyers
+ Two or more attorneys.
+
+ guns Firearms, preferably large-caliber.
+
+ money
+ Gotta pay for those lawyers and guns!
+
+ In the previous example, observe how the 'IP' macro places the
+definition on the same line as the term if it has enough space. If this
+is not what you want, there are a few workarounds we will illustrate by
+modifying the example. First, you can use a 'br' request to force a
+break after printing the term or label.
+
+ .IP guns
+ .br
+ Firearms,
+
+ Second, you could apply the '\p' escape sequence to force a break.
+The space following the escape sequence is important; if you omit it,
+'groff' prints the first word of the paragraph text on the same line as
+the term or label (if it fits) _then_ breaks the line.
+
+ .IP guns
+ \p Firearms,
+
+ Finally, you may append a horizontal motion to the marker with the
+'\h' escape sequence; using the same amount as the indentation will
+ensure that the marker is too wide for 'groff' to treat it as "fitting"
+on the same line as the paragraph text.
+
+ .IP guns\h'0.4i'
+ Firearms,
+
+ In each case, the result is the same.
+
+ A glossary-style list:
+
+ lawyers
+ Two or more attorneys.
+
+ guns
+ Firearms, preferably large-caliber.
+
+ money
+ Gotta pay for those lawyers and guns!
+
+4.6.5.7 Indented regions
+........................
+
+You may need to indent a region of text while otherwise formatting it
+normally. Indented regions can be nested; you can change '\n[PI]'
+before each call to vary the amount of inset.
+
+ -- Macro: .RS
+ Begin a region where headings, paragraphs, and displays are
+ indented (further) by the amount stored in the 'PI' register.
+
+ -- Macro: .RE
+ End the (next) most recent indented region.
+
+ This feature enables you to easily line up text under hanging and
+indented paragraphs. For example, you may wish to structure lists
+hierarchically.
+
+ .IP \[bu] 2
+ Lawyers:
+ .RS
+ .IP \[bu]
+ Dewey,
+ .IP \[bu]
+ Cheatham,
+ and
+ .IP \[bu]
+ and Howe.
+ .RE
+ .IP \[bu]
+ Guns
+
+ * Lawyers:
+
+ * Dewey,
+
+ * Cheatham, and
+
+ * Howe.
+
+ * Guns
+
+4.6.5.8 Keeps, boxed keeps, and displays
+........................................
+
+On occasion, you may want to "keep" several lines of text, or a region
+of a document, together on a single page, preventing an automatic page
+break within certain boundaries. This can cause a page break to occur
+earlier than it normally would. For example, you may want to keep two
+paragraphs together, or a paragraph that refers to a table, list, or
+figure adjacent to the item it discusses. 'ms' provides the 'KS' and
+'KE' macros for this purpose.
+
+ You can alternatively specify a "floating keep": if a keep cannot fit
+on the current page, 'ms' holds its contents and allows material
+following the keep (in the source document) to fill the remainder of the
+current page. When the page breaks, whether by reaching the end or 'bp'
+request, 'ms' puts the floating keep at the beginning of the next page.
+This is useful for placing large graphics or tables that do not need to
+appear exactly where they occur in the source document.
+
+ -- Macro: .KS
+ -- Macro: .KF
+ -- Macro: .KE
+ 'KS' begins a keep, 'KF' a floating keep, and 'KE' ends a keep of
+ either kind.
+
+ As an alternative to the keep mechanism, the 'ne' request forces a
+page break if there is not at least the amount of vertical space
+specified in its argument remaining on the page (*note Page Control::).
+One application of 'ne' is to reserve space on the page for a figure or
+illustration to be included later.
+
+ A "boxed keep" has a frame drawn around it.
+
+ -- Macro: .B1
+ -- Macro: .B2
+ 'B1' begins a keep with a box drawn around it. 'B2' ends a boxed
+ keep.
+
+ Boxed keep macros cause breaks; if you need to box a word or phrase
+within a line, see the 'BX' macro in *note Typeface and decoration::.
+Box lines are drawn as close as possible to the text they enclose so
+that they are usable within paragraphs. If you wish to box one or more
+paragraphs, you may improve the appearance by calling 'B1' after the
+first paragraphing macro, and by adding a small amount of vertical space
+before calling 'B2'.
+
+ .LP
+ .B1
+ .I Warning:
+ Happy Fun Ball may suddenly accelerate to dangerous
+ speeds.
+ .sp \n[PD]/2 \" space by half the inter-paragraph distance
+ .B2
+
+ If you want a boxed keep to float, you will need to enclose the 'B1'
+and 'B2' calls within a pair of 'KF' and 'KE' calls.
+
+ "Displays" turn off filling; lines of verse or program code are shown
+with their lines broken as in the source document without requiring 'br'
+requests between lines. Displays can be kept on a single page or
+allowed to break across pages. The 'DS' macro begins a kept display of
+the layout specified in its first argument; non-kept displays are begun
+with dedicated macros corresponding to their layout.
+
+ -- Macro: .DS L
+ -- Macro: .LD
+ Begin ('DS': kept) left-aligned display.
+
+ -- Macro: .DS [I [indent]]
+ -- Macro: .ID [indent]
+ Begin ('DS': kept) display indented by INDENT if specified, and by
+ the amount of the 'DI' register otherwise.
+
+ -- Macro: .DS B
+ -- Macro: .BD
+ Begin a ('DS': kept) a block display: the entire display is
+ left-aligned, but indented such that the longest line in the
+ display is centered on the page.
+
+ -- Macro: .DS C
+ -- Macro: .CD
+ Begin a ('DS': kept) centered display: each line in the display is
+ centered.
+
+ -- Macro: .DS R
+ -- Macro: .RD
+ Begin a ('DS': kept) right-aligned display. This is a GNU
+ extension.
+
+ -- Macro: .DE
+ End any display.
+
+ The distance stored in the 'DD' register is inserted before and after
+each pair of display macros; this is a Berkeley extension. In 'groff'
+'ms', this distance replaces any adjacent inter-paragraph distance or
+subsequent spacing prior to a section heading. The 'DI' register is a
+GNU extension; its value is an indentation applied to displays created
+with '.DS' and '.ID' without arguments, to '.DS I' without an
+indentation argument, and to indented equations set with '.EQ'. Changes
+to either register take effect at the next display boundary.
+
+4.6.5.9 Tables, figures, equations, and references
+..................................................
+
+The 'ms' package is often used with the 'tbl', 'pic', 'eqn', and 'refer'
+preprocessors. Mark text meant for preprocessors by enclosing it in
+pairs of tokens as follows, with nothing between the dot and the macro
+name. The preprocessors match these tokens only at the start of an
+input line.
+
+ -- Macro: .TS [H]
+ -- Macro: .TE
+ Demarcate a table to be processed by the 'tbl' preprocessor. The
+ optional argument 'H' to 'TS' instructs 'ms' to repeat table rows
+ (often column headings) at the top of each new page the table
+ spans, if applicable; calling the 'TH' macro marks the end of such
+ rows. The GNU 'tbl(1)' man page provides a comprehensive reference
+ to the preprocessor and offers examples of its use.
+
+ -- Macro: .PS
+ -- Macro: .PE
+ -- Macro: .PF
+ 'PS' begins a picture to be processed by the 'gpic' preprocessor;
+ either of 'PE' or 'PF' ends it, the latter with "flyback" to the
+ vertical position at its top. You can create 'pic' input manually
+ or with a program such as 'xfig'.
+
+ -- Macro: .EQ [align [label]]
+ -- Macro: .EN
+ Demarcate an equation to be processed by the 'eqn' preprocessor.
+ The equation is centered by default; ALIGN can be 'C', 'L', or 'I'
+ to (explicitly) center, left-align, or indent it by the amount
+ stored in the 'DI' register, respectively. If specified, LABEL is
+ set right-aligned.
+
+ -- Macro: .[
+ -- Macro: .]
+ Demarcate a bibliographic citation to be processed by the 'refer'
+ preprocessor. The GNU 'refer(1)' man page provides a comprehensive
+ reference to the preprocessor and the format of its bibliographic
+ database. Type 'man refer' at the command line to view it.
+
+ When 'refer' emits collected references (as might be done on a "Works
+Cited" page), it interpolates the 'REFERENCES' string as an unnumbered
+heading ('SH').
+
+ The following is an example of how to set up a table that may print
+across two or more pages.
+
+ .TS H
+ allbox;
+ Cb | Cb .
+ Part->Description
+ _
+ .TH
+ .T&
+ GH-1978->Fribulating gonkulator
+ ...the rest of the table follows...
+ .TE
+
+Attempting to place a multi-page table inside a keep can lead to
+unpleasant results, particularly if the 'tbl' 'allbox' option is used.
+
+ Mathematics can be typeset using the language of the 'eqn'
+preprocessor.
+
+ .EQ C (\*[SN-NO-DOT]a)
+ p ~ = ~ q sqrt { ( 1 + ~ ( x / q sup 2 ) }
+ .EN
+
+This input formats a labelled equation. We used the 'SN-NO-DOT' string
+to base the equation label on the current heading number, giving us more
+flexibility to reorganize the document.
+
+ Use 'groff' options to run preprocessors on the input: '-e' for
+'geqn', '-p' for 'gpic', '-R' for 'grefer', and '-t' for 'gtbl'.
+
+4.6.5.10 Footnotes
+..................
+
+A footnote is typically anchored to a place in the text with a "marker",
+which is a small integer, a symbol such as a dagger, or arbitrary
+user-specified text.
+
+ -- String: \*[*]
+ Place an "automatic number", an automatically generated numeric
+ footnote marker, in the text. Each time this string is
+ interpolated, the number it produces increments by one. Automatic
+ numbers start at 1. This is a Berkeley extension.
+
+ Enclose the footnote text in 'FS' and 'FE' macro calls to set it at
+the nearest available "foot", or bottom, of a text column or page.
+
+ -- Macro: .FS [marker]
+ -- Macro: .FE
+ Begin ('FS') and end ('FE') a footnote. 'FS' calls 'FS-MARK' with
+ any supplied MARKER argument, which is then also placed at the
+ beginning of the footnote text. If MARKER is omitted, the next
+ pending automatic footnote number enqueued by interpolation of the
+ '*' string is used, and if none exists, nothing is prefixed.
+
+ You may not desire automatically numbered footnotes in spite of their
+convenience. You can indicate a footnote with a symbol or other text by
+specifying its marker at the appropriate place (for example, by using
+'\[dg]' for the dagger glyph) _and_ as an argument to the 'FS' macro.
+Such manual marks should be repeated as arguments to 'FS' or as part of
+the footnote text to disambiguate their correspondence. You may wish to
+use '\*{' and '\*}' to superscript the marker at the anchor point, in
+the footnote text, or both.
+
+ 'groff' 'ms' provides a hook macro, 'FS-MARK', for user-determined
+operations to be performed when the 'FS' macro is called. It is passed
+the same arguments as 'FS' itself. An application of 'FS-MARK' is
+anchor placement for a hyperlink reference, so that a footnote can link
+back to its referential context.(1) (*note ms Footnotes-Footnote-1::)
+By default, this macro has an empty definition. 'FS-MARK' is a GNU
+extension.
+
+ Footnotes can be safely used within keeps and displays, but you
+should avoid using automatically numbered footnotes within floating
+keeps. You can place a second '\**' interpolation between a '\**' and
+its corresponding 'FS' call as long as each 'FS' call occurs _after_ the
+corresponding '\**' and occurrences of 'FS' are in the same order as
+corresponding occurrences of '\**'.
+
+ Footnote text is formatted as paragraphs are, using analogous
+parameters. The registers 'FI', 'FPD', 'FPS', and 'FVS' correspond to
+'PI', 'PD', 'PS', and 'CS', respectively; 'FPD', 'FPS', and 'FVS' are
+GNU extensions.
+
+ The 'FF' register controls the formatting of automatically numbered
+footnote paragraphs and those for which 'FS' is given a marker argument.
+*Note ms Document Control Settings::.
+
+ The default footnote line length is 11/12ths of the normal line
+length for compatibility with the expectations of historical 'ms'
+documents; you may wish to set the 'FR' string to '1' to align with
+contemporary typesetting practices. In the past,(2) (*note ms
+Footnotes-Footnote-2::) an 'FL' register was used for the line length in
+footnotes; however, setting this register at document initialization
+time had no effect on the footnote line length in multi-column
+arrangements.(3) (*note ms Footnotes-Footnote-3::)
+
+ 'FR' should be used in preference to the old 'FL' register in
+contemporary documents. The footnote line length is effectively
+computed as 'column-width * \*[FR]'. If an absolute footnote line
+length is required, recall that arithmetic expressions in 'roff' input
+are evaluated strictly from left to right, with no operator precedence
+(parentheses are honored).
+
+ .ds FR 0+3i \" Set footnote line length to 3 inches.
+
+ (1) "Portable Document Format Publishing with GNU Troff",
+'pdfmark.ms' in the 'groff' distribution, uses this technique.
+
+ (2) Unix Version 7 'ms', its descendants, and GNU 'ms' prior to
+'groff' version 1.23.0
+
+ (3) You could reset it after each call to '.1C', '.2C', or '.MC'.
+
+4.6.5.11 Language and localization
+..................................
+
+'groff' 'ms' provides several strings that you can customize for your
+own purposes, or redefine to adapt the macro package to languages other
+than English. It is already localized for Czech, German, French,
+Italian, and Swedish. Load the desired localization macro package after
+'ms'; see the 'groff_tmac(5)' man page.
+
+ $ groff -ms -mfr bienvenue.ms
+
+ The following strings are available.
+
+ -- String: \*[REFERENCES]
+ Contains the string printed at the beginning of a references
+ (bibliography) page produced with GNU 'refer(1)'. The default is
+ 'References'.
+
+ -- String: \*[ABSTRACT]
+ Contains the string printed at the beginning of the abstract. The
+ default is '\f[I]ABSTRACT\f[]'; it includes font selection escape
+ sequences to set the word in italics.
+
+ -- String: \*[TOC]
+ Contains the string printed at the beginning of the table of
+ contents. The default is 'Table of Contents'.
+
+ -- String: \*[MONTH1]
+ -- String: \*[MONTH2]
+ -- String: \*[MONTH3]
+ -- String: \*[MONTH4]
+ -- String: \*[MONTH5]
+ -- String: \*[MONTH6]
+ -- String: \*[MONTH7]
+ -- String: \*[MONTH8]
+ -- String: \*[MONTH9]
+ -- String: \*[MONTH10]
+ -- String: \*[MONTH11]
+ -- String: \*[MONTH12]
+ Contain the full names of the calendar months. The defaults are in
+ English: 'January', 'February', and so on.
+
+4.6.6 Page layout
+-----------------
+
+'ms''s default page layout arranges text in a single column with the
+page number between hyphens centered in a header on each page except the
+first, and produces no footers. You can customize this arrangement.
+
+4.6.6.1 Headers and footers
+...........................
+
+There are multiple ways to produce headers and footers. One is to
+define the strings 'LH', 'CH', and 'RH' to set the left, center, and
+right headers, respectively; and 'LF', 'CF', and 'RF' to set the left,
+center, and right footers. This approach suffices for documents that do
+not distinguish odd- and even-numbered pages.
+
+ Another method is to call macros that set headers or footers for odd-
+or even-numbered pages. Each such macro takes a delimited argument
+separating the left, center, and right header or footer texts from each
+other. You can replace the neutral apostrophes (''') shown below with
+any character not appearing in the header or footer text. These macros
+are Berkeley extensions.
+
+ -- Macro: .OH 'left'center'right'
+ -- Macro: .EH 'left'center'right'
+ -- Macro: .OF 'left'center'right'
+ -- Macro: .EF 'left'center'right'
+ The 'OH' and 'EH' macros define headers for odd- (recto) and
+ even-numbered (verso) pages, respectively; the 'OF' and 'EF' macros
+ define footers for them.
+
+ With either method, a percent sign '%' in header or footer text is
+replaced by the current page number. By default, 'ms' places no header
+on a page numbered "1" (regardless of its number format).
+
+ -- Macro: .P1
+ Typeset the header even on page 1. To be effective, this macro
+ must be called before the header trap is sprung on any page
+ numbered "1"; in practice, unless your page numbering is unusual,
+ this means that you should call it early, before 'TL' or any
+ heading or paragraphing macro. This is a Berkeley extension.
+
+ For even greater flexibility, 'ms' is designed to permit the
+redefinition of the macros that are called when the 'groff' traps that
+ordinarily cause the headers and footers to be output are sprung. 'PT'
+("page trap") is called by 'ms' when the header is to be written, and
+'BT' ("bottom trap") when the footer is to be. The 'groff' page
+location trap that 'ms' sets up to format the header also calls the
+(normally undefined) 'HD' macro after 'PT'; you can define 'HD' if you
+need additional processing after setting the header (for example, to
+draw a line below it). The 'HD' hook is a Berkeley extension. Any such
+macros you (re)define must implement any desired specialization for
+odd-, even-, or first numbered pages.
+
+4.6.6.2 Tab stops
+.................
+
+Use the 'ta' request to define tab stops as needed. *Note Tabs and
+Fields::.
+
+ -- Macro: .TA
+ Reset the tab stops to the 'ms' default (every 5 ens). Redefine
+ this macro to create a different set of default tab stops.
+
+4.6.6.3 Margins
+...............
+
+Control margins using the registers summarized in "Margin settings" in
+*note ms Document Control Settings:: above. There is no setting for the
+right margin; the combination of page offset '\n[PO]' and line length
+'\n[LL]' determines it.
+
+4.6.6.4 Multiple columns
+........................
+
+'ms' can set text in as many columns as reasonably fit on the page. The
+following macros force a page break if a multi-column layout is active
+when they are called. The 'MINGW' register stores the default minimum
+gutter width; it is a GNU extension. When multiple columns are in use,
+keeps and the 'HORPHANS' and 'PORPHANS' registers work with respect to
+column breaks instead of page breaks.
+
+ -- Macro: .1C
+ Arrange page text in a single column (the default).
+
+ -- Macro: .2C
+ Arrange page text in two columns.
+
+ -- Macro: .MC [column-width [gutter-width]]
+ Arrange page text in multiple columns. If you specify no
+ arguments, it is equivalent to the '2C' macro. Otherwise,
+ COLUMN-WIDTH is the width of each column and GUTTER-WIDTH is the
+ minimum distance between columns.
+
+4.6.6.5 Creating a table of contents
+....................................
+
+Because 'roff' formatters process their input in a single pass, material
+on page 50, for example, cannot influence what appears on page 1--this
+poses a challenge for a table of contents at its traditional location in
+front matter, if you wish to avoid manually maintaining it. 'ms'
+enables the collection of material to be presented in the table of
+contents as it appears, saving its page number along with it, and then
+emitting the collected contents on demand toward the end of the
+document. The table of contents can then be resequenced to its desired
+location by physically rearranging the pages of a printed document, or
+as part of post-processing--with a 'sed(1)' script to reorder the pages
+in 'troff''s output, with 'pdfjam(1)', or with 'gropdf(1)''s
+'.pdfswitchtopage' feature, for example.
+
+ Define an entry to appear in the table of contents by bracketing its
+text between calls to the 'XS' and 'XE' macros. A typical application
+is to call them immediately after 'NH' or 'SH' and repeat the heading
+text within them. The 'XA' macro, used within '.XS'/'.XE' pairs,
+supplements an entry--for instance, when it requires multiple output
+lines, whether because a heading is too long to fit or because style
+dictates that page numbers not be repeated. You may wish to indent the
+text thus wrapped to correspond to its heading depth; this can be done
+in the entry text by prefixing it with tabs or horizontal motion escape
+sequences, or by providing a second argument to the 'XA' macro. 'XS'
+and 'XA' automatically associate the page number where they are called
+with the text following them, but they accept arguments to override this
+behavior. At the end of the document, call 'TC' or 'PX' to emit the
+table of contents; 'TC' resets the page number to 'i' (Roman numeral
+one), and then calls 'PX'. All of these macros are Berkeley extensions.
+
+ -- Macro: .XS [page-number]
+ -- Macro: .XA [page-number [indentation]]
+ -- Macro: .XE
+ Begin, supplement, and end a table of contents entry. Each entry
+ is associated with PAGE-NUMBER (otherwise the current page number);
+ a PAGE-NUMBER of 'no' prevents a leader and page number from being
+ emitted for that entry. Use of 'XA' within 'XS'/'XE' is optional;
+ it can be repeated. If INDENTATION is present, a supplemental
+ entry is indented by that amount; ens are assumed if no unit is
+ indicated. Text on input lines between 'XS' and 'XE' is stored for
+ later recall by 'PX'.
+
+ -- Macro: .PX [no]
+ Switch to single-column layout. Unless 'no' is specified, center
+ and interpolate the 'TOC' string in bold and two points larger than
+ the body text. Emit the table of contents entries.
+
+ -- Macro: .TC [no]
+ Set the page number to 1, the page number format to lowercase Roman
+ numerals, and call 'PX' (with a 'no' argument, if present).
+
+ Here's an example of typical 'ms' table of contents preparation. We
+employ horizontal escape sequences '\h' to indent the entries by
+sectioning depth.
+
+ .NH 1
+ Introduction
+ .XS
+ Introduction
+ .XE
+ ...
+ .NH 2
+ Methodology
+ .XS
+ \h'2n'Methodology
+ .XA
+ \h'4n'Fassbinder's Approach
+ \h'4n'Kahiu's Approach
+ .XE
+ ...
+ .NH 1
+ Findings
+ .XS
+ Findings
+ .XE
+ ...
+ .TC
+
+ The remaining features in this subsubsection are GNU extensions.
+'groff' 'ms' obviates the need to repeat heading text after 'XS' calls.
+Call 'XN' and 'XH' after 'NH' and 'SH', respectively.
+
+ -- Macro: .XN heading-text
+ -- Macro: .XH depth heading-text
+ Format HEADING-TEXT and create a corresponding table of contents
+ entry. 'XN' computes the indentation from the depth of the
+ preceding 'NH' call; 'XH' requires a DEPTH argument to do so.
+
+ 'groff' 'ms' encourages customization of table of contents entry
+production.
+
+ -- Macro: .XN-REPLACEMENT heading-text
+ -- Macro: .XH-REPLACEMENT depth heading-text
+ These hook macros implement 'XN' and 'XH', respectively. They call
+ 'XN-INIT' and pass their HEADING-TEXT arguments to 'XH-UPDATE-TOC'.
+
+ -- Macro: .XN-INIT
+ -- Macro: .XH-UPDATE-TOC depth heading-text
+ The 'XN-INIT' hook macro does nothing by default. 'XH-UPDATE-TOC'
+ brackets HEADING-TEXT with 'XS' and 'XE' calls, indenting it by 2
+ ens per level of DEPTH beyond the first.
+
+ We could therefore produce a table of contents similar to that in the
+previous example with fewer macro calls. (The difference is that this
+input follows the "Approach" entries with leaders and page numbers.)
+
+ .NH 1
+ .XN Introduction
+ ...
+ .NH 2
+ .XN Methodology
+ .XH 3 "Fassbinder's Approach"
+ .XH 3 "Kahiu's Approach"
+ ...
+ .NH 1
+ .XN Findings
+ ...
+
+ To get the section number of the numbered headings into the table of
+contents entries, we might define 'XN-REPLACEMENT' as follows. (We
+obtain the heading depth from 'groff' 'ms''s internal register 'nh*hl'.)
+
+ .de XN-REPLACEMENT
+ .XN-INIT
+ .XH-UPDATE-TOC \\n[nh*hl] \\$@
+ \&\\*[SN] \\$*
+ ..
+
+ You can change the style of the leader that bridges each table of
+contents entry with its page number; define the 'TC-LEADER' special
+character by using the 'char' request. A typical leader combines the
+dot glyph '.' with a horizontal motion escape sequence to spread the
+dots. The width of the page number field is stored in the 'TC-MARGIN'
+register.
+
+4.6.7 Differences from AT&T 'ms'
+--------------------------------
+
+The 'groff' 'ms' macros are an independent reimplementation, using no
+AT&T code. Since they take advantage of the extended features of
+'groff', they cannot be used with AT&T 'troff'. 'groff' 'ms' supports
+features described above as Berkeley and Tenth Edition Research Unix
+extensions, and adds several of its own.
+
+ * The internals of 'groff' 'ms' differ from the internals of AT&T
+ 'ms'. Documents that depend upon implementation details of AT&T
+ 'ms' may not format properly with 'groff' 'ms'. Such details
+ include macros whose function was not documented in the AT&T 'ms'
+ manual.(1) (*note Differences from AT&T ms-Footnote-1::)
+
+ * The error-handling policy of 'groff' 'ms' is to detect and report
+ errors, rather than to ignore them silently.
+
+ * Tenth Edition Research Unix supported 'P1'/'P2' macros to bracket
+ code examples; 'groff' 'ms' does not.
+
+ * 'groff' 'ms' does not work in GNU 'troff''s AT&T compatibility
+ mode. If loaded when that mode is enabled, it aborts processing
+ with a diagnostic message.
+
+ * Multiple line spacing is not supported. Use a larger vertical
+ spacing instead.
+
+ * 'groff' 'ms' uses the same header and footer defaults in both
+ 'nroff' and 'troff' modes as AT&T 'ms' does in 'troff' mode; AT&T's
+ default in 'nroff' mode is to put the date, in U.S. traditional
+ format (e.g., "January 1, 2021"), in the center footer (the 'CF'
+ string).
+
+ * Many 'groff' 'ms' macros, including those for paragraphs, headings,
+ and displays, cause a reset of paragraph rendering parameters, and
+ may change the indentation; they do so not by incrementing or
+ decrementing it, but by setting it absolutely. This can cause
+ problems for documents that define additional macros of their own
+ that try to manipulate indentation. Use the 'ms' 'RS' and 'RE'
+ macros instead of the 'in' request.
+
+ * AT&T 'ms' interpreted the values of the registers 'PS' and 'VS' in
+ points, and did not support the use of scaling units with them.
+ 'groff' 'ms' interprets values of the registers 'PS', 'VS', 'FPS',
+ and 'FVS' equal to or larger than 1,000 (one thousand) as decimal
+ fractions multiplied by 1,000.(2) (*note Differences from AT&T
+ ms-Footnote-2::) This threshold makes use of a scaling unit with
+ these parameters practical for high-resolution devices while
+ preserving backward compatibility. It also permits expression of
+ non-integral type sizes. For example, 'groff -rPS=10.5p' at the
+ shell prompt is equivalent to placing '.nr PS 10.5p' at the
+ beginning of the document.
+
+ * AT&T 'ms''s 'AU' macro supported arguments used with some document
+ types; 'groff' 'ms' does not.
+
+ * Right-aligned displays are available. The AT&T 'ms' manual
+ observes that "it is tempting to assume that '.DS R' will right
+ adjust lines, but it doesn't work". In 'groff' 'ms', it does.
+
+ * To make 'groff' 'ms' use the default page offset (which also
+ specifies the left margin), the 'PO' register must stay undefined
+ until the first 'ms' macro is called.
+
+ This implies that '\n[PO]' should not be used early in the
+ document, unless it is changed also: accessing an undefined
+ register automatically defines it.
+
+ * 'groff' 'ms' supports the 'PN' register, but it is not necessary;
+ you can access the page number via the usual '%' register and
+ invoke the 'af' request to assign a different format to it if
+ desired.(3) (*note Differences from AT&T ms-Footnote-3::)
+
+ * The AT&T 'ms' manual documents registers 'CW' and 'GW' as setting
+ the default column width and "intercolumn gap", respectively, and
+ which applied when 'MC' was called with fewer than two arguments.
+ 'groff' 'ms' instead treats 'MC' without arguments as synonymous
+ with '2C'; there is thus no occasion for a default column width
+ register. Further, the 'MINGW' register and the second argument to
+ 'MC' specify a _minimum_ space between columns, not the fixed
+ gutter width of AT&T 'ms'.
+
+ * The AT&T 'ms' manual did not document the 'QI' register; Berkeley
+ and 'groff' 'ms' do.
+
+ -- Register: \n[GS]
+ The register 'GS' is set to 1 by the 'groff' 'ms' macros, but is
+ not used by the AT&T 'ms' package. Documents that need to
+ determine whether they are being formatted with 'groff' 'ms' or
+ another implementation should test this register.
+
+ (1) 'Typing Documents on the UNIX System: Using the -ms Macros with
+Troff and Nroff', M. E. Lesk, Bell Laboratories, 1978
+
+ (2) Register values are converted to and stored as basic units.
+*Note Measurements::.
+
+ (3) If you redefine the 'ms' 'PT' macro and desire special treatment
+of certain page numbers (like '1'), you may need to handle a non-Arabic
+page number format, as 'groff' 'ms''s 'PT' does; see the macro package
+source. 'groff' 'ms' aliases the 'PN' register to '%'.
+
+4.6.7.1 Unix Version 7 'ms' macros not implemented by 'groff' 'ms'
+..................................................................
+
+Several macros described in the Unix Version 7 'ms' documentation are
+unimplemented by 'groff' 'ms' because they are specific to the
+requirements of documents produced internally by Bell Laboratories, some
+of which also require a glyph for the Bell System logo that 'groff' does
+not support. These macros implemented several document type formats
+('EG', 'IM', 'MF', 'MR', 'TM', 'TR'), were meaningful only in
+conjunction with the use of certain document types ('AT', 'CS', 'CT',
+'OK', 'SG'), stored the postal addresses of Bell Labs sites ('HO', 'IH',
+'MH', 'PY', 'WH'), or lacked a stable definition over time ('UX'). To
+compatibly render historical 'ms' documents using these macros, we
+advise your documents to invoke the 'rm' request to remove any such
+macros it uses and then define replacements with an authentically
+typeset original at hand.(1) (*note Missing Unix Version 7 ms
+Macros-Footnote-1::) For informal purposes, a simple definition of 'UX'
+should maintain the readability of the document's substance.
+
+ .rm UX
+ .ds UX Unix\"
+
+ (1) The removal beforehand is necessary because 'groff' 'ms' aliases
+these macros to a diagnostic macro, and you want to redefine the aliased
+name, not its target.
+
+4.6.8 Legacy Features
+---------------------
+
+'groff' 'ms' retains some legacy features solely to support formatting
+of historical documents; contemporary ones should not use them because
+they can render poorly. See the 'groff_char(7)' man page.
+
+AT&T accent mark strings
+........................
+
+AT&T 'ms' defined accent mark strings as follows.
+
+ -- String: \*[']
+ Apply acute accent to subsequent glyph.
+
+ -- String: \*[`]
+ Apply grave accent to subsequent glyph.
+
+ -- String: \*[:]
+ Apply dieresis (umlaut) to subsequent glyph.
+
+ -- String: \*[^]
+ Apply circumflex accent to subsequent glyph.
+
+ -- String: \*[~]
+ Apply tilde accent to subsequent glyph.
+
+ -- String: \*[C]
+ Apply caron to subsequent glyph.
+
+ -- String: \*[,]
+ Apply cedilla to subsequent glyph.
+
+Berkeley accent mark and glyph strings
+......................................
+
+Berkeley 'ms' offered an 'AM' macro; calling it redefined the AT&T
+accent mark strings (except for '\*C'), applied them to the _preceding_
+glyph, and defined additional strings, some for spacing glyphs.
+
+ -- Macro: .AM
+ Enable alternative accent mark and glyph-producing strings.
+
+ -- String: \*[']
+ Apply acute accent to preceding glyph.
+
+ -- String: \*[`]
+ Apply grave accent to preceding glyph.
+
+ -- String: \*[:]
+ Apply dieresis (umlaut) to preceding glyph.
+
+ -- String: \*[^]
+ Apply circumflex accent to preceding glyph.
+
+ -- String: \*[~]
+ Apply tilde accent to preceding glyph.
+
+ -- String: \*[,]
+ Apply cedilla to preceding glyph.
+
+ -- String: \*[/]
+ Apply stroke (slash) to preceding glyph.
+
+ -- String: \*[v]
+ Apply caron to preceding glyph.
+
+ -- String: \*[_]
+ Apply macron to preceding glyph.
+
+ -- String: \*[.]
+ Apply underdot to preceding glyph.
+
+ -- String: \*[o]
+ Apply ring accent to preceding glyph.
+
+ -- String: \*[?]
+ Interpolate inverted question mark.
+
+ -- String: \*[!]
+ Interpolate inverted exclamation mark.
+
+ -- String: \*[8]
+ Interpolate small letter sharp s.
+
+ -- String: \*[q]
+ Interpolate small letter o with hook accent (ogonek).
+
+ -- String: \*[3]
+ Interpolate small letter yogh.
+
+ -- String: \*[d-]
+ Interpolate small letter eth.
+
+ -- String: \*[D-]
+ Interpolate capital letter eth.
+
+ -- String: \*[th]
+ Interpolate small letter thorn.
+
+ -- String: \*[Th]
+ Interpolate capital letter thorn.
+
+ -- String: \*[ae]
+ Interpolate small æ ligature.
+
+ -- String: \*[Ae]
+ Interpolate capital Æ ligature.
+
+ -- String: \*[oe]
+ Interpolate small oe ligature.
+
+ -- String: \*[OE]
+ Interpolate capital OE ligature.
+
+4.6.9 Naming Conventions
+------------------------
+
+The following conventions are used for names of macros, strings, and
+registers. External names available to documents that use the 'groff'
+'ms' macros contain only uppercase letters and digits.
+
+ Internally, the macros are divided into modules. Conventions for
+identifier names are as follows.
+
+ * Names used only within one module are of the form MODULE'*'NAME.
+
+ * Names used outside the module in which they are defined are of the
+ form MODULE'@'NAME.
+
+ * Names associated with a particular environment are of the form
+ ENVIRONMENT':'NAME; these are used only within the 'par' module.
+
+ * NAME does not have a module prefix.
+
+ * Constructed names used to implement arrays are of the form
+ ARRAY'!'INDEX.
+
+ Thus the 'groff' 'ms' macros reserve the following names.
+
+ * Names containing the characters '*', '@', and ':'.
+
+ * Names containing only uppercase letters and digits.
+
+5 GNU 'troff' Reference
+***********************
+
+This chapter covers _all_ of the facilities of the GNU 'troff'
+formatting engine. Users of macro packages may skip it if not
+interested in details.
+
+5.1 Text
+========
+
+AT&T 'troff' was designed to take input as it would be composed on a
+typewriter, including the teletypewriters used as early computer
+terminals, and relieve the user drafting a document of concern with
+details like line length, hyphenation breaking, and the achievement of
+straight margins. Early in its development, the program gained the
+ability to prepare output for a phototypesetter; a document could then
+be prepared for output to either a teletypewriter, a phototypesetter, or
+both. GNU 'troff' continues this tradition of permitting an author to
+compose a single master version of a document which can then be rendered
+for a variety of output formats or devices.
+
+ 'roff' input files contain text interspersed with instructions to
+control the formatter. Even in the absence of such instructions, GNU
+'troff' still processes its input in several ways, by filling,
+hyphenating, breaking, and adjusting it, and supplementing it with
+inter-sentence space.
+
+5.1.1 Filling
+-------------
+
+When GNU 'troff' starts up, it obtains information about the device for
+which it is preparing output.(1) (*note Filling-Footnote-1::) An
+essential property is the length of the output line, such as "6.5
+inches".
+
+ GNU 'troff' interprets plain text files employing the Unix
+line-ending convention. It reads input a character at a time,
+collecting words as it goes, and fits as many words together on an
+output line as it can--this is known as "filling". To GNU 'troff', a
+"word" is any sequence of one or more characters that aren't spaces or
+newlines. The exceptions separate words.(2) (*note
+Filling-Footnote-2::) To disable filling, see *note Manipulating Filling
+and Adjustment::.
+
+ It is a truth universally acknowledged
+ that a single man in possession of a
+ good fortune must be in want of a wife.
+ => It is a truth universally acknowledged that a
+ => single man in possession of a good fortune must
+ => be in want of a wife.
+
+ (1) *Note Device and Font Description Files::.
+
+ (2) Tabs and leaders also separate words. Escape sequences can
+function as word characters, word separators, or neither--the last
+simply have no effect on GNU 'troff''s idea of whether an input
+character is within a word. We'll discuss all of these in due course.
+
+5.1.2 Sentences
+---------------
+
+A passionate debate has raged for decades among writers of the English
+language over whether more space should appear between adjacent
+sentences than between words within a sentence, and if so, how much, and
+what other circumstances should influence this spacing.(1) (*note
+Sentences-Footnote-1::) GNU 'troff' follows the example of AT&T 'troff';
+it attempts to detect the boundaries between sentences, and supplies
+additional inter-sentence space between them.
+
+ Hello, world!
+ Welcome to groff.
+ => Hello, world! Welcome to groff.
+
+ GNU 'troff' flags certain characters (normally '!', '?', and '.') as
+potentially ending a sentence. When GNU 'troff' encounters one of these
+"end-of-sentence characters" at the end of an input line, or one of them
+is followed by two (unescaped) spaces on the same input line, it appends
+an inter-word space followed by an inter-sentence space in the output.
+
+ R. Harper subscribes to a maxim of P. T. Barnum.
+ => R. Harper subscribes to a maxim of P. T. Barnum.
+
+ In the above example, inter-sentence space is not added after 'P.' or
+'T.' because the periods do not occur at the end of an input line, nor
+are they followed by two or more spaces. Let's imagine that we've heard
+something about defamation from Mr. Harper's attorney, recast the
+sentence, and reflowed it in our text editor.
+
+ I submit that R. Harper subscribes to a maxim of P. T.
+ Barnum.
+ => I submit that R. Harper subscribes to a maxim of
+ => P. T. Barnum.
+
+ "Barnum" doesn't begin a sentence! What to do? Let us meet our
+first "escape sequence", a series of input characters that give
+instructions to GNU 'troff' instead of being used to construct output
+device glyphs.(2) (*note Sentences-Footnote-2::) An escape sequence
+begins with the backslash character '\' by default, an uncommon
+character in natural language text, and is _always_ followed by at least
+one other character, hence the term "sequence".
+
+ The dummy character escape sequence '\&' can be used after an
+end-of-sentence character to defeat end-of-sentence detection on a
+per-instance basis. We can therefore rewrite our input more
+defensively.
+
+ I submit that R.\& Harper subscribes to a maxim of P.\&
+ T.\& Barnum.
+ => I submit that R. Harper subscribes to a maxim of
+ => P. T. Barnum.
+
+ Adding text caused our input to wrap; now, we don't need '\&' after
+'T.' but we do after 'P.'. Consistent use of the escape sequence
+ensures that potential sentence boundaries are robust to editing
+activities. Further advice along these lines will follow in *note Input
+Conventions::.
+
+ Normally, the occurrence of a visible non-end-of-sentence character
+(as opposed to a space or tab) immediately after an end-of-sentence
+character cancels detection of the end of a sentence. For example, it
+would be incorrect for GNU 'troff' to infer the end of a sentence after
+the dot in '3.14159'. However, several characters are treated
+_transparently_ after the occurrence of an end-of-sentence character.
+That is, GNU 'troff' does not cancel end-of-sentence detection when it
+processes them. This is because such characters are often used as
+footnote markers or to close quotations and parentheticals. The default
+set is '"', ''', ')', ']', '*', '\[dg]', '\[dd]', '\[rq]', and '\[cq]'.
+The last four are examples of "special characters", escape sequences
+whose purpose is to obtain glyphs that are not easily typed at the
+keyboard, or which have special meaning to GNU 'troff' (like '\'
+itself).(3) (*note Sentences-Footnote-3::)
+
+ \[lq]The idea that the poor should have leisure has always
+ been shocking to the rich.\[rq]
+ (Bertrand Russell, 1935)
+ => "The idea that the poor should have
+ => leisure has always been shocking to
+ => the rich." (Bertrand Russell, 1935)
+
+ The sets of characters that potentially end sentences or are
+transparent to sentence endings are configurable. See the 'cflags'
+request in *note Using Symbols::. To change the additional
+inter-sentence space amount--even to remove it entirely--see *note
+Manipulating Filling and Adjustment::.
+
+ (1) A well-researched jeremiad appreciated by 'groff' contributors on
+both sides of the sentence-spacing debate can be found at
+<https://web.archive.org/web/20171217060354/http://www.heracliteanriver.com/?p=324>.
+
+ (2) This statement oversimplifies; there are escape sequences whose
+purpose is precisely to produce glyphs on the output device, and input
+characters that _aren't_ part of escape sequences can undergo a great
+deal of processing before getting to the output.
+
+ (3) The mnemonics for the special characters shown here are "dagger",
+"double dagger", "right (double) quote", and "closing (single) quote".
+See the 'groff_char(7)' man page.
+
+5.1.3 Hyphenation
+-----------------
+
+When an output line is nearly full, it is uncommon for the next word
+collected from the input to exactly fill it--typically, there is room
+left over only for part of the next word. The process of splitting a
+word so that it appears partially on one line (with a hyphen to indicate
+to the reader that the word has been broken) with its remainder on the
+next is "hyphenation". Hyphenation points can be manually specified;
+GNU 'troff' also uses a hyphenation algorithm and language-specific
+pattern files (based on those used in TeX) to decide which words can be
+hyphenated and where.
+
+ Hyphenation does not always occur even when the hyphenation rules for
+a word allow it; it can be disabled, and when not disabled there are
+several parameters that can prevent it in certain circumstances. *Note
+Manipulating Hyphenation::.
+
+5.1.4 Breaking
+--------------
+
+Once an output line is full, the next word (or remainder of a hyphenated
+one) is placed on a different output line; this is called a "break". In
+this manual and in 'roff' discussions generally, a "break" if not
+further qualified always refers to the termination of an output line.
+When the formatter is filling text, it introduces breaks automatically
+to keep output lines from exceeding the configured line length. After
+an automatic break, GNU 'troff' adjusts the line if applicable (see
+below), and then resumes collecting and filling text on the next output
+line.
+
+ Sometimes, a line cannot be broken automatically. This usually does
+not happen with natural language text unless the output line length has
+been manipulated to be extremely short, but it can with specialized text
+like program source code. We can use 'perl' at the shell prompt to
+contrive an example of failure to break the line. We also employ the
+'-z' option to suppress normal output.
+
+ $ perl -e 'print "#" x 80, "\n";' | nroff -z
+ error-> warning: cannot break line
+
+ The remedy for these cases is to tell GNU 'troff' where the line may
+be broken without hyphens. This is done with the non-printing break
+point escape sequence '\:'; see *note Manipulating Hyphenation::.
+
+ What if the document author wants to stop filling lines temporarily,
+for instance to start a new paragraph? There are several solutions. A
+blank input line not only causes a break, but by default it also outputs
+a one-line vertical space (effectively a blank output line). This
+behavior can be modified; see *note Blank Line Traps::. Macro packages
+may discourage or disable the blank line method of paragraphing in favor
+of their own macros.
+
+ A line that begins with one or more spaces causes a break. The
+spaces are output at the beginning of the next line without being
+_adjusted_ (see below); however, this behavior can be modified (*note
+Leading Space Traps::). Again, macro packages may provide other methods
+of producing indented paragraphs. Trailing spaces on text lines are
+discarded.(1) (*note Breaking-Footnote-1::)
+
+ What if the file ends before enough words have been collected to fill
+an output line? Or the output line is exactly full but not yet broken,
+and there is no more input? GNU 'troff' interprets the end of input as
+a break. Certain requests also cause breaks, implicitly or explicitly.
+This is discussed in *note Manipulating Filling and Adjustment::.
+
+ (1) "Text lines" are defined in *note Requests and Macros::.
+
+5.1.5 Adjustment
+----------------
+
+After GNU 'troff' performs an automatic break, it may then "adjust" the
+line, widening inter-word spaces until the text reaches the right
+margin. Extra spaces between words are preserved. Leading and trailing
+spaces are handled as noted above. Text can be aligned to the left or
+right margin only, or centered; see *note Manipulating Filling and
+Adjustment::.
+
+5.1.6 Tabs and Leaders
+----------------------
+
+GNU 'troff' translates input horizontal tab characters ("tabs") and
+<Control+A> characters ("leaders") into movements to the next tab stop.
+Tabs simply move to the next tab stop; leaders place enough periods to
+fill the space. Tab stops are by default located every half inch
+measured from the drawing position corresponding to the beginning of the
+input line; see *note Page Geometry::. Tabs and leaders do not cause
+breaks and therefore do not interrupt filling. Below, we use arrows ->
+and bullets * to indicate input tabs and leaders, respectively.
+
+ 1
+ -> 2 -> 3 * 4
+ -> * 5
+ => 1 2 3.......4 ........5
+
+ Tabs and leaders lend themselves to table construction.(1) (*note
+Tabs and Leaders-Footnote-1::) The tab and leader glyphs can be
+configured, and further facilities for sophisticated table composition
+are available; see *note Tabs and Fields::. There are many details to
+track when using such low-level features, so most users turn to the
+'tbl(1)' preprocessor to lay out tables.
+
+ (1) "Tab" is short for "tabulation", revealing the term's origin as a
+spacing mechanism for table arrangement.
+
+5.1.7 Requests and Macros
+-------------------------
+
+We have now encountered almost all of the syntax there is in the 'roff'
+language, with an exception already noted in passing. A "request" is an
+instruction to the formatter that occurs after a "control character",
+which is recognized at the beginning of an input line. The regular
+control character is a dot ('.'). Its counterpart, the "no-break
+control character", a neutral apostrophe ('''), suppresses the break
+that is implied by some requests. These characters were chosen because
+it is uncommon for lines of text in natural languages to begin with
+them. If you require a formatted period or apostrophe (closing single
+quotation mark) where GNU 'troff' is expecting a control character,
+prefix the dot or neutral apostrophe with the dummy character escape
+sequence, '\&'.
+
+ An input line beginning with a control character is called a "control
+line". Every line of input that is not a control line is a "text
+line".(1) (*note Requests and Macros-Footnote-1::)
+
+ Requests often take "arguments", words (separated from the request
+name and each other by spaces) that specify details of the action GNU
+'troff' is expected to perform. If a request is meaningless without
+arguments, it is typically ignored.
+
+ GNU 'troff''s requests and escape sequences comprise the control
+language of the formatter. Of key importance are the requests that
+define macros. Macros are invoked like requests, enabling the request
+repertoire to be extended or overridden.(2) (*note Requests and
+Macros-Footnote-2::)
+
+ A "macro" can be thought of as an abbreviation you can define for a
+collection of control and text lines. When the macro is "called" by
+giving its name after a control character, it is replaced with what it
+stands for. The process of textual replacement is known as
+"interpolation".(3) (*note Requests and Macros-Footnote-3::)
+Interpolations are handled as soon as they are recognized, and once
+performed, a 'roff' formatter scans the replacement for further
+requests, macro calls, and escape sequences.
+
+ In 'roff' systems, the 'de' request defines a macro.(4) (*note
+Requests and Macros-Footnote-4::)
+
+ .de DATE
+ 2020-11-14
+ ..
+
+The foregoing input produces no output by itself; all we have done is
+store some information. Observe the pair of dots that ends the macro
+definition. This is a default; you can specify your own terminator for
+the macro definition as the second argument to the 'de' request.
+
+ .de NAME ENDNAME
+ Heywood Jabuzzoff
+ .ENDNAME
+
+ In fact, the ending marker is itself the name of a macro to be
+called, or a request to be invoked, if it is defined at the time its
+control line is read.
+
+ .de END
+ Big Rip
+ ..
+ .de START END
+ Big Bang
+ .END
+ .START
+ => Big Rip Big Bang
+
+In the foregoing example, "Big Rip" printed before "Big Bang" because
+its macro was _called_ first. Consider what would happen if we dropped
+'END' from the '.de START' line and added '..' after '.END'. Would the
+order change?
+
+ Let us consider a more elaborate example.
+
+ .de DATE
+ 2020-10-05
+ ..
+ .
+ .de BOSS
+ D.\& Kruger,
+ J.\& Peterman
+ ..
+ .
+ .de NOTICE
+ Approved:
+ .DATE
+ by
+ .BOSS
+ ..
+ .
+ Insert tedious regulatory compliance paragraph here.
+
+ .NOTICE
+
+ Insert tedious liability disclaimer paragraph here.
+
+ .NOTICE
+ => Insert tedious regulatory compliance paragraph here.
+ =>
+ => Approved: 2020-10-05 by D. Kruger, J. Peterman
+ =>
+ => Insert tedious liability disclaimer paragraph here.
+ =>
+ => Approved: 2020-10-05 by D. Kruger, J. Peterman
+
+The above document started with a series of control lines. Three macros
+were defined, with a 'de' request declaring each macro's name, and the
+"body" of the macro starting on the next line and continuing until a
+line with two dots ''..'' marked its end. The text proper began only
+after the macros were defined; this is a common pattern. Only the
+'NOTICE' macro was called "directly" by the document; 'DATE' and 'BOSS'
+were called only by 'NOTICE' itself. Escape sequences were used in
+'BOSS', two levels of macro interpolation deep.
+
+ The advantage in typing and maintenance economy may not be obvious
+from such a short example, but imagine a much longer document with
+dozens of such paragraphs, each requiring a notice of managerial
+approval. Consider what must happen if you are in charge of generating
+a new version of such a document with a different date, for a different
+boss. With well-chosen macros, you only have to change each datum in
+one place.
+
+ In practice, we would probably use strings (*note Strings::) instead
+of macros for such simple interpolations; what is important here is to
+glimpse the potential of macros and the power of recursive
+interpolation.
+
+ We could have defined 'DATE' and 'BOSS' in the opposite order;
+perhaps less obviously, we could also have defined them _after_
+'NOTICE'. "Forward references" like this are acceptable because the
+body of a macro definition is not (completely) interpreted, but stored
+instead (*note Copy Mode::). While a macro is being defined (or
+appended to), requests are not interpreted and macros not interpolated,
+whereas some commonly used escape sequences _are_ interpreted. 'roff'
+systems also support recursive macro calls, as long as you have a way to
+break the recursion (*note Conditionals and Loops::). Maintainable
+'roff' documents tend to arrange macro definitions to minimize forward
+references.
+
+ (1) The '\<RET>' escape sequence can alter how an input line is
+classified; see *note Line Continuation::.
+
+ (2) Argument handling in macros is more flexible but also more
+complex. *Note Calling Macros::.
+
+ (3) Some escape sequences undergo interpolation as well.
+
+ (4) GNU 'troff' offers additional ones. *Note Writing Macros::.
+
+5.1.8 Macro Packages
+--------------------
+
+Macro definitions can be collected into "macro files", 'roff' input
+files designed to produce no output themselves but instead ease the
+preparation of other 'roff' documents. There is no syntactical
+difference between a macro file and any other 'roff' document; only its
+purpose distinguishes it. When a macro file is installed at a standard
+location and suitable for use by a general audience, it is often termed
+a "macro package".(1) (*note Macro Packages-Footnote-1::) Macro
+packages can be loaded by supplying the '-m' option to GNU 'troff' or a
+'groff' front end. Alternatively, a document requiring a macro package
+can load it with the 'mso' ("macro source") request.
+
+ (1) Macro files and packages frequently define registers and strings
+as well.
+
+5.1.9 Input Encodings
+---------------------
+
+The 'groff' command's '-k' option calls the 'preconv' preprocessor to
+perform input character encoding conversions. Input to the GNU 'troff'
+formatter itself, on the other hand, must be in one of two encodings it
+can recognize.
+
+'cp1047'
+ The code page 1047 input encoding works only on EBCDIC platforms
+ (and conversely, the other input encodings don't work with EBCDIC);
+ the file 'cp1047.tmac' is loaded at startup.
+
+'latin1'
+ ISO Latin-1, an encoding for Western European languages, is the
+ default input encoding on non-EBCDIC platforms; the file
+ 'latin1.tmac' is loaded at startup.
+
+Any document that is encoded in ISO 646:1991 (a descendant of USAS
+X3.4-1968 or "US-ASCII"), or, equivalently, uses only code points from
+the "C0 Controls" and "Basic Latin" parts of the Unicode character set
+is also a valid ISO Latin-1 document; the standards are interchangeable
+in their first 128 code points.(1) (*note Input Encodings-Footnote-1::)
+
+ Other encodings are supported by means of macro packages.
+
+'latin2'
+ To use ISO Latin-2, an encoding for Central and Eastern European
+ languages, invoke '.mso latin2.tmac' at the beginning of your
+ document or supply '-mlatin2' as a command-line argument to
+ 'groff'.
+
+'latin5'
+ To use ISO Latin-5, an encoding for the Turkish language, invoke
+ '.mso latin5.tmac' at the beginning of your document or supply
+ '-mlatin5' as a command-line argument to 'groff'.
+
+'latin9'
+ ISO Latin-9 succeeds Latin-1; it includes a Euro sign and better
+ glyph coverage for French. To use this encoding, invoke
+ '.mso latin9.tmac' at the beginning of your document or supply
+ '-mlatin9' as a command-line argument to 'groff'.
+
+ Some characters from an input encoding may not be available with a
+particular output driver, or their glyphs may not have representation in
+the font used. For terminal devices, fallbacks are defined, like 'EUR'
+for the Euro sign and '(C)' for the copyright sign. For typesetter
+devices, you may need to "mount" fonts that support glyphs required by
+the document. *Note Font Positions::.
+
+ Because a Euro glyph was not historically defined in PostScript
+fonts, 'groff' comes with a font called 'freeeuro.pfa' that provides the
+Euro in several styles. Standard PostScript fonts contain the glyphs
+from Latin-5 and Latin-9 that Latin-1 lacks, so these encodings are
+supported for the 'ps' and 'pdf' output devices as 'groff' ships, while
+Latin-2 is not.
+
+ Unicode supports characters from all other input encodings; the
+'utf8' output driver for terminals therefore does as well. The DVI
+output driver supports the Latin-2 and Latin-9 encodings if the
+command-line option '-mec' is used as well. (2) (*note Input
+Encodings-Footnote-2::)
+
+ (1) The _semantics_ of certain punctuation code points have gotten
+stricter with the successive standards, a cause of some frustration
+among man page writers; see the 'groff_char(7)' man page.
+
+ (2) The DVI output device defaults to using the Computer Modern (CM)
+fonts; 'ec.tmac' loads the EC fonts instead, which provide Euro '\[Eu]'
+and per mille '\[%0]' glyphs.
+
+5.1.10 Input Conventions
+------------------------
+
+Since GNU 'troff' fills text automatically, it is common practice in the
+'roff' language to avoid visual composition of text in input files: the
+esthetic appeal of the formatted output is what matters. Therefore,
+'roff' input should be arranged such that it is easy for authors and
+maintainers to compose and develop the document, understand the syntax
+of 'roff' requests, macro calls, and preprocessor languages used, and
+predict the behavior of the formatter. Several traditions have accrued
+in service of these goals.
+
+ * Follow sentence endings in the input with newlines to ease their
+ recognition (*note Sentences::). It is frequently convenient to
+ end text lines after colons and semicolons as well, as these
+ typically precede independent clauses. Consider doing so after
+ commas; they often occur in lists that become easy to scan when
+ itemized by line, or constitute supplements to the sentence that
+ are added, deleted, or updated to clarify it. Parenthetical and
+ quoted phrases are also good candidates for placement on text lines
+ by themselves.
+
+ * Set your text editor's line length to 72 characters or fewer.(1)
+ (*note Input Conventions-Footnote-1::) This limit, combined with
+ the previous item of advice, makes it less common that an input
+ line will wrap in your text editor, and thus will help you perceive
+ excessively long constructions in your text. Recall that natural
+ languages originate in speech, not writing, and that punctuation is
+ correlated with pauses for breathing and changes in prosody.
+
+ * Use '\&' after '!', '?', and '.' if they are followed by space,
+ tab, or newline characters and don't end a sentence.
+
+ * In filled text lines, use '\&' before '.' and ''' if they are
+ preceded by space, so that reflowing the input doesn't turn them
+ into control lines.
+
+ * Do not use spaces to perform indentation or align columns of a
+ table. Leading spaces are reliable when text is not being filled.
+
+ * Comment your document. It is never too soon to apply comments to
+ record information of use to future document maintainers (including
+ your future self). We thus introduce another escape sequence,
+ '\"', which causes GNU 'troff' to ignore the remainder of the input
+ line.
+
+ * Use the empty request--a control character followed immediately by
+ a newline--to visually manage separation of material in input
+ files. Many of the 'groff' project's own documents use an empty
+ request between sentences, after macro definitions, and where a
+ break is expected, and two empty requests between paragraphs or
+ other requests or macro calls that will introduce vertical space
+ into the document.
+
+ You can combine the empty request with the comment escape sequence
+ to include whole-line comments in your document, and even "comment
+ out" sections of it.
+
+ We conclude this section with an example sufficiently long to
+illustrate most of the above suggestions in practice. For the purpose
+of fitting the example between the margins of this manual with the font
+used for its typeset version, we have shortened the input line length to
+56 columns. As before, an arrow -> indicates a tab character.
+
+ .\" nroff this_file.roff | less
+ .\" groff -T ps this_file.roff > this_file.ps
+ ->The theory of relativity is intimately connected with
+ the theory of space and time.
+ .
+ I shall therefore begin with a brief investigation of
+ the origin of our ideas of space and time,
+ although in doing so I know that I introduce a
+ controversial subject. \" remainder of paragraph elided
+ .
+ .
+
+ ->The experiences of an individual appear to us arranged
+ in a series of events;
+ in this series the single events which we remember
+ appear to be ordered according to the criterion of
+ \[lq]earlier\[rq] and \[lq]later\[rq], \" punct swapped
+ which cannot be analysed further.
+ .
+ There exists,
+ therefore,
+ for the individual,
+ an I-time,
+ or subjective time.
+ .
+ This itself is not measurable.
+ .
+ I can,
+ indeed,
+ associate numbers with the events,
+ in such a way that the greater number is associated with
+ the later event than with an earlier one;
+ but the nature of this association may be quite
+ arbitrary.
+ .
+ This association I can define by means of a clock by
+ comparing the order of events furnished by the clock
+ with the order of a given series of events.
+ .
+ We understand by a clock something which provides a
+ series of events which can be counted,
+ and which has other properties of which we shall speak
+ later.
+ .\" Albert Einstein, _The Meaning of Relativity_, 1922
+
+ (1) Emacs: 'fill-column: 72'; Vim: 'textwidth=72'
+
+5.2 Page Geometry
+=================
+
+'roff' systems format text under certain assumptions about the size of
+the output medium, or page. For the formatter to correctly break a line
+it is filling, it must know the line length, which it derives from the
+page width (*note Line Layout::). For it to decide whether to write an
+output line to the current page or wait until the next one, it must know
+the page length (*note Page Layout::).
+
+ A device's "resolution" converts practical units like inches or
+centimeters to "basic units", a convenient length measure for the output
+device or file format. The formatter and output driver use basic units
+to reckon page measurements. The device description file defines its
+resolution and page dimensions (*note DESC File Format::).
+
+ A "page" is a two-dimensional structure upon which a 'roff' system
+imposes a rectangular coordinate system with its upper left corner as
+the origin. Coordinate values are in basic units and increase down and
+to the right. Useful ones are therefore always positive and within
+numeric ranges corresponding to the page boundaries.
+
+ While the formatter (and, later, output driver) is processing a page,
+it keeps track of its "drawing position", which is the location at which
+the next glyph will be written, from which the next motion will be
+measured, or where a geometric object will commence rendering.
+Notionally, glyphs are drawn from the text baseline upward and to the
+right.(1) (*note Page Geometry-Footnote-1::) The "text baseline" is a
+(usually invisible) line upon which the glyphs of a typeface are
+aligned. A glyph therefore "starts" at its bottom-left corner. If
+drawn at the origin, a typical letter glyph would lie partially or
+wholly off the page, depending on whether, like "g", it features a
+descender below the baseline.
+
+ Such a situation is nearly always undesirable. It is furthermore
+conventional not to write or draw at the extreme edges of the page.
+Therefore the initial drawing position of a 'roff' formatter is not at
+the origin, but below and to the right of it. This rightward shift from
+the left edge is known as the "page offset".(2) (*note Page
+Geometry-Footnote-2::) The downward shift leaves room for a text output
+line.
+
+ Text is arranged on a one-dimensional lattice of text baselines from
+the top to the bottom of the page. "Vertical spacing" is the distance
+between adjacent text baselines. Typographic tradition sets this
+quantity to 120% of the type size. The initial drawing position is one
+unit of vertical spacing below the page top. Typographers term this
+unit a vee.
+
+ Vertical spacing has an impact on page-breaking decisions.
+Generally, when a break occurs, the formatter moves the drawing position
+to the next text baseline automatically. If the formatter were already
+writing to the last line that would fit on the page, advancing by one
+vee would place the next text baseline off the page. Rather than let
+that happen, 'roff' formatters instruct the output driver to eject the
+page, start a new one, and again set the drawing position to one vee
+below the page top; this is a "page break".
+
+ When the last line of input text corresponds to the last output line
+that fits on the page, the break caused by the end of input will also
+break the page, producing a useless blank one. Macro packages keep
+users from having to confront this difficulty by setting "traps" (*note
+Traps::); moreover, all but the simplest page layouts tend to have
+headers and footers, or at least bear vertical margins larger than one
+vee.
+
+ (1) 'groff' does not yet support right-to-left scripts.
+
+ (2) 'groff''s terminal output devices have page offsets of zero.
+
+5.3 Measurements
+================
+
+The formatter sometimes requires the input of numeric parameters to
+specify measurements. These are specified as integers or decimal
+fractions with an optional "scaling unit" suffixed. A scaling unit is a
+letter that immediately follows the last digit of a number. Digits
+after the decimal point are optional. Measurement expressions include
+'10.5p', '11i', and '3.c'.
+
+ Measurements are scaled by the scaling unit and stored internally
+(with any fractional part discarded) in basic units. The device
+resolution can therefore be obtained by storing a value of '1i' to a
+register. The only constraint on the basic unit is that it is at least
+as small as any other unit.
+
+'u'
+ Basic unit.
+
+'i'
+ Inch; defined as 2.54 centimeters.
+
+'c'
+ Centimeter; a centimeter is about 0.3937 inches.
+
+'p'
+ Point; a typesetter's unit used for measuring type size. There are
+ 72 points to an inch.
+
+'P'
+ Pica; another typesetter's unit. There are 6 picas to an inch and
+ 12 points to a pica.
+
+'s'
+'z'
+ *Note Using Fractional Type Sizes::, for a discussion of these
+ units.
+
+'f'
+ GNU 'troff' defines this unit to scale decimal fractions in the
+ interval [0, 1] to 16-bit unsigned integers. It multiplies a
+ quantity by 65,536. *Note Colors::, for usage.
+
+ The magnitudes of other scaling units depend on the text formatting
+parameters in effect. These are useful when specifying measurements
+that need to scale with the typeface or vertical spacing.
+
+'m'
+ Em; an em is equal to the current type size in points. It is named
+ thus because it is approximately the width of the letter 'M'.
+
+'n'
+ En; an en is one-half em.
+
+'v'
+ Vee; recall *note Page Geometry::.
+
+'M'
+ Hundredth of an em.
+
+5.3.1 Motion Quanta
+-------------------
+
+An output device's basic unit 'u' is not necessarily its smallest
+addressable length; 'u' can be smaller to avoid problems with integer
+roundoff. The minimum distances that a device can work with in the
+horizontal and vertical directions are termed its "motion quanta".
+Measurements are rounded to applicable motion quanta. Half-quantum
+fractions round toward zero.
+
+ -- Register: \n[.H]
+ -- Register: \n[.V]
+ These read-only registers interpolate the horizontal and vertical
+ motion quanta, respectively, of the output device in basic units.
+
+ For example, we might draw short baseline rules on a terminal device
+as follows. *Note Drawing Geometric Objects::.
+
+ .tm \n[.H]
+ error-> 24
+ .nf
+ \l'36u' 36u
+ \l'37u' 37u
+ => _ 36u
+ => __ 37u
+
+5.3.2 Default Units
+-------------------
+
+A general-purpose register (one created or updated with the 'nr'
+request; see *note Registers::) is implicitly dimensionless, or reckoned
+in basic units if interpreted in a measurement context. But it is
+convenient for many requests and escape sequences to infer a scaling
+unit for an argument if none is specified. An explicit scaling unit
+(not after a closing parenthesis) can override an undesirable default.
+Effectively, the default unit is suffixed to the expression if a scaling
+unit is not already present. GNU 'troff''s use of integer arithmetic
+should also be kept in mind (*note Numeric Expressions::).
+
+ The 'll' request interprets its argument in ems by default. Consider
+several attempts to set a line length of 3.5 inches when the type size
+is 10 points on a terminal device with a resolution of 240 basic units
+and horizontal motion quantum of 24. Some expressions become zero; the
+request clamps them to that quantum.
+
+ .ll 3.5i \" 3.5i (= 840u)
+ .ll 7/2 \" 7u/2u -> 3u -> 3m -> 0, clamped to 24u
+ .ll (7 / 2)u \" 7u/2u -> as above
+ .ll 7/2i \" 7u/2i -> 7u/480u -> 0 -> as above
+ .ll 7i/2 \" 7i/2u -> 1680u/2m -> 1680u/24u -> 35u
+ .ll 7i/2u \" 3.5i (= 840u)
+
+The safest way to specify measurements is to attach a scaling unit. To
+multiply or divide by a dimensionless quantity, use 'u' as its scaling
+unit.
+
+5.4 Numeric Expressions
+=======================
+
+A "numeric expression" evaluates to an integer: it can be as simple as a
+literal '0' or it can be a complex sequence of register and string
+interpolations interleaved with measurements and operators.
+
+ GNU 'troff' provides a set of mathematical and logical operators
+familiar to programmers--as well as some unusual ones--but supports only
+integer arithmetic.(1) (*note Numeric Expressions-Footnote-1::) The
+internal data type used for computing results is usually a 32-bit signed
+integer, which suffices to represent magnitudes within a range of ±2
+billion.(2) (*note Numeric Expressions-Footnote-2::)
+
+ Arithmetic infix operators perform a function on the numeric
+expressions to their left and right; they are '+' (addition), '-'
+(subtraction), '*' (multiplication), '/' (truncating division), and '%'
+(modulus). "Truncating division" rounds to the integer nearer to zero,
+no matter how large the fractional portion. Overflow and division (or
+modulus) by zero are errors and abort evaluation of a numeric
+expression.
+
+ Arithmetic unary operators operate on the numeric expression to their
+right; they are '-' (negation) and '+' (assertion--for completeness; it
+does nothing). The unary minus must often be used with parentheses to
+avoid confusion with the decrementation operator, discussed below.
+
+ Observe the rounding behavior and effect of negative operands on the
+modulus and truncating division operators.
+
+ .nr T 199/100
+ .nr U 5/2
+ .nr V (-5)/2
+ .nr W 5/-2
+ .nr X 5%2
+ .nr Y (-5)%2
+ .nr Z 5%-2
+ T=\n[T] U=\n[U] V=\n[V] W=\n[W] X=\n[X] Y=\n[Y] Z=\n[Z]
+ => T=1 U=2 V=-2 W=-2 X=1 Y=-1 Z=1
+
+The sign of the modulus of operands of mixed signs is determined by the
+sign of the first. Division and modulus operators satisfy the following
+property: given a dividend A and a divisor B, a quotient Q formed by '(a
+/ b)' and a remainder R by '(a % b)', then qb + r = a.
+
+ GNU 'troff''s scaling operator, used with parentheses as '(C;E)',
+evaluates a numeric expression E using C as the default scaling unit.
+If C is omitted, scaling units are ignored in the evaluation of E. This
+operator can save typing by avoiding the attachment of scaling units to
+every operand out of caution. Your macros can select a sensible default
+unit in case the user neglects to supply one.
+
+ .\" Indent by amount given in first argument; assume ens.
+ .de Indent
+ . in (n;\\$1)
+ ..
+
+Without the scaling operator, the foregoing macro would, if called with
+a unitless argument, cause indentation by the 'in' request's default
+scaling unit (ems). The result would be twice as much indentation as
+expected.
+
+ GNU 'troff' also provides a pair of operators to compute the extrema
+of two operands: '>?' (maximum) and '<?' (minimum).
+
+ .nr slots 5
+ .nr candidates 3
+ .nr salaries (\n[slots] <? \n[candidates])
+ Looks like we'll end up paying \n[salaries] salaries.
+ => Looks like we'll end up paying 3 salaries.
+
+ Comparison operators comprise '<' (less than), '>' (greater than),
+'<=' (less than or equal), '>=' (greater than or equal), and '='
+(equal). '==' is a synonym for '='. When evaluated, a comparison is
+replaced with '0' if it is false and '1' if true. In the 'roff'
+language, positive values are true, others false.
+
+ We can operate on truth values with the logical operators '&'
+(logical conjunction or "and") and ':' (logical disjunction or "or").
+They evaluate as comparison operators do.
+
+ A logical complementation ("not") operator, '!', works only within
+'if', 'ie', and 'while' requests. Furthermore, '!' is recognized only
+at the beginning of a numeric expression not contained by another
+numeric expression. In other words, it must be the "outermost"
+operator. Including it elsewhere in the expression produces a warning
+in the 'number' category (*note Warnings::), and its expression
+evaluates false. This unfortunate limitation maintains compatibility
+with AT&T 'troff'. Test a numeric expression for falsity by comparing
+it to a false value.(3) (*note Numeric Expressions-Footnote-3::)
+
+ .nr X 1
+ .nr Y 0
+ .\" This does not work as expected.
+ .if (\n[X])&(!\n[Y]) .nop A: X is true, Y is false
+ .
+ .\" Use this construct instead.
+ .if (\n[X])&(\n[Y]<=0) .nop B: X is true, Y is false
+ error-> warning: expected numeric expression, got '!'
+ => B: X is true, Y is false
+
+ The 'roff' language has no operator precedence: expressions are
+evaluated strictly from left to right, in contrast to schoolhouse
+arithmetic. Use parentheses '(' ')' to impose a desired precedence upon
+subexpressions.
+
+ .nr X 3+5*4
+ .nr Y (3+5)*4
+ .nr Z 3+(5*4)
+ X=\n[X] Y=\n[Y] Z=\n[Z]
+ => X=32 Y=32 Z=23
+
+ For many requests and escape sequences that cause motion on the page,
+the unary operators '+' and '-' work differently when leading a numeric
+expression. They then indicate a motion relative to the drawing
+position: positive is down in vertical contexts, right in horizontal
+ones.
+
+ '+' and '-' are also treated differently by the following requests
+and escape sequences: 'bp', 'in', 'll', 'lt', 'nm', 'nr', 'pl', 'pn',
+'po', 'ps', 'pvs', 'rt', 'ti', '\H', '\R', and '\s'. Here, leading plus
+and minus signs serve as incrementation and decrementation operators,
+respectively. To negate an expression, subtract it from zero or include
+the unary minus in parentheses with its argument. *Note Setting
+Registers::, for examples.
+
+ A leading '|' operator indicates a motion relative not to the drawing
+position but to a boundary. For horizontal motions, the measurement
+specifies a distance relative to a drawing position corresponding to the
+beginning of the _input_ line. By default, tab stops reckon movements
+in this way. Most escape sequences do not; '|' tells them to do so.
+
+ Mind the \h'1.2i'gap.
+ .br
+ Mind the \h'|1.2i'gap.
+ .br
+ Mind the
+ \h'|1.2i'gap.
+ => Mind the gap.
+ => Mind the gap.
+ => Mind the gap.
+
+ One use of this feature is to define macros whose scope is limited to
+the output they format.
+
+ .\" underline word $1 with trailing punctuation $2
+ .de Underline
+ . nop \\$1\l'|0\[ul]'\\$2
+ ..
+ Typographical emphasis is best used
+ .Underline sparingly .
+
+In the above example, '|0' specifies a negative motion from the current
+position (at the end of the argument just emitted, '\$1') to the
+beginning of the input line. Thus, the '\l' escape sequence in this
+case draws a line from right to left. A macro call occurs at the
+beginning of an input line;(4) (*note Numeric Expressions-Footnote-4::)
+if the '|' operator were omitted, then the underline would be drawn at
+zero distance from the current position, producing device-dependent, and
+likely undesirable, results. On the 'ps' output device, it underlines
+the period.
+
+ For vertical motions, the '|' operator specifies a distance from the
+first text baseline on the page or in the current diversion,(5) (*note
+Numeric Expressions-Footnote-5::) using the current vertical spacing.
+
+ A
+ .br
+ B \Z'C'\v'|0'D
+ => A D
+ => B C
+
+ In the foregoing example, we've used the '\Z' escape sequence (*note
+Page Motions::) to restore the drawing position after formatting 'C',
+then moved vertically to the first text baseline on the page.
+
+ -- Escape sequence: \B'anything'
+ Interpolate 1 if ANYTHING is a valid numeric expression, and 0
+ otherwise. The delimiter need not be a neutral apostrophe; see
+ *note Delimiters::.
+
+ You might use '\B' along with the 'if' request to filter out invalid
+macro or string arguments. *Note Conditionals and Loops::.
+
+ .\" Indent by amount given in first argument; assume ens.
+ .de Indent
+ . if \B'\\$1' .in (n;\\$1)
+ ..
+
+ A register interpolated as an operand in a numeric expression must
+have an Arabic format; luckily, this is the default. *Note Assigning
+Register Formats::.
+
+ Because spaces separate arguments to requests, spaces are not allowed
+in numeric expressions unless the (sub)expression containing them is
+surrounded by parentheses. *Note Invoking Requests::, and *note
+Conditionals and Loops::.
+
+ .nf
+ .nr a 1+2 + 2+1
+ \na
+ error-> expected numeric expression, got a space
+ => 3
+ .nr a 1+(2 + 2)+1
+ \na
+ => 6
+
+ The 'nr' request (*note Setting Registers::) expects its second and
+optional third arguments to be numeric expressions; a bare '+' does not
+qualify, so our first attempt got a warning.
+
+ (1) Provision is made for interpreting and reporting decimal
+fractions in certain cases.
+
+ (2) If that's not enough, see the 'groff_tmac(5)' man page for the
+'62bit.tmac' macro package.
+
+ (3) *Note Conditionals and Loops::.
+
+ (4) Control structure syntax creates an exception to this rule, but
+is designed to remain useful: recalling our example, '.if 1 .Underline
+this' would underline only "this", precisely. *Note Conditionals and
+Loops::.
+
+ (5) *Note Diversions::.
+
+5.5 Identifiers
+===============
+
+An "identifier" labels a GNU 'troff' datum such as a register, name
+(macro, string, or diversion), typeface, color, special character,
+character class, environment, or stream. Valid identifiers consist of
+one or more ordinary characters. An ordinary character is an input
+character that is not the escape character, a leader, tab, newline, or
+invalid as GNU 'troff' input.
+
+ Invalid input characters are a subset of control characters (from the
+sets "C0 Controls" and "C1 Controls" as Unicode describes them). When
+GNU 'troff' encounters one in an identifier, it produces a warning in
+category 'input' (*note Warnings::). They are removed during
+interpretation: an identifier 'foo', followed by an invalid character
+and then 'bar', is processed as 'foobar'.
+
+ On a machine using the ISO 646, 8859, or 10646 character encodings,
+invalid input characters are '0x00', '0x08', '0x0B', '0x0D'-'0x1F', and
+'0x80'-'0x9F'. On an EBCDIC host, they are '0x00'-'0x01', '0x08',
+'0x09', '0x0B', '0x0D'-'0x14', '0x17'-'0x1F', and '0x30'-'0x3F'.(1)
+(*note Identifiers-Footnote-1::) Some of these code points are used by
+GNU 'troff' internally, making it non-trivial to extend the program to
+accept UTF-8 or other encodings that use characters from these
+ranges.(2) (*note Identifiers-Footnote-2::)
+
+ Thus, the identifiers 'br', 'PP', 'end-list', 'ref*normal-print',
+'|', '@_', and '!"#$%'()*+,-./' are all valid. Discretion should be
+exercised to prevent confusion. Identifiers starting with '(' or '['
+require care.
+
+ .nr x 9
+ .nr y 1
+ .nr (x 2
+ .nr [y 3
+ .nr sum1 (\n(x + \n[y])
+ error-> a space character is not allowed in an escape
+ error-> sequence parameter
+ A:2+3=\n[sum1]
+ .nr sum2 (\n((x + \n[[y])
+ B:2+3=\n[sum2]
+ .nr sum3 (\n[(x] + \n([y)
+ C:2+3=\n[sum3]
+ => A:2+3=1 B:2+3=5 C:2+3=5
+
+An identifier with a closing bracket (']') in its name can't be accessed
+with bracket-form escape sequences that expect an identifier as a
+parameter. For example, '\[foo]]' accesses the glyph 'foo', followed by
+']' in whatever the surrounding context is, whereas '\C'foo]'' formats a
+glyph named 'foo]'. Similarly, the identifier '(' can't be interpolated
+_except_ with bracket forms.
+
+ If you begin a macro, string, or diversion name with either of the
+characters '[' or ']', you foreclose use of the 'grefer' preprocessor,
+which recognizes '.[' and '.]' as bibliographic reference delimiters.
+
+ -- Escape sequence: \A'anything'
+ Interpolate 1 if ANYTHING is a valid identifier, and 0 otherwise.
+ The delimiter need not be a neutral apostrophe; see *note
+ Delimiters::. Because invalid input characters are removed (see
+ above), invalid identifiers are empty or contain spaces, tabs, or
+ newlines.
+
+ You can employ '\A' to validate a macro argument before using it to
+ construct another escape sequence or identifier.
+
+ .\" usage: .init-coordinate-pair name val1 val2
+ .\" Create a coordinate pair where name!x=val1 and
+ .\" name!y=val2.
+ .de init-coordinate-pair
+ . if \A'\\$1' \{\
+ . if \B'\\$2' .nr \\$1!x \\$2
+ . if \B'\\$3' .nr \\$1!y \\$3
+ . \}
+ ..
+ .init-coordinate-pair center 5 10
+ The center is at (\n[center!x], \n[center!y]).
+ .init-coordinate-pair "poi->nt" trash garbage \" ignored
+ .init-coordinate-pair point trash garbage \" ignored
+ => The center is at (5, 10).
+
+ In this example, we also validated the numeric arguments; the
+ registers 'point!x' and 'point!y' remain undefined. *Note Numeric
+ Expressions:: for the '\B' escape sequence.
+
+ How GNU 'troff' handles the interpretation of an undefined identifier
+depends on the context. There is no way to invoke an undefined request;
+such syntax is interpreted as a macro call instead. If the identifier
+is interpreted as a string, macro, or diversion, GNU 'troff' emits a
+warning in category 'mac', defines it as empty, and interpolates
+nothing. If the identifier is interpreted as a register, GNU 'troff'
+emits a warning in category 'reg', initializes it to zero, and
+interpolates that value. *Note Warnings::, *note Interpolating
+Registers::, and *note Strings::. Attempting to use an undefined
+typeface, special character, color, character class, environment, or
+stream generally provokes an error diagnostic.
+
+ Identifiers for requests, macros, strings, and diversions share one
+name space; special characters and character classes another. No other
+object types do.
+
+ .de xxx
+ . nop foo
+ ..
+ .di xxx
+ bar
+ .br
+ .di
+ .
+ .xxx
+ => bar
+
+The foregoing example shows that GNU 'troff' reuses the identifier
+'xxx', changing it from a macro to a diversion. No warning is emitted,
+and the previous contents of 'xxx' are lost.
+
+ (1) Historically, control characters like ASCII STX, ETX, and BEL
+(<Control+B>, <Control+C>, and <Control+G>) have been observed in 'roff'
+documents, particularly in macro packages employing them as delimiters
+with the output comparison operator to try to avoid collisions with the
+content of arbitrary user-supplied parameters (*note Operators in
+Conditionals::). We discourage this expedient; in GNU 'troff' it is
+unnecessary (outside of compatibility mode) because delimited arguments
+are parsed at a different input level than the surrounding context.
+*Note Implementation Differences::.
+
+ (2) Consider what happens when a C1 control '0x80'-'0x9F' is
+necessary as a continuation byte in a UTF-8 sequence.
+
+5.6 Formatter Instructions
+==========================
+
+To support documents that require more than filling, automatic line
+breaking and hyphenation, adjustment, and supplemental inter-sentence
+space, the 'roff' language offers two means of embedding instructions to
+the formatter.
+
+ One is a "request", which begins with a control character and takes
+up the remainder of the input line. Requests often perform relatively
+large-scale operations such as setting the page length, breaking the
+line, or starting a new page. They also conduct internal operations
+like defining macros.
+
+ The other is an "escape sequence", which begins with the escape
+character and can be embedded anywhere in the input, even in arguments
+to requests and other escape sequences. Escape sequences interpolate
+special characters, strings, or registers, and handle comparatively
+minor formatting tasks like sub- and superscripting.
+
+ Some operations, such as font selection and type size alteration, are
+available via both requests and escape sequences.
+
+5.6.1 Control Characters
+------------------------
+
+The mechanism of using 'roff''s control characters to invoke requests
+and call macros was introduced in *note Requests and Macros::. Control
+characters are recognized only at the beginning of an input line, or at
+the beginning of the branch of a control structure request; see *note
+Conditionals and Loops::.
+
+ A few requests cause a break implicitly; use the no-break control
+character to prevent the break. Break suppression is its sole
+behavioral distinction. Employing the no-break control character to
+invoke requests that don't cause breaks is harmless but poor style.
+*Note Manipulating Filling and Adjustment::.
+
+ The control '.' and no-break control ''' characters can each be
+changed to any ordinary character(1) (*note Control
+Characters-Footnote-1::) with the 'cc' and 'c2' requests, respectively.
+
+ -- Request: .cc [o]
+ Recognize the ordinary character O as the control character. If O
+ is absent or invalid, the default control character '.' is
+ selected. The identity of the control character is associated with
+ the environment (*note Environments::).
+
+ -- Request: .c2 [o]
+ Recognize the ordinary character O as the no-break control
+ character. If O is absent or invalid, the default no-break control
+ character ''' is selected. The identity of the no-break control
+ character is associated with the environment (*note
+ Environments::).
+
+ When writing a macro, you might wish to know which control character
+was used to call it.
+
+ -- Register: \n[.br]
+ This read-only register interpolates 1 if the currently executing
+ macro was called using the normal control character and 0
+ otherwise. If a macro is interpolated as a string, the '.br'
+ register's value is inherited from the context of the string
+ interpolation. *Note Strings::.
+
+ Use this register to reliably intercept requests that imply breaks.
+
+ .als bp*orig bp
+ .de bp
+ . ie \\n[.br] .bp*orig
+ . el 'bp*orig
+ ..
+
+ Testing the '.br' register outside of a macro definition makes no
+ sense.
+
+ (1) Recall *note Identifiers::.
+
+5.6.2 Invoking Requests
+-----------------------
+
+A control character is optionally followed by tabs and/or spaces and
+then an identifier naming a request or macro. The invocation of an
+unrecognized request is interpreted as a macro call. Defining a macro
+with the same name as a request replaces the request. Deleting a
+request name with the 'rm' request makes it unavailable. The 'als'
+request can alias requests, permitting them to be wrapped or
+non-destructively replaced. *Note Strings::.
+
+ There is no inherent limit on argument length or quantity. Most
+requests take one or more arguments, and ignore any they do not expect.
+A request may be separated from its arguments by tabs or spaces, but
+only spaces can separate an argument from its successor. Only one
+between arguments is necessary; any excess is ignored. GNU 'troff' does
+not allow tabs for argument separation.(1) (*note Invoking
+Requests-Footnote-1::)
+
+ Generally, a space _within_ a request argument is not relevant, not
+meaningful, or is supported by bespoke provisions, as with the 'tl'
+request's delimiters (*note Page Layout::). Some requests, like 'ds',
+interpret the remainder of the control line as a single argument. *Note
+Strings::.
+
+ Spaces and tabs immediately after a control character are ignored.
+Commonly, authors structure the source of documents or macro files with
+them.
+
+ .de center
+ . if \\n[.br] \
+ . br
+ . ce \\$1
+ ..
+ .
+ .
+ .de right-align
+ .->if \\n[.br] \
+ .->->br
+ .->rj \\$1
+ ..
+
+ If you assign an empty blank line trap, you can separate macro
+definitions (or any input lines) with blank lines.
+
+ .de do-nothing
+ ..
+ .blm do-nothing \" activate blank line trap
+
+ .de center
+ . if \\n[.br] \
+ . br
+ . ce \\$1
+ ..
+
+
+ .de right-align
+ .->if \\n[.br] \
+ .->->br
+ .->rj \\$1
+ ..
+
+ .blm \" deactivate blank line trap
+
+ *Note Blank Line Traps::.
+
+ (1) In compatibility mode, a space is not necessary after a request
+or macro name of two characters' length. Also, Plan 9 'troff' allows
+tabs to separate arguments.
+
+5.6.3 Calling Macros
+--------------------
+
+If a macro of the desired name does not exist when called, it is
+created, assigned an empty definition, and a warning in category 'mac'
+is emitted. Calling an undefined macro _does_ end a macro definition
+naming it as its end macro (*note Writing Macros::).
+
+ To embed spaces _within_ a macro argument, enclose the argument in
+neutral double quotes '"'. Horizontal motion escape sequences are
+sometimes a better choice for arguments to be formatted as text.
+
+ Consider calls to a hypothetical section heading macro 'uh'.
+
+ .uh The Mouse Problem
+ .uh "The Mouse Problem"
+ .uh The\~Mouse\~Problem
+ .uh The\ Mouse\ Problem
+
+The first line calls 'uh' with three arguments: 'The', 'Mouse', and
+'Problem'. The remainder call the 'uh' macro with one argument, 'The
+Mouse Problem'. The last solution, using escaped spaces, can be found
+in documents prepared for AT&T 'troff'. It can cause surprise when text
+is adjusted, because '\<SP>' inserts a _fixed-width_, non-breaking
+space. GNU 'troff''s '\~' escape sequence inserts an adjustable,
+non-breaking space.(1) (*note Calling Macros-Footnote-1::)
+
+ The foregoing raises the question of how to embed neutral double
+quotes or backslashes in macro arguments when _those_ characters are
+desired as literals. In GNU 'troff', the special character escape
+sequence '\[rs]' produces a backslash and '\[dq]' a neutral double
+quote.
+
+ In GNU 'troff''s AT&T compatibility mode, these characters remain
+available as '\(rs' and '\(dq', respectively. AT&T 'troff' did not
+consistently define these special characters, but its descendants can be
+made to support them. *Note Device and Font Description Files::.
+
+ If even that is not feasible, options remain. To obtain a literal
+escape character in a macro argument, you can simply type it if you
+change or disable the escape character first. *Note Using Escape
+Sequences::. Otherwise, you must escape the escape character repeatedly
+to a context-dependent extent. *Note Copy Mode::.
+
+ For the (neutral) double quote, you have recourse to an obscure
+syntactical feature of AT&T 'troff'. Because a double quote can begin a
+macro argument, the formatter keeps track of whether the current
+argument was started thus, and doesn't require a space after the double
+quote that ends it.(2) (*note Calling Macros-Footnote-2::) In the
+argument list to a macro, a double quote that _isn't_ preceded by a
+space _doesn't_ start a macro argument. If not preceded by a double
+quote that began an argument, this double quote becomes part of the
+argument. Furthermore, within a quoted argument, a pair of adjacent
+double quotes becomes a literal double quote.
+
+ .de eq
+ . tm arg1:\\$1 arg2:\\$2 arg3:\\$3
+ . tm arg4:\\$4 arg5:\\$5 arg6:\\$6
+ .. \" 4 backslashes on the next line
+ .eq a" "b c" "de"f\\\\g" h""i "j""k"
+ error-> arg1:a" arg2:b c arg3:de
+ error-> arg4:f\g" arg5:h""i arg6:j"k
+
+ Apart from the complexity of the rules, this traditional solution has
+the disadvantage that double quotes don't survive repeated argument
+expansion in AT&T 'troff' or GNU 'troff''s compatibility mode. This can
+frustrate efforts to pass such arguments intact through multiple macro
+calls.
+
+ .cp 1
+ .de eq
+ . tm arg1:\\$1 arg2:\\$2 arg3:\\$3
+ . tm arg4:\\$4 arg5:\\$5 arg6:\\$6
+ ..
+ .de xe
+ . eq \\$1 \\$2 \\$3 \\$4 \\$5 \\$6
+ .. \" 8 backslashes on the next line
+ .xe a" "b c" "de"f\\\\\\\\g" h""i "j""k"
+ error-> arg1:a" arg2:b arg3:c
+ error-> arg4:de arg5:f\g" arg6:h""i
+
+ Outside of compatibility mode, GNU 'troff' doesn't exhibit this
+problem because it tracks the nesting depth of interpolations. *Note
+Implementation Differences::.
+
+ (1) '\~' is fairly portable; see *note Other Differences::.
+
+ (2) Strictly, you can neglect to close the last quoted macro
+argument, relying on the end of the control line to do so. We consider
+this lethargic practice poor style.
+
+5.6.4 Using Escape Sequences
+----------------------------
+
+Whereas requests must occur on control lines, escape sequences can occur
+intermixed with text and may appear in arguments to requests, macros,
+and other escape sequences. An escape sequence is introduced by the
+escape character, a backslash '\' (but see the 'ec' request below). The
+next character selects the escape's function.
+
+ Escape sequences vary in length. Some take an argument, and of
+those, some have different syntactical forms for a one-character,
+two-character, or arbitrary-length argument. Others accept _only_ an
+arbitrary-length argument. In the former scheme, a one-character
+argument follows the function character immediately, an opening
+parenthesis '(' introduces a two-character argument (no closing
+parenthesis is used), and an argument of arbitrary length is enclosed in
+brackets '[]'. In the latter scheme, the user selects a delimiter
+character. A few escape sequences are idiosyncratic, and support both
+of the foregoing conventions ('\s'), designate their own termination
+sequence ('\?'), consume input until the next newline ('\!', '\"',
+'\#'), or support an additional modifier character ('\s' again, and
+'\n'). As with requests, use of some escape sequences in source
+documents may interact poorly with a macro package you use; consult its
+documentation to learn of "safe" sequences or alternative facilities it
+provides to achieve the desired result.
+
+ If an escape character is followed by a character that does not
+identify a defined operation, the escape character is ignored (producing
+a diagnostic of the 'escape' warning category, which is not enabled by
+default) and the following character is processed normally.
+
+ $ groff -Tps -ww
+ .nr N 12
+ .ds co white
+ .ds animal elephant
+ I have \fI\nN \*(co \*[animal]s,\f[]
+ said \P.\&\~Pseudo Pachyderm.
+ error-> warning: escape character ignored before 'P'
+ => I have 12 white elephants, said P. Pseudo Pachyderm.
+
+ Escape sequence interpolation is of higher precedence than escape
+sequence argument interpretation. This rule affords flexibility in
+using escape sequences to construct parameters to other escape
+sequences.
+
+ .ds family C\" Courier
+ .ds style I\" oblique
+ Choice a typeface \f(\*[family]\*[style]wisely.
+ => Choose a typeface wisely.
+
+In the above, the syntax form '\f(' accepts only two characters for an
+argument; the example works because the subsequent escape sequences are
+interpolated before the selection escape sequence argument is processed,
+and strings 'family' and 'style' interpolate one character each.(1)
+(*note Using Escape Sequences-Footnote-1::)
+
+ The escape character is nearly always interpreted when encountered;
+it is therefore desirable to have a way to interpolate it, disable it,
+or change it.
+
+ -- Escape sequence: \e
+ Interpolate the escape character.
+
+ The '\[rs]' special character escape sequence formats a backslash
+glyph. In macro and string definitions, the input sequences '\\' and
+'\E' defer interpretation of escape sequences. *Note Copy Mode::.
+
+ -- Request: .eo
+ Disable the escape mechanism except in copy mode. Once this
+ request is invoked, no input character is recognized as starting an
+ escape sequence in interpretation mode.
+
+ -- Request: .ec [o]
+ Recognize the ordinary character O as the escape character. If O
+ is absent or invalid, the default escape character '\' is selected.
+
+ Switching escape sequence interpretation off to define a macro and
+back on afterward can obviate the need to double the escape character
+within the definition. *Note Writing Macros::. This technique is not
+available if your macro needs to interpolate values at the time it is
+_defined_--but many do not.
+
+ .\" simplified `BR` macro from the man(7) macro package
+ .eo
+ .de BR
+ . ds result \&
+ . while (\n[.$] >= 2) \{\
+ . as result \fB\$1\fR\$2\"
+ . shift 2
+ . \}
+ . if \n[.$] .as result \fB\$1\"
+ \*[result]
+ . rm result
+ . ft R
+ ..
+ .ec
+
+ -- Request: .ecs
+ -- Request: .ecr
+ The 'ecs' request stores the escape character for recall with
+ 'ecr'. 'ecr' sets the escape character to '\' if none has been
+ saved.
+
+ Use these requests together to temporarily change the escape
+ character.
+
+ Using a different escape character, or disabling it, when calling
+macros not under your control will likely cause errors, since GNU
+'troff' has no mechanism to "intern" macros--that is, to convert a macro
+definition into a form independent of its representation.(2) (*note
+Using Escape Sequences-Footnote-2::) When a macro is called, its
+contents are interpreted literally.
+
+ (1) The omission of spaces before the comment escape sequences is
+necessary; see *note Strings::.
+
+ (2) TeX does have such a mechanism.
+
+5.6.5 Delimiters
+----------------
+
+Some escape sequences that require parameters use delimiters. The
+neutral apostrophe ''' is a popular choice and shown in this document.
+The neutral double quote '"' is also commonly seen. Letters, numerals,
+and leaders can be used. Punctuation characters are likely better
+choices, except for those defined as infix operators in numeric
+expressions; see below.
+
+ \l'1.5i\[bu]' \" draw 1.5 inches of bullet glyphs
+
+ The following escape sequences don't take arguments and thus are
+allowed as delimiters: '\<SP>', '\%', '\|', '\^', '\{', '\}', '\'',
+'\`', '\-', '\_', '\!', '\?', '\)', '\/', '\,', '\&', '\:', '\~', '\0',
+'\a', '\c', '\d', '\e', '\E', '\p', '\r', '\t', and '\u'. However,
+using them this way is discouraged; they can make the input confusing to
+read.
+
+ A few escape sequences, '\A', '\b', '\o', '\w', '\X', and '\Z',
+accept a newline as a delimiter. Newlines that serve as delimiters
+continue to be recognized as input line terminators.
+
+ A caf\o
+ e\(aa
+ in Paris
+ => A café in Paris
+
+Use of newlines as delimiters in escape sequences is also discouraged.
+
+ Finally, the escape sequences '\D', '\h', '\H', '\l', '\L', '\N',
+'\R', '\s', '\S', '\v', and '\x' prohibit many delimiters.
+
+ * the numerals '0'-'9' and the decimal point '.'
+
+ * the (single-character) operators '+-/*%<>=&:()'
+
+ * the space and tab characters
+
+ * any escape sequences other than '\%', '\:', '\{', '\}', '\'', '\`',
+ '\-', '\_', '\!', '\/', '\c', '\e', and '\p'
+
+ Delimiter syntax is complex and flexible primarily for historical
+reasons; the foregoing restrictions need be kept in mind mainly when
+using 'groff' in AT&T compatibility mode. GNU 'troff' keeps track of
+the nesting depth of escape sequence interpolations, so the only
+characters you need to avoid using as delimiters are those that appear
+in the arguments you input, not any that result from interpolation.
+Typically, ''' works fine. *Note Implementation Differences::.
+
+ $ groff -Tps
+ .de Mw
+ . nr wd \w'\\$1'
+ . tm "\\$1" is \\n(wd units wide.
+ ..
+ .Mw Wet'suwet'en
+ .Mw Wet+200i
+ .cp 1 \" turn on compatibility mode
+ .Mw Wet'suwet'en
+ .Mw Wet'
+ .Mw Wet+200i
+ error-> "Wet'suwet'en" is 54740 units wide.
+ error-> "Wet'+200i" is 42610 units wide.
+ error-> "Wet'suwet'en" is 15860 units wide.
+ error-> "Wet'" is 15860 units wide.
+ error-> "Wet'+200i" is 14415860 units wide.
+
+ We see here that in compatibility mode, the part of the argument
+after the ''' delimiter escapes from its context and, if nefariously
+crafted, influences the computation of the WD register's value in a
+surprising way.
+
+5.7 Comments
+============
+
+One of the most common forms of escape sequence is the comment.(1)
+(*note Comments-Footnote-1::)
+
+ -- Escape sequence: \"
+ Start a comment. Everything up to the next newline is ignored.
+
+ This may sound simple, but it can be tricky to keep the comments
+ from interfering with the appearance of the output. If the escape
+ sequence is to the right of some text or a request, that portion of
+ the line is ignored, but spaces preceding it are processed normally
+ by GNU 'troff'. This affects only the 'ds' and 'as' requests and
+ their variants.
+
+ One possibly irritating idiosyncrasy is that tabs should not be
+ used to vertically align comments in the source document. Tab
+ characters are not treated as separators between a request name and
+ its first argument, nor between arguments.
+
+ A comment on a line by itself is treated as a blank line, because
+ after eliminating the comment, that is all that remains.
+
+ Test
+ \" comment
+ Test
+ => Test
+ =>
+ => Test
+
+ To avoid this, it is common to combine the empty request with the
+ comment escape sequence as '.\"', causing the input line to be
+ ignored.
+
+ Another commenting scheme sometimes seen is three consecutive
+ single quotes (''''') at the beginning of a line. This works, but
+ GNU 'troff' emits a warning diagnostic (if enabled) about an
+ undefined macro (namely '''').
+
+ -- Escape sequence: \#
+ Start a comment; everything up to and including the next newline is
+ ignored. This 'groff' extension was introduced to avoid the
+ problems described above.
+
+ Test
+ \# comment
+ Test
+ => Test Test
+
+ -- Request: .ig [end]
+ Ignore input until, in the current conditional block (if any),(2)
+ (*note Comments-Footnote-2::) the macro END is called at the start
+ of a control line, or the control line '..' is encountered if END
+ is not specified. 'ig' is parsed as if it were a macro definition,
+ but its contents are discarded, not stored.(3) (*note
+ Comments-Footnote-3::)
+
+ hand\c
+ .de TX
+ fasting
+ ..
+ .ig TX
+ This is part of a large block of input that has been
+ temporarily(?) commented out.
+ We can restore it simply by removing the .ig request and
+ the call of its end macro.
+ .TX
+ => handfasting
+
+ (1) This claim may be more aspirational than descriptive.
+
+ (2) *Note Conditional Blocks::.
+
+ (3) Exception: auto-incrementing registers defined outside the
+ignored region _will_ be modified if interpolated with '\n±' inside it.
+*Note Auto-increment::.
+
+5.8 Registers
+=============
+
+In the 'roff' language, numbers can be stored in "registers". Many
+built-in registers exist, supplying anything from the date to details of
+formatting parameters. You can also define your own. *Note
+Identifiers::, for information on constructing a valid name for a
+register.
+
+5.8.1 Setting Registers
+-----------------------
+
+Define registers and update their values with the 'nr' request or the
+'\R' escape sequence.
+
+ -- Request: .nr ident value
+ -- Escape sequence: \R'ident value'
+ Set register IDENT to VALUE. If IDENT doesn't exist, GNU 'troff'
+ creates it. In the '\R' escape sequence, the delimiter need not be
+ a neutral apostrophe; see *note Delimiters::. It also does not
+ produce an input token in GNU 'troff'. *Note Gtroff Internals::.
+
+ .nr a (((17 + (3 * 4))) % 4)
+ \n[a]
+ .\R'a (((17 + (3 * 4))) % 4)'
+ \n[a]
+ => 1 1
+
+ (Later, we will discuss additional forms of 'nr' and '\R' that can
+ change a register's value after it is dereferenced but before it is
+ interpolated. *Note Auto-increment::.)
+
+ The complete transparency of '\R' can cause surprising effects if
+ you use registers like '.k', which get evaluated at the time they
+ are accessed.
+
+ .ll 1.6i
+ .
+ aaa bbb ccc ddd eee fff ggg hhh\R':k \n[.k]'
+ .tm :k == \n[:k]
+ => :k == 126950
+ .
+ .br
+ .
+ aaa bbb ccc ddd eee fff ggg hhh\h'0'\R':k \n[.k]'
+ .tm :k == \n[:k]
+ => :k == 15000
+
+ If you process this with the PostScript device ('-Tps'), there will
+ be a line break eventually after 'ggg' in both input lines.
+ However, after processing the space after 'ggg', the partially
+ collected line is not overfull yet, so GNU 'troff' continues to
+ collect input until it sees the space (or in this case, the
+ newline) after 'hhh'. At this point, the line is longer than the
+ line length, and the line gets broken.
+
+ In the first input line, since the '\R' escape sequence leaves no
+ traces, the check for the overfull line hasn't been done yet at the
+ point where '\R' gets handled, and you get a value for the '.k'
+ register that is even greater than the current line length.
+
+ In the second input line, the insertion of '\h'0'' to cause a
+ zero-width motion forces GNU 'troff' to check the line length,
+ which in turn causes the start of a new output line. Now '.k'
+ returns the expected value.
+
+ 'nr' and '\R' each have two additional special forms to increment or
+decrement a register.
+
+ -- Request: .nr ident +value
+ -- Request: .nr ident -value
+ -- Escape sequence: \R'ident +value'
+ -- Escape sequence: \R'ident -value'
+ Increment (decrement) register IDENT by VALUE. In the '\R' escape
+ sequence, the delimiter need not be a neutral apostrophe; see *note
+ Delimiters::.
+
+ .nr a 1
+ .nr a +1
+ \na
+ => 2
+
+ A leading minus sign in VALUE is always interpreted as a
+ decrementation operator, not an algebraic sign. To assign a
+ register a negative value or the negated value of another register,
+ you can force GNU 'troff' to interpret '-' as a negation or minus,
+ rather than decrementation, operator: enclose it with its operand
+ in parentheses or subtract it from zero.
+
+ .nr a 7
+ .nr b 3
+ .nr a -\nb
+ \na
+ => 4
+ .nr a (-\nb)
+ \na
+ => -3
+ .nr a 0-\nb
+ \na
+ => -3
+
+ If a register's prior value does not exist (the register was
+ undefined), an increment or decrement is applied as if to 0.
+
+ -- Request: .rr ident
+ Remove register IDENT. If IDENT doesn't exist, the request is
+ ignored. Technically, only the name is removed; the register's
+ contents are still accessible under aliases created with 'aln', if
+ any.
+
+ -- Request: .rnn ident1 ident2
+ Rename register IDENT1 to IDENT2. If IDENT1 doesn't exist, the
+ request is ignored. Renaming a built-in register does not
+ otherwise alter its properties.
+
+ -- Request: .aln new old
+ Create an alias NEW for an existing register OLD, causing the names
+ to refer to the same stored object. If OLD is undefined, a warning
+ in category 'reg' is produced and the request is ignored. *Note
+ Warnings::, for information about the enablement and suppression of
+ warnings.
+
+ To remove a register alias, invoke 'rr' on its name. A register's
+ contents do not become inaccessible until it has no more names.
+
+5.8.2 Interpolating Registers
+-----------------------------
+
+Register contents are interpolated with the '\n' escape sequence.
+
+ -- Escape sequence: \ni
+ -- Escape sequence: \n(id
+ -- Escape sequence: \n[ident]
+ Interpolate register with name IDENT (one-character name I,
+ two-character name ID). '\n' is interpreted even in copy mode
+ (*note Copy Mode::). If the register is undefined, it is created
+ and assigned a value of '0', that value is interpolated, and a
+ warning in category 'reg' is emitted. *Note Warnings::, for
+ information about the enablement and suppression of warnings.
+
+ .nr a 5
+ .nr as \na+\na
+ \n(as
+ => 10
+
+ .nr a1 5
+ .nr ab 6
+ .ds str b
+ .ds num 1
+ \n[a\n[num]]
+ => 5
+ \n[a\*[str]]
+ => 6
+
+5.8.3 Auto-increment
+--------------------
+
+Registers can also be incremented or decremented by a configured amount
+at the time they are interpolated. The value of the increment is
+specified with a third argument to the 'nr' request, and a special
+interpolation syntax is used to alter and then retrieve the register's
+value. Together, these features are called "auto-increment".(1) (*note
+Auto-increment-Footnote-1::)
+
+ -- Request: .nr ident value incr
+ Set register IDENT to VALUE and its auto-incrementation amount to
+ to INCR. The '\R' escape sequence doesn't support an INCR
+ argument.
+
+ Auto-incrementation is not _completely_ automatic; the '\n' escape
+sequence in its basic form never alters the value of a register. To
+apply auto-incrementation to a register, interpolate it with '\n±'.
+
+ -- Escape sequence: \n+i
+ -- Escape sequence: \n-i
+ -- Escape sequence: \n+(id
+ -- Escape sequence: \n-(id
+ -- Escape sequence: \n+[ident]
+ -- Escape sequence: \n-[ident]
+ Increment or decrement IDENT (one-character name I, two-character
+ name ID) by the register's auto-incrementation value and then
+ interpolate the new register value. If IDENT has no
+ auto-incrementation value, interpolate as with '\n'.
+
+ .nr a 0 1
+ .nr xx 0 5
+ .nr foo 0 -2
+ \n+a, \n+a, \n+a, \n+a, \n+a
+ .br
+ \n-(xx, \n-(xx, \n-(xx, \n-(xx, \n-(xx
+ .br
+ \n+[foo], \n+[foo], \n+[foo], \n+[foo], \n+[foo]
+ => 1, 2, 3, 4, 5
+ => -5, -10, -15, -20, -25
+ => -2, -4, -6, -8, -10
+
+ To change the increment value without changing the value of a
+register, assign the register's value to itself by interpolating it, and
+specify the desired increment normally. Apply an increment of '0' to
+disable auto-incrementation of the register.
+
+ (1) A negative auto-increment can be considered an "auto-decrement".
+
+5.8.4 Assigning Register Formats
+--------------------------------
+
+A writable register's value can be interpolated in several number
+formats. By default, conventional Arabic numerals are used. Other
+formats see use in sectioning and outlining schemes and alternative page
+numbering arrangements.
+
+ -- Request: .af reg fmt
+ Use number format FMT when interpolating register REG. Valid
+ number formats are as follows.
+
+ '0...'
+ Arabic numerals 0, 1, 2, and so on. Any decimal digit is
+ equivalent to '0'; the formatter merely counts the digits
+ specified. Multiple Arabic numerals in FMT cause
+ interpolations to be zero-padded on the left if necessary to
+ at least as many digits as specified (interpolations never
+ truncate a register value). A register with format '00'
+ interpolates values 1, 2, 3 as '01', '02', '03'. The default
+ format for all writable registers is '0'.
+
+ 'I'
+ Uppercase Roman numerals: 0, I, II, III, IV, ...
+
+ 'i'
+ Lowercase Roman numerals: 0, i, ii, iii, iv, ...
+
+ 'A'
+ Uppercase letters: 0, A, B, C, ..., Z, AA, AB, ...
+
+ 'a'
+ Lowercase letters: 0, a, b, c, ..., z, aa, ab, ...
+
+ Omitting FMT causes a warning in category 'missing'. *Note
+ Warnings::, for information about the enablement and suppression of
+ warnings. Specifying an unrecognized format is an error.
+
+ Zero values are interpolated as '0' in non-Arabic formats.
+ Negative quantities are prefixed with '-' irrespective of format.
+ In Arabic formats, the sign supplements the field width. If REG
+ doesn't exist, it is created with a zero value.
+
+ .nr a 10
+ .af a 0 \" the default format
+ \na,
+ .af a I
+ \na,
+ .af a 321
+ .nr a (-\na)
+ \na,
+ .af a a
+ \na
+ => 10, X, -010, -j
+
+ The representable extrema in the 'i' and 'I' formats correspond to
+ Arabic ±39,999. GNU 'troff' uses 'w' and 'z' to represent 5,000
+ and 10,000 in Roman numerals, respectively, following the
+ convention of AT&T 'troff'--currently, the correct glyphs for Roman
+ numerals five thousand ('U+2181') and ten thousand ('U+2182') are
+ not used.
+
+ Assigning the format of a read-only register is an error. Instead,
+ copy the read-only register's value to, and assign the format of, a
+ writable register.
+
+ -- Escape sequence: \gr
+ -- Escape sequence: \g(rg
+ -- Escape sequence: \g[reg]
+ Interpolate the format of the register REG (one-character name R,
+ two-character name RG). Zeroes represent Arabic formats. If REG
+ is not defined, REG is not created and nothing is interpolated.
+ '\g' is interpreted even in copy mode (*note Copy Mode::).
+
+ GNU 'troff' interprets only Arabic numerals. The Roman numeral or
+alphabetic formats cannot be used as operands to arithmetic operators in
+expressions (*note Numeric Expressions::). For instance, it may be
+desirable to test the page number independently of its format.
+
+ .af % i \" front matter
+ .de header-trap
+ . \" To test the page number, we need it in Arabic.
+ . ds saved-page-number-format \\g%\"
+ . af % 0
+ . nr page-number-in-decimal \\n%
+ . af % \\*[saved-page-number-format]
+ . ie \\n[page-number-in-decimal]=1 .do-first-page-stuff
+ . el \{\
+ . ie o .do-odd-numbered-page-stuff
+ . el .do-even-numbered-page-stuff
+ . \}
+ . rm saved-page-number-format
+ ..
+ .wh 0 header-trap
+
+5.8.5 Built-in Registers
+------------------------
+
+Predefined registers whose identifiers start with a dot are read-only.
+Many are Boolean-valued, interpolating a true or false value testable
+with the 'if', 'ie', or 'while' requests. Some read-only registers are
+string-valued, meaning that they interpolate text.
+
+ *Caution:* Built-in registers are subject to removal like others;
+once removed, they can be recreated only as normal writable registers
+and will not reflect formatter state.
+
+ A register name (without the dot) is often associated with a request
+of the same name. A complete listing of all built-in registers can be
+found in *note Register Index::.
+
+ We present here a few built-in registers that are not described
+elsewhere in this manual; they have to do with invariant properties of
+GNU 'troff', or obtain information about the formatter's command-line
+options, processing progress, or the operating environment.
+
+'\n[.A]'
+ Approximate output is being formatted (Boolean-valued); see 'groff'
+ '-a' option (*note Groff Options::).
+
+'\n[.c]'
+'\n[c.]'
+ Input line number. 'c.' is a writable synonym, affecting
+ subsequent interpolations of both '.c' and 'c.'.
+
+'\n[.F]'
+ Name of input file (string-valued).
+
+'\n[.g]'
+ Always true in GNU 'troff' (Boolean-valued). Documents can use
+ this to ask the formatter if it claims 'groff' compatibility.
+
+'\n[.P]'
+ Output page selection status (Boolean-valued); see 'groff' '-o'
+ option (*note Groff Options::).
+
+'\n[.R]'
+ Count of available unused registers; always 10,000 in GNU
+ 'troff'.(1) (*note Built-in Registers-Footnote-1::)
+
+'\n[.T]'
+ Indicator of output device selection (Boolean-valued); see 'groff'
+ '-T' option (*note Groff Options::).
+
+'\n[.U]'
+ Unsafe mode enablement status (Boolean-valued); see 'groff' '-U'
+ option (*note Groff Options::).
+
+'\n[.x]'
+ Major version number of the running GNU 'troff' formatter. For
+ example, if the version number is 1.23.0, then '.x' contains '1'.
+
+'\n[.y]'
+ Minor version number of the running GNU 'troff' formatter. For
+ example, if the version number is 1.23.0, then '.y' contains '23'.
+
+'\n[.Y]'
+ Revision number of the running GNU 'troff' formatter. For example,
+ if the version number is 1.23.0, then '.Y' contains '0'.
+
+'\n[$$]'
+ Process identifier (PID) of the GNU 'troff' program in its
+ operating environment.
+
+ Date- and time-related registers are set per the local time as
+determined by 'localtime(3)' when the formatter launches. This
+initialization can be overridden by 'SOURCE_DATE_EPOCH' and 'TZ'; see
+*note Environment::.
+
+'\n[seconds]'
+ Count of seconds elapsed in the minute (0-60).
+
+'\n[minutes]'
+ Count of minutes elapsed in the hour (0-59).
+
+'\n[hours]'
+ Count of hours elapsed since midnight (0-23).
+
+'\n[dw]'
+ Day of the week (1-7; 1 is Sunday).
+
+'\n[dy]'
+ Day of the month (1-31).
+
+'\n[mo]'
+ Month of the year (1-12).
+
+'\n[year]'
+ Gregorian year.
+
+'\n[yr]'
+ Gregorian year minus 1900. This register is incorrectly documented
+ in the AT&T 'troff' manual as storing the last two digits of the
+ current year. That claim stopped being true in 2000. Old 'troff'
+ input that looks like:
+
+ '\" The year number is a surprise after 1999.
+ This document was formatted in 19\n(yr.
+
+ can be corrected to:
+
+ This document was formatted in \n[year].
+
+ or, for portability across many 'roff' programs, to the following.
+
+ .nr y4 1900+\n(yr
+ This document was formatted in \n(y4.
+
+ (1) GNU 'troff' dynamically allocates memory for as many registers as
+required.
+
+5.9 Manipulating Filling and Adjustment
+=======================================
+
+When an output line is pending (see below), a break moves the drawing
+position to the beginning of the next text baseline, interrupting
+filling. Various ways of causing breaks were shown in *note Breaking::.
+The 'br' request likewise causes a break. Several other requests imply
+breaks: 'bp', 'ce', 'cf', 'fi', 'fl', 'in', 'nf', 'rj', 'sp', 'ti', and
+'trf'. If the no-break control character is used with any of these
+requests, GNU 'troff' suppresses the break; instead the requested
+operation takes effect at the next break. ''br' does nothing.
+
+ .ll 55n
+ This line is normally filled and adjusted.
+ .br
+ A line's alignment is decided
+ 'ce \" Center the next input line (no break).
+ when it is output.
+ This line returns to normal filling and adjustment.
+ => This line is normally filled and adjusted.
+ => A line's alignment is decided when it is output.
+ => This line returns to normal filling and adjustment.
+
+Output line properties like page offset, indentation, adjustment, and
+even the location of its text baseline, are not determined until the
+line has been broken. An output line is said to be "pending" if some
+input has been collected but an output line corresponding to it has not
+yet been written; such an output line is also termed "partially
+collected". If no output line is pending, it is as if a break has
+already happened; additional breaks, whether explicit or implicit, have
+no effect. If the vertical drawing position is negative--as it is when
+the formatter starts up--a break starts a new page (even if no output
+line is pending) unless an end-of-input macro is being interpreted.
+*Note End-of-input Traps::.
+
+ -- Request: .br
+ Break the line: emit any pending output line without adjustment.
+
+ foo bar
+ .br
+ baz
+ 'br
+ qux
+ => foo bar
+ => baz qux
+
+ Sometimes you want to prevent a break within a phrase or between a
+quantity and its units.
+
+ -- Escape sequence: \~
+ Insert an unbreakable space that is adjustable like an ordinary
+ space. It is discarded from the end of an output line if a break
+ is forced.
+
+ Set the output speed to\~1.
+ There are 1,024\~bytes in 1\~KiB.
+ J.\~F.\~Ossanna wrote the original CSTR\~#54.
+
+ By default, GNU 'troff' fills text and adjusts it to reach the output
+line length. The 'nf' request disables filling; the 'fi' request
+reënables it.
+
+ -- Request: .fi
+ -- Register: \n[.u]
+ Enable filling of output lines; a pending output line is broken.
+ The read-only register '.u' is set to 1. The filling enablement
+ status, sometimes called "fill mode", is associated with the
+ environment (*note Environments::). *Note Line Continuation::, for
+ interaction with the '\c' escape sequence.
+
+ -- Request: .nf
+ Disable filling of output lines: the output line length (*note Line
+ Layout::) is ignored and output lines are broken where the input
+ lines are. A pending output line is broken and adjustment is
+ suppressed. The read-only register '.u' is set to 0. The filling
+ enablement status is associated with the environment (*note
+ Environments::). See *note Line Continuation::, for interaction
+ with the '\c' escape sequence.
+
+ -- Request: .ad [mode]
+ -- Register: \n[.j]
+ Enable output line adjustment in MODE, taking effect when the
+ pending (or next) output line is broken. Adjustment is suppressed
+ when filling is. MODE can have one of the following values.
+
+ 'b'
+ 'n'
+ Adjust "normally": if the output line does not consume the
+ distance between the indentation and the configured output
+ line length, GNU 'troff' stretches adjustable spaces within
+ the line until that length is reached. When the indentation
+ is zero, this mode spreads the line to both the left and right
+ margins. This is the GNU 'troff' default.
+
+ 'c'
+ Center filled text. Contrast with the 'ce' request, which
+ centers text _without_ filling it.
+
+ 'l'
+ Align text to the left without adjusting it.
+
+ 'r'
+ Align text to the right without adjusting it.
+
+ MODE can also be a value previously stored in the '.j' register.
+ Using 'ad' without an argument is the same as '.ad \n[.j]'; unless
+ filling is disabled, GNU 'troff' resumes adjusting lines in the
+ same way it did before adjustment was disabled by invocation of the
+ 'na' request.
+
+ The adjustment mode and enablement status are encoded in the
+ read-only register '.j'. These parameters are associated with the
+ environment (*note Environments::).
+
+ The value of '.j' for any adjustment mode is an implementation
+ detail and should not be relied upon as a programmer's interface.
+ Do not write logic to interpret or perform arithmetic on it.
+
+ .ll 48n
+ .de AD
+ . br
+ . ad \\$1
+ ..
+ .de NA
+ . br
+ . na
+ ..
+ left
+ .AD r
+ .nr ad \n(.j
+ right
+ .AD c
+ center
+ .NA
+ left
+ .AD
+ center
+ .AD \n(ad
+ right
+ => left
+ => right
+ => center
+ => left
+ => center
+ => right
+
+ -- Request: .na
+ Disable output line adjustment. This produces the same output as
+ left-alignment, but the value of the adjustment mode register '.j'
+ is altered differently. The adjustment mode and enablement status
+ are associated with the environment (*note Environments::).
+
+ -- Request: .brp
+ -- Escape sequence: \p
+ Break, adjusting the line per the current adjustment mode. '\p'
+ schedules a break with adjustment at the next word boundary. The
+ escape sequence is itself neither a break nor a space of any kind;
+ it can thus be placed in the middle of a word to cause a break at
+ the end of that word.
+
+ Breaking with immediate adjustment can produce ugly results since
+ GNU 'troff' doesn't have a sophisticated paragraph-building
+ algorithm, as TeX has, for example. Instead, GNU 'troff' fills and
+ adjusts a paragraph line by line.
+
+ .ll 4.5i
+ This is an uninteresting sentence.
+ This is an uninteresting sentence.\p
+ This is an uninteresting sentence.
+
+ is formatted as follows.
+
+ This is an uninteresting sentence. This is
+ an uninteresting sentence.
+ This is an uninteresting sentence.
+
+ To clearly present the next couple of requests, we must introduce the
+concept of "productive" input lines. A "productive input line" is one
+that directly produces formatted output. Text lines produce output,(1)
+(*note Manipulating Filling and Adjustment-Footnote-1::) as do control
+lines containing requests like 'tl' or escape sequences like '\D'.
+Macro calls are not _directly_ productive, and thus not counted, but
+their interpolated contents can be. Empty requests, and requests and
+escape sequences that define registers or strings or alter the
+formatting environment (as with changes to the size, face, height,
+slant, or color of the type) are not productive. We will also preview
+the output line continuation escape sequence, '\c', which "connects" two
+input lines that would otherwise be counted separately. (2) (*note
+Manipulating Filling and Adjustment-Footnote-2::)
+
+ .de hello
+ Hello, world!
+ ..
+ .ce \" center output of next productive input line
+ .
+ .nr junk-reg 1
+ .ft I
+ Chorus: \c
+ .ft
+ .hello
+ Went the day well?
+ => Chorus: Hello, world!
+ => Went the day well?
+
+ -- Request: .ce [n]
+ -- Register: \n[.ce]
+ Break (unless the no-break control character is used), center the
+ output of the next N productive input lines with respect to the
+ line length and indentation without filling, then break again
+ regardless of the invoking control character. If the argument is
+ not positive, centering is disabled. Omitting the argument implies
+ an N of '1'. The count of lines remaining to be centered is stored
+ in the read-only register '.ce' and is associated with the
+ environment (*note Environments::).
+
+ While the '.ad c' request also centers text, it fills the text as
+ well.
+
+ .de FR
+ This is a small text fragment that shows the differences
+ between the `.ce' and the `.ad c' requests.
+ ..
+ .ll 4i
+ .ce 1000
+ .FR
+ .ce 0
+
+ .ad c
+ .FR
+ => This is a small text fragment that shows
+ => the differences
+ => between the `.ce' and the `.ad c' requests.
+ =>
+ => This is a small text fragment that shows
+ => the differences between the `.ce' and
+ => the `.ad c' requests.
+
+ The previous example illustrates a common idiom of turning
+ centering on for a quantity of lines far in excess of what is
+ required, and off again after the text to be centered. This
+ technique relieves humans of counting lines for requests that take
+ a count of input lines as an argument.
+
+ -- Request: .rj [n]
+ -- Register: \n[.rj]
+ Break (unless the no-break control character is used), align the
+ output of the next N productive input lines to the right margin
+ without filling, then break again regardless of the control
+ character. If the argument is not positive, right-alignment is
+ disabled. Omitting the argument implies an N of '1'. The count of
+ lines remaining to be right-aligned is stored in the read-only
+ register '.rj' and is associated with the environment (*note
+ Environments::).
+
+ .ll 49n
+ .rj 3
+ At first I hoped that such a technically unsound
+ project would collapse but I soon realized it was
+ doomed to success. \[em] C. A. R. Hoare
+ => At first I hoped that such a technically unsound
+ => project would collapse but I soon realized it was
+ => doomed to success. -- C. A. R. Hoare
+
+ -- Request: .ss word-space-size [additional-sentence-space-size]
+ -- Register: \n[.ss]
+ -- Register: \n[.sss]
+ Set the sizes of spaces between words and sentences(3) (*note
+ Manipulating Filling and Adjustment-Footnote-3::) in twelfths of
+ font's space width (typically one-fourth to one-third em for
+ Western scripts). The default for both parameters is 12. Negative
+ values are erroneous. The first argument is a minimum; if an
+ output line undergoes adjustment, such spaces may increase in
+ width. The optional second argument sets the amount of additional
+ space separating sentences on the same output line. If omitted,
+ this amount is set to WORD-SPACE-SIZE. The request is ignored if
+ there are no parameters.
+
+ Additional inter-sentence space is used only if the output line is
+ not full when the end of a sentence occurs in the input. If a
+ sentence ends at the end of an input line, then both an inter-word
+ space and an inter-sentence space are added to the output; if two
+ spaces follow the end of a sentence in the middle of an input line,
+ then the second space becomes an inter-sentence space in the
+ output. Additional inter-sentence space is not adjusted, but the
+ inter-word space that always precedes it may be. Further input
+ spaces after the second, if present, are adjusted as normal.
+
+ The read-only registers '.ss' and '.sss' hold the minimal
+ inter-word space and additional inter-sentence space amounts,
+ respectively. These parameters are part of the environment (*note
+ Environments::), and rounded down to the nearest multiple of 12 on
+ terminals.
+
+ The 'ss' request can insert discardable horizontal space; that is,
+ space that is discarded at a break. For example, some footnote
+ styles collect the notes into a single paragraph with large gaps
+ between each note.
+
+ .ll 48n
+ 1.\~J. Fict. Ch. Soc. 6 (2020), 3\[en]14.
+ .ss 12 48 \" applies to next sentence ending
+ Reprints no longer available through FCS.
+ .ss 12 \" go back to normal
+ 2.\~Better known for other work.
+ => 1. J. Fict. Ch. Soc. 6 (2020), 3-14. Reprints
+ => no longer available through FCS. 2. Better
+ => known for other work.
+
+ If _undiscardable_ space is required, use the '\h' escape sequence.
+
+ (1) unless diverted; see *note Diversions::
+
+ (2) *Note Line Continuation::.
+
+ (3) Recall *note Filling:: and *note Sentences:: for the definitions
+of word and sentence boundaries, respectively.
+
+5.10 Manipulating Hyphenation
+=============================
+
+When filling, GNU 'troff' hyphenates words as needed at user-specified
+and automatically determined hyphenation points. The machine-driven
+determination of hyphenation points in words requires algorithms and
+data, and is susceptible to conventions and preferences. Before
+tackling such "automatic hyphenation", let us consider how hyphenation
+points can be set explicitly.
+
+ Explicitly hyphenated words such as "mother-in-law" are eligible for
+breaking after each of their hyphens. Relatively few words in a
+language offer such obvious break points, however, and automatic
+detection of syllabic (or phonetic) boundaries for hyphenation is not
+perfect,(1) (*note Manipulating Hyphenation-Footnote-1::) particularly
+for unusual words found in technical literature. We can instruct GNU
+'troff' how to hyphenate specific words if the need arises.
+
+ -- Request: .hw word ...
+ Define each "hyphenation exception" WORD with each hyphen '-' in
+ the word indicating a hyphenation point. For example, the request
+
+ .hw in-sa-lub-rious alpha
+
+ marks potential hyphenation points in "insalubrious", and prevents
+ "alpha" from being hyphenated at all.
+
+ Besides the space character, any character whose hyphenation code
+ is zero can be used to separate the arguments of 'hw' (see the
+ 'hcode' request below). In addition, this request can be used more
+ than once.
+
+ Hyphenation points specified with 'hw' are not subject to the
+ within-word placement restrictions imposed by the 'hy' request (see
+ below).
+
+ Hyphenation exceptions specified with the 'hw' request are
+ associated with the hyphenation language (see the 'hla' request
+ below) and environment (*note Environments::); invoking the 'hw'
+ request in the absence of a hyphenation language is an error.
+
+ The request is ignored if there are no parameters.
+
+ These are known as hyphenation exceptions in the expectation that
+most users will avail themselves of automatic hyphenation; these
+exceptions override any rules that would normally apply to a word
+matching a hyphenation exception defined with 'hw'.
+
+ Situations also arise when only a specific occurrence of a word needs
+its hyphenation altered or suppressed, or when a URL or similar string
+needs to be breakable in sensible places without hyphenation.
+
+ -- Escape sequence: \%
+ -- Escape sequence: \:
+ To tell GNU 'troff' how to hyphenate words as they occur in input,
+ use the '\%' escape sequence; it is the default "hyphenation
+ character". Each instance within a word indicates to GNU 'troff'
+ that the word may be hyphenated at that point, while prefixing a
+ word with this escape sequence prevents it from being otherwise
+ hyphenated. This mechanism affects only that occurrence of the
+ word; to change the hyphenation of a word for the remainder of
+ input processing, use the 'hw' request.
+
+ GNU 'troff' regards the escape sequences '\X' and '\Y' as starting
+ a word; that is, the '\%' escape sequence in, say,
+ '\X'...'\%foobar' or '\Y'...'\%foobar' no longer prevents
+ hyphenation of 'foobar' but inserts a hyphenation point just prior
+ to it; most likely this isn't what you want. *Note Postprocessor
+ Access::.
+
+ '\:' inserts a non-printing break point; that is, a word can break
+ there, but the soft hyphen glyph (see below) is not written to the
+ output if it does. This escape sequence is an input word boundary,
+ so the remainder of the word is subject to hyphenation as normal.
+
+ You can combine '\:' and '\%' to control breaking of a file name or
+ URL, or to permit hyphenation only after certain explicit hyphens
+ within a word.
+
+ The \%Lethbridge-Stewart-\:\%Sackville-Baggins divorce
+ was, in retrospect, inevitable once the contents of
+ \%/var/log/\:\%httpd/\:\%access_log on the family web
+ server came to light, revealing visitors from Hogwarts.
+
+ -- Request: .hc [char]
+ Change the hyphenation character to CHAR. This character then
+ works as the '\%' escape sequence normally does, and thus no longer
+ appears in the output.(2) (*note Manipulating
+ Hyphenation-Footnote-2::) Without an argument, 'hc' resets the
+ hyphenation character to '\%' (the default). The hyphenation
+ character is associated with the environment (*note
+ Environments::).
+
+ -- Request: .shc [c]
+ Set the "soft hyphen character", inserted when a word is hyphenated
+ automatically or at a hyphenation character, to the ordinary or
+ special character C.(3) (*note Manipulating
+ Hyphenation-Footnote-3::) If the argument is omitted, the soft
+ hyphen character is set to the default, '\[hy]'. If no glyph for C
+ exists in the font in use at a potential hyphenation point, then
+ the line is not broken there. Neither character definitions
+ (specified with the 'char' and similar requests) nor translations
+ (specified with the 'tr' request) are applied to C.
+
+ Several requests influence automatic hyphenation. Because
+conventions vary, a variety of hyphenation modes is available to the
+'hy' request; these determine whether hyphenation will apply to a word
+prior to breaking a line at the end of a page (more or less; see below
+for details), and at which positions within that word automatically
+determined hyphenation points are permissible. The places within a word
+that are eligible for hyphenation are determined by language-specific
+data and lettercase relationships. Furthermore, hyphenation of a word
+might be suppressed due to a limit on consecutive hyphenated lines
+('hlm'), a minimum line length threshold ('hym'), or because the line
+can instead be adjusted with additional inter-word space ('hys').
+
+ -- Request: .hy [mode]
+ -- Register: \n[.hy]
+ Set automatic hyphenation mode to MODE, an integer encoding
+ conditions for hyphenation; if omitted, '1' is implied. The
+ hyphenation mode is available in the read-only register '.hy'; it
+ is associated with the environment (*note Environments::). The
+ default hyphenation mode depends on the localization file loaded
+ when GNU 'troff' starts up; see the 'hpf' request below.
+
+ Typesetting practice generally does not avail itself of every
+ opportunity for hyphenation, but the details differ by language and
+ site mandates. The hyphenation modes of AT&T 'troff' were
+ implemented with English-language publishing practices of the 1970s
+ in mind, not a scrupulous enumeration of conceivable parameters.
+ GNU 'troff' extends those modes such that finer-grained control is
+ possible, favoring compatibility with older implementations over a
+ more intuitive arrangement. The means of hyphenation mode control
+ is a set of numbers that can be added up to encode the behavior
+ sought.(4) (*note Manipulating Hyphenation-Footnote-4::) The
+ entries in the following table are termed "values"; the sum of the
+ desired values is the "mode".
+
+ '0'
+ disables hyphenation.
+
+ '1'
+ enables hyphenation except after the first and before the last
+ character of a word.
+
+ The remaining values "imply" 1; that is, they enable hyphenation
+ under the same conditions as '.hy 1', and then apply or lift
+ restrictions relative to that basis.
+
+ '2'
+ disables hyphenation of the last word on a page,(5) (*note
+ Manipulating Hyphenation-Footnote-5::) even for explicitly
+ hyphenated words.
+
+ '4'
+ disables hyphenation before the last two characters of a word.
+
+ '8'
+ disables hyphenation after the first two characters of a word.
+
+ '16'
+ enables hyphenation before the last character of a word.
+
+ '32'
+ enables hyphenation after the first character of a word.
+
+ Apart from value 2, restrictions imposed by the hyphenation mode
+ are _not_ respected for words whose hyphenations have been
+ specified with the hyphenation character ('\%' by default) or the
+ 'hw' request.
+
+ Nonzero values in the previous table are additive. For example,
+ mode 12 causes GNU 'troff' to hyphenate neither the last two nor
+ the first two characters of a word. Some values cannot be used
+ together because they contradict; for instance, values 4 and 16,
+ and values 8 and 32. As noted, it is superfluous to add 1 to any
+ non-zero even mode.
+
+ The automatic placement of hyphens in words is determined by
+ "pattern files", which are derived from TeX and available for
+ several languages. The number of characters at the beginning of a
+ word after which the first hyphenation point should be inserted is
+ determined by the patterns themselves; it can't be reduced further
+ without introducing additional, invalid hyphenation points
+ (unfortunately, this information is not part of a pattern file--you
+ have to know it in advance). The same is true for the number of
+ characters at the end of a word before the last hyphenation point
+ should be inserted. For example, you can supply the following
+ input to 'echo $(nroff)'.
+
+ .ll 1
+ .hy 48
+ splitting
+
+ You will get
+
+ s- plit- t- in- g
+
+ instead of the correct 'split- ting'. English patterns as
+ distributed with GNU 'troff' need two characters at the beginning
+ and three characters at the end; this means that value 4 of 'hy' is
+ mandatory. Value 8 is possible as an additional restriction, but
+ values 16 and 32 should be avoided, as should mode 1. Modes 4
+ and 6 are typical.
+
+ A table of left and right minimum character counts for hyphenation
+ as needed by the patterns distributed with GNU 'troff' follows; see
+ the 'groff_tmac(5)' man page for more information on GNU 'troff''s
+ language macro files.
+
+ language pattern name left min right min
+ -----------------------------------------------------------
+ Czech cs 2 2
+ English en 2 3
+ French fr 2 3
+ German traditional det 2 2
+ German reformed den 2 2
+ Italian it 2 2
+ Swedish sv 1 2
+
+ Hyphenation exceptions within pattern files (i.e., the words within
+ a TeX '\hyphenation' group) obey the hyphenation restrictions given
+ by 'hy'.
+
+ -- Request: .nh
+ Disable automatic hyphenation; i.e., set the hyphenation mode to 0
+ (see above). The hyphenation mode of the last call to 'hy' is not
+ remembered.
+
+ -- Request: .hpf pattern-file
+ -- Request: .hpfa pattern-file
+ -- Request: .hpfcode a b [c d] ...
+ Read hyphenation patterns from PATTERN-FILE, which is sought in the
+ same way that macro files are with the 'mso' request or the
+ '-mNAME' command-line option to 'groff'. The PATTERN-FILE should
+ have the same format as (simple) TeX pattern files. More
+ specifically, the following scanning rules are implemented.
+
+ * A percent sign starts a comment (up to the end of the line)
+ even if preceded by a backslash.
+
+ * "Digraphs" like '\$' are not supported.
+
+ * '^^XX' (where each X is 0-9 or a-f) and '^^C' (character C in
+ the code point range 0-127 decimal) are recognized; other uses
+ of '^' cause an error.
+
+ * No macro expansion is performed.
+
+ * 'hpf' checks for the expression '\patterns{...}' (possibly
+ with whitespace before or after the braces). Everything
+ between the braces is taken as hyphenation patterns.
+ Consequently, '{' and '}' are not allowed in patterns.
+
+ * Similarly, '\hyphenation{...}' gives a list of hyphenation
+ exceptions.
+
+ * '\endinput' is recognized also.
+
+ * For backward compatibility, if '\patterns' is missing, the
+ whole file is treated as a list of hyphenation patterns
+ (except that the '%' character is recognized as the start of a
+ comment).
+
+ The 'hpfa' request appends a file of patterns to the current list.
+
+ The 'hpfcode' request defines mapping values for character codes in
+ pattern files. It is an older mechanism no longer used by GNU
+ 'troff''s own macro files; for its successor, see 'hcode' below.
+ 'hpf' or 'hpfa' apply the mapping after reading the patterns but
+ before replacing or appending to the active list of patterns. Its
+ arguments are pairs of character codes--integers from 0 to 255.
+ The request maps character code A to code B, code C to code D, and
+ so on. Character codes that would otherwise be invalid in GNU
+ 'troff' can be used. By default, every code maps to itself except
+ those for letters 'A' to 'Z', which map to those for 'a' to 'z'.
+
+ The set of hyphenation patterns is associated with the language set
+ by the 'hla' request (see below). The 'hpf' request is usually
+ invoked by a localization file loaded by the 'troffrc' file.(6)
+ (*note Manipulating Hyphenation-Footnote-6::)
+
+ A second call to 'hpf' (for the same language) replaces the
+ hyphenation patterns with the new ones. Invoking 'hpf' or 'hpfa'
+ causes an error if there is no hyphenation language. If no 'hpf'
+ request is specified (either in the document, in a file loaded at
+ startup, or in a macro package), GNU 'troff' won't automatically
+ hyphenate at all.
+
+ -- Request: .hcode c1 code1 [c2 code2] ...
+ Set the hyphenation code of character C1 to CODE1, that of C2 to
+ CODE2, and so on. A hyphenation code must be an ordinary character
+ (not a special character escape sequence) other than a digit or a
+ space. The request is ignored if given no arguments.
+
+ For hyphenation to work, hyphenation codes must be set up. At
+ startup, GNU 'troff' assigns hyphenation codes to the letters
+ 'a'-'z' (mapped to themselves), to the letters 'A'-'Z' (mapped to
+ 'a'-'z'), and zero to all other characters. Normally, hyphenation
+ patterns contain only lowercase letters which should be applied
+ regardless of case. In other words, they assume that the words
+ 'FOO' and 'Foo' should be hyphenated exactly as 'foo' is. The
+ 'hcode' request extends this principle to letters outside the
+ Unicode basic Latin alphabet; without it, words containing such
+ letters won't be hyphenated properly even if the corresponding
+ hyphenation patterns contain them.
+
+ For example, the following 'hcode' requests are necessary to assign
+ hyphenation codes to the letters 'ÄäÖöÜüß', needed for German.
+
+ .hcode ä ä Ä ä
+ .hcode ö ö Ö ö
+ .hcode ü ü Ü ü
+ .hcode ß ß
+
+ Without these assignments, GNU 'troff' treats the German word
+ 'Kindergärten' (the plural form of 'kindergarten') as two words
+ 'kinderg' and 'rten' because the hyphenation code of the umlaut a
+ is zero by default, just like a space. There is a German
+ hyphenation pattern that covers 'kinder', so GNU 'troff' finds the
+ hyphenation 'kin-der'. The other two hyphenation points
+ ('kin-der-gär-ten') are missed.
+
+ -- Request: .hla lang
+ -- Register: \n[.hla]
+ Set the hyphenation language to LANG. Hyphenation exceptions
+ specified with the 'hw' request and hyphenation patterns and
+ exceptions specified with the 'hpf' and 'hpfa' requests are
+ associated with the hyphenation language. The 'hla' request is
+ usually invoked by a localization file, which is turn loaded by the
+ 'troffrc' or 'troffrc-end' file; see the 'hpf' request above.
+
+ The hyphenation language is available in the read-only
+ string-valued register '.hla'; it is associated with the
+ environment (*note Environments::).
+
+ -- Request: .hlm [n]
+ -- Register: \n[.hlm]
+ -- Register: \n[.hlc]
+ Set the maximum quantity of consecutive hyphenated lines to N. If
+ N is negative, there is no maximum. If omitted, N is -1. This
+ value is associated with the environment (*note Environments::).
+ Only lines output from a given environment count toward the maximum
+ associated with that environment. Hyphens resulting from '\%' are
+ counted; explicit hyphens are not.
+
+ The '.hlm' read-only register stores this maximum. The count of
+ immediately preceding consecutive hyphenated lines is available in
+ the read-only register '.hlc'.
+
+ -- Request: .hym [length]
+ -- Register: \n[.hym]
+ Set the (right) hyphenation margin to LENGTH. If the adjustment
+ mode is not 'b' or 'n', the line is not hyphenated if it is shorter
+ than LENGTH. Without an argument, the hyphenation margin is reset
+ to its default value, 0. The default scaling unit is 'm'. The
+ hyphenation margin is associated with the environment (*note
+ Environments::).
+
+ A negative argument resets the hyphenation margin to zero, emitting
+ a warning in category 'range'.
+
+ The hyphenation margin is available in the '.hym' read-only
+ register.
+
+ -- Request: .hys [hyphenation-space]
+ -- Register: \n[.hys]
+ Suppress hyphenation of the line in adjustment modes 'b' or 'n' if
+ it can be justified by adding no more than HYPHENATION-SPACE extra
+ space to each inter-word space. Without an argument, the
+ hyphenation space adjustment threshold is set to its default value,
+ 0. The default scaling unit is 'm'. The hyphenation space
+ adjustment threshold is associated with the environment (*note
+ Environments::).
+
+ A negative argument resets the hyphenation space adjustment
+ threshold to zero, emitting a warning in category 'range'.
+
+ The hyphenation space adjustment threshold is available in the
+ '.hys' read-only register.
+
+ (1) Whether a perfect algorithm for this application is even possible
+is an unsolved problem in computer science:
+<https://tug.org/docs/liang/liang-thesis.pdf>.
+
+ (2) '\%' itself stops marking hyphenation points but still produces
+no output glyph.
+
+ (3) "Soft" because it appears in output only where a hyphenation
+break is performed; a "hard" hyphen, as in "long-term", always appears.
+
+ (4) The mode is a vector of Booleans encoded as an integer. To a
+programmer, this fact is easily deduced from the exclusive use of powers
+of two for the configuration parameters; they are computationally easy
+to "mask off" and compare to zero. To almost everyone else, the
+arrangement seems recondite and unfriendly.
+
+ (5) Hyphenation is prevented if the next page location trap is closer
+to the vertical drawing position than the next text baseline would be.
+*Note Page Location Traps::.
+
+ (6) For more on localization, see the 'groff_tmac(5)' man page.
+
+5.11 Manipulating Spacing
+=========================
+
+A break causes the formatter to update the vertical drawing position at
+which the new text baseline is aligned. You can alter this location.
+
+ -- Request: .sp [distance]
+ Break and move the next text baseline down by DISTANCE, or until
+ springing a page location trap.(1) (*note Manipulating
+ Spacing-Footnote-1::) If invoked with the no-break control
+ character, 'sp' moves the pending output line's text baseline by
+ DISTANCE. A negative DISTANCE will not reduce the position of the
+ text baseline below zero. Inside a diversion, any DISTANCE
+ argument is ignored. The default scaling unit is 'v'. If DISTANCE
+ is not specified, '1v' is assumed.
+
+ .pl 5v \" Set page length to 5 vees.
+ .de xx
+ \-\-\-
+ . br
+ ..
+ .wh 0 xx \" Set a trap at the top of the page.
+ foo on page \n%
+ .sp 2v
+ bar on page \n%
+ .sp 50v \" This will cause a page break.
+ baz on page \n%
+ .pl \n(nlu \" Truncate page to current position.
+ => ---
+ => foo on page 1
+ =>
+ =>
+ => bar on page 1
+ => ---
+ => baz on page 2
+
+ You might use the following macros to set the baseline of the next
+ output text at a given distance from the top or the bottom of the
+ page. We subtract one line height ('\n[.v]') because the '|'
+ operator moves to one vee below the page top (recall *note Numeric
+ Expressions::).
+
+ .de y-from-top-down
+ . sp |\\$1-\\n[.v]u
+ ..
+ .
+ .de y-from-bot-up
+ . sp |\\n[.p]u-\\$1-\\n[.v]u
+ ..
+
+ A call to '.y-from-bot-up 10c' means that the next text baseline
+ will be 10 cm from the bottom edge of the paper.
+
+ -- Request: .ls [count]
+ -- Register: \n[.L]
+ Set the line spacing; add COUNT-1 blank lines after each line of
+ text. With no argument, GNU 'troff' uses the previous value before
+ the last 'ls' call. The default is '1'.
+
+ The read-only register '.L' contains the current line spacing; it
+ is associated with the environment (*note Environments::).
+
+ The 'ls' request is a coarse mechanism. *Note Changing the Type
+Size::, for the requests 'vs' and 'pvs' as alternatives to 'ls'.
+
+ -- Escape sequence: \x'spacing'
+ -- Register: \n[.a]
+ Sometimes, an output line requires additional vertical spacing, for
+ instance to allow room for a tall construct like an inline equation
+ with exponents or subscripts (particularly if they are iterated).
+ The '\x' escape sequence takes a delimited measurement (like
+ '\x'3p'') to increase the vertical spacing of the pending output
+ line. The default scaling unit is 'v'. If the measurement is
+ positive, extra vertical space is inserted below the current line;
+ a negative measurement adds space above. If '\x' is applied to the
+ pending output line multiple times, the maxima of the positive and
+ negative adjustments are separately applied. The delimiter need
+ not be a neutral apostrophe; see *note Delimiters::.
+
+ The '.a' read-only register contains the extra vertical spacing
+ _after_ the text baseline of the most recently emitted output line.
+ (In other words, it is the largest positive argument to '\x'
+ encountered on that line.) This quantity is exposed via a register
+ because if an output line requires this "extra post-vertical line
+ spacing", and the subsequent output line requires "extra
+ pre-vertical line spacing" (a negative argument to '\x'), then
+ applying both can lead to excessive spacing between the output
+ lines. Text that is piling high on line N might not require (as
+ much) extra pre-vertical line spacing if line N-1 carries extra
+ post-vertical line spacing.
+
+ Use of '\x' can be necessary in combination with the
+ bracket-building escape sequence '\b',(2) (*note Manipulating
+ Spacing-Footnote-2::) as the following example shows.
+
+ .nf
+ This is a test of \[rs]b (1).
+ This is a test of \[rs]b (2).
+ This is a test of \b'xyz'\x'-1m'\x'1m' (3).
+ This is a test of \[rs]b (4).
+ This is a test of \[rs]b (5).
+ => This is a test of \b (1).
+ => This is a test of \b (2).
+ => x
+ => This is a test of y (3).
+ => z
+ => This is a test of \b (4).
+ => This is a test of \b (5).
+
+Without '\x', the backslashes on the lines marked '(2)' and '(4)' would
+be overprinted.
+
+ -- Request: .ns
+ -- Request: .rs
+ -- Register: \n[.ns]
+ Enable "no-space mode". Vertical spacing, whether by 'sp' requests
+ or blank input lines, is disabled. The 'bp' request to advance to
+ the next page is also disabled, unless it is accompanied by a page
+ number (*note Page Control::). No-space mode ends automatically
+ when text(3) (*note Manipulating Spacing-Footnote-3::) is formatted
+ for output (4) (*note Manipulating Spacing-Footnote-4::) or the
+ 'rs' request is invoked, which ends no-space mode. The read-only
+ register '.ns' interpolates a Boolean value indicating the
+ enablement of no-space mode.
+
+ A paragraphing macro might ordinarily insert vertical space to
+ separate paragraphs. A section heading macro could invoke 'ns' to
+ suppress this spacing for the first paragraph in a section.
+
+ (1) *Note Page Location Traps::.
+
+ (2) *Note Drawing Geometric Objects::.
+
+ (3) or geometric objects; see *note Drawing Geometric Objects::
+
+ (4) to the top-level diversion; see *note Diversions::
+
+5.12 Tabs and Fields
+====================
+
+A tab character (ISO code point 9, EBCDIC code point 5) causes a
+horizontal movement to the next tab stop, if any.
+
+ -- Escape sequence: \t
+ Interpolate a tab in copy mode; see *note Copy Mode::.
+
+ -- Request: .ta [[n1 n2 ... nn ]T r1 r2 ... rn]
+ -- Register: \n[.tabs]
+ Change tab stop positions. This request takes a series of tab
+ specifiers as arguments (optionally divided into two groups with
+ the letter 'T') that indicate where each tab stop is to be,
+ overriding any previous settings. The default scaling unit is 'm'.
+ Invoking 'ta' without an argument removes all tab stops. GNU
+ 'troff''s startup value is 'T 0.5i'.
+
+ Tab stops can be specified absolutely--as distances from the left
+ margin. The following example sets six tab stops, one every inch.
+
+ .ta 1i 2i 3i 4i 5i 6i
+
+ Tab stops can also be specified using a leading '+', which means
+ that the specified tab stop is set relative to the previous tab
+ stop. For example, the following is equivalent to the previous
+ example.
+
+ .ta 1i +1i +1i +1i +1i +1i
+
+ GNU 'troff' supports an extended syntax to specify repeating tab
+ stops. These stops appear after a 'T' argument. Their values are
+ always taken as distances relative to the previous tab stop. This
+ is the idiomatic way to specify tab stops at equal intervals in
+ 'groff'. The following is, yet again, the same as the previous
+ examples. It does more, in fact, since it defines an infinite
+ number of tab stops at one-inch intervals.
+
+ .ta T 1i
+
+ Now we are ready to interpret the full syntax given above. The
+ 'ta' request sets tabs at positions N1, N2, ..., NN, then at NN+R1,
+ NN+R2, ..., NN+RN, then at NN+RN+R1, NN+RN+R2, ..., NN+RN+RN, and
+ so on.
+
+ For example, '4c +6c T 3c 5c 2c' is equivalent to '4c 10c 13c 18c
+ 20c 23c 28c 30c ...'.
+
+ Text written to a tab column (i.e., between two tab stops, or
+ between a tab stop and an output line boundary) may be aligned to
+ the right or left, or centered in the column. This alignment is
+ determined by appending 'R', 'L', or 'C' to the tab specifier. The
+ default is 'L'.
+
+ .ta 1i 2iC 3iR
+
+ The beginning of an output line is not a tab stop; the text that
+ begins an output line is placed according to the configured
+ alignment and indentation; see *note Manipulating Filling and
+ Adjustment:: and *note Line Layout::.
+
+ A tab stop is converted into a non-breakable horizontal movement
+ that cannot be adjusted.
+
+ .ll 2i
+ .ds foo a\tb\tc
+ .ta T 1i
+ \*[foo]
+ error-> warning: cannot break line
+ => a b c
+
+ The above creates a single output line that is a bit longer than
+ two inches (we use a string to show exactly where the tab stops
+ are). Now consider the following.
+
+ .ll 2i
+ .ds bar a\tb c\td
+ .ta T 1i
+ \*[bar]
+ error-> warning: cannot adjust line
+ => a b
+ => c d
+
+ GNU 'troff' first converts the line's tab stops into unbreakable
+ horizontal movements, then breaks after 'b'. This usually isn't
+ what you want.
+
+ Superfluous tab characters--those that do not correspond to a tab
+ stop--are ignored except for the first, which delimits the
+ characters belonging to the last tab stop for right-alignment or
+ centering.
+
+ .ds Z foo\tbar\tbaz
+ .ds ZZ foo\tbar\tbazqux
+ .ds ZZZ foo\tbar\tbaz\tqux
+ .ta 2i 4iR
+ \*[Z]
+ .br
+ \*[ZZ]
+ .br
+ \*[ZZZ]
+ .br
+ => foo bar baz
+ => foo bar bazqux
+ => foo bar bazqux
+
+ The first line right-aligns "baz" within the second tab stop. The
+ second line right-aligns "bazqux" within it. The third line
+ right-aligns only "baz" because of the additional tab character,
+ which marks the end of the text occupying the last tab stop
+ defined.
+
+ Tab stops are associated with the environment (*note
+ Environments::).
+
+ The read-only register '.tabs' contains a string representation of
+ the current tab settings suitable for use as an argument to the
+ 'ta' request.(1) (*note Tabs and Fields-Footnote-1::)
+
+ .ds tab-string \n[.tabs]
+ \*[tab-string]
+ => T120u
+
+ -- Request: .tc [c]
+ Set the tab repetition character to the ordinary or special
+ character C; normally, no glyph is written when moving to a tab
+ stop (and some output devices may output space characters to
+ achieve this motion). A "tab repetition character" causes the
+ formatter to write as many instances of C as are necessary to
+ occupy the interval from the horizontal drawing position to the
+ next tab stop. With no argument, GNU 'troff' reverts to the
+ default behavior. The tab repetition character is associated with
+ the environment (*note Environments::). Only a single character of
+ C is recognized; any excess is ignored.
+
+ -- Request: .linetabs n
+ -- Register: \n[.linetabs]
+ If N is missing or non-zero, activate "line-tabs"; deactivate it
+ otherwise (the default). Active line-tabs cause GNU 'troff' to
+ compute tab distances relative to the start of the output line
+ instead of the input line.
+
+ .de Tabs
+ . ds x a\t\c
+ . ds y b\t\c
+ . ds z c
+ . ta 1i 3i
+ \\*x
+ \\*y
+ \\*z
+ ..
+ .Tabs
+ .br
+ .linetabs
+ .Tabs
+ => a b c
+ => a b c
+
+ Line-tabs activation is associated with the environment (*note
+ Environments::). The read-only register '.linetabs' interpolates 1
+ if line-tabs are active, and 0 otherwise.
+
+ (1) Plan 9 'troff' uses the register '.S' for this purpose.
+
+5.12.1 Leaders
+--------------
+
+Sometimes it is desirable to fill a tab stop with a given glyph, but
+also use tab stops normally on the same output line. An example is a
+table of contents entry that uses dots to bridge the entry name with its
+page number, which is itself aligned between tab stops. The 'roff'
+language provides "leaders" for this purpose.(1) (*note
+Leaders-Footnote-1::)
+
+ A leader character (ISO and EBCDIC code point 1, also known as SOH or
+"start of heading"), behaves similarly to a tab character: it moves to
+the next tab stop. The difference is that for this movement, the
+default fill character is a period '.'.
+
+ -- Escape sequence: \a
+ Interpolate a leader in copy mode; see *note Copy Mode::.
+
+ -- Request: .lc [c]
+ Set the leader repetition character to the ordinary or special
+ character C. Recall *note Tabs and Leaders::: when encountering a
+ leader character in the input, the formatter writes as many dots
+ '.' as are necessary until reaching the next tab stop; this is the
+ "leader definition character". Omitting C unsets the leader
+ character. With no argument, GNU 'troff' treats leaders the same
+ as tabs. The leader repetition character is associated with the
+ environment (*note Environments::). Only a single C is recognized;
+ any excess is ignored.
+
+ A table of contents, for example, may define tab stops after a
+section number, a title, and a gap to be filled with leader dots. The
+page number follows the leader, after a right-aligned final tab stop
+wide enough to house the largest page number occurring in the document.
+
+ .ds entry1 19.\tThe Prophet\a\t98
+ .ds entry2 20.\tAll Astir\a\t101
+ .ta .5i 4.5i +.5iR
+ .nf
+ \*[entry1]
+ \*[entry2]
+ => 19. The Prophet............................. 98
+ => 20. All Astir............................... 101
+
+ (1) This is pronounced to rhyme with "feeder", and refers to how the
+glyphs "lead" the eye across the page to the corresponding page number
+or other datum.
+
+5.12.2 Fields
+-------------
+
+"Fields" are a more general way of laying out tabular data. A field is
+defined as the data between a pair of "delimiting characters". It
+contains substrings that are separated by "padding characters". The
+width of a field is the distance on the _input_ line from the position
+where the field starts to the next tab stop. A padding character
+inserts an adjustable space similar to TeX's '\hss' command (thus it can
+even be negative) to make the sum of all substring lengths plus the
+adjustable space equal to the field width. If more than one padding
+character is inserted, the available space is evenly distributed among
+them.
+
+ -- Request: .fc [delim-char [padding-char]]
+ Define a delimiting and a padding character for fields. If the
+ latter is missing, the padding character defaults to a space
+ character. If there is no argument at all, the field mechanism is
+ disabled (which is the default). In contrast to, e.g., the tab
+ repetition character, delimiting and padding characters are _not_
+ associated with the environment (*note Environments::).
+
+ .fc # ^
+ .ta T 3i
+ #foo^bar^smurf#
+ .br
+ #foo^^bar^smurf#
+ => foo bar smurf
+ => foo bar smurf
+
+5.13 Character Translations
+===========================
+
+A "translation" is a mapping of an input character to an output glyph.
+The mapping occurs at output time, i.e., the input character gets
+assigned the metric information of the mapped output character right
+before input tokens are converted to nodes (*note Gtroff Internals::,
+for more on this process).
+
+ -- Request: .tr abcd...
+ -- Request: .trin abcd...
+ Translate character A to glyph B, character C to glyph D, and so
+ on. If there is an odd number of characters in the argument, the
+ last one is translated to a fixed-width space (the same one
+ obtained by the '\<SP>' escape sequence).
+
+ The 'trin' request is identical to 'tr', but when you unformat a
+ diversion with 'asciify' it ignores the translation. *Note
+ Diversions::, for details about the 'asciify' request.
+
+ Some notes:
+
+ * Special characters ('\(XX', '\[XXX]', '\C'XXX'', '\'', '\`',
+ '\-', '\_'), glyphs defined with the 'char' request, and
+ numbered glyphs ('\N'XXX'') can be translated also.
+
+ * The '\e' escape can be translated also.
+
+ * Characters can be mapped onto the '\%' and '\~' escape
+ sequences (but '\%' and '\~' can't be mapped onto another
+ glyph).
+
+ * The following characters can't be translated: space (with one
+ exception, see below), backspace, newline, leader (and '\a'),
+ tab (and '\t').
+
+ * Translations are not considered for finding the soft hyphen
+ character set with the 'shc' request.
+
+ * The pair 'C\&' (an arbitrary character C followed by the dummy
+ character) maps this character to "nothing".
+
+ .tr a\&
+ foo bar
+ => foo br
+
+ Even the space character can be mapped to the dummy character.
+
+ .tr aa \&
+ foo bar
+ => foobar
+
+ As shown in the example, the space character can't be the
+ first character/glyph pair as an argument of 'tr'.
+ Additionally, it is not possible to map the space character to
+ any other glyph; requests like '.tr aa x' undo '.tr aa \&'
+ instead.
+
+ If justification is active, lines are justified in spite of
+ the 'empty' space character (but there is no minimal distance,
+ i.e., the space character, between words).
+
+ * After an output glyph has been constructed (this happens at
+ the moment immediately before the glyph is appended to an
+ output glyph list, either by direct output, in a macro,
+ diversion, or string), it is no longer affected by 'tr'.
+
+ * Translating character to glyphs where one of them or both are
+ undefined is possible also; 'tr' does not check whether the
+ elements of its argument exist.
+
+ *Note Gtroff Internals::.
+
+ * Without an argument, the 'tr' request is ignored.
+
+ -- Request: .trnt abcd...
+ 'trnt' is the same as the 'tr' request except that the translations
+ do not apply to text that is transparently throughput into a
+ diversion with '\!'. *Note Diversions::.
+
+ For example,
+
+ .tr ab
+ .di x
+ \!.tm a
+ .di
+ .x
+
+ prints 'b' to the standard error stream; if 'trnt' is used instead
+ of 'tr' it prints 'a'.
+
+5.14 'troff' and 'nroff' Modes
+==============================
+
+Historically, 'nroff' and 'troff' were two separate programs; the former
+for terminal output, the latter for typesetters. GNU 'troff' merges
+both functions into one executable(1) (*note troff and nroff
+Modes-Footnote-1::) that sends its output to a device driver ('grotty'
+for terminal devices, 'grops' for PostScript, and so on) which
+interprets this intermediate output format. When discussing AT&T
+'troff', it makes sense to talk about "'nroff' mode" and "'troff' mode"
+since the differences are hard-coded. GNU 'troff' takes information
+from device and font description files without handling requests
+specially if a terminal output device is used, so such a strong
+distinction is unnecessary.
+
+ Usually, a macro package can be used with all output devices.
+Nevertheless, it is sometimes necessary to make a distinction between
+terminal and non-terminal devices: GNU 'troff' provides two built-in
+conditions 'n' and 't' for the 'if', 'ie', and 'while' requests to
+decide whether GNU 'troff' shall behave like 'nroff' or like 'troff'.
+
+ -- Request: .troff
+ Make the 't' built-in condition true (and the 'n' built-in
+ condition false) for 'if', 'ie', and 'while' conditional requests.
+ This is the default if GNU 'troff' (_not_ 'groff') is started with
+ the '-R' switch to avoid loading of the startup files 'troffrc' and
+ 'troffrc-end'. Without '-R', GNU 'troff' stays in 'troff' mode if
+ the output device is not a terminal (e.g., 'ps').
+
+ -- Request: .nroff
+ Make the 'n' built-in condition true (and the 't' built-in
+ condition false) for 'if', 'ie', and 'while' conditional requests.
+ This is the default if GNU 'troff' uses a terminal output device;
+ the code for switching to 'nroff' mode is in the file 'tty.tmac',
+ which is loaded by the startup file 'troffrc'.
+
+ *Note Conditionals and Loops::, for more details on built-in
+conditions.
+
+ (1) A GNU 'nroff' program is available for convenience; it calls GNU
+'troff' to perform the formatting.
+
+5.15 Line Layout
+================
+
+The following drawing shows the dimensions that 'gtroff' uses for
+placing a line of output onto the page. They are labeled with the
+request that manipulates each dimension.
+
+ -->| in |<--
+ |<-----------ll------------>|
+ +----+----+----------------------+----+
+ | : : : |
+ +----+----+----------------------+----+
+ -->| po |<--
+ |<--------paper width---------------->|
+
+These dimensions are:
+
+'po'
+ "Page offset"--this is the leftmost position of text on the final
+ output, defining the "left margin".
+
+'in'
+ "Indentation"--this is the distance from the left margin where text
+ is printed.
+
+'ll'
+ "Line length"--this is the distance from the left margin to right
+ margin.
+
+ The right margin is not explicitly configured; the combination of
+page offset and line length provides the information necessary to derive
+it.
+
+ A simple demonstration:
+
+ .ll 3i
+ This is text without indentation.
+ The line length has been set to 3\~inches.
+ .in +.5i
+ .ll -.5i
+ Now the left and right margins are both increased.
+ .in
+ .ll
+ Calling .in and .ll without parameters restores
+ the previous values.
+
+ => This is text without indenta-
+ => tion. The line length has
+ => been set to 3 inches.
+ => Now the left and
+ => right margins are
+ => both increased.
+ => Calling .in and .ll without
+ => parameters restores the previ-
+ => ous values.
+
+ -- Request: .po [offset]
+ -- Request: .po +offset
+ -- Request: .po -offset
+ -- Register: \n[.o]
+ Set page offset to OFFSET (or increment or decrement its current
+ value by OFFSET). If invoked without an argument, the page offset
+ is restored to the value before the previous 'po' request. This
+ request does not cause a break; the page offset in effect when an
+ output line is broken prevails (*note Manipulating Filling and
+ Adjustment::). The initial value is 1i and the default scaling
+ unit is 'm'. On terminal devices, the page offset is set to zero
+ by a driver-specific macro file, 'tty.tmac'. The current page
+ offset can be found in the read-only register '.o'. This request
+ is incorrectly documented in the AT&T 'troff' manual as using a
+ default scaling unit of 'v'.
+
+ .po 3i
+ \n[.o]
+ => 720
+ .po -1i
+ \n[.o]
+ => 480
+ .po
+ \n[.o]
+ => 720
+
+ -- Request: .in [indent]
+ -- Request: .in +indent
+ -- Request: .in -indent
+ -- Register: \n[.i]
+ Set indentation to INDENT (or increment or decrement the current
+ value by INDENT). This request causes a break. Initially, there
+ is no indentation.
+
+ If 'in' is called without an argument, the indentation is reset to
+ the previous value before the last call to 'in'. The default
+ scaling unit is 'm'.
+
+ If a negative indentation value is specified (which is not
+ allowed), 'gtroff' emits a warning in category 'range' and sets the
+ indentation to zero.
+
+ The effect of 'in' is delayed until a partially collected line (if
+ it exists) is output. A temporary indentation value is reset to
+ zero also.
+
+ The current indentation (as set by 'in') can be found in the
+ read-only register '.i'. The indentation is associated with the
+ environment (*note Environments::).
+
+ -- Request: .ti offset
+ -- Request: .ti +offset
+ -- Request: .ti -offset
+ -- Register: \n[.in]
+ Temporarily indent the next output line by OFFSET. If an increment
+ or decrement value is specified, adjust the temporary indentation
+ relative to the value set by the 'in' request.
+
+ This request causes a break; its value is associated with the
+ environment (*note Environments::). The default scaling unit is
+ 'm'. A call of 'ti' without an argument is ignored.
+
+ If the total indentation value is negative (which is not allowed),
+ 'gtroff' emits a warning in category 'range' and sets the temporary
+ indentation to zero. 'Total indentation' is either OFFSET if
+ specified as an absolute value, or the temporary plus normal
+ indentation, if OFFSET is given as a relative value.
+
+ The effect of 'ti' is delayed until a partially collected line (if
+ it exists) is output.
+
+ The read-only register '.in' is the indentation that applies to the
+ current output line.
+
+ The difference between '.i' and '.in' is that the latter takes into
+ account whether a partially collected line still uses the old
+ indentation value or a temporary indentation value is active.
+
+ -- Request: .ll [length]
+ -- Request: .ll +length
+ -- Request: .ll -length
+ -- Register: \n[.l]
+ -- Register: \n[.ll]
+ Set the line length to LENGTH (or increment or decrement the
+ current value by LENGTH). Initially, the line length is set to
+ 6.5i. The effect of 'll' is delayed until a partially collected
+ line (if it exists) is output. The default scaling unit is 'm'.
+
+ If 'll' is called without an argument, the line length is reset to
+ the previous value before the last call to 'll'. If a negative
+ line length is specified (which is not allowed), 'gtroff' emits a
+ warning in category 'range' and sets the line length to zero. The
+ line length is associated with the environment (*note
+ Environments::).
+
+ The current line length (as set by 'll') can be found in the
+ read-only register '.l'. The read-only register '.ll' is the line
+ length that applies to the current output line.
+
+ Similar to '.i' and '.in', the difference between '.l' and '.ll' is
+ that the latter takes into account whether a partially collected
+ line still uses the old line length value.
+
+5.16 Line Continuation
+======================
+
+When filling is enabled, input and output line breaks generally do not
+correspond. The 'roff' language therefore distinguishes input and
+output line continuation.
+
+ -- Escape sequence: \<RET>
+ '\<RET>' (a backslash immediately followed by a newline) suppresses
+ the effects of that newline in the input. The next input line thus
+ retains the classification of its predecessor as a control or text
+ line. '\<RET>' is useful for managing line lengths in the input
+ during document maintenance; you can break an input line in the
+ middle of a request invocation, macro call, or escape sequence.
+ Input line continuation is invisible to the formatter, with two
+ exceptions: the '|' operator recognizes the new input line (*note
+ Numeric Expressions::), and the input line counter register '.c' is
+ incremented.
+
+ .ll 50n
+ .de I
+ . ft I
+ . nop \\$*
+ . ft
+ ..
+ Our film class watched
+ .I The Effect of Gamma Rays on Man-in-the-Moon
+ Marigolds. \" whoops, the input line wrapped
+ .br
+ .I My own opus begins on line \n[.c] \
+ and ends on line \n[.c].
+ => Our film class watched The Effect of Gamma Rays on
+ => Man-in-the-Moon Marigolds.
+ => My own opus begins on line 11 and ends on line 12.
+
+ -- Escape sequence: \c
+ -- Register: \n[.int]
+ '\c' continues an output line. Nothing after it on the input line
+ is formatted. In contrast to '\<RET>', a line after '\c' remains a
+ new input line, so a control character is recognized at its
+ beginning. The visual results depend on whether filling is
+ enabled; see *note Manipulating Filling and Adjustment::.
+
+ * If filling is enabled, a word interrupted with '\c' is
+ continued with the text on the next input text line, without
+ an intervening space.
+
+ This is a te\c
+ st.
+ => This is a test.
+
+ * If filling is disabled, the next input text line after '\c' is
+ handled as a continuation of the same input text line.
+
+ .nf
+ This is a \c
+ test.
+ => This is a test.
+
+ An intervening control line that causes a break overrides '\c',
+ flushing out the pending output line in the usual way.
+
+ The '.int' register contains a positive value if the last output
+ line was continued with '\c'; this datum is associated with the
+ environment (*note Environments::).(1) (*note Line
+ Continuation-Footnote-1::)
+
+ (1) Historically, the '\c' escape sequence has proven challenging to
+characterize. Some sources say it "connects the next input text" (to
+the input line on which it appears); others describe it as
+"interrupting" text, on the grounds that a text line is interrupted
+without breaking, perhaps to inject a request invocation or macro call.
+
+5.17 Page Layout
+================
+
+The formatter permits configuration of the page length and page number.
+
+ -- Request: .pl [length]
+ -- Request: .pl +length
+ -- Request: .pl -length
+ -- Register: \n[.p]
+ Change (increase or decrease) the page length per the numeric
+ expression LENGTH. The default scaling unit is 'v'. A negative
+ LENGTH is valid, but an uncommon application: it prevents page
+ location traps from being sprung,(1) (*note Page
+ Layout-Footnote-1::) and each output line is placed on a new page.
+ If LENGTH is invalid, GNU 'troff' emits a warning in category
+ 'number'. If LENGTH is absent or invalid, '11i' is assumed.
+
+ The read-only register '.p' interpolates the current page length.
+
+ -- Request: .pn num
+ -- Request: .pn +num
+ -- Request: .pn -num
+ -- Register: \n[.pn]
+ Change (increase or decrease) the page number of the _next_ page
+ per the numeric expression NUM. If NUM is invalid, GNU 'troff'
+ emits a warning in category 'number' and ignores the request.
+ Without an argument, 'pn' is ignored.
+
+ The read-only register '.pn' interpolates NUM if set by 'pn' on the
+ current page, or the current page number plus 1.
+
+ The formatter offers special support for typesetting headers and
+footers, collectively termed "titles". Titles have an independent line
+length, and their placement on the page is not restricted.
+
+ -- Request: .tl 'left'center'right'
+ Format an output line as a title consisting of LEFT, CENTER, and
+ RIGHT, each aligned accordingly. The delimiter need not be a
+ neutral apostrophe: 'tl' accepts the same delimiters as most escape
+ sequences; see *note Delimiters::. If not used as the delimiter,
+ any "page number character" character is replaced with the current
+ page number; the default is '%'; see the the 'pc' request below.
+ Without an argument, 'tl' is ignored. 'tl' writes the title line
+ immediately, ignoring any partially collected line.
+
+ It is not an error to omit delimiters after the first. For
+ example, '.tl /Thesis' is interpreted as '.tl /Thesis///': it sets
+ a title line comprising only the left-aligned word 'Thesis'.
+
+ -- Request: .lt [length]
+ -- Request: .lt +length
+ -- Request: .lt -length
+ -- Register: \n[.lt]
+ Change (increase or decrease) the line length used by titles per
+ the numeric expression LENGTH. The default scaling unit is 'm'.
+ If LENGTH is negative, GNU emits a warning in category 'range' and
+ treats LENGTH as '0'. If LENGTH is invalid, GNU 'troff' emits a
+ warning in category 'number' and ignores the request. The
+ formatter's default title length is '6.5i'. With no argument, the
+ title length is restored to the previous value. The title length
+ is is associated with the environment (*note Environments::).
+
+ The read-only register '.lt' interpolates the title line length.
+
+ -- Request: .pc [char]
+ Set the page number character to CHAR. With no argument, the page
+ number character is disabled. 'pc' does not affect the
+ register '%'.
+
+ The following example exercises title features.
+
+ .lt 50n
+ This is my partially collected
+ .tl 'Isomers 2023'%'Dextrose Edition'
+ line.
+ => Isomers 2023 1 Dextrose Edition
+ => This is my partially collected line.
+
+ We most often see titles used in page header and footer traps. *Note
+Traps::.
+
+ (1) *Note Traps::.
+
+5.18 Page Control
+=================
+
+Discretionary page breaks can prevent the unwanted separation of
+content. A new page number takes effect during page ejection; see *note
+The Implicit Page Trap::.
+
+ -- Request: .bp [page-number]
+ -- Request: .bp +page-number
+ -- Request: .bp -page-number
+ -- Register: \n[%]
+ Break the page and change (increase or decrease) the next page
+ number per the numeric expression PAGE-NUMBER. If PAGE-NUMBER is
+ invalid, GNU 'troff' emits a warning in category 'number' and
+ ignores the argument. This request causes a break. A page break
+ advances the vertical drawing position to the bottom of the page,
+ springing traps. *Note Page Location Traps::. 'bp' has effect
+ only if invoked within the top-level diversion.(1) (*note Page
+ Control-Footnote-1::) This request is incorrectly documented in the
+ AT&T 'troff' manual as having a default scaling unit of 'v'.
+
+ The register '%' interpolates the current page number.
+
+ .de BP
+ ' bp \" schedule page break once current line is output
+ ..
+
+ -- Request: .ne [space]
+ Force a page break if insufficient vertical space is available
+ (assert "needed" space). 'ne' tests the distance to the next page
+ location trap; see *note Page Location Traps::, and breaks the page
+ if that amount is less than SPACE. The default scaling unit is
+ 'v'. If SPACE is invalid, GNU 'troff' emits a warning in category
+ 'number' and ignores the argument. If SPACE is not specified, '1v'
+ is assumed.
+
+ We can require space for at least the first two output lines of a
+ paragraph, preventing its first line from being widowed at the page
+ bottom.
+
+ .ne 2v
+ Considering how common illness is,
+ how tremendous the spiritual change that it brings,
+ how astonishing,
+ when the lights of health go down,
+ the undiscovered countries that are then disclosed,
+ what wastes and deserts of the soul a slight attack
+ of influenza brings to view,
+
+ This method is reliable only if no output line is pending when 'ne'
+ is invoked. When macro packages are used, this is often not the
+ case: their paragraphing macros perform the break. You may need to
+ experiment with placing the 'ne' after the paragraphing macro, or
+ 'br' and 'ne' before it.
+
+ 'ne' is also useful to force grouping of section headings with
+ their subsequent paragraphs, or tables with their captions and/or
+ explanations. Macro packages often use 'ne' with diversions to
+ implement keeps and displays; see *note Diversions::. They may
+ also offer parameters for widow and orphan management.
+
+ -- Request: .sv [space]
+ -- Request: .os
+ Require vertical space as 'ne' does, but also save it for later
+ output by the 'os' request. If SPACE is available before the next
+ page location trap, it is output immediately. Both requests ignore
+ a partially collected line, taking effect at the next break. 'sv'
+ and 'os' ignore no-space mode (recall *note Manipulating
+ Spacing::). While the 'sv' request allows negative values for
+ SPACE, 'os' ignores them. The default scaling unit is 'v'. If
+ SPACE is not specified, '1v' is assumed.
+
+ -- Register: \n[nl]
+ 'nl' interpolates or sets the vertical drawing position. When the
+ formatter starts, the first page transition hasn't happened yet,
+ and 'nl' is negative. If a header trap has been planted on the
+ page (typically at vertical position '0'), you can assign a
+ negative value to 'nl' to spring it if that page has already
+ started (*note Page Location Traps::).
+
+ .de HD
+ . sp
+ . tl ''Goldbach Solution''
+ . sp
+ ..
+ .
+ First page.
+ .bp
+ .wh 0 HD \" plant header trap at top of page
+ .nr nl (-1)
+ Second page.
+ => First page.
+ =>
+ => (blank lines elided)
+ =>
+ => Goldbach Solution
+ =>
+ => (blank lines elided)
+ =>
+ => Second page.
+
+ Without resetting 'nl' to a negative value, the trap just planted
+ would be active beginning with the _next_ page, not the current
+ one.
+
+ *Note Diversions::, for a comparison of 'nl' with the '.h' and '.d'
+ registers.
+
+ (1) *Note Diversions::.
+
+5.19 Using Fonts
+================
+
+In digital typography, a "font" is a collection of characters in a
+specific typeface that a device can render as glyphs at a desired
+size.(1) (*note Using Fonts-Footnote-1::) A 'roff' formatter can change
+typefaces at any point in the text. The basic faces are a set of
+"styles" combining upright and slanted shapes with normal and heavy
+stroke weights: 'R', 'I', 'B', and 'BI'--these stand for roman, italic,
+bold, and bold-italic. For linguistic text, GNU 'troff' groups
+typefaces into "families" containing each of these styles.(2) (*note
+Using Fonts-Footnote-2::) A "text font" is thus often a family combined
+with a style, but it need not be: consider the 'ps' and 'pdf' devices'
+'ZCMI' (Zapf Chancery Medium italic)--often, no other style of Zapf
+Chancery Medium is provided. On typesetting devices, at least one
+"special font" is available, comprising "unstyled" glyphs for
+mathematical operators and other purposes.
+
+ Like AT&T 'troff', GNU 'troff' does not itself load or manipulate a
+digital font file;(3) (*note Using Fonts-Footnote-3::) instead it works
+with a "font description file" that characterizes it, including its
+glyph repertoire and the "metrics" (dimensions) of each glyph.(4)
+(*note Using Fonts-Footnote-4::) This information permits the formatter
+to accurately place glyphs with respect to each other. Before using a
+font description, the formatter associates it with a "mounting
+position", a place in an ordered list of available typefaces. So that a
+document need not be strongly coupled to a specific font family, in GNU
+'troff' an output device can associate a style in the abstract sense
+with a mounting position. Thus the default family can be combined with
+a style dynamically, producing a "resolved font name".
+
+ Fonts often have trademarked names, and even Free Software fonts can
+require renaming upon modification. 'groff' maintains a convention that
+a device's serif font family is given the name 'T' ("Times"), its
+sans-serif family 'H' ("Helvetica"), and its monospaced family 'C'
+("Courier"). Historical inertia has driven 'groff''s font identifiers
+to short uppercase abbreviations of font names, as with 'TR', 'TI',
+'TB', 'TBI', and a special font 'S'.
+
+ The default family used with abstract styles can be changed at any
+time; initially, it is 'T'. Typically, abstract styles are arranged in
+the first four mounting positions in the order shown above. The default
+mounting position, and therefore style, is always '1' ('R'). By issuing
+appropriate formatter instructions, you can override these defaults
+before your document writes its first glyph.
+
+ Terminal output devices cannot change font families and lack special
+fonts. They support style changes by overstriking, or by altering
+ISO 6429/ECMA-48 "graphic renditions" (character cell attributes).
+
+ (1) Terminals and some output devices have fonts that render at only
+one or two sizes. As examples of the latter, take the 'groff' 'lj4'
+device's Lineprinter, and 'lbp''s Courier and Elite faces.
+
+ (2) Font designers prepare families such that the styles share
+esthetic properties.
+
+ (3) Historically, the fonts 'troff's dealt with were not Free
+Software or, as with the Graphic Systems C/A/T, did not even exist in
+the digital domain.
+
+ (4) *Note Font Description File Format::.
+
+5.19.1 Selecting Fonts
+----------------------
+
+We use "font" to refer to any of several means of identifying a font: by
+mounting position ('3'), by abstract style ('B'), or by its identifier
+('TB').
+
+ -- Request: .ft [font]
+ -- Escape sequence: \ff
+ -- Escape sequence: \f(fn
+ -- Escape sequence: \f[font]
+ -- Register: \n[.fn]
+ The 'ft' request selects the typeface FONT. If the argument is
+ absent or 'P', it selects the previously chosen font. If FONT is a
+ non-negative integer, it is interpreted as mounting position; the
+ font mounted there is selected. If that position refers to an
+ abstract style, it is combined with the default family (see 'fam'
+ and '\F' below) to make a resolved font name. If the mounting
+ position is not a style and no font is mounted there, GNU 'troff'
+ emits a warning in category 'font' and ignores the request.
+
+ If FONT matches a style name, it is combined with the current
+ family to make a resolved font name. Otherwise, FONT is assumed to
+ already be a resolved font name.
+
+ The resolved font name is subject to translation (see request 'ftr'
+ below). Next, the (possibly translated) font name's mounting
+ position is looked up; if not mounted, FONT is sought on the file
+ system as a font description file and, if located, automatically
+ mounted at the next available position (see register '.fp' below).
+ If the font was mounted using an identifier different from its font
+ description file name (see request 'fp' below), that file name is
+ then looked up. If a font description file for the resolved font
+ name is not found, GNU 'troff' emits a warning in category 'font'
+ and ignores the request.
+
+ The '\f' escape sequence is similar, using one-character name (or
+ mounting position) F, two-character name FN, or a name FONT of
+ arbitrary length. '\f[]' selects the previous font. The syntax
+ form '\fP' is supported for backward compatibility, and '\f[P]' for
+ consistency.
+
+ eggs, bacon,
+ .ft I
+ spam,
+ .ft
+ and sausage.
+ .br
+ eggs, bacon, \fIspam,\fP and sausage.
+ => eggs, bacon, spam, and sausage
+ => eggs, bacon, spam, and sausage
+
+ The current and previously selected fonts are properties of the
+ environment (*note Environments::).
+
+ The read-only string-valued register '.fn' contains the resolved
+ font name of the selected font.
+
+ '\f' doesn't produce an input token in GNU 'troff'; it thus can be
+ used in requests that expect a single-character argument. We can
+ assign a font to a margin character as follows (*note
+ Miscellaneous::).
+
+ .mc \f[I]x\f[]
+
+ -- Request: .ftr f [g]
+ Translate font F to font G. Whenever a font named F is referred to
+ in a '\f' escape sequence, in the 'F' and 'S' conditional
+ operators, or in the 'ft', 'ul', 'bd', 'cs', 'tkf', 'special',
+ 'fspecial', 'fp', or 'sty' requests, font G is used. If G is
+ missing or equal to F the translation is undone.
+
+ Font translations cannot be chained.
+
+ .ftr XXX TR
+ .ftr XXX YYY
+ .ft XXX
+ error-> warning: can't find font 'XXX'
+
+ -- Request: .fzoom f [zoom]
+ -- Register: \n[.zoom]
+ Set magnification of font F to factor ZOOM, which must be a
+ non-negative integer multiple of 1/1000th. This request is useful
+ to adjust the optical size of a font in relation to the others. In
+ the example below, font 'CR' is magnified by 10% (the zoom factor
+ is thus 1.1).
+
+ .fam P
+ .fzoom CR 1100
+ .ps 12
+ Palatino and \f[CR]Courier\f[]
+
+ A missing or zero value of ZOOM is the same as a value of 1000,
+ which means no magnification. F must be a resolved font name, not
+ an abstract style.
+
+ The magnification of a font is completely transparent to GNU
+ 'troff'; a change of the zoom factor doesn't cause any effect
+ except that the dimensions of glyphs, (word) spaces, kerns, etc.,
+ of the affected font are adjusted accordingly.
+
+ The zoom factor of the current font is available in the read-only
+ register '.zoom', in multiples of 1/1000th. It returns zero if
+ there is no magnification.
+
+5.19.2 Font Families
+--------------------
+
+To accommodate the wide variety of fonts available, GNU 'troff'
+distinguishes "font families" and "font styles". A resolved font name
+is the catenation of a font family and a style. Selecting an abstract
+style causes GNU 'troff' to combine it with the default font family.
+
+ You can thus compose a document using abstract styles exclusively for
+its body or running text, selecting a specific family only for titles or
+examples, for instance, and change the default family on the command
+line (recall *note Groff Options::).
+
+ Fonts for the devices 'ps', 'pdf', 'dvi', 'lj4', 'lbp', and the X11
+devices support this mechanism. By default, GNU 'troff' uses the Times
+family with the four styles 'R', 'I', 'B', and 'BI'.
+
+ -- Request: .fam [family]
+ -- Register: \n[.fam]
+ -- Escape sequence: \Ff
+ -- Escape sequence: \F(fm
+ -- Escape sequence: \F[family]
+ Set the default font family, used in combination with abstract
+ styles to construct a resolved font name, to FAMILY (one-character
+ name F, two-character name FM). If no argument is given, GNU
+ 'troff' selects the previous font family; if there none, is it
+ falls back to the device's default(1) (*note Font
+ Families-Footnote-1::) or its own ('T').
+
+ The '\F' escape sequence works similarly. In disanalogy to '\f',
+ '\FP' makes 'P' the default family. Use '\F[]' to select the
+ previous default family. The default font family is available in
+ the read-only string-valued register '.fam'; it is associated with
+ the environment (*note Environments::).
+
+ spam, \" startup defaults are T (Times) R (roman)
+ .fam H \" make Helvetica the default family
+ spam, \" family H + style R = HR
+ .ft B \" family H + style B = HB
+ spam,
+ .ft CR \" Courier roman (default family not changed)
+ spam,
+ .ft \" back to Helvetica bold
+ spam,
+ .fam T \" make Times the default family
+ spam, \" family T + style B = TB
+ .ft AR \" font AR (not a style)
+ baked beans,
+ .ft R \" family T + style R = TR
+ and spam.
+
+ '\F' doesn't produce an input token in GNU 'troff'. As a
+ consequence, it can be used in requests like 'mc' (which expects a
+ single character as an argument) to change the font family on the
+ fly.
+
+ .mc \F[P]x\F[]
+
+ -- Request: .sty n style
+ -- Register: \n[.sty]
+ Associate an abstract style STYLE with mounting position N, which
+ must be a non-negative integer. If the requests 'cs', 'bd', 'tkf',
+ 'uf', or 'fspecial' are applied to an abstract style, they are
+ instead applied to the member of the current family corresponding
+ to that style.
+
+ The default family can be set with the '-f' option (*note Groff
+ Options::). The 'styles' command in the 'DESC' file controls which
+ font positions (if any) are initially associated with abstract
+ styles rather than fonts.
+
+ *Caution:* The STYLE argument is not validated. Errors may occur
+ later, when the formatter attempts to construct a resolved font
+ name, or format a character for output.
+
+ .nr BarPos \n[.fp]
+ .sty \n[.fp] Bar
+ .fam Foo
+ .ft \n[BarPos]
+ .tm .f=\n[.f]
+ A
+ error-> error: no font family named 'Foo' exists
+ error-> .f=41
+ error-> error: cannot format glyph: no current font
+
+ When an abstract style has been selected, the read-only
+ string-valued register '.sty' interpolates its name; this datum is
+ associated with the environment (*note Environments::). Otherwise,
+ '.sty' interpolates nothing.
+
+ (1) *Note DESC File Format::.
+
+5.19.3 Font Positions
+---------------------
+
+To support typeface indirection through abstract styles, and for
+compatibility with AT&T 'troff', the formatter maintains a list of font
+"positions" at which fonts required by a document are "mounted". An
+output device's description file 'DESC' typically configures a set of
+pre-mounted fonts; see *note Device and Font Description Files::. A
+font need not be explicitly mounted before it is selected; GNU 'troff'
+will search 'GROFF_FONT_PATH' for it by name and mount it at the first
+free mounting position on demand.
+
+ -- Request: .fp pos id [font-description-file-name]
+ -- Register: \n[.f]
+ -- Register: \n[.fp]
+ Mount a font under the name ID at mounting position POS, a
+ non-negative integer. When the formatter starts up, it reads the
+ output device's description to mount an initial set of faces, and
+ selects font position 1. Position 0 is unused by default. Unless
+ the FONT-DESCRIPTION-FILE-NAME argument is given, ID should be the
+ name of a font description file stored in a directory corresponding
+ to the selected output device. GNU 'troff' does not traverse
+ directories to locate the font description file.
+
+ The optional third argument enables font names to be aliased, which
+ can be necessary in compatibility mode since AT&T 'troff' syntax
+ affords no means of identifying fonts with names longer than two
+ characters, like 'TBI' or 'ZCMI', in a font selection escape
+ sequence. *Note Compatibility Mode::. You can also alias fonts on
+ mounting for convenience or abstraction. (See below regarding the
+ '.fp' register.)
+
+ .fp \n[.fp] SC ZCMI
+ Send a \f(SChand-written\fP thank-you note.
+ .fp \n[.fp] Emph TI
+ .fp \n[.fp] Strong TB
+ Are \f[Emph]these names\f[] \f[Strong]comfortable\f[]?
+
+ 'DESC', 'P', and non-negative integers are not usable as font
+ identifiers.
+
+ The position of the currently selected font (or abstract style) is
+ available in the read-only register '.f'. It is associated with
+ the environment (*note Environments::).
+
+ You can copy the value of '.f' to another register to save it for
+ later use.
+
+ .nr saved-font \n[.f]
+ ... text involving many font changes ...
+ .ft \n[saved-font]
+
+ The index of the next (non-zero) free font position is available in
+ the read-only register '.fp'. Fonts not listed in the 'DESC' file
+ are automatically mounted at position '\n[.fp]' when selected with
+ the 'ft' request or '\f' escape sequence. When mounting a font at
+ a position explicitly with the 'fp' request, this same practice
+ should be followed, although GNU 'troff' does not enforce this
+ strictly.
+
+5.19.4 Using Symbols
+--------------------
+
+A "glyph" is a graphical representation of a "character". While a
+character is an abstraction of semantic information, a glyph is
+something that can be seen on screen or paper. A character has many
+possible representation forms (for example, the character 'A' can be
+written in an upright or slanted typeface, producing distinct glyphs).
+Sometimes, a sequence of characters map to a single glyph: this is a
+"ligature"--the most common is 'fi'.
+
+ Space characters never become glyphs in GNU 'troff'. If not
+discarded (as when trailing on text lines), they are represented by
+horizontal motions in the output.
+
+ A "symbol" is simply a named glyph. Within 'gtroff', all glyph names
+of a particular font are defined in its font file. If the user requests
+a glyph not available in this font, 'gtroff' looks up an ordered list of
+"special fonts". By default, the PostScript output device supports the
+two special fonts 'SS' (slanted symbols) and 'S' (symbols) (the former
+is looked up before the latter). Other output devices use different
+names for special fonts. Fonts mounted with the 'fonts' keyword in the
+'DESC' file are globally available. To install additional special fonts
+locally (i.e., for a particular font), use the 'fspecial' request.
+
+ Here are the exact rules how 'gtroff' searches a given symbol:
+
+ * If the symbol has been defined with the 'char' request, use it.
+ This hides a symbol with the same name in the current font.
+
+ * Check the current font.
+
+ * If the symbol has been defined with the 'fchar' request, use it.
+
+ * Check whether the current font has a font-specific list of special
+ fonts; test all fonts in the order of appearance in the last
+ 'fspecial' call if appropriate.
+
+ * If the symbol has been defined with the 'fschar' request for the
+ current font, use it.
+
+ * Check all fonts in the order of appearance in the last 'special'
+ call.
+
+ * If the symbol has been defined with the 'schar' request, use it.
+
+ * As a last resort, consult all fonts loaded up to now for special
+ fonts and check them, starting with the lowest font number. This
+ can sometimes lead to surprising results since the 'fonts' line in
+ the 'DESC' file often contains empty positions, which are filled
+ later on. For example, consider the following:
+
+ fonts 3 0 0 FOO
+
+ This mounts font 'foo' at font position 3. We assume that 'FOO' is
+ a special font, containing glyph 'foo', and that no font has been
+ loaded yet. The line
+
+ .fspecial BAR BAZ
+
+ makes font 'BAZ' special only if font 'BAR' is active. We further
+ assume that 'BAZ' is really a special font, i.e., the font
+ description file contains the 'special' keyword, and that it also
+ contains glyph 'foo' with a special shape fitting to font 'BAR'.
+ After executing 'fspecial', font 'BAR' is loaded at font
+ position 1, and 'BAZ' at position 2.
+
+ We now switch to a new font 'XXX', trying to access glyph 'foo'
+ that is assumed to be missing. There are neither font-specific
+ special fonts for 'XXX' nor any other fonts made special with the
+ 'special' request, so 'gtroff' starts the search for special fonts
+ in the list of already mounted fonts, with increasing font
+ positions. Consequently, it finds 'BAZ' before 'FOO' even for
+ 'XXX', which is not the intended behaviour.
+
+ *Note Device and Font Description Files::, and *note Special Fonts::,
+for more details.
+
+ The 'groff_char(7)' man page houses a complete list of predefined
+special character names, but the availability of any as a glyph is
+device- and font-dependent. For example, say
+
+ man -Tdvi groff_char > groff_char.dvi
+
+to obtain those available with the DVI device and default font
+configuration.(1) (*note Using Symbols-Footnote-1::) If you want to use
+an additional macro package to change the fonts used, 'groff' (or
+'gtroff') must be run directly.
+
+ groff -Tdvi -mec -man groff_char.7 > groff_char.dvi
+
+ Special character names not listed in 'groff_char(7)' are derived
+algorithmically, using a simplified version of the Adobe Glyph List
+(AGL) algorithm, which is described in
+<https://github.com/adobe-type-tools/agl-aglfn>. The (frozen) set of
+names that can't be derived algorithmically is called the "'groff' glyph
+list (GGL)".
+
+ * A glyph for Unicode character U+XXXX[X[X]], which is not a
+ composite character is named 'uXXXX[X[X]]'. X must be an uppercase
+ hexadecimal digit. Examples: 'u1234', 'u008E', 'u12DB8'. The
+ largest Unicode value is 0x10FFFF. There must be at least four 'X'
+ digits; if necessary, add leading zeroes (after the 'u'). No zero
+ padding is allowed for character codes greater than 0xFFFF.
+ Surrogates (i.e., Unicode values greater than 0xFFFF represented
+ with character codes from the surrogate area U+D800-U+DFFF) are not
+ allowed either.
+
+ * A glyph representing more than a single input character is named
+
+ 'u' COMPONENT1 '_' COMPONENT2 '_' COMPONENT3 ...
+
+ Example: 'u0045_0302_0301'.
+
+ For simplicity, all Unicode characters that are composites must be
+ maximally decomposed to NFD;(2) (*note Using Symbols-Footnote-2::)
+ for example, 'u00CA_0301' is not a valid glyph name since U+00CA
+ (LATIN CAPITAL LETTER E WITH CIRCUMFLEX) can be further decomposed
+ into U+0045 (LATIN CAPITAL LETTER E) and U+0302 (COMBINING
+ CIRCUMFLEX ACCENT). 'u0045_0302_0301' is thus the glyph name for
+ U+1EBE, LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE.
+
+ * groff maintains a table to decompose all algorithmically derived
+ glyph names that are composites itself. For example, 'u0100'
+ (LATIN LETTER A WITH MACRON) is automatically decomposed into
+ 'u0041_0304'. Additionally, a glyph name of the GGL is preferred
+ to an algorithmically derived glyph name; 'groff' also
+ automatically does the mapping. Example: The glyph 'u0045_0302' is
+ mapped to '^E'.
+
+ * glyph names of the GGL can't be used in composite glyph names; for
+ example, '^E_u0301' is invalid.
+
+ -- Escape sequence: \(nm
+ -- Escape sequence: \[name]
+ -- Escape sequence: \[base-glyph combining-component ...]
+ Typeset a special character NAME (two-character name NM) or a
+ composite glyph consisting of BASE-GLYPH overlaid with one or more
+ COMBINING-COMPONENTs. For example, '\[A ho]' is a capital letter
+ "A" with a "hook accent" (ogonek).
+
+ There is no special syntax for one-character names--the analogous
+ form '\N' would collide with other escape sequences. However, the
+ four escape sequences '\'', '\-', '\_', and '\`', are translated on
+ input to the special character escape sequences '\[aa]', '\[-]',
+ '\[ul]', and '\[ga]', respectively.
+
+ A special character name of length one is not the same thing as an
+ ordinary character: that is, the character 'a' is not the same as
+ '\[a]'.
+
+ If NAME is undefined, a warning in category 'char' is produced and
+ the escape is ignored. *Note Warnings::, for information about the
+ enablement and suppression of warnings.
+
+ GNU 'troff' resolves '\[...]' with more than a single component as
+ follows:
+
+ * Any component that is found in the GGL is converted to the
+ 'uXXXX' form.
+
+ * Any component 'uXXXX' that is found in the list of
+ decomposable glyphs is decomposed.
+
+ * The resulting elements are then concatenated with '_' in
+ between, dropping the leading 'u' in all elements but the
+ first.
+
+ No check for the existence of any component (similar to 'tr'
+ request) is done.
+
+ Examples:
+
+ '\[A ho]'
+ 'A' maps to 'u0041', 'ho' maps to 'u02DB', thus the final
+ glyph name would be 'u0041_02DB'. This is not the expected
+ result: the ogonek glyph 'ho' is a spacing ogonek, but for a
+ proper composite a non-spacing ogonek (U+0328) is necessary.
+ Looking into the file 'composite.tmac', one can find
+ '.composite ho u0328', which changes the mapping of 'ho' while
+ a composite glyph name is constructed, causing the final glyph
+ name to be 'u0041_0328'.
+
+ '\[^E u0301]'
+ '\[^E aa]'
+ '\[E a^ aa]'
+ '\[E ^ ']'
+ '^E' maps to 'u0045_0302', thus the final glyph name is
+ 'u0045_0302_0301' in all forms (assuming proper calls of the
+ 'composite' request).
+
+ It is not possible to define glyphs with names like 'A ho' within a
+ 'groff' font file. This is not really a limitation; instead, you
+ have to define 'u0041_0328'.
+
+ -- Escape sequence: \C'xxx'
+ Typeset the glyph of the special character XXX. Normally, it is
+ more convenient to use '\[XXX]', but '\C' has some advantages: it
+ is compatible with AT&T device-independent 'troff' (and therefore
+ available in compatibility mode(3) (*note Using
+ Symbols-Footnote-3::)) and can interpolate special characters with
+ ']' in their names. The delimiter need not be a neutral
+ apostrophe; see *note Delimiters::.
+
+ -- Request: .composite id1 id2
+ Map special character name ID1 to ID2 if ID1 is used in '\[...]'
+ with more than one component. See above for examples. This is a
+ strict rewriting of the special character name; no check is
+ performed for the existence of a glyph for either. A set of
+ default mappings for many accents can be found in the file
+ 'composite.tmac', loaded by the default 'troffrc' at startup.
+
+ -- Escape sequence: \N'n'
+ Typeset the glyph with code N in the current font ('n' is _not_ the
+ input character code). The number N can be any non-negative
+ decimal integer. Most devices only have glyphs with codes between
+ 0 and 255; the Unicode output device uses codes in the range
+ 0-65535. If the current font does not contain a glyph with that
+ code, special fonts are _not_ searched. The '\N' escape sequence
+ can be conveniently used in conjunction with the 'char' request:
+
+ .char \[phone] \f[ZD]\N'37'
+
+ The code of each glyph is given in the fourth column in the font
+ description file after the 'charset' command. It is possible to
+ include unnamed glyphs in the font description file by using a name
+ of '---'; the '\N' escape sequence is the only way to use these.
+
+ No kerning is applied to glyphs accessed with '\N'. The delimiter
+ need not be a neutral apostrophe; see *note Delimiters::.
+
+ A few escape sequences are also special characters.
+
+ -- Escape sequence: \'
+ An escaped neutral apostrophe is a synonym for '\[aa]' (acute
+ accent).
+
+ -- Escape sequence: \`
+ An escaped grave accent is a synonym for '\[ga]' (grave accent).
+
+ -- Escape sequence: \-
+ An escaped hyphen-minus is a synonym for '\[-]' (minus sign).
+
+ -- Escape sequence: \_
+ An escaped underscore ("low line") is a synonym for '\[ul]'
+ (underrule). On typesetting devices, the underrule is
+ font-invariant and drawn lower than the underscore '_'.
+
+ -- Request: .cflags n c1 c2 ...
+ Assign properties encoded by the number N to characters C1, C2, and
+ so on.
+
+ Input characters, including special characters introduced by an
+ escape, have certain properties associated with them.(4) (*note
+ Using Symbols-Footnote-4::) These properties can be modified with
+ this request. The first argument is the sum of the desired flags
+ and the remaining arguments are the characters to be assigned those
+ properties. Spaces between the CN arguments are optional. Any
+ argument CN can be a character class defined with the 'class'
+ request rather than an individual character. *Note Character
+ Classes::.
+
+ The non-negative integer N is the sum of any of the following.
+ Some combinations are nonsensical, such as '33' (1 + 32).
+
+ '1'
+ Recognize the character as ending a sentence if followed by a
+ newline or two spaces. Initially, characters '.?!' have this
+ property.
+
+ '2'
+ Enable breaks before the character. A line is not broken at a
+ character with this property unless the characters on each
+ side both have non-zero hyphenation codes. This exception can
+ be overridden by adding 64. Initially, no characters have
+ this property.
+
+ '4'
+ Enable breaks after the character. A line is not broken at a
+ character with this property unless the characters on each
+ side both have non-zero hyphenation codes. This exception can
+ be overridden by adding 64. Initially, characters
+ '\-\[hy]\[em]' have this property.
+
+ '8'
+ Mark the glyph associated with this character as overlapping
+ other instances of itself horizontally. Initially, characters
+ '\[ul]\[rn]\[ru]\[radicalex]\[sqrtex]' have this property.
+
+ '16'
+ Mark the glyph associated with this character as overlapping
+ other instances of itself vertically. Initially, the
+ character '\[br]' has this property.
+
+ '32'
+ Mark the character as transparent for the purpose of
+ end-of-sentence recognition. In other words, an
+ end-of-sentence character followed by any number of characters
+ with this property is treated as the end of a sentence if
+ followed by a newline or two spaces. This is the same as
+ having a zero space factor in TeX. Initially, characters
+ '"')]*\[dg]\[dd]\[rq]\[cq]' have this property.
+
+ '64'
+ Ignore hyphenation codes of the surrounding characters. Use
+ this in combination with values 2 and 4 (initially, no
+ characters have this property).
+
+ For example, if you need an automatic break point after the
+ en-dash in numeric ranges like "3000-5000", insert
+
+ .cflags 68 \[en]
+
+ into your document. However, this practice can lead to bad
+ layout if done thoughtlessly; in most situations, a better
+ solution instead of changing the 'cflags' value is to insert
+ '\:' right after the hyphen at the places that really need a
+ break point.
+
+ The remaining values were implemented for East Asian language
+ support; those who use alphabetic scripts exclusively can disregard
+ them.
+
+ '128'
+ Prohibit a line break before the character, but allow a line
+ break after the character. This works only in combination
+ with flags 256 and 512 and has no effect otherwise.
+ Initially, no characters have this property.
+
+ '256'
+ Prohibit a line break after the character, but allow a line
+ break before the character. This works only in combination
+ with flags 128 and 512 and has no effect otherwise.
+ Initially, no characters have this property.
+
+ '512'
+ Allow line break before or after the character. This works
+ only in combination with flags 128 and 256 and has no effect
+ otherwise. Initially, no characters have this property.
+
+ In contrast to values 2 and 4, the values 128, 256, and 512 work
+ pairwise. If, for example, the left character has value 512, and
+ the right character 128, no break will be automatically inserted
+ between them. If we use value 6 instead for the left character, a
+ break after the character can't be suppressed since the neighboring
+ character on the right doesn't get examined.
+
+ -- Request: .char c [contents]
+ -- Request: .fchar c [contents]
+ -- Request: .fschar f c [contents]
+ -- Request: .schar c [contents]
+ Define a new character or glyph C to be CONTENTS, which can be
+ empty. More precisely, 'char' defines a 'groff' object (or
+ redefines an existing one) that is accessed with the name C on
+ input, and produces CONTENTS on output. Every time glyph C needs
+ to be printed, CONTENTS is processed in a temporary environment and
+ the result is wrapped up into a single object. Compatibility mode
+ is turned off and the escape character is set to '\' while CONTENTS
+ is processed. Any emboldening, constant spacing, or track kerning
+ is applied to this object rather than to individual glyphs in
+ CONTENTS.
+
+ An object defined by these requests can be used just like a normal
+ glyph provided by the output device. In particular, other
+ characters can be translated to it with the 'tr' or 'trin'
+ requests; it can be made the leader character with the 'lc'
+ request; repeated patterns can be drawn with it using the '\l' and
+ '\L' escape sequences; and words containing C can be hyphenated
+ correctly if the 'hcode' request is used to give the object a
+ hyphenation code.
+
+ There is a special anti-recursion feature: use of the object within
+ its own definition is handled like a normal character (not defined
+ with 'char').
+
+ The 'tr' and 'trin' requests take precedence if 'char' accesses the
+ same symbol.
+
+ .tr XY
+ X
+ => Y
+ .char X Z
+ X
+ => Y
+ .tr XX
+ X
+ => Z
+
+ The 'fchar' request defines a fallback glyph: 'gtroff' only checks
+ for glyphs defined with 'fchar' if it cannot find the glyph in the
+ current font. 'gtroff' carries out this test before checking
+ special fonts.
+
+ 'fschar' defines a fallback glyph for font F: 'gtroff' checks for
+ glyphs defined with 'fschar' after the list of fonts declared as
+ font-specific special fonts with the 'fspecial' request, but before
+ the list of fonts declared as global special fonts with the
+ 'special' request.
+
+ Finally, the 'schar' request defines a global fallback glyph:
+ 'gtroff' checks for glyphs defined with 'schar' after the list of
+ fonts declared as global special fonts with the 'special' request,
+ but before the already mounted special fonts.
+
+ *Note Character Classes::.
+
+ -- Request: .rchar c ...
+ -- Request: .rfschar f c ...
+ Remove definition of each ordinary or special character C, undoing
+ the effect of a 'char', 'fchar', or 'schar' request. Those
+ supplied by font description files cannot be removed. Spaces and
+ tabs may separate C arguments.
+
+ The request 'rfschar' removes glyph definitions defined with
+ 'fschar' for font F.
+
+ (1) Not all versions of the 'man' program support the '-T' option;
+use the subsequent example for an alternative.
+
+ (2) This is "Normalization Form D" as documented in Unicode Standard
+Annex #15 (<https://unicode.org/reports/tr15/>).
+
+ (3) *Note Compatibility Mode::.
+
+ (4) Output glyphs don't--to GNU 'troff', a glyph is simply a box with
+an index into a font, a given height above and depth below the baseline,
+and a width.
+
+5.19.5 Character Classes
+------------------------
+
+Classes are particularly useful for East Asian languages such as
+Chinese, Japanese, and Korean, where the number of needed characters is
+much larger than in European languages, and where large sets of
+characters share the same properties.
+
+ -- Request: .class name c1 c2 ...
+ Define a character class (or simply "class") NAME comprising the
+ characters C1, C2, and so on.
+
+ A class thus defined can then be referred to in lieu of listing all
+ the characters within it. Currently, only the 'cflags' request can
+ handle references to character classes.
+
+ In the request's simplest form, each CN is a character (or special
+ character).
+
+ .class [quotes] ' \[aq] \[dq] \[oq] \[cq] \[lq] \[rq]
+
+ Since class and glyph names share the same name space, it is
+ recommended to start and end the class name with '[' and ']',
+ respectively, to avoid collisions with existing character names
+ defined by GNU 'troff' or the user (with 'char' and related
+ requests). This practice applies the presence of ']' in the class
+ name to prevent the use of the special character escape form
+ '\[...]', thus you must use the '\C' escape to access a class with
+ such a name.
+
+ You can also use a character range notation consisting of a start
+ character followed by '-' and then an end character. Internally,
+ GNU 'troff' converts these two symbol names to Unicode code points
+ (according to the 'groff' glyph list [GGL]), which then give the
+ start and end value of the range. If that fails, the class
+ definition is skipped.
+
+ Furthermore, classes can be nested.
+
+ .class [prepunct] , : ; > }
+ .class [prepunctx] \C'[prepunct]' \[u2013]-\[u2016]
+
+ The class '[prepunctx]' thus contains the contents of the class
+ '[prepunct]' as defined above (the set ', : ; > }'), and characters
+ in the range between 'U+2013' and 'U+2016'.
+
+ If you want to include '-' in a class, it must be the first
+ character value in the argument list, otherwise it gets
+ misinterpreted as part of the range syntax.
+
+ It is not possible to use class names as end points of range
+ definitions.
+
+ A typical use of the 'class' request is to control line-breaking
+ and hyphenation rules as defined by the 'cflags' request. For
+ example, to inhibit line breaks before the characters belonging to
+ the 'prepunctx' class defined in the previous example, you can
+ write the following.
+
+ .cflags 2 \C'[prepunctx]'
+
+ See the 'cflags' request in *note Using Symbols::, for more
+ details.
+
+5.19.6 Special Fonts
+--------------------
+
+Special fonts are those that 'gtroff' searches when it cannot find the
+requested glyph in the current font. The Symbol font is usually a
+special font.
+
+ 'gtroff' provides the following two requests to add more special
+fonts. *Note Using Symbols::, for a detailed description of the glyph
+searching mechanism in 'gtroff'.
+
+ Usually, only non-TTY devices have special fonts.
+
+ -- Request: .special [s1 s2 ...]
+ -- Request: .fspecial f [s1 s2 ...]
+ Use the 'special' request to define special fonts. Initially, this
+ list is empty.
+
+ Use the 'fspecial' request to designate special fonts only when
+ font F is active. Initially, this list is empty.
+
+ Previous calls to 'special' or 'fspecial' are overwritten; without
+ arguments, the particular list of special fonts is set to empty.
+ Special fonts are searched in the order they appear as arguments.
+
+ All fonts that appear in a call to 'special' or 'fspecial' are
+ loaded.
+
+ *Note Using Symbols::, for the exact search order of glyphs.
+
+5.19.7 Artificial Fonts
+-----------------------
+
+There are a number of requests and escape sequences for artificially
+creating fonts. These are largely vestiges of the days when output
+devices did not have a wide variety of fonts, and when 'nroff' and
+'troff' were separate programs. Most of them are no longer necessary in
+GNU 'troff'. Nevertheless, they are supported.
+
+ -- Escape sequence: \H'height'
+ -- Escape sequence: \H'+height'
+ -- Escape sequence: \H'-height'
+ -- Register: \n[.height]
+ Change (increment, decrement) the height of the current font, but
+ not the width. If HEIGHT is zero, restore the original height.
+ Default scaling unit is 'z'.
+
+ The read-only register '.height' contains the font height as set by
+ '\H'.
+
+ Currently, only the '-Tps' and '-Tpdf' devices support this
+ feature.
+
+ '\H' doesn't produce an input token in GNU 'troff'. As a
+ consequence, it can be used in requests like 'mc' (which expects a
+ single character as an argument) to change the font on the fly:
+
+ .mc \H'+5z'x\H'0'
+
+ In compatibility mode, 'gtroff' behaves differently: If an
+ increment or decrement is used, it is always taken relative to the
+ current type size and not relative to the previously selected font
+ height. Thus,
+
+ .cp 1
+ \H'+5'test \H'+5'test
+
+ prints the word 'test' twice with the same font height (five points
+ larger than the current font size).
+
+ -- Escape sequence: \S'slant'
+ -- Register: \n[.slant]
+ Slant the current font by SLANT degrees. Positive values slant to
+ the right. Only integer values are possible.
+
+ The read-only register '.slant' contains the font slant as set by
+ '\S'.
+
+ Currently, only the '-Tps' and '-Tpdf' devices support this
+ feature.
+
+ '\S' doesn't produce an input token in GNU 'troff'. As a
+ consequence, it can be used in requests like 'mc' (which expects a
+ single character as an argument) to change the font on the fly:
+
+ .mc \S'20'x\S'0'
+
+ This escape is incorrectly documented in the AT&T 'troff' manual;
+ the slant is always set to an absolute value.
+
+ -- Request: .ul [lines]
+ The 'ul' request normally underlines subsequent lines if a TTY
+ output device is used. Otherwise, the lines are printed in italics
+ (only the term 'underlined' is used in the following). The single
+ argument is the quantity of input lines to be underlined; with no
+ argument, the next line is underlined. If LINES is zero or
+ negative, stop the effects of 'ul' (if it was active). Requests
+ and empty lines do not count for computing the number of underlined
+ input lines, even if they produce some output like 'tl'. Lines
+ inserted by macros (e.g., invoked by a trap) do count.
+
+ At the beginning of 'ul', the current font is stored and the
+ underline font is activated. Within the span of a 'ul' request, it
+ is possible to change fonts, but after the last line affected by
+ 'ul' the saved font is restored.
+
+ This number of lines still to be underlined is associated with the
+ environment (*note Environments::). The underline font can be
+ changed with the 'uf' request.
+
+ The 'ul' request does not underline spaces.
+
+ -- Request: .cu [lines]
+ The 'cu' request is similar to 'ul' but underlines spaces as well
+ (if a TTY output device is used).
+
+ -- Request: .uf font
+ Set the underline font (globally) used by 'ul' and 'cu'. By
+ default, this is the font at position 2. FONT can be either a
+ non-negative font position or the name of a font.
+
+ -- Request: .bd font [offset]
+ -- Request: .bd font1 font2 [offset]
+ -- Register: \n[.b]
+ Embolden FONT by overstriking its glyphs offset by OFFSET units
+ minus one.
+
+ Two syntax forms are available.
+
+ * Imitate a bold font unconditionally. The first argument
+ specifies the font to embolden, and the second is the number
+ of basic units, minus one, by which the two glyphs are offset.
+ If the second argument is missing, emboldening is turned off.
+
+ FONT can be either a non-negative font position or the name of
+ a font.
+
+ OFFSET is available in the '.b' read-only register if a
+ special font is active; in the 'bd' request, its default unit
+ is 'u'.
+
+ * Imitate a bold form conditionally. Embolden FONT1 by OFFSET
+ only if font FONT2 is the current font. This request can be
+ issued repeatedly to set up different emboldening values for
+ different current fonts. If the second argument is missing,
+ emboldening is turned off for this particular current font.
+
+ This affects special fonts only (either set up with the
+ 'special' command in font files or with the 'fspecial'
+ request).
+
+ -- Request: .cs font [width [em-size]]
+ Switch to and from "constant glyph space mode". If activated, the
+ width of every glyph is WIDTH/36 ems. The em size is given
+ absolutely by EM-SIZE; if this argument is missing, the em value is
+ taken from the current font size (as set with the 'ps' request)
+ when the font is effectively in use. Without second and third
+ argument, constant glyph space mode is deactivated.
+
+ Default scaling unit for EM-SIZE is 'z'; WIDTH is an integer.
+
+5.19.8 Ligatures and Kerning
+----------------------------
+
+Ligatures are groups of characters that are run together, i.e, producing
+a single glyph. For example, the letters 'f' and 'i' can form a
+ligature 'fi' as in the word 'file'. This produces a cleaner look
+(albeit subtle) to the printed output. Usually, ligatures are not
+available in fonts for TTY output devices.
+
+ Most PostScript fonts support the fi and fl ligatures. The C/A/T
+typesetter that was the target of AT&T 'troff' also supported 'ff',
+'ffi', and 'ffl' ligatures. Advanced typesetters or 'expert' fonts may
+include ligatures for 'ft' and 'ct', although GNU 'troff' does not
+support these (yet).
+
+ Only the current font is checked for ligatures and kerns; neither
+special fonts nor special charcters defined with the 'char' request (and
+its siblings) are taken into account.
+
+ -- Request: .lg [flag]
+ -- Register: \n[.lg]
+ Switch the ligature mechanism on or off; if the parameter is
+ non-zero or missing, ligatures are enabled, otherwise disabled.
+ Default is on. The current ligature mode can be found in the
+ read-only register '.lg' (set to 1 or 2 if ligatures are enabled,
+ 0 otherwise).
+
+ Setting the ligature mode to 2 enables the two-character ligatures
+ (fi, fl, and ff) and disables the three-character ligatures (ffi
+ and ffl).
+
+ "Pairwise kerning" is another subtle typesetting mechanism that
+modifies the distance between a glyph pair to improve readability. In
+most cases (but not always) the distance is decreased. Typewriter-like
+fonts and fonts for terminals where all glyphs have the same width don't
+use kerning.
+
+ -- Request: .kern [flag]
+ -- Register: \n[.kern]
+ Switch kerning on or off. If the parameter is non-zero or missing,
+ enable pairwise kerning, otherwise disable it. The read-only
+ register '.kern' is set to 1 if pairwise kerning is enabled,
+ 0 otherwise.
+
+ If the font description file contains pairwise kerning information,
+ glyphs from that font are kerned. Kerning between two glyphs can
+ be inhibited by placing '\&' between them: 'V\&A'.
+
+ *Note Font Description File Format::.
+
+ "Track kerning" expands or reduces the space between glyphs. This
+can be handy, for example, if you need to squeeze a long word onto a
+single line or spread some text to fill a narrow column. It must be
+used with great care since it is usually considered bad typography if
+the reader notices the effect.
+
+ -- Request: .tkf f s1 n1 s2 n2
+ Enable track kerning for font F. If the current font is F the
+ width of every glyph is increased by an amount between N1 and N2
+ (N1, N2 can be negative); if the current type size is less than or
+ equal to S1 the width is increased by N1; if it is greater than or
+ equal to S2 the width is increased by N2; if the type size is
+ greater than or equal to S1 and less than or equal to S2 the
+ increase in width is a linear function of the type size.
+
+ The default scaling unit is 'z' for S1 and S2, 'p' for N1 and N2.
+
+ The track kerning amount is added even to the rightmost glyph in a
+ line; for large values it is thus recommended to increase the line
+ length by the same amount to compensate.
+
+5.19.9 Italic Corrections
+-------------------------
+
+When typesetting adjacent glyphs from typefaces of different slants, the
+space between them may require adjustment.
+
+ -- Escape sequence: \/
+ Apply an "italic correction": modify the spacing of the preceding
+ glyph so that the distance between it and the following glyph is
+ correct if the latter is of upright shape. For example, if an
+ italic 'f' is followed immediately by a roman right parenthesis,
+ then in many fonts the top right portion of the 'f' overlaps the
+ top left of the right parenthesis, which is ugly. Use this escape
+ sequence whenever an oblique glyph is immediately followed by an
+ upright glyph without any intervening space.
+
+ -- Escape sequence: \,
+ Apply a "left italic correction": modify the spacing of the
+ following glyph so that the distance between it and the preceding
+ glyph is correct if the latter is of upright shape. For example,
+ if a roman left parenthesis is immediately followed by an
+ italic 'f', then in many fonts the bottom left portion of the 'f'
+ overlaps the bottom of the left parenthesis, which is ugly. Use
+ this escape sequence whenever an upright glyph is followed
+ immediately by an oblique glyph without any intervening space.
+
+5.19.10 Dummy Characters
+------------------------
+
+As discussed in *note Requests and Macros::, the first character on an
+input line is treated specially. Further, formatting a glyph has many
+consequences on formatter state (*note Environments::). Occasionally,
+we want to escape this context or embrace some of those consequences
+without actually rendering a glyph to the output.
+
+ -- Escape sequence: \&
+ Interpolate a dummy character, which is constitutive of output but
+ invisible.(1) (*note Dummy Characters-Footnote-1::) Its presence
+ alters the interpretation context of a subsequent input character,
+ and enjoys several applications.
+
+ * Prevent insertion of extra space after an end-of-sentence
+ character.
+
+ Test.
+ Test.
+ => Test. Test.
+ Test.\&
+ Test.
+ => Test. Test.
+
+ * Prevent recognition of a control character.
+
+ .Test
+ error-> warning: macro 'Test' not defined
+ \&.Test
+ => .Test
+
+ * Prevent kerning between two glyphs.
+
+ * Translate a character to "nothing".
+
+ .tr JIjiK\&k\&UVuv
+ Post universitum, alea jacta est, OK?
+ => Post vniversitvm, alea iacta est, O?
+
+ The dummy character escape sequence sees use in macro definitions
+ as a means of ensuring that arguments are treated as text even if
+ they begin with spaces or control characters.
+
+ .de HD \" typeset a simple bold heading
+ . sp
+ . ft B
+ \&\\$1 \" exercise: remove the \&
+ . ft
+ . sp
+ ..
+ .HD .\|.\|.\|surprised?
+
+ One way to think about the dummy character is to imagine placing the
+symbol '&' in the input at a certain location; if doing so has all the
+side effects on formatting that you desire except for sticking an ugly
+ampersand in the midst of your text, the dummy character is what you
+want in its place.
+
+ -- Escape sequence: \)
+ Interpolate a transparent dummy character--one that is transparent
+ to end-of-sentence detection. It behaves as '\&', except that '\&'
+ is treated as letters and numerals normally are after '.', '?' and
+ '!'; '\&' cancels end-of-sentence detection, and '\)' does not.
+
+ .de Suffix-&
+ . nop \&\\$1
+ ..
+ .
+ .de Suffix-)
+ . nop \)\\$1
+ ..
+ .
+ Here's a sentence.\c
+ .Suffix-& '
+ Another one.\c
+ .Suffix-) '
+ And a third.
+ => Here's a sentence.' Another one.' And a third.
+
+ (1) Opinions of this escape sequence's name abound. "Zero-width
+space" is a popular misnomer: 'roff' formatters do not treat it like a
+space. Ossanna called it a "non-printing, zero-width character", but
+the character causes _output_ even though it does not "print". If no
+output line is pending, the dummy character starts one. Contrast an
+empty input document with one containing only '\&'. The former produces
+no output; the latter, a blank page.
+
+5.20 Manipulating Type Size and Vertical Spacing
+================================================
+
+These concepts were introduced in *note Page Geometry::. The height of
+a font's tallest glyph is one em, which is equal to the type size in
+points.(1) (*note Manipulating Type Size and Vertical
+Spacing-Footnote-1::) A vertical spacing of less than 120% of the type
+size can make a document hard to read. Larger proportions can be useful
+to spread the text for annotations or proofreader's marks. By default,
+GNU 'troff' uses 10 point type on 12 point spacing. Typographers call
+the difference between type size and vertical spacing "leading".(2)
+(*note Manipulating Type Size and Vertical Spacing-Footnote-2::)
+
+ (1) In text fonts, the tallest glyphs are typically parentheses.
+Unfortunately, in many cases the actual dimensions of the glyphs in a
+font do not closely match its declared type size! For example, in the
+standard PostScript font families, 10-point Times sets better with
+9-point Helvetica and 11-point Courier than if all three were used at
+10 points.
+
+ (2) Rhyme with "sledding"; mechanical typography used lead metal
+(Latin _plumbum_).
+
+5.20.1 Changing the Type Size
+-----------------------------
+
+ -- Request: .ps [size]
+ -- Request: .ps +size
+ -- Request: .ps -size
+ -- Escape sequence: \ssize
+ -- Register: \n[.s]
+ Use the 'ps' request or the '\s' escape sequence to change
+ (increase, decrease) the type size (in scaled points). Specify
+ SIZE as either an absolute type size, or as a relative change from
+ the current size. 'ps' with no argument restores the previous
+ size. The 'ps' request's default scaling unit is 'z'. The
+ requested size is rounded to the nearest valid size (with ties
+ rounding down) within the limits supported by the device. If the
+ requested size is non-positive, it is treated as 1u.
+
+ Type size alteration is incorrectly documented in the AT&T 'troff'
+ manual, which claims "if [the requested size] is invalid, the next
+ larger valid size will result, with a maximum of 36".(1) (*note
+ Changing the Type Size-Footnote-1::)
+
+ The read-only string-valued register '.s' interpolates the type
+ size in points as a decimal fraction; it is associated with the
+ environment (*note Environments::). To obtain the type size in
+ scaled points, interpolate the '.ps' register instead (*note Using
+ Fractional Type Sizes::).
+
+ The '\s' escape sequence supports a variety of syntax forms.
+
+ '\sN'
+ Set the type size to N points. N must be a single digit. If
+ N is 0, restore the previous size.
+
+ '\s+N'
+ '\s-N'
+ Increase or decrease the type size by N points. N must be
+ exactly one digit.
+
+ '\s(NN'
+ Set the type size to NN points. NN must be exactly two
+ digits.
+
+ '\s+(NN'
+ '\s-(NN'
+ '\s(+NN'
+ '\s(-NN'
+ Alter the type size in points by the two-digit value NN.
+
+ *Note Using Fractional Type Sizes::, for further syntactical forms
+ of the '\s' escape sequence that additionally accept decimal
+ fractions.
+
+ snap, snap,
+ .ps +2
+ grin, grin,
+ .ps +2
+ wink, wink, \s+2nudge, nudge,\s+8 say no more!
+ .ps 10
+
+ The '\s' escape sequence affects the environment immediately and
+doesn't produce an input token. Consequently, it can be used in
+requests like 'mc', which expects a single character as an argument, to
+change the type size on the fly.
+
+ .mc \s[20]x\s[0]
+
+ -- Request: .sizes s1 s2 ... sn [0]
+ The 'DESC' file specifies which type sizes are allowed by the
+ output device; see *note DESC File Format::. Use the 'sizes'
+ request to change this set of permissible sizes. Arguments are in
+ scaled points; see *note Using Fractional Type Sizes::. Each can
+ be a single type size (such as '12000'), or a range of sizes (such
+ as '4000-72000'). You can optionally end the list with a '0'.
+
+ (1) The claim appears to have been true of Ossanna 'troff' for the
+C/A/T device; Kernighan made device-independent 'troff' more flexible.
+
+5.20.2 Changing the Vertical Spacing
+------------------------------------
+
+ -- Request: .vs [space]
+ -- Request: .vs +space
+ -- Request: .vs -space
+ -- Register: \n[.v]
+ Set the vertical spacing to, or alter it by, SPACE. The default
+ scaling unit is 'p'. If 'vs' is called without an argument, the
+ vertical spacing is reset to the previous value before the last
+ call to 'vs'. GNU 'troff' emits a warning in category 'range' if
+ SPACE is negative; the vertical spacing is then set to the smallest
+ possible positive value, the vertical motion quantum (as found in
+ the '.V' register).
+
+ '.vs 0' isn't saved in a diversion since it doesn't result in a
+ vertical motion. You must explicitly issue this request before
+ interpolating the diversion.
+
+ The read-only register '.v' contains the vertical spacing; it is
+ associated with the environment (*note Environments::).
+
+When a break occurs, GNU 'troff' performs the following procedure.
+
+ * Move the drawing position vertically by the "extra pre-vertical
+ line space", the minimum of all negative '\x' escape sequence
+ arguments in the pending output line.
+
+ * Move the drawing position vertically by the vertical line spacing.
+
+ * Write out the pending output line.
+
+ * Move the drawing position vertically by the "extra post-vertical
+ line space", the maximum of all positive '\x' escape sequence
+ arguments in the line that has just been output.
+
+ * Move the drawing position vertically by the "post-vertical line
+ spacing" (see below).
+
+ Prefer 'vs' or 'pvs' over 'ls' to produce double-spaced documents.
+'vs' and 'pvs' have finer granularity than 'ls'; moreover, some
+preprocessors assume single spacing. *Note Manipulating Spacing::,
+regarding the '\x' escape sequence and the 'ls' request.
+
+ -- Request: .pvs [space]
+ -- Request: .pvs +space
+ -- Request: .pvs -space
+ -- Register: \n[.pvs]
+ Set the post-vertical spacing to, or alter it by, SPACE. The
+ default scaling unit is 'p'. If 'pvs' is called without an
+ argument, the post-vertical spacing is reset to the previous value
+ before the last call to 'pvs'. GNU 'troff' emits a warning in
+ category 'range' if SPACE is negative; the post-vertical spacing is
+ then set to zero.
+
+ The read-only register '.pvs' contains the post-vertical spacing;
+ it is associated with the environment (*note Environments::).
+
+5.20.3 Using Fractional Type Sizes
+----------------------------------
+
+AT&T 'troff' interpreted all type size measurements in points. Combined
+with integer arithmetic, this design choice made it impossible to
+support, for instance, ten and a half-point type. In GNU 'troff', an
+output device can select a scaling factor that subdivides a point into
+"scaled points". A type size expressed in scaled points can thus
+represent a non-integral type size.
+
+ A "scaled point" is equal to 1/SIZESCALE points, where SIZESCALE is
+specified in the device description file 'DESC', and defaults to 1.(1)
+(*note Using Fractional Type Sizes-Footnote-1::) Requests and escape
+sequences in GNU 'troff' interpret arguments that represent a type size
+in scaled points, which the formatter multiplies by SIZESCALE and
+converts to an integer. Arguments treated in this way comprise those to
+the escape sequences '\H' and '\s', to the request 'ps', the third
+argument to the 'cs' request, and the second and fourth arguments to the
+'tkf' request. Scaled points may be specified explicitly with the 'z'
+scaling unit.
+
+ For example, if SIZESCALE is 1000, then a scaled point is one
+thousandth of a point. The request '.ps 10.5' is synonymous with '.ps
+10.5z' and sets the type size to 10,500 scaled points, or 10.5 points.
+Consequently, in GNU 'troff', the register '.s' can interpolate a
+non-integral type size.
+
+ -- Register: \n[.ps]
+ This read-only register interpolates the type size in scaled
+ points; it is associated with the environment (*note
+ Environments::).
+
+ It makes no sense to use the 'z' scaling unit in a numeric expression
+whose default scaling unit is neither 'u' nor 'z', so GNU 'troff'
+disallows this. Similarly, it is nonsensical to use a scaling unit
+other than 'z' or 'u' in a numeric expression whose default scaling unit
+is 'z', and so GNU 'troff' disallows this as well.
+
+ Another GNU 'troff' scaling unit, 's', multiplies by the number of
+basic units in a scaled point. Thus, '\n[.ps]s' is equal to '1m' by
+definition. Do not confuse the 's' and 'z' scaling units.
+
+ -- Register: \n[.psr]
+ -- Register: \n[.sr]
+ Output devices may be limited in the type sizes they can employ.
+ The '.s' and '.ps' registers represent the type size selected by
+ the output driver as it understands a device's capability. The
+ last _requested_ type size is interpolated in scaled points by the
+ read-only register '.psr' and in points as a decimal fraction by
+ the read-only string-valued register '.sr'. Both are associated
+ with the environment (*note Environments::).
+
+ For example, if a type size of 10.95 points is requested, and the
+ nearest size permitted by a 'sizes' request (or by the 'sizes' or
+ 'sizescale' directives in the device's 'DESC' file) is 11 points,
+ the output driver uses the latter value.
+
+ The '\s' escape sequence offers the following syntax forms that work
+with fractional type sizes and accept scaling units. You may of course
+give them integral arguments. The delimited forms need not use the
+neutral apostrophe; see *note Delimiters::.
+
+'\s[N]'
+'\s'N''
+ Set the type size to N scaled points; N is a numeric expression
+ with a default scaling unit of 'z'.
+
+'\s[+N]'
+'\s[-N]'
+'\s+[N]'
+'\s-[N]'
+'\s'+N''
+'\s'-N''
+'\s+'N''
+'\s-'N''
+ Increase or decrease the type size by N scaled points; N is a
+ numeric expression (which may start with a minus sign) with a
+ default scaling unit of 'z'.
+
+ (1) *Note Device and Font Description Files::.
+
+5.21 Colors
+===========
+
+GNU 'troff' supports color output with a variety of color spaces and up
+to 16 bits per channel. Some devices, particularly terminals, may be
+more limited. When color support is enabled, two colors are current at
+any given time: the "stroke color", with which glyphs, rules (lines),
+and geometric objects like circles and polygons are drawn, and the "fill
+color", which can be used to paint the interior of a closed geometric
+figure.
+
+ -- Request: .color [n]
+ -- Register: \n[.color]
+ If N is missing or non-zero, enable the output of color-related
+ device-independent output commands (this is the default);
+ otherwise, disable them. This request sets a global flag; it does
+ not produce an input token (*note Gtroff Internals::).
+
+ The read-only register '.color' is 1 if colors are enabled,
+ 0 otherwise.
+
+ Color can also be disabled with the '-c' command-line option.
+
+ -- Request: .defcolor ident scheme color-component ...
+ Define a color named IDENT. SCHEME selects a color space and
+ determines the quantity of required COLOR-COMPONENTs; it must be
+ one of 'rgb' (three components), 'cmy' (three), 'cmyk' (four), or
+ 'gray' (one). 'grey' is accepted as a synonym of 'gray'. The
+ color components can be encoded as a single hexadecimal value
+ starting with '#' or '##'. The former indicates that each
+ component is in the range 0-255 (0-FF), the latter the range
+ 0-65,535 (0-FFFF).
+
+ .defcolor half gray #7f
+ .defcolor pink rgb #FFC0CB
+ .defcolor magenta rgb ##ffff0000ffff
+
+ Alternatively, each color component can be specified as a decimal
+ fraction in the range 0-1, interpreted using a default scaling unit
+ of 'f', which multiplies its value by 65,536 (but clamps it at
+ 65,535).
+
+ .defcolor gray50 rgb 0.5 0.5 0.5
+ .defcolor darkgreen rgb 0.1f 0.5f 0.2f
+
+ Each output device has a color named 'default', which cannot be
+redefined. A device's default stroke and fill colors are not
+necessarily the same. For the 'dvi', 'html', 'pdf', 'ps', and 'xhtml'
+output devices, GNU 'troff' automatically loads a macro file defining
+many color names at startup. By the same mechanism, the devices
+supported by 'grotty' recognize the eight standard ISO 6429/EMCA-48
+color names.(1) (*note Colors-Footnote-1::)
+
+ -- Request: .gcolor [color]
+ -- Escape sequence: \mc
+ -- Escape sequence: \m(co
+ -- Escape sequence: \m[color]
+ -- Register: \n[.m]
+ Set the stroke color to COLOR.
+
+ .gcolor red
+ The next words
+ .gcolor
+ \m[red]are in red\m[]
+ and these words are in the previous color.
+
+ The escape sequence '\m[]' restores the previous stroke color, as
+ does a 'gcolor' request without an argument.
+
+ The name of the current stroke color is available in the read-only
+ string-valued register '.m'; it is associated with the environment
+ (*note Environments::). It interpolates nothing when the stroke
+ color is the default.
+
+ '\m' doesn't produce an input token in GNU 'troff' (*note Gtroff
+ Internals::). It therefore can be used in requests like 'mc'
+ (which expects a single character as an argument) to change the
+ color on the fly:
+
+ .mc \m[red]x\m[]
+
+ -- Request: .fcolor [color]
+ -- Escape sequence: \Mc
+ -- Escape sequence: \M(co
+ -- Escape sequence: \M[color]
+ -- Register: \n[.M]
+ Set the fill color for objects drawn with '\D'...'' escape
+ sequences. The escape sequence '\M[]' restores the previous fill
+ color, as does an 'fcolor' request without an argument.
+
+ The name of the current fill color is available in the read-only
+ string-valued register '.M'; it is associated with the environment
+ (*note Environments::). It interpolates nothing when the fill
+ color is the default. '\M' doesn't produce an input token in GNU
+ 'troff'.
+
+ Create an ellipse with a red interior as follows.
+
+ \M[red]\h'0.5i'\D'E 2i 1i'\M[]
+
+ (1) also known vulgarly as "ANSI colors"
+
+5.22 Strings
+============
+
+GNU 'troff' supports strings primarily for user convenience.
+Conventionally, if one would define a macro only to interpolate a small
+amount of text, without invoking requests or calling any other macros,
+one defines a string instead. Only one string is predefined by the
+language.
+
+ -- String: \*[.T]
+ Contains the name of the output device (for example, 'utf8' or
+ 'pdf').
+
+ The 'ds' request creates a string with a specified name and contents
+and the '\*' escape sequence dereferences its name, interpolating its
+contents. If the string named by the '\*' escape sequence does not
+exist, it is defined as empty, nothing is interpolated, and a warning in
+category 'mac' is emitted. *Note Warnings::, for information about the
+enablement and suppression of warnings.
+
+ -- Request: .ds name [contents]
+ -- Request: .ds1 name [contents]
+ -- Escape sequence: \*n
+ -- Escape sequence: \*(nm
+ -- Escape sequence: \*[name [arg1 arg2 ...]]
+ Define a string called NAME with contents CONTENTS. If NAME
+ already exists as an alias, the target of the alias is redefined;
+ see 'als' and 'rm' below. If 'ds' is called with only one
+ argument, NAME is defined as an empty string. Otherwise, GNU
+ 'troff' stores CONTENTS in copy mode.(1) (*note
+ Strings-Footnote-1::)
+
+ The '\*' escape sequence interpolates a previously defined string
+ variable NAME (one-character name N, two-character name NM). The
+ bracketed interpolation form accepts arguments that are handled as
+ macro arguments are; recall *note Calling Macros::. In contrast to
+ macro calls, however, if a closing bracket ']' occurs in a string
+ argument, that argument must be enclosed in double quotes. '\*' is
+ interpreted even in copy mode. When defining strings, argument
+ interpolations must be escaped if they are to reference parameters
+ from the calling context; *Note Parameters::.
+
+ .ds cite (\\$1, \\$2)
+ Gray codes are explored in \*[cite Morgan 1998].
+ => Gray codes are explored in (Morgan, 1998).
+
+ *Caution:* Unlike other requests, the second argument to the 'ds'
+ request consumes the remainder of the input line, including
+ trailing spaces. This means that comments on a line with such a
+ request can introduce unwanted space into a string when they are
+ set off from the material they annotate, as is conventional.
+
+ .ds H2O H\v'+.3m'\s'-2'2\v'-.3m'\s0O \" water
+
+ Instead, place the comment on another line or put the comment
+ escape sequence immediately adjacent to the last character of the
+ string.
+
+ .ds H2O H\v'+.3m'\s'-2'2\v'-.3m'\s0O\" water
+
+ Ending string definitions (and appendments) with a comment, even an
+ empty one, prevents unwanted space from creeping into them during
+ source document maintenance.
+
+ .ds author Alice Pleasance Liddell\"
+ .ds empty \" might be appended to later with .as
+
+ An initial neutral double quote '"' in CONTENTS is stripped to
+ allow embedding of leading spaces. Any other '"' is interpreted
+ literally, but it is wise to use the special character escape
+ sequence '\[dq]' instead if the string might be interpolated as
+ part of a macro argument; see *note Calling Macros::.
+
+ .ds salutation " Yours in a white wine sauce,\"
+ .ds c-var-defn " char mydate[]=\[dq]2020-07-29\[dq];\"
+
+ Strings are not limited to a single input line of text. '\<RET>'
+ works just as it does elsewhere. The resulting string is stored
+ _without_ the newlines. Care is therefore required when
+ interpolating strings while filling is disabled.
+
+ .ds foo This string contains \
+ text on multiple lines \
+ of input.
+
+ It is not possible to embed a newline in a string that will be
+ interpreted as such when the string is interpolated. To achieve
+ that effect, use '\*' to interpolate a macro instead; see *note
+ Punning Names::.
+
+ Because strings are similar to macros, they too can be defined so
+ as to suppress AT&T 'troff' compatibility mode when used; see *note
+ Writing Macros:: and *note Compatibility Mode::. The 'ds1' request
+ defines a string such that compatibility mode is off when the
+ string is later interpolated. To be more precise, a "compatibility
+ save" input token is inserted at the beginning of the string, and a
+ "compatibility restore" input token at the end.
+
+ .nr xxx 12345
+ .ds aa The value of xxx is \\n[xxx].
+ .ds1 bb The value of xxx is \\n[xxx].
+ .
+ .cp 1
+ .
+ \*(aa
+ error-> warning: register '[' not defined
+ => The value of xxx is 0xxx].
+ \*(bb
+ => The value of xxx is 12345.
+
+ -- Request: .as name [contents]
+ -- Request: .as1 name [contents]
+ The 'as' request is similar to 'ds' but appends CONTENTS to the
+ string stored as NAME instead of redefining it. If NAME doesn't
+ exist yet, it is created. If 'as' is called with only one
+ argument, no operation is performed (beyond dereferencing the
+ string).
+
+ .as salutation " with shallots, onions and garlic,\"
+
+ The 'as1' request is similar to 'as', but compatibility mode is
+ switched off when the appended portion of the string is later
+ interpolated. To be more precise, a "compatibility save" input
+ token is inserted at the beginning of the appended string, and a
+ "compatibility restore" input token at the end.
+
+ Several requests exist to perform rudimentary string operations.
+Strings can be queried ('length') and modified ('chop', 'substring',
+'stringup', 'stringdown'), and their names can be manipulated through
+renaming, removal, and aliasing ('rn', 'rm', 'als').
+
+ -- Request: .length reg anything
+ Compute the number of characters of ANYTHING and store the count in
+ the register REG. If REG doesn't exist, it is created. ANYTHING
+ is read in copy mode.
+
+ .ds xxx abcd\h'3i'efgh
+ .length yyy \*[xxx]
+ \n[yyy]
+ => 14
+
+ -- Request: .chop object
+ Remove the last character from the macro, string, or diversion
+ named OBJECT. This is useful for removing the newline from the end
+ of a diversion that is to be interpolated as a string. This
+ request can be used repeatedly on the same OBJECT; see *note Gtroff
+ Internals::, for details on nodes inserted additionally by GNU
+ 'troff'.
+
+ -- Request: .substring str start [end]
+ Replace the string named STR with its substring bounded by the
+ indices START and END, inclusively. The first character in the
+ string has index 0. If END is omitted, it is implicitly set to the
+ largest valid value (the string length minus one). Negative
+ indices count backward from the end of the string: the last
+ character has index -1, the character before the last has index -2,
+ and so on.
+
+ .ds xxx abcdefgh
+ .substring xxx 1 -4
+ \*[xxx]
+ => bcde
+ .substring xxx 2
+ \*[xxx]
+ => de
+
+ -- Request: .stringdown str
+ -- Request: .stringup str
+ Alter the string named STR by replacing each of its bytes with its
+ lowercase ('stringdown') or uppercase ('stringup') version (if one
+ exists). Special characters in the string will often transform in
+ the expected way due to the regular naming convention for accented
+ characters. When they do not, use substrings and/or catenation.
+
+ .ds resume R\['e]sum\['e]
+ \*[resume]
+ .stringdown resume
+ \*[resume]
+ .stringup resume
+ \*[resume]
+ => Résumé résumé RÉSUMÉ
+
+ (In practice, we would end the 'ds' request with a comment escape
+'\"' to prevent space from creeping into the definition during source
+document maintenance.)
+
+ -- Request: .rn old new
+ Rename the request, macro, diversion, or string OLD to NEW.
+
+ -- Request: .rm name
+ Remove the request, macro, diversion, or string NAME. GNU 'troff'
+ treats subsequent invocations as if the name had never been
+ defined.
+
+ -- Request: .als new old
+ Create an alias NEW for the existing request, string, macro, or
+ diversion object named OLD, causing the names to refer to the same
+ stored object. If OLD is undefined, a warning in category 'mac' is
+ produced, and the request is ignored. *Note Warnings::, for
+ information about the enablement and suppression of warnings.
+
+ To understand how the 'als' request works, consider two different
+ storage pools: one for objects (macros, strings, etc.), and another
+ for names. As soon as an object is defined, GNU 'troff' adds it to
+ the object pool, adds its name to the name pool, and creates a link
+ between them. When 'als' creates an alias, it adds a new name to
+ the name pool that gets linked to the same object as the old name.
+
+ Now consider this example.
+
+ .de foo
+ ..
+ .
+ .als bar foo
+ .
+ .de bar
+ . foo
+ ..
+ .
+ .bar
+ error-> input stack limit exceeded (probable infinite
+ error-> loop)
+
+ In the above, 'bar' remains an _alias_--another name for--the
+ object referred to by 'foo', which the second 'de' request
+ replaces. Alternatively, imagine that the 'de' request
+ _dereferences_ its argument before replacing it. Either way, the
+ result of calling 'bar' is a recursive loop that finally leads to
+ an error. *Note Writing Macros::.
+
+ To remove an alias, call 'rm' on its name. The object itself is
+ not destroyed until it has no more names.
+
+ When a request, macro, string, or diversion is aliased,
+ redefinitions and appendments "write through" alias names. To
+ replace an alias with a separately defined object, you must use the
+ 'rm' request on its name first.
+
+ (1) *Note Copy Mode::.
+
+5.23 Conditionals and Loops
+===========================
+
+'groff' has 'if' and 'while' control structures like other languages.
+However, the syntax for grouping multiple input lines in the branches or
+bodies of these structures is unusual.
+
+5.23.1 Operators in Conditionals
+--------------------------------
+
+In 'if', 'ie', and 'while' requests, in addition to the numeric
+expressions described in *note Numeric Expressions::, several Boolean
+operators are available; the members of this expanded class are termed
+"conditional expressions".
+
+'c GLYPH'
+ True if GLYPH is available, where GLYPH is an ordinary character, a
+ special character '\(XX' or '\[XXX]', '\N'XXX'', or has been
+ defined by any of the 'char', 'fchar', 'fschar', or 'schar'
+ requests.
+
+'d NAME'
+ True if a string, macro, diversion, or request called NAME exists.
+
+'e'
+ True if the current page is even-numbered.
+
+'F FONT'
+ True if FONT exists. FONT is handled as if it were opened with the
+ 'ft' request (that is, font translation and styles are applied),
+ without actually mounting it.
+
+'m COLOR'
+ True if COLOR is defined.
+
+'n'
+ True if the document is being processed in 'nroff' mode. *Note
+ troff and nroff Modes::.
+
+'o'
+ True if the current page is odd-numbered.
+
+'r REGISTER'
+ True if REGISTER exists.
+
+'S STYLE'
+ True if STYLE is available for the current font family. Font
+ translation is applied.
+
+'t'
+ True if the document is being processed in 'troff' mode. *Note
+ troff and nroff Modes::.
+
+'v'
+ Always false. This condition is recognized only for compatibility
+ with certain other 'troff' implementations.(1) (*note Operators in
+ Conditionals-Footnote-1::)
+
+ If the first argument to an 'if', 'ie', or 'while' request begins
+with a non-alphanumeric character apart from '!' (see below); it
+performs an output comparison test. (2) (*note Operators in
+Conditionals-Footnote-2::)
+
+''XXX'YYY''
+ True if formatting the comparands XXX and YYY produces the same
+ output commands. The delimiter need not be a neutral apostrophe:
+ the output comparison operator accepts the same delimiters as most
+ escape sequences; see *note Delimiters::. This "output comparison
+ operator" formats XXX and YYY in separate environments; after the
+ comparison, the resulting data are discarded.
+
+ .ie "|"\fR|\fP" true
+ .el false
+ => true
+
+ The resulting glyph properties, including font family, style, size,
+ and slant, must match, but not necessarily the requests and/or
+ escape sequences used to obtain them. In the previous example, '|'
+ and '\fR|\fP' result in '|' glyphs in the same typefaces at the
+ same positions, so the comparands are equal. If '.ft I' had been
+ added before the '.ie', they would differ: the first '|' would
+ produce an italic '|', not a roman one. Motions must match in
+ orientation and magnitude to within the applicable horizontal and
+ vertical motion quanta of the device, after rounding. '.if
+ "\u\d"\v'0'"' is false even though both comparands result in zero
+ net motion, because motions are not interpreted or optimized but
+ sent as-is to the output.(3) (*note Operators in
+ Conditionals-Footnote-3::) On the other hand, '.if "\d"\v'0.5m'"'
+ is true, because '\d' is defined as a downward motion of one-half
+ em.(4) (*note Operators in Conditionals-Footnote-4::)
+
+ Surround the comparands with '\?' to avoid formatting them; this
+ causes them to be compared character by character, as with string
+ comparisons in other programming languages.
+
+ .ie "\?|\?"\?\fR|\fP\?" true
+ .el false
+ => false
+
+ Since comparands protected with '\?' are read in copy mode (*note
+ Copy Mode::), they need not even be valid 'groff' syntax. The
+ escape character is still lexically recognized, however, and
+ consumes the next character.
+
+ .ds a \[
+ .ds b \[
+ .if '\?\*a\?'\?\*b\?' a and b equivalent
+ .if '\?\\?'\?\\?' backslashes equivalent
+ => a and b equivalent
+
+ The above operators can't be combined with most others, but a leading
+'!', not followed immediately by spaces or tabs, complements an
+expression.
+
+ .nr x 1
+ .ie !r x register x is not defined
+ .el register x is defined
+ => register x is defined
+
+ Spaces and tabs are optional immediately after the 'c', 'd', 'F',
+'m', 'r', and 'S' operators, but right after '!', they end the predicate
+and the conditional evaluates true.(5) (*note Operators in
+Conditionals-Footnote-5::)
+
+ .nr x 1
+ .ie ! r x register x is not defined
+ .el register x is defined
+ => r x register x is not defined
+
+The unexpected 'r x' in the output is a clue that our conditional was
+not interpreted as we planned, but matters may not always be so obvious.
+
+ (1) This refers to 'vtroff', a translator that would convert the
+C/A/T output from early-vintage AT&T 'troff' to a form suitable for
+Versatec and Benson-Varian plotters.
+
+ (2) Strictly, letters not otherwise recognized _are_ treated as
+output comparison delimiters. For portability, it is wise to avoid
+using letters not in the list above; for example, Plan 9 'troff' uses
+'h' to test a mode it calls 'htmlroff', and GNU 'troff' may provide
+additional operators in the future.
+
+ (3) Because formatting of the comparands takes place in a dummy
+environment, vertical motions within them cannot spring traps.
+
+ (4) All of this is to say that the lists of output nodes created by
+formatting XXX and YYY must be identical. *Note Gtroff Internals::.
+
+ (5) This bizarre behavior maintains compatibility with AT&T 'troff'.
+
+5.23.2 if-then
+--------------
+
+ -- Request: .if cond-expr anything
+ Evaluate the conditional expression COND-EXPR, and if it evaluates
+ true (or to a positive value), interpret the remainder of the line
+ ANYTHING as if it were an input line. Recall from *note Invoking
+ Requests:: that any quantity of spaces between arguments to
+ requests serves only to separate them; leading spaces in ANYTHING
+ are thus not seen. ANYTHING effectively _cannot_ be omitted; if
+ COND-EXPR is true and ANYTHING is empty, the newline at the end of
+ the control line is interpreted as a blank input line (and
+ therefore a blank text line).
+
+ super\c
+ tanker
+ .nr force-word-break 1
+ super\c
+ .if ((\n[force-word-break] = 1) & \n[.int])
+ tanker
+ => supertanker super tanker
+
+ -- Request: .nop anything
+ Interpret ANYTHING as if it were an input line. This is similar to
+ '.if 1'. 'nop' is not really "no operation"; its argument _is_
+ processed--unconditionally. It can be used to cause text lines to
+ share indentation with surrounding control lines.
+
+ .als real-MAC MAC
+ .de wrapped-MAC
+ . tm MAC: called with arguments \\$@
+ . nop \\*[real-MAC]\\
+ ..
+ .als MAC wrapped-MAC
+ \# Later...
+ .als MAC real-MAC
+
+ In the above, we've used aliasing, 'nop', and the interpolation of
+ a macro as a string to interpose a wrapper around the macro 'MAC'
+ (perhaps to debug it).
+
+5.23.3 if-else
+--------------
+
+ -- Request: .ie cond-expr anything
+ -- Request: .el anything
+ Use the 'ie' and 'el' requests to write an if-then-else. The first
+ request is the "if" part and the latter is the "else" part.
+ Unusually among programming languages, any number of
+ non-conditional requests may be interposed between the 'ie' branch
+ and the 'el' branch.
+
+ .nr a 0
+ .ie \na a is non-zero.
+ .nr a +1
+ .el a was not positive but is now \na.
+ => a was not positive but is now 1.
+
+ Another way in which 'el' is an ordinary request is that it does
+ not lexically "bind" more tightly to its 'ie' counterpart than it
+ does to any other request. This fact can surprise C programmers.
+
+ .nr a 1
+ .nr z 0
+ .ie \nz \
+ . ie \na a is true
+ . el a is false
+ .el z is false
+ error-> warning: unbalanced 'el' request
+ => a is false
+
+ To conveniently nest conditionals, keep reading.
+
+5.23.4 Conditional Blocks
+-------------------------
+
+It is frequently desirable for a control structure to govern more than
+one request, macro call, text line, or a combination of the foregoing.
+The opening and closing brace escape sequences '\{' and '\}' define such
+groups. These "conditional blocks" can furthermore be nested.
+
+ -- Escape sequence: \{
+ -- Escape sequence: \}
+ '\{' begins a conditional block; it must appear (after optional
+ spaces and tabs) immediately subsequent to the conditional
+ expression of an 'if', 'ie', or 'while' request,(1) (*note
+ Conditional Blocks-Footnote-1::) or as the argument to an 'el'
+ request.
+
+ '\}' ends a condition block and should appear on a line with other
+ occurrences of itself as necessary to match '\{' sequences. It can
+ be preceded by a control character, spaces, and tabs. Input after
+ any quantity of '\}' sequences on the same line is processed only
+ if all of the preceding conditions to which they correspond are
+ true. Furthermore, a '\}' closing the body of a 'while' request
+ must be the last such escape sequence on an input line.
+
+ Brace escape sequences outside of control structures have no
+ meaning and produce no output.
+
+ *Caution:* Input lines using '\{' often end with '\RET', especially
+ in macros that consist primarily of control lines. Forgetting to
+ use '\RET' on an input line after '\{' is a common source of error.
+
+ We might write the following in a page header macro. If we delete
+'\RET', the header will carry an unwanted extra empty line (except on
+page 1).
+
+ .if (\\n[%] != 1) \{\
+ . ie ((\\n[%] % 2) = 0) .tl \\*[even-numbered-page-title]
+ . el .tl \\*[odd-numbered-page-title]
+ .\}
+
+ Let us take a closer look at how conditional blocks nest.
+
+ A
+ .if 0 \{ B
+ C
+ D
+ \}E
+ F
+ => A F
+
+ N
+ .if 1 \{ O
+ . if 0 \{ P
+ Q
+ R\} S\} T
+ U
+ => N O U
+
+ The above behavior may challenge the intuition; it was implemented to
+retain compatibility with AT&T 'troff'. For clarity, it is idiomatic to
+end input lines with '\{' (followed by '\<RET>' if appropriate), and to
+precede '\}' on an input line with nothing more than a control
+character, spaces, tabs, and other instances of itself.
+
+ We can use 'ie', 'el', and conditional blocks to simulate the
+multi-way "switch" or "case" control structures of other languages. The
+following example is adapted from the 'groff' 'man' package.
+Indentation is used to clarify the logic.
+
+ .\" Simulate switch/case in roff.
+ . ie '\\$2'1' .ds title General Commands\"
+ .el \{.ie '\\$2'2' .ds title System Calls\"
+ .el \{.ie '\\$2'3' .ds title Library Functions\"
+ .el \{.ie '\\$2'4' .ds title Kernel Interfaces\"
+ .el \{.ie '\\$2'5' .ds title File Formats\"
+ .el \{.ie '\\$2'6' .ds title Games\"
+ .el \{.ie '\\$2'7' .ds title Miscellaneous Information\"
+ .el \{.ie '\\$2'8' .ds title System Management\"
+ .el \{.ie '\\$2'9' .ds title Kernel Development\"
+ .el .ds title \" empty
+ .\}\}\}\}\}\}\}\}
+
+ (1) *Note while::.
+
+5.23.5 while
+------------
+
+'groff' provides a looping construct: the 'while' request. Its syntax
+matches the 'if' request.
+
+ -- Request: .while cond-expr anything
+ Evaluate the conditional expression COND-EXPR, and repeatedly
+ execute ANYTHING unless and until COND-EXPR evaluates false.
+ ANYTHING, which is often a conditional block, is referred to as the
+ 'while' request's "body".
+
+ .nr a 0 1
+ .while (\na < 9) \{\
+ \n+a,
+ .\}
+ \n+a
+ => 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
+
+ GNU 'troff' treats the body of a 'while' request similarly to that
+ of a 'de' request (albeit one not read in copy mode(1) (*note
+ while-Footnote-1::)), but stores it under an internal name and
+ deletes it when the loop finishes. The operation of a macro
+ containing a 'while' request can slow significantly if the 'while'
+ body is large. Each time the macro is executed, the 'while' body
+ is parsed and stored again.
+
+ .de xxx
+ . nr num 10
+ . while (\\n[num] > 0) \{\
+ . \" many lines of code
+ . nr num -1
+ . \}
+ ..
+
+ An often better solution--and one that is more portable, since AT&T
+ 'troff' lacked the 'while' request--is to instead write a recursive
+ macro. It will be parsed only once.(2) (*note while-Footnote-2::)
+
+ .de yyy
+ . if (\\n[num] > 0) \{\
+ . \" many lines of code
+ . nr num -1
+ . yyy
+ . \}
+ ..
+ .
+ .de xxx
+ . nr num 10
+ . yyy
+ ..
+
+ To prevent infinite loops, the default number of available
+ recursion levels is 1,000 or somewhat less.(3) (*note
+ while-Footnote-3::) You can disable this protective measure, or
+ raise the limit, by setting the 'slimit' register. *Note
+ Debugging::.
+
+ As noted above, if a 'while' body begins with a conditional block,
+ its closing brace must end an input line.
+
+ .if 1 \{\
+ . nr a 0 1
+ . while (\n[a] < 10) \{\
+ . nop \n+[a]
+ .\}\}
+ error-> unbalanced brace escape sequences
+
+ -- Request: .break
+ Exit a 'while' loop. Do not confuse this request with a
+ typographical break or the 'br' request.
+
+ -- Request: .continue
+ Skip the remainder of a 'while' loop's body, immediately starting
+ the next iteration.
+
+ (1) *Note Copy Mode::.
+
+ (2) unless you redefine it
+
+ (3) "somewhat less" because things other than macro calls can be on
+the input stack
+
+5.24 Writing Macros
+===================
+
+A "macro" is a stored collection of text and control lines that can be
+interpolated multiple times. Use macros to define common operations.
+Macros are called in the same way that requests are invoked. While
+requests exist for the purpose of creating macros, simply calling an
+undefined macro, or interpolating it as a string, will cause it to be
+defined as empty. *Note Identifiers::.
+
+ -- Request: .de name [end]
+ Define a macro NAME, replacing the definition of any existing
+ request, macro, string, or diversion called NAME. If NAME already
+ exists as an alias, the target of the alias is redefined; recall
+ *note Strings::. GNU 'troff' enters copy mode,(1) (*note Writing
+ Macros-Footnote-1::) storing subsequent input lines as the macro
+ definition. If the optional second argument is not specified, the
+ definition ends with the control line '..' (two dots).
+ Alternatively, END identifies a macro whose call syntax at the
+ start of a control line ends the definition of NAME; END is then
+ called normally. A macro definition must end in the same
+ conditional block (if any) in which it began (*note Conditional
+ Blocks::). Spaces or tabs are permitted after the control
+ character in the line containing this ending token (either '.' or
+ 'END'), but a tab immediately after the token prevents its
+ recognition as the end of a macro definition. The macro END can be
+ called with arguments.(2) (*note Writing Macros-Footnote-2::)
+
+ Here is a small example macro called 'P' that causes a break and
+ inserts some vertical space. It could be used to separate
+ paragraphs.
+
+ .de P
+ . br
+ . sp .8v
+ ..
+
+ We can define one macro within another. Attempting to nest '..'
+ naïvely will end the outer definition because the inner definition
+ isn't interpreted as such until the outer macro is later
+ interpolated. We can use an end macro instead. Each level of
+ nesting should use a unique end macro.
+
+ An end macro need not be defined until it is called. This fact
+ enables a nested macro definition to begin inside one macro and end
+ inside another. Consider the following example.(3) (*note Writing
+ Macros-Footnote-3::)
+
+ .de m1
+ . de m2 m3
+ you
+ ..
+ .de m3
+ Hello,
+ Joe.
+ ..
+ .de m4
+ do
+ ..
+ .m1
+ know?
+ . m3
+ What
+ .m4
+ .m2
+ => Hello, Joe. What do you know?
+
+ A nested macro definition _can_ be terminated with '..' and nested
+ macros _can_ reuse end macros, but these control lines must be
+ escaped multiple times for each level of nesting. The necessity of
+ this escaping and the utility of nested macro definitions will
+ become clearer when we employ macro parameters and consider the
+ behavior of copy mode in detail.
+
+ 'de' defines a macro that inherits the compatibility mode enablement
+status of its context (*note Implementation Differences::). Often it is
+desirable to make a macro that uses 'groff' features callable from
+contexts where compatibility mode is on; for instance, when writing
+extensions to a historical macro package. To achieve this,
+compatibility mode needs to be switched off while such a macro is
+interpreted--without disturbing that state when it is finished.
+
+ -- Request: .de1 name [end]
+ The 'de1' request defines a macro to be interpreted with
+ compatibility mode disabled. When NAME is called, compatibility
+ mode enablement status is saved; it is restored when the call
+ completes. Observe the extra backlash before the interpolation of
+ register 'xxx'; we'll explore this subject in *note Copy Mode::.
+
+ .nr xxx 12345
+ .de aa
+ The value of xxx is \\n[xxx].
+ . br
+ ..
+ .de1 bb
+ The value of xxx is \\n[xxx].
+ ..
+ .cp 1
+ .aa
+ error-> warning: register '[' not defined
+ => The value of xxx is 0xxx].
+ .bb
+ => The value of xxx is 12345.
+
+ -- Request: .dei name [end]
+ -- Request: .dei1 name [end]
+ The 'dei' request defines a macro with its name and end macro
+ indirected through strings. That is, it interpolates strings named
+ NAME and END before performing the definition.
+
+ The following examples are equivalent.
+
+ .ds xx aa
+ .ds yy bb
+ .dei xx yy
+
+ .de aa bb
+
+ The 'dei1' request bears the same relationship to 'dei' as 'de1'
+ does to 'de'; it temporarily turns compatibility mode off when NAME
+ is called.
+
+ -- Request: .am name [end]
+ -- Request: .am1 name [end]
+ -- Request: .ami name [end]
+ -- Request: .ami1 name [end]
+ 'am' appends subsequent input lines to macro NAME, extending its
+ definition, and otherwise working as 'de' does.
+
+ To make the previously defined 'P' macro set indented instead of
+ block paragraphs, add the necessary code to the existing macro.
+
+ .am P
+ .ti +5n
+ ..
+
+ The other requests are analogous to their 'de' counterparts. The
+ 'am1' request turns off compatibility mode during interpretation of
+ the appendment. The 'ami' request appends indirectly, meaning that
+ strings NAME and END are interpolated with the resulting names used
+ before appending. The 'ami1' request is similar to 'ami',
+ disabling compatibility mode during interpretation of the appended
+ lines.
+
+ Using 'trace.tmac', you can trace calls to 'de', 'de1', 'am', and
+'am1'. You can also use the 'backtrace' request at any point desired to
+troubleshoot tricky spots (*note Debugging::).
+
+ *Note Strings::, for the 'als', 'rm', and 'rn' requests to create an
+alias of, remove, and rename a macro, respectively.
+
+ Macro identifiers share their name space with requests, strings, and
+diversions; see *note Identifiers::. The 'am', 'as', 'da', 'de', 'di',
+and 'ds' requests (together with their variants) create a new object
+only if the name of the macro, diversion, or string is currently
+undefined or if it is defined as a request; normally, they modify the
+value of an existing object. *Note the description of the 'als'
+request: als, for pitfalls when redefining a macro that is aliased.
+
+ -- Request: .return [anything]
+ Exit a macro, immediately returning to the caller. If called with
+ an argument ANYTHING, exit twice--the current macro and the macro
+ one level higher. This is used to define a wrapper macro for
+ 'return' in 'trace.tmac'.
+
+ (1) *Note Copy Mode::.
+
+ (2) While it is possible to define and call a macro '.', you can't
+use it as an end macro: during a macro definition, '..' is never handled
+as calling '.', even if '.de NAME .' explicitly precedes it.
+
+ (3) Its structure is adapted from, and isomorphic to, part of a
+solution by Tadziu Hoffman to the problem of reflowing text multiple
+times to find an optimal configuration for it.
+<https://lists.gnu.org/archive/html/groff/2008-12/msg00006.html>
+
+5.24.1 Parameters
+-----------------
+
+Macro calls and string interpolations optionally accept a list of
+arguments; recall *note Calling Macros::. At the time such an
+interpolation takes place, these "parameters" can be examined using a
+register and a variety of escape sequences starting with '\$'. All such
+escape sequences are interpreted even in copy mode, a fact we shall
+motivate and explain below (*note Copy Mode::).
+
+ -- Register: \n[.$]
+ The count of parameters available to a macro or string is kept in
+ this read-only register. The 'shift' request can change its value.
+
+ Any individual parameter can be accessed by its position in the list
+of arguments to the macro call, numbered from left to right starting at
+1, with one of the following escape sequences.
+
+ -- Escape sequence: \$n
+ -- Escape sequence: \$(nn
+ -- Escape sequence: \$[nnn]
+ Interpolate the Nth, NNth, or NNNth parameter. The first form
+ expects only a single digit (1<=N<=9)), the second two digits
+ (01<=NN<=99)), and the third any positive integer NNN. Macros and
+ strings accept an unlimited number of parameters.
+
+ -- Request: .shift [n]
+ Shift the parameters N places (1 by default). This is a "left
+ shift": what was parameter I becomes parameter I-N. The parameters
+ formerly in positions 1 to N are no longer available. Shifting by
+ a non-positive amount performs no operation. The register '.$' is
+ adjusted accordingly.
+
+ In practice, parameter interpolations are usually seen prefixed with
+an extra escape character. This is because the '\$' family of escape
+sequences is interpreted even in copy mode.(1) (*note
+Parameters-Footnote-1::)
+
+ -- Escape sequence: \$*
+ -- Escape sequence: \$@
+ -- Escape sequence: \$^
+ In some cases it is convenient to interpolate all of the parameters
+ at once (to pass them to a request, for instance). The '\$*'
+ escape concatenates the parameters, separating them with spaces.
+ '\$@' is similar, concatenating the parameters, surrounding each
+ with double quotes and separating them with spaces. If not in
+ compatibility mode, the interpolation depth of double quotes is
+ preserved (*note Calling Macros::). '\$^' interpolates all
+ parameters as if they were arguments to the 'ds' request.
+
+ .de foo
+ . tm $1='\\$1'
+ . tm $2='\\$2'
+ . tm $*='\\$*'
+ . tm $@='\\$@'
+ . tm $^='\\$^'
+ ..
+ .foo " This is a "test"
+ error-> $1=' This is a '
+ error-> $2='test"'
+ error-> $*=' This is a test"'
+ error-> $@='" This is a " "test""'
+ error-> $^='" This is a "test"'
+
+ '\$*' is useful when writing a macro that doesn't need to
+ distinguish its arguments, or even to not interpret them; examples
+ include macros that produce diagnostic messages by wrapping the
+ 'tm' or 'ab' requests. Use '\$@' when writing a macro that may
+ need to shift its parameters and/or wrap a macro or request that
+ finds the count significant. If in doubt, prefer '\$@' to '\$*'.
+ An application of '\$^' is seen in 'trace.tmac', which redefines
+ some requests and macros for debugging purposes.
+
+ -- Escape sequence: \$0
+ Interpolate the name by which the macro being interpreted was
+ called. The 'als' request can cause a macro to have more than one
+ name. Applying string interpolation to a macro does not change
+ this name.
+
+ .de foo
+ . tm \\$0
+ ..
+ .als bar foo
+ .
+ .de aaa
+ . foo
+ ..
+ .de bbb
+ . bar
+ ..
+ .de ccc
+ \\*[foo]\\
+ ..
+ .de ddd
+ \\*[bar]\\
+ ..
+ .
+ .aaa
+ error-> foo
+ .bbb
+ error-> bar
+ .ccc
+ error-> ccc
+ .ddd
+ error-> ddd
+
+ (1) If they were not, parameter interpolations would be similar to
+command-line parameters--fixed for the entire duration of a 'roff'
+program's run. The advantage of interpolating '\$' escape sequences
+even in copy mode is that they can interpolate different contents from
+one call to the next, like function parameters in a procedural language.
+The additional escape character is the price of this power.
+
+5.24.2 Copy Mode
+----------------
+
+When GNU 'troff' processes certain requests, most importantly those
+which define or append to a macro or string, it does so in "copy mode":
+it copies the characters of the definition into a dedicated storage
+region, interpolating the escape sequences '\n', '\g', '\$', '\*', '\V',
+and '\?' normally; interpreting '\<RET>' immediately; discarding
+comments '\"' and '\#'; interpolating the current leader, escape, or tab
+character with '\a', '\e', and '\t', respectively; and storing all other
+escape sequences in an encoded form.
+
+ The complement of copy mode--a 'roff' formatter's behavior when not
+defining or appending to a macro, string, or diversion--where all macros
+are interpolated, requests invoked, and valid escape sequences processed
+immediately upon recognition, can be termed "interpretation mode".
+
+ -- Escape sequence: \\
+ The escape character, '\' by default, can escape itself. This
+ enables you to control whether a given '\n', '\g', '\$', '\*',
+ '\V', or '\?' escape sequence is interpreted at the time the macro
+ containing it is defined, or later when the macro is called.(1)
+ (*note Copy Mode-Footnote-1::)
+
+ .nr x 20
+ .de y
+ .nr x 10
+ \&\nx
+ \&\\nx
+ ..
+ .y
+ => 20 10
+
+ You can think of '\\' as a "delayed" backslash; it is the escape
+ character followed by a backslash from which the escape character
+ has removed its special meaning. Consequently, '\\' is not an
+ escape sequence in the usual sense. In any escape sequence '\X'
+ that GNU 'troff' does not recognize, the escape character is
+ ignored and X is output. An unrecognized escape sequence causes a
+ warning in category 'escape', with two exceptions--'\\' is the
+ first.
+
+ -- Escape sequence: \.
+ '\.' escapes the control character. It is similar to '\\' in that
+ it isn't a true escape sequence. It is used to permit nested macro
+ definitions to end without a named macro call to conclude them.
+ Without a syntax for escaping the control character, this would not
+ be possible.
+
+ .de m1
+ foo
+ .
+ . de m2
+ bar
+ \\..
+ .
+ ..
+ .m1
+ .m2
+ => foo bar
+
+ The first backslash is consumed while the macro is read, and the
+ second is interpreted when macro 'm1' is called.
+
+ 'roff' documents should not use the '\\' or '\.' character sequences
+outside of copy mode; they serve only to obfuscate the input. Use '\e'
+to represent the escape character, '\[rs]' to obtain a backslash glyph,
+and '\&' before '.' and ''' where GNU 'troff' expects them as control
+characters if you mean to use them literally (recall *note Requests and
+Macros::).
+
+ Macro definitions can be nested to arbitrary depth. The mechanics of
+parsing the escape character have significant consequences for this
+practice.
+
+ .de M1
+ \\$1
+ . de M2
+ \\\\$1
+ . de M3
+ \\\\\\\\$1
+ \\\\..
+ . M3 hand.
+ \\..
+ . M2 of
+ ..
+ This understeer is getting
+ .M1 out
+ => This understeer is getting out of hand.
+
+ Each escape character is interpreted twice--once in copy mode, when
+the macro is defined, and once in interpretation mode, when the macro is
+called. As seen above, this fact leads to exponential growth in the
+quantity of escape characters required to delay interpolation of '\n',
+'\g', '\$', '\*', '\V', and '\?' at each nesting level, which can be
+daunting. GNU 'troff' offers a solution.
+
+ -- Escape sequence: \E
+ '\E' represents an escape character that is not interpreted in copy
+ mode. You can use it to ease the writing of nested macro
+ definitions.
+
+ .de M1
+ . nop \E$1
+ . de M2
+ . nop \E$1
+ . de M3
+ . nop \E$1
+ \\\\..
+ . M3 better.
+ \\..
+ . M2 bit
+ ..
+ This vehicle handles
+ .M1 a
+ => This vehicle handles a bit better.
+
+ Observe that because '\.' is not a true escape sequence, we can't
+ use '\E' to keep '..' from ending a macro definition prematurely.
+ If the multiplicity of backslashes complicates maintenance, use end
+ macros.
+
+ '\E' is also convenient to define strings containing escape
+ sequences that need to work when used in copy mode (for example, as
+ macro arguments), or which will be interpolated at varying macro
+ nesting depths. We might define strings to begin and end
+ superscripting as follows.(2) (*note Copy Mode-Footnote-2::)
+
+ .ds { \v'-.9m\s'\En[.s]*7u/10u'+.7m'
+ .ds } \v'-.7m\s0+.9m'
+
+ When the 'ec' request is used to redefine the escape character,
+ '\E' also makes it easier to distinguish the semantics of an escape
+ character from the other meaning(s) its character might have.
+ Consider the use of an unusual escape character, '-'.
+
+ .nr a 1
+ .ec -
+ .de xx
+ --na
+ ..
+ .xx
+ => -na
+
+ This result may surprise you; some people expect '1' to be output
+ since register 'a' has clearly been defined with that value. What
+ has happened? The robotic replacement of '\' with '-' has led us
+ astray. You might recognize the sequence '--' more readily with
+ the default escape character as '\-', the special character escape
+ sequence for the minus sign glyph.
+
+ .nr a 1
+ .ec -
+ .de xx
+ -Ena
+ ..
+ .xx
+ => 1
+
+ (1) Compare this to the '\def' and '\edef' commands in TeX.
+
+ (2) These are lightly adapted from the 'groff' implementation of the
+'ms' macros.
+
+5.25 Page Motions
+=================
+
+*Note Manipulating Spacing::, for a discussion of the most commonly used
+request for vertical motion, 'sp', which spaces downward by one vee.
+
+ -- Request: .mk [reg]
+ -- Request: .rt [dist]
+ You can "mark" a location on a page for subsequent "return". 'mk'
+ takes an argument, a register name in which to store the current
+ page location. If given no argument, it stores the location in an
+ internal register. This location can be used later by the 'rt' or
+ the 'sp' requests (or the '\v' escape).
+
+ The 'rt' request returns _upward_ to the location marked with the
+ last 'mk' request. If used with an argument, it returns to a
+ vertical position DIST from the top of the page (no previous call
+ to 'mk' is necessary in this case). The default scaling unit is
+ 'v'.
+
+ If a page break occurs between a 'mk' request and its matching 'rt'
+ request, the 'rt' request is silently ignored.
+
+ A simple implementation of a macro to set text in two columns
+ follows.
+
+ .nr column-length 1.5i
+ .nr column-gap 4m
+ .nr bottom-margin 1m
+ .
+ .de 2c
+ . br
+ . mk
+ . ll \\n[column-length]u
+ . wh -\\n[bottom-margin]u 2c-trap
+ . nr right-side 0
+ ..
+ .
+ .de 2c-trap
+ . ie \\n[right-side] \{\
+ . nr right-side 0
+ . po -(\\n[column-length]u + \\n[column-gap]u)
+ . \" remove trap
+ . wh -\\n[bottom-margin]u
+ . \}
+ . el \{\
+ . \" switch to right side
+ . nr right-side 1
+ . po +(\\n[column-length]u + \\n[column-gap]u)
+ . rt
+ . \}
+ ..
+
+ Now let us apply our two-column macro.
+
+ .pl 1.5i
+ .ll 4i
+ This is a small test that shows how the
+ rt request works in combination with mk.
+
+ .2c
+ Starting here, text is typeset in two columns.
+ Note that this implementation isn't robust
+ and thus not suited for a real two-column
+ macro.
+ => This is a small test that shows how the
+ => rt request works in combination with mk.
+ =>
+ => Starting here, isn't robust
+ => text is typeset and thus not
+ => in two columns. suited for a
+ => Note that this real two-column
+ => implementation macro.
+
+ Several escape sequences enable fine control of movement about the
+page.
+
+ -- Escape sequence: \v'expr'
+ Vertically move the drawing position. EXPR indicates the magnitude
+ of motion: positive is downward and and negative upward. The
+ default scaling unit is 'v'. The motion is relative to the current
+ drawing position unless EXPR begins with the boundary-relative
+ motion operator '|'. *Note Numeric Expressions::.
+
+ Text processing continues at the new drawing position; usually,
+ vertical motions should be in balanced pairs to avoid a confusing
+ page layout.
+
+ '\v' will not spring a vertical position trap. This can be useful;
+ for example, consider a page bottom trap macro that prints a marker
+ in the margin to indicate continuation of a footnote. *Note
+ Traps::.
+
+ A few escape sequences that produce vertical motion are unusual.
+They are thought to originate early in AT&T 'nroff' history to achieve
+super- and subscripting by half-line motions on line printers and
+teletypewriters before the phototypesetter made more precise positioning
+available. They are reckoned in ems--not vees--to maintain continuity
+with their original purpose of moving relative to the size of the type
+rather than the distance between text baselines (vees).(1) (*note Page
+Motions-Footnote-1::)
+
+ -- Escape sequence: \r
+ -- Escape sequence: \u
+ -- Escape sequence: \d
+ Move upward 1m, upward .5m, and downward .5m, respectively.
+
+Let us see these escape sequences in use.
+
+ Obtain 100 cm\u3\d of \ka\d\092\h'|\nau'\r233\dU.
+
+ In the foregoing we have paired '\u' and '\d' to typeset a
+superscript, and later a full em negative ("reverse") motion to place a
+superscript above a subscript. A numeral-width horizontal motion escape
+sequence aligns the proton and nucleon numbers, while '\k' marks a
+horizontal position to which '\h' returns so that we could stack them.
+(We shall discuss these horizontal motion escape sequences presently.)
+In serious applications, we often want to alter the type size of the
+-scripts and to fine-tune the vertical motions, as the 'groff' 'ms'
+package does with its super- and subscripting string definitions.
+
+ -- Escape sequence: \h'expr'
+ Horizontally move the drawing position. EXPR indicates the
+ magnitude of motion: positive is rightward and negative leftward.
+ The default scaling unit is 'm'. The motion is relative to the
+ current drawing position unless EXPR begins with the
+ boundary-relative motion operator '|'. *Note Numeric
+ Expressions::.
+
+ The following string definition sets the TeX logo.(2) (*note Page
+Motions-Footnote-2::)
+
+ .ds TeX T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X\"
+
+ There are a number of special-case escape sequences for horizontal
+motion.
+
+ -- Escape sequence: \<SP>
+ Move right one word space. (The input is a backslash followed by a
+ space.) This escape sequence can be thought of as a
+ non-adjustable, unbreakable space. Usually you want '\~' instead;
+ see *note Manipulating Filling and Adjustment::.
+
+ -- Escape sequence: \|
+ Move one-sixth em to the right on typesetting output devices. If a
+ glyph named '\|' is defined in the current font, its width is used
+ instead, even on terminal output devices.
+
+ -- Escape sequence: \^
+ Move one-twelfth em to the right on typesetting output devices. If
+ a glyph named '\^' is defined in the current font, its width is
+ used instead, even on terminal output devices.
+
+ -- Escape sequence: \0
+ Move right by the width of a numeral in the current font.
+
+ Horizontal motions are not discarded at the end of an output line as
+word spaces are. *Note Breaking::.
+
+ -- Escape sequence: \w'anything'
+ -- Register: \n[st]
+ -- Register: \n[sb]
+ -- Register: \n[rst]
+ -- Register: \n[rsb]
+ -- Register: \n[ct]
+ -- Register: \n[ssc]
+ -- Register: \n[skw]
+ Interpolate the width of ANYTHING in basic units. This escape
+ sequence allows several properties of formatted output to be
+ measured without writing it out.
+
+ The length of the string 'abc' is \w'abc'u.
+ => The length of the string 'abc' is 72u.
+
+ ANYTHING is processed in a dummy environment: this means that font
+ and type size changes, for example, may occur within it without
+ affecting subsequent output.
+
+ After each use, '\w' sets several registers.
+
+ 'st'
+ 'sb'
+ The maximum vertical displacements of the text baseline above
+ and below, respectively. The sign convention is opposite that
+ of relative vertical motions; that is, depth below the
+ (original) baseline is negative. These registers are
+ incorrectly documented in the AT&T 'troff' manual as "the
+ highest and lowest extent of [the argument to '\w'] relative
+ to the baseline".
+
+ 'rst'
+ 'rsb'
+ Like 'st' and 'sb', but taking account of the heights and
+ depths of glyphs. In other words, these registers store the
+ highest and lowest vertical positions attained by ANYTHING,
+ doing what AT&T 'troff' documented 'st' and 'sb' as doing.
+
+ 'ct'
+ Characterizes the geometry of glyphs occurring in ANYTHING.
+
+ 0
+ only short glyphs, no descenders or tall glyphs
+
+ 1
+ at least one descender
+
+ 2
+ at least one tall glyph
+
+ 3
+ at least one each of a descender and a tall glyph
+
+ 'ssc'
+ The amount of horizontal space (possibly negative) that should
+ be added to the last glyph before a subscript.
+
+ 'skw'
+ How far to right of the center of the last glyph in the '\w'
+ argument, the center of an accent from a roman font should be
+ placed over that glyph.
+
+ -- Escape sequence: \kp
+ -- Escape sequence: \k(ps
+ -- Escape sequence: \k[position]
+ Store the current horizontal position in the _input_ line in a
+ register with the name POSITION (one-character name P,
+ two-character name PS). Use this, for example, to return to the
+ beginning of a string for highlighting or other decoration.
+
+ -- Register: \n[hp]
+ The current horizontal position at the input line.
+
+ -- Register: \n[.k]
+ A read-only register containing the current horizontal output
+ position (relative to the current indentation).
+
+ -- Escape sequence: \o'abc...'
+ Overstrike the glyphs of characters A, B, C, ...; the glyphs are
+ centered, written, and the drawing position advanced by the widest
+ of the glyphs.
+
+ -- Escape sequence: \zc
+ Format the character C with zero width; that is, without advancing
+ the drawing position. Use '\z' to overstrike glyphs aligned to
+ their left edges, in contrast to '\o''s centering.
+
+ -- Escape sequence: \Z'anything'
+ Save the drawing position, format ANYTHING, then restore it. Tabs
+ and leaders in the argument are ignored with an error diagnostic.
+
+ We might implement a strike-through macro thus.
+
+ .de ST
+ .nr width \w'\\$1'
+ \Z@\v'-.25m'\l'\\n[width]u'@\\$1
+ ..
+ .
+ This is
+ .ST "a test"
+ an actual emergency!
+
+ (1) At the 'grops' defaults of 10-point type on 12-point vertical
+spacing, the difference between half a vee and half an em can be subtle:
+large spacings like '.vs .5i' make it obvious.
+
+ (2) *Note Strings::, for an explanation of the trailing '\"'.
+
+5.26 Drawing Geometric Objects
+==============================
+
+A few of the formatter's escape sequences draw lines and other geometric
+objects. Combined with each other and with page motion commands (*note
+Page Motions::), a wide variety of figures is possible. For complex
+drawings, these operations can be cumbersome; the preprocessors 'gpic'
+or 'ggrn' are typically used instead.
+
+ The '\l' and '\L' escape sequences draw horizontal and vertical
+sequences of glyphs, respectively. Even the simplest of output devices
+supports them.
+
+ -- Escape sequence: \l'l'
+ -- Escape sequence: \l'lc'
+ Draw a horizontal line of length L from the drawing position.
+ Rightward motion is positive. Afterward, the drawing position is
+ at the right end of the line. The default scaling unit is 'm'.
+
+ The optional second parameter C is a character with which to draw
+ the line. The default is the baseline rule special character,
+ '\[ru]'.
+
+ If C is a valid scaling unit, put '\&' after L to disambiguate the
+ input.
+
+ .de textbox
+ \[br]\\$*\[br]\l'|0\[rn]'\l'|0\[ul]'
+ ..
+
+ The foregoing outputs a box rule (a vertical line), the text
+ argument(s), and another box rule. We employ the boundary-relative
+ motion operator '|'. Finally, the line-drawing escape sequences
+ draw a radical extender (a form of overline) and an underline from
+ the drawing position to the position coresponding to beginning of
+ the _input_ line. The drawing position returns to just after the
+ right-hand box rule because the lengths of the drawn lines are
+ negative, as noted above.
+
+ -- Escape sequence: \L'l'
+ -- Escape sequence: \L'lc'
+ Draw a vertical line of length L from the drawing position.
+ Downward motion is positive. The default scaling unit is 'v'. The
+ default character is the box rule, '\[br]'. As with vertical
+ motion escape sequences, text processing continues where the line
+ ends. '\L' is otherwise similar to '\l'.
+
+ $ nroff <<EOF
+ This is a \L'3v'test.
+ EOF
+ => This is a
+ => |
+ => |
+ => |test.
+
+ When writing text, the drawing position is at the text baseline;
+ recall *note Page Geometry::.
+
+ The '\D' escape sequence provides "drawing commands" that direct the
+output device to render geometrical objects rather than glyphs.
+Specific devices may support only a subset, or may feature additional
+ones; consult the man page for the output driver in use. Terminal
+devices in particular implement almost none. *Note Graphics Commands::.
+
+ Rendering starts at the drawing position; when finished, the drawing
+position is left at the rightmost point of the object, even for closed
+figures, except where noted. GNU 'troff' draws stroked (outlined)
+objects with the stroke color, and shades filled ones with the fill
+color. *Note Colors::. Coordinates H and V are horizontal and vertical
+motions relative to the drawing position or previous point in the
+command. The default scaling unit for horizontal measurements (and
+diameters of circles) is 'm'; for vertical ones, 'v'.
+
+ Circles, ellipses, and polygons can be drawn filled or stroked.
+These are independent properties; if you want a filled, stroked figure,
+you must draw the same figure twice using each drawing command. A
+filled figure is always smaller than an outlined one because the former
+is drawn only within its defined area, whereas strokes have a line
+thickness (set with '\D't'').
+
+ \h'1i'\v'1i'\
+ \# increase line thickness
+ \Z'\D't 5p''\
+ \# draw stroked (unfilled) polygon
+ \Z'\D'p 3 3 -6 0''\
+ \# draw filled (solid) polygon
+ \Z'\D'P 3 3 -6 0''
+
+ -- Escape sequence: \D'command argument ...'
+ Drawing command escape sequence parameters begin with an ordinary
+ character, COMMAND, selecting the type of object to be drawn,
+ followed by ARGUMENTs whose meaning is determined by COMMAND.
+
+ '\D'~ H1 V1 ... HN VN''
+ Draw a B-spline to each point in sequence, leaving the drawing
+ position at (HN, VN).
+
+ '\D'a HC VC H V''
+ Draw a circular arc centered at (HC, VC) counterclockwise from
+ the drawing position to a point (H, V) relative to the center.
+ (1) (*note Drawing Geometric Objects-Footnote-1::)
+
+ '\D'c D''
+ Draw a circle of diameter D with its leftmost point at the
+ drawing position.
+
+ '\D'C D''
+ As '\D'C ...'', but the circle is filled.
+
+ '\D'e H V''
+ Draw an ellipse of width H and height V with its leftmost
+ point at the drawing position.
+
+ '\D'E X Y''
+ As '\D'e ...'', but the ellipse is filled.
+
+ '\D'l DX DY''
+ Draw line from the drawing position to (H, V).
+
+ The following is a macro for drawing a box around a text
+ argument; for simplicity, the box margin is a fixed at 0.2m.
+
+ .de TEXTBOX
+ . nr @wd \w'\\$1'
+ \h'.2m'\
+ \h'-.2m'\v'(.2m - \\n[rsb]u)'\
+ \D'l 0 -(\\n[rst]u - \\n[rsb]u + .4m)'\
+ \D'l (\\n[@wd]u + .4m) 0'\
+ \D'l 0 (\\n[rst]u - \\n[rsb]u + .4m)'\
+ \D'l -(\\n[@wd]u + .4m) 0'\
+ \h'.2m'\v'-(.2m - \\n[rsb]u)'\
+ \\$1\
+ \h'.2m'
+ ..
+
+ The argument is measured with the '\w' escape sequence. Its
+ width is stored in register '@wd'. '\w' also sets the
+ registers 'rst' and 'rsb'; these contain its maximum vertical
+ extents of the argument. Then, four lines are drawn to form a
+ box, offset by the box margin.
+
+ '\D'p H1 V1 ... HN VN''
+ Draw polygon with vertices at drawing position and each point
+ in sequence. GNU 'troff' closes the polygon by drawing a line
+ from (HN, VN) back to the initial drawing position.
+ Afterward, the drawing position is left at (HN, VN).
+
+ '\D'P DX1 DY1 DX2 DY2 ...''
+ As '\D'P ...'', but the polygon is filled.
+
+ The following macro is like the '\D'l'' example, but shades
+ the box. We draw the box before writing the text because
+ colors in GNU 'troff' have no transparency; in othe opposite
+ order, the filled polygon would occlude the text.
+
+ .de TEXTBOX
+ . nr @wd \w'\\$1'
+ \h'.2m'\
+ \h'-.2m'\v'(.2m - \\n[rsb]u)'\
+ \M[lightcyan]\
+ \D'P 0 -(\\n[rst]u - \\n[rsb]u + .4m) \
+ (\\n[@wd]u + .4m) 0 \
+ 0 (\\n[rst]u - \\n[rsb]u + .4m) \
+ -(\\n[@wd]u + .4m) 0'\
+ \h'.2m'\v'-(.2m - \\n[rsb]u)'\
+ \M[]\
+ \\$1\
+ \h'.2m'
+ ..
+
+ '\D't N''
+ Set the stroke thickness of geometric objects to N basic
+ units. A zero N selects the minimal supported thickness. A
+ negative N selects a thickness proportional to the type size;
+ this is the default.
+
+ In a hazy penumbra between text rendering and drawing commands we
+locate the bracket-building escape sequence, '\b'. It can assemble
+apparently large glyphs by vertically stacking ordinary ones.
+
+ -- Escape sequence: \b'contents'
+ Pile and center a sequence of glyphs vertically on the output line.
+ "Piling" stacks glyphs corresponding to each character in CONTENTS,
+ read from left to right, and placed from top to bottom. GNU
+ 'troff' separates the glyphs vertically by 1m, and the pile itself
+ is centered 0.5m above the text baseline. The horizontal drawing
+ position is then advanced by the width of the widest glyph in the
+ pile.
+
+ This rather inflexible positioning algorithm doesn't work with the
+ 'dvi' output device since its bracket pieces vary in height.
+ Instead, use the 'geqn' preprocessor.
+
+ *note Manipulating Spacing:: describes how to adjust the vertical
+ spacing of the output line with the '\x' escape sequence.
+
+ The application of '\b' that lends its name is construction of
+ brackets, braces, and parentheses when typesetting mathematics. We
+ might construct a large opening (left) brace as follows.
+
+ \b'\[lt]\[bv]\[lk]\[bv]\[lb]'
+
+ See 'groff_char(7)' for a list of special character identifiers.
+
+ (1) (HC, VC) is adjusted to the point nearest the perpendicular
+bisector of the arc's chord.
+
+5.27 Deferring Output
+=====================
+
+A few 'roff' language elements are generally not used in simple
+documents, but arise as page layouts become more sophisticated and
+demanding. "Environments" collect formatting parameters like line
+length and typeface. A "diversion" stores formatted output for later
+use. A "trap" is a condition on the input or output, tested
+automatically by the formatter, that is associated with a macro, causing
+it to be called when that condition is fulfilled.
+
+ Footnote support often exercises all three of the foregoing features.
+A simple implementation might work as follows. A pair of macros is
+defined: one starts a footnote and the other ends it. The author calls
+the first macro where a footnote marker is desired. The macro
+establishes a diversion so that the footnote text is collected at the
+place in the body text where its corresponding marker appears. An
+environment is created for the footnote so that it is set at a smaller
+typeface. The footnote text is formatted in the diversion using that
+environment, but it does not yet appear in the output. The document
+author calls the footnote end macro, which returns to the previous
+environment and ends the diversion. Later, after much more body text in
+the document, a trap, set a small distance above the page bottom, is
+sprung. The macro called by the trap draws a line across the page and
+emits the stored diversion. Thus, the footnote is rendered.
+
+ Diversions and traps make the text formatting process non-linear.
+Let us imagine a set of text lines or paragraphs labelled 'A', 'B', and
+so on. If we set up a trap that produces text 'T' (as a page footer,
+say), and we also use a diversion to store the formatted text 'D', then
+a document with input text in the order 'A B C D E F' might render as 'A
+B C E T F'. The diversion 'D' will never be output if we do not call
+for it.
+
+ Environments of themselves are not a source of non-linearity in
+document formatting: environment switches have immediate effect. One
+could always write a macro to change as many formatting parameters as
+desired with a single convenient call. But because diversions can be
+nested and macros called by traps that are sprung by other trap-called
+macros, they may be called upon in varying contexts. For example,
+consider a page header that is always to be set in Helvetica. A
+document that uses Times for most of its body text, but Courier for
+displayed code examples, poses a challenge if a page break occurs in the
+middle of a code display; if the header trap assumes that the "previous
+font" is always Times, the rest of the example will be formatted in the
+wrong typeface. One could carefully save all formatting parameters upon
+entering the trap and restore them upon leaving it, but this is verbose,
+error-prone, and not future-proof as the 'groff' language develops.
+Environments save us considerable effort.
+
+5.28 Traps
+==========
+
+"Traps" are locations in the output or conditions on the input that,
+when reached or fulfilled, call a specified macro. These traps can
+occur at a given location on the page, at a given location in the
+current diversion (together, these are known as vertical position
+traps), at a blank line, at a line with leading space characters, after
+a quantity of input lines, or at the end of input. Macros called by
+traps are passed no arguments. Setting a trap is also called "planting"
+one. It is said that a trap is "sprung" if its condition is fulfilled.
+
+5.28.1 Vertical Position Traps
+------------------------------
+
+A "vertical position trap" calls a macro when the formatter's vertical
+drawing position reaches or passes, in the downward direction, a certain
+location on the output page or in a diversion. Its applications include
+setting page headers and footers, body text in multiple columns, and
+footnotes.
+
+ -- Request: .vpt [flag]
+ -- Register: \n[.vpt]
+ Enable vertical position traps if FLAG is non-zero or absent;
+ disable them otherwise. Vertical position traps are those set by
+ the 'wh' request or by 'dt' within a diversion. The parameter that
+ controls whether vertical position traps are enabled is global.
+ Initially, vertical position traps are enabled. The current value
+ is stored in the '.vpt' read-only register.
+
+ A page can't be ejected if 'vpt' is set to zero; see *note The
+ Implicit Page Trap::.
+
+5.28.1.1 Page Location Traps
+............................
+
+A "page location trap" is a vertical position trap that applies to the
+page; that is, to undiverted output. Many can be present; manage them
+with the 'wh' and 'ch' requests.
+
+ -- Request: .wh dist [name]
+ Plant macro NAME as page location trap at DIST. The default
+ scaling unit is 'v'. Non-negative values for DIST set the trap
+ relative to the top of the page; negative values set the trap
+ relative to the bottom of the page. It is not possible to plant a
+ trap less than one basic unit from the page bottom: a DIST of '-0'
+ is interpreted as '0', the top of the page.(1) (*note Page
+ Location Traps-Footnote-1::) An existing _visible_ trap (see below)
+ at DIST is removed; this is 'wh''s sole function if NAME is
+ missing.
+
+ A trap is sprung only if it is "visible", meaning that its location
+ is reachable on the page(2) (*note Page Location
+ Traps-Footnote-2::) and it is not hidden by another trap at the
+ same location already planted there.
+
+ A macro package might set headers and footers as follows; this
+ example configures vertical margins of one inch to the body text,
+ and one half-inch to the titles. Observe the use of the no-break
+ control character with 'sp' request to position our text baselines,
+ and the page number character '%' used with the 'tl' request.
+
+ .\" hdfo.roff
+ .de hd \" page header
+ ' sp .5i
+ ' tl '\\*(Ti''\\*(Da' \" title and date strings
+ ' sp .5i
+ ..
+ .de fo \" page footer
+ ' sp .5i
+ . tl ''%''
+ . bp
+ ..
+ .wh 0 hd \" trap at top of the page
+ .wh -1i fo \" trap 1 inch from bottom
+
+ To use these traps, copy the above (or load it from a file with the
+ 'so' or 'mso' requests), then set up the strings it uses.
+
+ .so hdfo.roff
+ .ds Ti Final Report\"
+ .ds Da 21 May 2023\"
+ .ti
+ On 5 August of last year,
+ this committee tasked me with the investigation of the
+ CFIT (controlled flight into terrain) incident of
+ .\" ...and so on...
+
+ A trap above the top or at or below the bottom of the page can be
+ made visible by either moving it into the page area or increasing
+ the page length so that the trap is on the page. Negative trap
+ values always use the _current_ page length; they are not converted
+ to an absolute vertical position. We can use the 'ptr' request to
+ dump our page location traps to the standard error stream (*note
+ Debugging::). Their positions are reported in basic units; an
+ 'nroff' device example follows.
+
+ .pl 5i
+ .wh -1i xx
+ .ptr
+ error-> xx -240
+ .pl 100i
+ .ptr
+ error-> xx -240
+
+ It is possible to have more than one trap at the same location
+ (although only one at a time can be visible); to achieve this, the
+ traps must be defined at different locations, then moved to the
+ same place with the 'ch' request. In the following example, the
+ many empty lines caused by the 'bp' request are not shown in the
+ output.
+
+ .de a
+ . nop a
+ ..
+ .de b
+ . nop b
+ ..
+ .de c
+ . nop c
+ ..
+ .
+ .wh 1i a
+ .wh 2i b
+ .wh 3i c
+ .bp
+ => a b c
+ .ch b 1i
+ .ch c 1i
+ .bp
+ => a
+ .ch a 0.5i
+ .bp
+ => a b
+
+ -- Register: \n[.t]
+ The read-only register '.t' holds the distance to the next vertical
+ position trap. If there are no traps between the current position
+ and the bottom of the page, it contains the distance to the page
+ bottom. Within a diversion, in the absence of a diversion trap,
+ this distance is the largest representable integer in basic
+ units--effectively infinite.
+
+ -- Request: .ch name [dist]
+ Change the location of a trap by moving macro NAME to new location
+ DIST, or by unplanting it altogether if DIST is absent. The
+ default scaling unit is 'v'. Parameters to 'ch' are specified in
+ the opposite order from 'wh'. If NAME is the earliest planted
+ macro of multiple traps at the same location, (re)moving it from
+ that location exposes the macro next least recently planted at the
+ same place.(3) (*note Page Location Traps-Footnote-3::)
+
+ Changing a trap's location is useful for building up footnotes in a
+ diversion to allow more space at the bottom of the page for them.
+
+ The same macro can be installed simultaneously at multiple locations;
+however, only the earliest-planted instance--that has not yet been
+deleted with 'wh'--will be moved by 'ch'. The following example (using
+an 'nroff' device) illustrates this behavior. Blank lines have been
+elided from the output.
+
+ .de T
+ Trap sprung at \\n(nlu.
+ .br
+ ..
+ .wh 1i T
+ .wh 2i T
+ foo
+ .sp 11i
+ .bp
+ .ch T 4i
+ bar
+ .sp 11i
+ .bp
+ .ch T 5i
+ baz
+ .sp 11i
+ .bp
+ .wh 5i
+ .ch T 6i
+ qux
+ .sp 11i
+ => foo
+ => Trap sprung at 240u.
+ => Trap sprung at 480u.
+ => bar
+ => Trap sprung at 480u.
+ => Trap sprung at 960u.
+ => baz
+ => Trap sprung at 480u.
+ => Trap sprung at 1200u.
+ => qux
+ => Trap sprung at 1440u.
+
+ -- Register: \n[.ne]
+ The read-only register '.ne' contains the amount of space that was
+ needed in the last 'ne' request that caused a trap to be sprung; it
+ is useful in conjunction with the '.trunc' register. *Note Page
+ Control::. Since the '.ne' register is set only by traps, it
+ doesn't make sense to interpolate it outside of macros called by
+ traps.
+
+ -- Register: \n[.trunc]
+ A read-only register containing the amount of vertical space
+ truncated from an 'sp' request by the most recently sprung vertical
+ position trap, or, if the trap was sprung by an 'ne' request, minus
+ the amount of vertical motion produced by the 'ne' request. In
+ other words, at the point a trap is sprung, it represents the
+ difference of what the vertical position would have been but for
+ the trap, and what the vertical position actually is. Since the
+ '.trunc' register is set only by traps, it doesn't make sense to
+ interpolate it outside of macros called by traps.
+
+ -- Register: \n[.pe]
+ This Boolean-valued, read-only register interpolates 1 while a page
+ is being ejected, and 0 otherwise.
+
+ In the following example, we plant the same trap at the top and the
+ bottom of the page. We also make the trap report its name and the
+ vertical drawing position.
+
+ .de T
+ .tm \\$0: page \\n%, nl=\\n[nl] .pe=\\n[.pe]
+ ..
+ .ll 46n
+ .wh 0 T
+ .wh -1v T
+ Those who can make you believe absurdities can make you
+ commit atrocities. \[em] Voltaire
+ error-> T: page 1, nl=0 .pe=0
+ error-> T: page 1, nl=2600 .pe=1
+ => Those who can make you believe absurdities can
+ => make you commit atrocities. -- Voltaire
+
+ When designing macros, keep in mind that diversions and traps do
+normally interact. For example, if a trap calls a header macro (while
+outputting a diversion) that tries to change the font on the current
+page, the effect is not visible before the diversion has completely been
+printed (except for input protected with '\!' or '\?') since the data in
+the diversion is already formatted. In most cases, this is not the
+expected behaviour.
+
+ (1) *Note The Implicit Page Trap::.
+
+ (2) A trap planted at '20i' or '-30i' will not be sprung on a page of
+length '11i'.
+
+ (3) It may help to think of each trap location as maintaining a
+queue; 'wh' operates on the head of the queue, and 'ch' operates on its
+tail. Only the trap at the head of the queue is visible.
+
+5.28.1.2 The Implicit Page Trap
+...............................
+
+If, after starting GNU 'troff' without loading a macro package, you use
+the 'ptr' request to dump a list of the active traps to the standard
+error stream,(1) (*note The Implicit Page Trap-Footnote-1::) nothing is
+reported. Yet the '.t' register will report a steadily decreasing value
+with every output line your document produces, and once the value of
+'.t' gets to within '.V' of zero, you will notice that something
+trap-like happens--the page is ejected, a new one begins, and the value
+of '.t' becomes large once more.
+
+ This "implicit page trap" always exists in the top-level
+diversion;(2) (*note The Implicit Page Trap-Footnote-2::) it works like
+a trap in some ways but not others. Its purpose is to eject the current
+page and start the next one. It has no name, so it cannot be moved or
+deleted with 'wh' or 'ch' requests. You cannot hide it by placing
+another trap at its location, and can move it only by redefining the
+page length with 'pl'. Its operation is suppressed when vertical page
+traps are disabled with GNU 'troff''s 'vpt' request.
+
+ (1) *Note Debugging::.
+
+ (2) *Note Diversions::.
+
+5.28.1.3 Diversion Traps
+........................
+
+A diversion is not formatted in the context of a page, so it lacks page
+location traps; instead it can have a "diversion trap". There can exist
+at most one such vertical position trap per diversion.
+
+ -- Request: .dt [dist name]
+ Set a trap _within_ a diversion at location DIST, which is
+ interpreted relative to diversion rather than page boundaries. If
+ invoked with fewer than two arguments, any diversion trap in the
+ current diversion is removed. The register '.t' works within
+ diversions. It is an error to invoke 'dt' in the top-level
+ diversion. *Note Diversions::.
+
+5.28.2 Input Line Traps
+-----------------------
+
+ -- Request: .it [n name]
+ -- Request: .itc [n name]
+ Set an input line trap, calling macro NAME after processing the
+ next N productive input lines (recall *note Manipulating Filling
+ and Adjustment::). Any existing input line trap in the environment
+ is replaced. Without arguments, 'it' and 'itc' clear any input
+ line trap that has not yet sprung.
+
+ Consider a macro '.ST S N' which sets the next N input lines in the
+ font style S.
+
+ .de ST \" Use style $1 for next $2 text lines.
+ . it \\$2 ES
+ . ft \\$1
+ ..
+ .de ES \" end ST
+ . ft R
+ ..
+ .ST I 1
+ oblique
+ face
+ .ST I 1
+ oblique\c
+ face
+ => oblique face obliqueface (second "face" upright)
+
+ Unlike the 'ce' and 'rj' requests, 'it' counts lines interrupted
+ with the '\c' escape sequence separately (*note Line
+ Continuation::); 'itc' does not. To see the difference, let's
+ change the previous example to use 'itc' instead.
+
+ ...
+ . itc \\$2 ES
+ ...
+ => oblique face obliqueface (second "face" oblique)
+
+ You can think of the 'ce' and 'rj' requests as implicitly creating
+ an input line trap with 'itc' that schedules a break when the trap
+ is sprung.
+
+ .de BR
+ . br
+ . internal: disable centering-without-filling
+ ..
+ .
+ .de ce
+ . if \\n[.br] .br
+ . itc \\$1 BR
+ . internal: enable centering-without-filling
+ ..
+
+ Let us consider in more detail the sorts of input lines that are or
+ are not "productive".
+
+ .de Trap
+ TRAP SPRUNG
+ ..
+ .de Mac
+ .if r a \l'5n'
+ ..
+ .it 2 Trap
+ .
+ foo
+ .Mac
+ bar
+ baz
+ .it 1 Trap
+ .sp \" moves, but does not write or draw
+ qux
+ .itc 1 Trap
+ \h'5n'\c \" moves, but does not write or draw
+ jat
+
+ When 'Trap' gets called depends on whether the 'a' register is
+ defined; the control line with the 'if' request may or may not
+ produce written output. We also see that the spacing request 'sp',
+ while certainly affecting the output, does not spring the input
+ line trap. Similarly, the horizontal motion escape sequence '\h'
+ also affected the output, but was not "written". Observe that we
+ had to follow it with '\c' and use 'itc' to prevent the newline at
+ the end of the text line from causing a word break, which, like an
+ ordinary space character, counts as written output.
+
+ $ groff -Tascii input-trap-example.groff
+ => foo bar TRAP SPRUNG baz
+ =>
+ => qux TRAP SPRUNG jat TRAP SPRUNG
+ $ groff -Tascii -ra1 input-trap-example.groff
+ => foo _____ TRAP SPRUNG bar baz
+ =>
+ => qux TRAP SPRUNG jat TRAP SPRUNG
+
+ Input line traps are associated with the environment (*note
+Environments::); switching to another environment suspends the current
+input line trap, and going back resumes it, restoring the count of
+qualifying lines enumerated in that environment.
+
+5.28.3 Blank Line Traps
+-----------------------
+
+ -- Request: .blm [name]
+ Set a blank line trap, calling the macro NAME when GNU 'troff'
+ encounters a blank line in an input file, instead of the usual
+ behavior (*note Breaking::). A line consisting only of spaces is
+ also treated as blank and subject to this trap. If no argument is
+ supplied, the default blank line behavior is (re-)established.
+
+5.28.4 Leading Space Traps
+--------------------------
+
+ -- Request: .lsm [name]
+ -- Register: \n[lsn]
+ -- Register: \n[lss]
+ Set a leading space trap, calling the macro NAME when GNU 'troff'
+ encounters leading spaces in an input line; the implicit line break
+ that normally happens in this case is suppressed. If no argument
+ is supplied, the default leading space behavior is (re-)established
+ (*note Breaking::).
+
+ The count of leading spaces on an input line is stored in register
+ 'lsn', and the amount of corresponding horizontal motion in
+ register 'lss', irrespective of whether a leading space trap is
+ set. When it is, the leading spaces are removed from the input
+ line, and no motion is produced before calling NAME.
+
+5.28.5 End-of-input Traps
+-------------------------
+
+ -- Request: .em [name]
+ Set a trap at the end of input, calling macro NAME after the last
+ line of the last input file has been processed. If no argument is
+ given, any existing end-of-input trap is removed.
+
+ For example, if the document had to have a section at the bottom of
+ the last page for someone to approve it, the 'em' request could be
+ used.
+
+ .de approval
+ \c
+ . ne 3v
+ . sp (\\n[.t]u - 3v)
+ . in +4i
+ . lc _
+ . br
+ Approved:\t\a
+ . sp
+ Date:\t\t\a
+ ..
+ .
+ .em approval
+
+ The '\c' in the above example needs explanation. For historical
+ reasons (compatibility with AT&T 'troff'), the end-of-input macro
+ exits as soon as it causes a page break if no partially collected
+ line remains.(1) (*note End-of-input Traps-Footnote-1::)
+
+ Let us assume that there is no '\c' in the above 'approval' macro,
+ that the page is full, and last output line has been broken with,
+ say, a 'br' request. Because there is no more room, a 'ne' request
+ at this point causes a page ejection, which in turn makes 'troff'
+ exit immediately as just described. In most situations, this is
+ not desired; people generally want to format the input after 'ne'.
+
+ To force processing of the whole end-of-input macro independently
+ of this behavior, it is thus advisable to (invisibly) ensure the
+ existence of a partially collected line ('\c') whenever there is a
+ chance that a page break can happen. In the above example,
+ invoking the 'ne' request ensures that there is room for the
+ subsequent formatted output on the same page, so we need insert
+ '\c' only once.
+
+ The next example shows how to append three lines, then start a new
+ page unconditionally. Since '.ne 1' doesn't give the desired
+ effect--there is always one line available or we are already at the
+ beginning of the next page--we temporarily increase the page length
+ by one line so that we can use '.ne 2'.
+
+ .de EM
+ .pl +1v
+ \c
+ .ne 2
+ line one
+ .br
+ \c
+ .ne 2
+ line two
+ .br
+ \c
+ .ne 2
+ line three
+ .br
+ .pl -1v
+ \c
+ 'bp
+ ..
+ .em EM
+
+ This specific feature affects only the first potential page break
+ caused by the end-of-input macro; further page breaks emitted by
+ the macro are handled normally.
+
+ Another possible use of the 'em' request is to make GNU 'troff'
+ emit a single large page instead of multiple pages. For example,
+ one may want to produce a long plain text file for reading in a
+ terminal or emulator without page footers and headers interrupting
+ the body of the document. One approach is to set the page length
+ at the beginning of the document to a very large value to hold all
+ the text,(2) (*note End-of-input Traps-Footnote-2::) and
+ automatically adjust it to the exact height of the document after
+ the text has been output.
+
+ .de adjust-page-length
+ . br
+ . pl \\n[nl]u \" \n[nl]: current vertical position
+ ..
+ .
+ .de single-page-mode
+ . pl 99999
+ . em adjust-page-length
+ ..
+ .
+ .\" Activate the above code if configured.
+ .if \n[do-continuous-rendering] \
+ . single-page-mode
+
+ Since only one end-of-input trap exists and another macro package
+ may already use it, care must be taken not to break the mechanism.
+ A simple solution would be to append the above macro to the macro
+ package's end-of-input macro using the 'am' request.
+
+ (1) While processing an end-of-input macro, the formatter assumes
+that the next page break must be the last; it goes into "sudden death
+overtime".
+
+ (2) Another, taken by the 'groff' 'man' macros, is to intercept 'ne'
+requests and wrap 'bp' ones.
+
+5.29 Diversions
+===============
+
+In 'roff' systems it is possible to format text as if for output, but
+instead of writing it immediately, one can "divert" the formatted text
+into a named storage area. It is retrieved later by specifying its name
+after a control character. The same name space is used for such
+diversions as for strings and macros; see *note Identifiers::. Such
+text is sometimes said to be "stored in a macro", but this coinage
+obscures the important distinction between macros and strings on one
+hand and diversions on the other; the former store _unformatted_ input
+text, and the latter capture _formatted_ output. Diversions also do not
+interpret arguments. Applications of diversions include "keeps"
+(preventing a page break from occurring at an inconvenient place by
+forcing a set of output lines to be set as a group), footnotes, tables
+of contents, and indices. For orthogonality it is said that GNU 'troff'
+is in the "top-level diversion" if no diversion is active (that is,
+formatted output is being "diverted" immediately to the output device).
+
+ Dereferencing an undefined diversion will create an empty one of that
+name and cause a warning in category 'mac' to be emitted. *Note
+Warnings::, for information about the enablement and suppression of
+warnings. A diversion does not exist for the purpose of testing with
+the 'd' conditional operator until its initial definition ends (*note
+Operators in Conditionals::). The following requests are used to create
+and alter diversions.
+
+ -- Request: .di [name]
+ -- Request: .da [name]
+ Start collecting formatted output in a diversion called NAME. The
+ 'da' request appends to a diversion called NAME, creating it if
+ necessary. If NAME already exists as an alias, the target of the
+ alias is replaced or appended to; recall *note Strings::. The
+ pending output line is diverted as well. Switching to another
+ environment (with the 'ev' request) before invoking 'di' or 'da'
+ avoids including any pending output line in the diversion; see
+ *note Environments::.
+
+ Invoking 'di' or 'da' without an argument stops diverting output to
+ the diversion named by the most recent corresponding request. If
+ 'di' or 'da' is called without an argument when there is no current
+ diversion, a warning in category 'di' is produced. *Note
+ Warnings::, for information about the enablement and suppression of
+ warnings.
+
+ Before the diversion.
+ .di yyy
+ In the diversion.
+ .br
+ .di
+ After the diversion.
+ .br
+ => After the diversion.
+ .yyy
+ => Before the diversion. In the diversion.
+
+ GNU 'troff' supports "box" requests to exclude a partially collected
+line from a diversion, as this is often desirable.
+
+ -- Request: .box [name]
+ -- Request: .boxa [name]
+ Divert (or append) output to NAME, similarly to the 'di' and 'da'
+ requests, respectively. Any pending output line is _not_ included
+ in the diversion. Without an argument, stop diverting output; any
+ pending output line inside the diversion is discarded.
+
+ Before the box.
+ .box xxx
+ In the box.
+ .br
+ Hidden treasure.
+ .box
+ After the box.
+ .br
+ => Before the box. After the box.
+ .xxx
+ => In the box.
+
+ Apart from pending output line inclusion and the request names that
+populate them, boxes are handled exactly as diversions are. All of the
+following 'groff' language elements can be used with them
+interchangeably.
+
+ -- Register: \n[.z]
+ -- Register: \n[.d]
+ Diversions may be nested. The read-only string-valued register
+ '.z' contains the name of the current diversion. The read-only
+ register '.d' contains the current vertical place in the diversion.
+ If the input text is not being diverted, '.d' reports the same
+ location as the register 'nl'.
+
+ -- Register: \n[.h]
+ The read-only register '.h' stores the "high-water mark" on the
+ current page or in the current diversion. It corresponds to the
+ text baseline of the lowest line on the page.(1) (*note
+ Diversions-Footnote-1::)
+
+ .tm .h==\n[.h], nl==\n[nl]
+ => .h==0, nl==-1
+ This is a test.
+ .br
+ .sp 2
+ .tm .h==\n[.h], nl==\n[nl]
+ => .h==40, nl==120
+
+ As implied by the example, vertical motion does not produce text
+ baselines and thus does not increase the value interpolated by
+ '\n[.h]'.
+
+ -- Register: \n[dn]
+ -- Register: \n[dl]
+ After completing a diversion, the writable registers 'dn' and 'dl'
+ contain its vertical and horizontal sizes. Only the lines just
+ processed are counted: for the computation of 'dn' and 'dl', the
+ requests 'da' and 'boxa' are handled as if 'di' and 'box' had been
+ used, respectively--lines that have been already stored in the
+ diversion (box) are not taken into account.
+
+ .\" Center text both horizontally and vertically.
+ .\" Macro .(c starts centering mode; .)c terminates it.
+ .
+ .\" Disable the escape character with .eo so that we
+ .\" don't have to double backslashes on the "\n"s.
+ .eo
+ .de (c
+ . br
+ . ev (c
+ . evc 0
+ . in 0
+ . nf
+ . di @c
+ ..
+ .de )c
+ . br
+ . ev
+ . di
+ . nr @s (((\n[.t]u - \n[dn]u) / 2u) - 1v)
+ . sp \n[@s]u
+ . ce 1000
+ . @c
+ . ce 0
+ . sp \n[@s]u
+ . br
+ . fi
+ . rr @s
+ . rm @c
+ ..
+ .ec
+
+ -- Escape sequence: \!anything
+ -- Escape sequence: \?anything\?
+ "Transparently" embed ANYTHING into the current diversion,
+ preventing requests, macro calls, and escape sequences from being
+ interpreted when read into a diversion. This is useful for
+ preventing them from taking effect until the diverted text is
+ actually output. The '\!' escape sequence transparently embeds
+ input up to and including the end of the line. The '\?' escape
+ sequence transparently embeds input until its own next occurrence.
+
+ ANYTHING may not contain newlines; use '\!' by itself to embed
+ newlines in a diversion. The escape sequence '\?' is also
+ recognized in copy mode and turned into a single internal code; it
+ is this code that terminates ANYTHING. Thus the following example
+ prints 4.
+
+ .nr x 1
+ .nf
+ .di d
+ \?\\?\\\\?\\\\\\\\nx\\\\?\\?\?
+ .di
+ .nr x 2
+ .di e
+ .d
+ .di
+ .nr x 3
+ .di f
+ .e
+ .di
+ .nr x 4
+ .f
+
+ Both escape sequences read the data in copy mode.
+
+ If '\!' is used in the top-level diversion, its argument is
+ directly embedded into GNU 'troff''s intermediate output. This can
+ be used, for example, to control a postprocessor that processes the
+ data before it is sent to an output driver.
+
+ The '\?' escape used in the top-level diversion produces no output
+ at all; its argument is simply ignored.
+
+ -- Request: .output contents
+ Emit CONTENTS directly to GNU 'troff''s intermediate output
+ (subject to copy mode interpretation); this is similar to '\!' used
+ at the top level. An initial neutral double quote in CONTENTS is
+ stripped to allow embedding of leading spaces.
+
+ This request can't be used before the first page has started--if
+ you get an error, simply insert '.br' before the 'output' request.
+
+ Use with caution! It is normally only needed for mark-up used by a
+ postprocessor that does something with the output before sending it
+ to the output device, filtering out CONTENTS again.
+
+ -- Request: .asciify div
+ "Unformat" the diversion DIV in a way such that Unicode basic Latin
+ (ASCII) characters, characters translated with the 'trin' request,
+ space characters, and some escape sequences, that were formatted
+ and diverted into DIV are treated like ordinary input characters
+ when DIV is reread. Doing so can be useful in conjunction with the
+ 'writem' request. 'asciify' can be also used for gross hacks; for
+ example, the following sets register 'n' to 1.
+
+ .tr @.
+ .di x
+ @nr n 1
+ .br
+ .di
+ .tr @@
+ .asciify x
+ .x
+
+ 'asciify' cannot return all items in a diversion to their source
+ equivalent: nodes such as those produced by the '\N' escape
+ sequence will remain nodes, so the result cannot be guaranteed to
+ be a pure string. *Note Copy Mode::. Glyph parameters such as the
+ type face and size are not preserved; use 'unformat' to achieve
+ that.
+
+ -- Request: .unformat div
+ Like 'asciify', unformat the diversion DIV. However, 'unformat'
+ handles only tabs and spaces between words, the latter usually
+ arising from spaces or newlines in the input. Tabs are treated as
+ input tokens, and spaces become adjustable again. The vertical
+ sizes of lines are not preserved, but glyph information (font, type
+ size, space width, and so on) is retained.
+
+ (1) Thus, the "water" gets "higher" proceeding _down_ the page.
+
+5.30 Punning Names
+==================
+
+Macros, strings, and diversions share a name space; recall *note
+Identifiers::. Internally, the same mechanism is used to store them.
+You can thus call a macro with string interpolation syntax and vice
+versa.
+
+ .de subject
+ Typesetting
+ ..
+ .de predicate
+ rewards attention to detail
+ ..
+ \*[subject] \*[predicate].
+ Truly.
+ => Typesetting
+ => rewards attention to detail Truly.
+
+What went wrong? Strings don't contain newlines, but macros do. String
+interpolation placed a newline at the end of '\*[subject]', and the next
+thing on the input was a space. Then when '\*[predicate]' was
+interpolated, it was followed by the empty request '.' on a line by
+itself. If we want to use macros as strings, we must take interpolation
+behavior into account.
+
+ .de subject
+ Typesetting\\
+ ..
+ .de predicate
+ rewards attention to detail\\
+ ..
+ \*[subject] \*[predicate].
+ Truly.
+ => Typesetting rewards attention to detail. Truly.
+
+By ending each text line of the macros with an escaped '\<RET>', we get
+the desired effect (*note Line Continuation::).(1) (*note Punning
+Names-Footnote-1::) What would have happened if we had used only one
+backslash at a time instead?
+
+ Interpolating a string does not hide existing macro arguments. We
+can also place the escaped newline outside the string interpolation
+instead of within the string definition. Thus, in a macro, a more
+efficient way of doing
+
+ .xx \\$@
+
+is
+
+ \\*[xx]\\
+
+The latter calling syntax doesn't change the value of '\$0', which is
+then inherited from the calling macro (*note Parameters::).
+
+ Diversions can be also called with string syntax. It is sometimes
+convenient to copy one-line diversions to a string.
+
+ .di xx
+ the
+ .ft I
+ interpolation system
+ .ft
+ .br
+ .di
+ .ds yy This is a test of \*(xx\c
+ \*(yy.
+ => This is a test of the interpolation system.
+
+As the previous example shows, it is possible to store formatted output
+in strings. The '\c' escape sequence prevents the subsequent newline
+from being interpreted as a break (again, *note Line Continuation::).
+
+ Copying multi-output line diversions produces unexpected results.
+
+ .di xxx
+ a funny
+ .br
+ test
+ .br
+ .di
+ .ds yyy This is \*[xxx]\c
+ \*[yyy].
+ => test This is a funny.
+
+ Usually, it is not predictable whether a diversion contains one or
+more output lines, so this mechanism should be avoided. With AT&T
+'troff', this was the only solution to strip off a final newline from a
+diversion. Another disadvantage is that the spaces in the copied string
+are already formatted, preventing their adjustment. This can cause ugly
+results.
+
+ A clean solution to this problem is available in GNU 'troff', using
+the requests 'chop' to remove the final newline of a diversion, and
+'unformat' to make the horizontal spaces adjustable again.
+
+ .box xxx
+ a funny
+ .br
+ test
+ .br
+ .box
+ .chop xxx
+ .unformat xxx
+ This is \*[xxx].
+ => This is a funny test.
+
+ *Note Gtroff Internals::.
+
+ (1) The backslash is doubled. *Note Copy Mode::.
+
+5.31 Environments
+=================
+
+As discussed in *note Deferring Output::, environments store most of the
+parameters that determine the appearance of text. A default environment
+named '0' exists when GNU 'troff' starts up; it is modified by
+formatting-related requests and escape sequences.
+
+ You can create new environments and switch among them. Only one is
+current at any given time. Active environments are managed using a
+"stack", a data structure supporting "push" and "pop" operations. The
+current environment is at the top of the stack. The same environment
+name can be pushed onto the stack multiple times, possibly interleaved
+with others. Popping the environment stack does not destroy the current
+environment; it remains accessible by name and can be made current again
+by pushing it at any time. Environments cannot be renamed or deleted,
+and can only be modified when current. To inspect the environment
+stack, use the 'pev' request; see *note Debugging::.
+
+ Environments store the following information.
+
+ * a partially collected line, if any
+
+ * data about the most recently output glyph and line (registers
+ '.cdp', '.cht', '.csk', '.n', '.w')
+
+ * typeface parameters (size, family, style, height and slant,
+ inter-word and inter-sentence space sizes)
+
+ * page parameters (line length, title length, vertical spacing, line
+ spacing, indentation, line numbering, centering, right-alignment,
+ underlining, hyphenation parameters)
+
+ * filling enablement; adjustment enablement and mode
+
+ * tab stops; tab, leader, escape, control, no-break control,
+ hyphenation, and margin characters
+
+ * input line traps
+
+ * stroke and fill colors
+
+ -- Request: .ev [ident]
+ -- Register: \n[.ev]
+ Enter the environment IDENT, which is created if it does not
+ already exist, using the same parameters as for the default
+ environment used at startup. With no argument, GNU 'troff'
+ switches to the previous environment.
+
+ Invoking 'ev' with an argument puts environment IDENT onto the top
+ of the environment stack. (If it isn't already present in the
+ stack, this is a proper push.) Without an argument, 'ev' pops the
+ environment stack, making the previous environment current. It is
+ an error to pop the environment stack with no previous environment
+ available. The read-only string-valued register '.ev' contains the
+ name of the current environment--the one at the top of the stack.
+
+ .ev footnote-env
+ .fam N
+ .ps 6
+ .vs 8
+ .ll -.5i
+ .ev
+
+ ...
+
+ .ev footnote-env
+ \[dg] Observe the smaller text and vertical spacing.
+ .ev
+
+ We can familiarize ourselves with stack behavior by wrapping the
+ 'ev' request with a macro that reports the contents of the '.ev'
+ register to the standard error stream.
+
+ .de EV
+ . ev \\$1
+ . tm environment is now \\n[.ev]
+ ..
+ .
+ .EV foo
+ .EV bar
+ .EV
+ .EV baz
+ .EV
+ .EV
+ .EV
+
+ error-> environment is now foo
+ error-> environment is now bar
+ error-> environment is now foo
+ error-> environment is now baz
+ error-> environment is now foo
+ error-> environment is now 0
+ error-> error: environment stack underflow
+ error-> environment is now 0
+
+ -- Request: .evc environment
+ Copy the contents of ENVIRONMENT to the current environment.
+
+ The following environment data are not copied.
+
+ * a partially collected line, if present;
+
+ * the interruption status of the previous input line (due to use
+ of the '\c' escape sequence);
+
+ * the count of remaining lines to center, to right-justify, or
+ to underline (with or without underlined spaces)--these are
+ set to zero;
+
+ * the activation status of temporary indentation;
+
+ * input line traps and their associated data;
+
+ * the activation status of line numbering (which can be
+ reactivated with '.nm +0'); and
+
+ * the count of consecutive hyphenated lines (set to zero).
+
+ -- Register: \n[.w]
+ -- Register: \n[.cht]
+ -- Register: \n[.cdp]
+ -- Register: \n[.csk]
+ The '\n[.w]' register contains the width of the last glyph
+ formatted in the environment.
+
+ The '\n[.cht]' register contains the height of the last glyph
+ formatted in the environment.
+
+ The '\n[.cdp]' register contains the depth of the last glyph
+ formatted in the environment. It is positive for glyphs extending
+ below the baseline.
+
+ The '\n[.csk]' register contains the "skew" (how far to the right
+ of the glyph's center that GNU 'troff' should place an accent) of
+ the last glyph formatted in the environment.
+
+ -- Register: \n[.n]
+ The '\n[.n]' register contains the length of the previous output
+ line emitted in the environment.
+
+5.32 Suppressing Output
+=======================
+
+ -- Escape sequence: \O[num]
+ Suppress GNU 'troff' output of glyphs and geometric objects. The
+ sequences '\O2', '\O3', '\O4', and '\O5' are intended for internal
+ use by 'grohtml'.
+
+ '\O0'
+ Disable the emission of glyphs and geometric objects to the
+ output driver, provided that this sequence occurs at the
+ outermost suppression level (see '\O3' and '\04' below).
+ Horizontal motions corresponding to non-overstruck glyph
+ widths still occur.
+
+ '\O1'
+ Enable the emission of glyphs and geometric objects to the
+ output driver, provided that this sequence occurs at the
+ outermost suppression level.
+
+ '\O0' and '\O1' also reset the four registers 'opminx', 'opminy',
+ 'opmaxx', and 'opmaxy' to -1. These four registers mark the top
+ left and bottom right hand corners of a box encompassing all
+ written or drawn output.
+
+ '\O2'
+ At the outermost suppression level, enable emission of glyphs
+ and geometric objects, and write to the standard error stream
+ the page number and values of the four aforementioned
+ registers encompassing glyphs written since the last
+ interpolation of a '\O' sequence, as well as the page offset,
+ line length, image file name (if any), horizontal and vertical
+ device motion quanta, and input file name. Numeric values are
+ in basic units.
+
+ '\O3'
+ Begin a nested suppression level. 'grohtml' uses this
+ mechanism to create images of output preprocessed with 'gpic',
+ 'geqn', and 'gtbl'. At startup, GNU 'troff' is at the
+ outermost suppression level. 'pre-grohtml' generates these
+ sequences when processing the document, using GNU 'troff' with
+ the 'ps' output device, Ghostscript, and the PNM tools to
+ produce images in PNG format. They start a new page if the
+ device is not 'html' or 'xhtml', to reduce the number of
+ images crossing a page boundary.
+
+ '\O4'
+ End a nested suppression level.
+
+ '\O[5PFILE]'
+ At the outermost suppression level, write the name 'file' to
+ the standard error stream at position P, which must be one of
+ 'l', 'r', 'c', or 'i', corresponding to left, right, centered,
+ and inline alignments within the document, respectively. FILE
+ is a name associated with the production of the next image.
+
+ -- Register: \n[.O]
+ Output suppression nesting level applied by '\O3' and '\O4' escape
+ sequences.
+
+5.33 I/O
+========
+
+'gtroff' has several requests for including files:
+
+ -- Request: .so file
+ -- Request: .soquiet file
+ Replace the 'so' request's control line with the contents of the
+ file named by the argument, "sourcing" it. FILE is sought in the
+ directories specified by '-I' command-line option. If FILE does
+ not exist, a warning in category 'file' is produced and the request
+ has no further effect. *Note Warnings::, for information about the
+ enablement and suppression of warnings.
+
+ 'so' can be useful for large documents; e.g., allowing each chapter
+ of a book to be kept in a separate file. However, files
+ interpolated with 'so' are not preprocessed; to overcome this
+ limitation, see the 'gsoelim(1)' man page.
+
+ Since GNU 'troff' replaces the entire control line with the
+ contents of a file, it matters whether 'file' is terminated with a
+ newline or not. Assume that file 'xxx' contains only the word
+ 'foo' without a trailing newline.
+
+ $ printf 'foo' > xxx
+
+ The situation is
+ .so xxx
+ bar.
+ => The situation is foobar.
+
+ 'soquiet' works the same way, except that no warning diagnostic is
+ issued if FILE does not exist.
+
+ -- Request: .pso command
+ Read the standard output from the specified COMMAND and include it
+ in place of the 'pso' request.
+
+ It is an error to use this request in safer mode, which is the
+ default. Invoke GNU 'troff' or a front end with the '-U' option to
+ enable unsafe mode.
+
+ The comment regarding a final newline for the 'so' request is valid
+ for 'pso' also.
+
+ -- Request: .mso file
+ -- Request: .msoquiet file
+ Identical to the 'so' and 'soquiet' requests, respectively, except
+ that 'gtroff' searches for the specified FILE in the same
+ directories as macro files for the '-m' command-line option. If
+ the file name to be included has the form 'NAME.tmac' and it isn't
+ found, these requests try to include 'tmac.NAME' and vice versa.
+
+ -- Request: .trf file
+ -- Request: .cf file
+ Transparently output the contents of FILE. Each line is output as
+ if it were preceded by '\!'; however, the lines are _not_ subject
+ to copy mode interpretation. If the file does not end with a
+ newline, 'trf' adds one. Both requests cause a break.
+
+ When used in a diversion, these requests embed a node (*note Gtroff
+ Internals::) in it that, when reread, causes the contents of FILE
+ to be transparently copied to the output. In AT&T 'troff', the
+ contents of FILE are immediately copied to the output regardless of
+ whether there is a current diversion; this behaviour is so
+ anomalous that it must be considered a bug.
+
+ While 'cf' copies the contents of FILE completely unprocessed,
+ 'trf' disallows characters such as NUL that are not valid 'gtroff'
+ input characters (*note Identifiers::).
+
+ For 'cf', within a diversion, "completely unprocessed" means that
+ each line of a file to be inserted is handled as if it were
+ preceded by '\!\\!'.
+
+ To define a macro 'x' containing the contents of file 'f', use
+
+ .ev 1
+ .di x
+ .trf f
+ .di
+ .ev
+
+ The calls to 'ev' prevent the partially collected output line from
+ becoming part of the diversion (*note Diversions::).
+
+ -- Request: .nx [file]
+ Force 'gtroff' to continue processing of the file specified as an
+ argument. If no argument is given, immediately jump to the end of
+ file.
+
+ -- Request: .rd [prompt [arg1 arg2 ...]]
+ Read from standard input, and include what is read as though it
+ were part of the input file. Text is read until a blank line is
+ encountered.
+
+ If standard input is a TTY input device (keyboard), write PROMPT to
+ standard error, followed by a colon (or send BEL for a beep if no
+ argument is given).
+
+ Arguments after PROMPT are available for the input. For example,
+ the line
+
+ .rd data foo bar
+
+ with the input 'This is \$2.' prints
+
+ This is bar.
+
+ Using the 'nx' and 'rd' requests, it is easy to set up form letters.
+The form letter template is constructed like this, putting the following
+lines into a file called 'repeat.let':
+
+ .ce
+ \*(td
+ .sp 2
+ .nf
+ .rd
+ .sp
+ .rd
+ .fi
+ Body of letter.
+ .bp
+ .nx repeat.let
+
+When this is run, a file containing the following lines should be
+redirected in. Requests included in this file are executed as though
+they were part of the form letter. The last block of input is the 'ex'
+request, which tells GNU 'troff' to stop processing. If this were not
+there, 'troff' would not know when to stop.
+
+ Trent A. Fisher
+ 708 NW 19th Av., #202
+ Portland, OR 97209
+
+ Dear Trent,
+
+ Len Adollar
+ 4315 Sierra Vista
+ San Diego, CA 92103
+
+ Dear Mr. Adollar,
+
+ .ex
+
+ -- Request: .pi pipe
+ Pipe the output of 'gtroff' to the shell command(s) specified by
+ PIPE. This request must occur before 'gtroff' has a chance to
+ print anything.
+
+ It is an error to use this request in safer mode, which is the
+ default. Invoke GNU 'troff' or a front end with the '-U' option to
+ enable unsafe mode.
+
+ Multiple calls to 'pi' are allowed, acting as a chain. For
+ example,
+
+ .pi foo
+ .pi bar
+ ...
+
+ is the same as '.pi foo | bar'.
+
+ The intermediate output format of GNU 'troff' is piped to the
+ specified commands. Consequently, calling 'groff' without the '-Z'
+ option normally causes a fatal error.
+
+ -- Request: .sy cmds
+ -- Register: \n[systat]
+ Execute the shell command(s) specified by CMDS. The output is not
+ saved anywhere, so it is up to the user to do so.
+
+ It is an error to use this request in safer mode; this is the
+ default. Give GNU 'troff' or a front end program the '-U' option
+ to enable unsafe mode.
+
+ The following code fragment introduces the current time into a
+ document.
+
+ .sy perl -e 'printf ".nr H %d\\n.nr M %d\\n.nr S %d\\n",\
+ (localtime(time))[2,1,0]' > /tmp/x\n[$$]
+ .so /tmp/x\n[$$]
+ .sy rm /tmp/x\n[$$]
+ \nH:\nM:\nS
+
+ This works by having the Perl script (run by 'sy') write 'nr'
+ requests that set the registers 'H', 'M', and 'S' to a temporary
+ file. The 'roff' document then reads the temporary file using the
+ 'so' request.
+
+ The registers 'seconds', 'minutes', and 'hours', initialized at
+ startup of GNU 'troff', should satisfy most requirements. Use the
+ 'af' request to format their values for output.
+
+ .af hours 00
+ .af minutes 00
+ .af seconds 00
+ \n[hours]:\n[minutes]:\n[seconds]
+ => 02:17:54
+
+ The writable register 'systat' contains the return value of the
+ 'system()' function executed by the last 'sy' request.
+
+ -- Request: .open stream file
+ -- Request: .opena stream file
+ Open the specified FILE for writing and associates the specified
+ STREAM with it.
+
+ The 'opena' request is like 'open', but if the file exists, append
+ to it instead of truncating it.
+
+ It is an error to use these requests in safer mode; this is the
+ default. Give GNU 'troff' or a front end program the '-U' option
+ to enable unsafe mode.
+
+ -- Request: .write stream data
+ -- Request: .writec stream data
+ Write to the file associated with the specified STREAM. The stream
+ must previously have been the subject of an open request. The
+ remainder of the line is interpreted as the 'ds' request reads its
+ second argument: an initial neutral double quote in CONTENTS is
+ stripped to allow embedding of leading spaces, and it is read in
+ copy mode.
+
+ The 'writec' request is like 'write', but only 'write' appends a
+ newline to the data.
+
+ -- Request: .writem stream xx
+ Write the contents of the macro or string XX to the file associated
+ with the specified STREAM.
+
+ XX is read in copy mode, i.e., already formatted elements are
+ ignored. Consequently, diversions must be unformatted with the
+ 'asciify' request before calling 'writem'. Usually, this means a
+ loss of information.
+
+ -- Request: .close stream
+ Close the specified STREAM; the stream is no longer an acceptable
+ argument to the 'write' request.
+
+ Here a simple macro to write an index entry.
+
+ .open idx test.idx
+ .
+ .de IX
+ . write idx \\n[%] \\$*
+ ..
+ .
+ .IX test entry
+ .
+ .close idx
+
+ -- Escape sequence: \Ve
+ -- Escape sequence: \V(ev
+ -- Escape sequence: \V[env]
+ Interpolate the contents of the specified environment variable ENV
+ (one-character name E, two-character name EV) as returned by the
+ function 'getenv(3)'. '\V' is interpreted even in copy mode (*note
+ Copy Mode::).
+
+5.34 Postprocessor Access
+=========================
+
+Two escape sequences and two requests enable documents to pass
+information directly to a postprocessor. These are useful for
+exercising device-specific capabilities that the 'groff' language does
+not abstract or generalize; examples include the embedding of hyperlinks
+and image files. Device-specific functions are documented in each
+output driver's man page, such as 'gropdf(1)', 'grops(1)', or
+'grotty(1)'.
+
+ -- Request: .device xxx ...
+ -- Escape sequence: \X'xxx ...'
+ Embed all XXX arguments into GNU 'troff' output as parameters to a
+ device control command 'x X'. The meaning and interpretation of
+ such parameters is determined by the output driver or other
+ postprocessor.
+
+ The 'device' request processes its arguments in copy mode (*note
+ Copy Mode::). An initial neutral double quote in CONTENTS is
+ stripped to allow embedding of leading spaces. By contrast, within
+ '\X' arguments, the escape sequences '\&', '\)', '\%', and '\:' are
+ ignored; '\<SP>' and '\~' are converted to single space characters;
+ and '\\' has its escape character stripped. So that the basic
+ Latin subset of the Unicode character set(1) (*note Postprocessor
+ Access-Footnote-1::) can be reliably encoded in device control
+ commands, seven special character escape sequences ('\-', '\[aq]',
+ '\[dq]', '\[ga]', '\[ha]', '\[rs]', and '\[ti]',) are mapped to
+ basic Latin characters; see the 'groff_char(7)' man page. For this
+ transformation, character translations and special character
+ definitions are ignored.(2) (*note Postprocessor
+ Access-Footnote-2::) The use of any other escape sequence in '\X'
+ parameters is normally an error.
+
+ If the 'use_charnames_in_special' directive appears in the output
+ device's 'DESC' file, the use of special character escape sequences
+ is _not_ an error; they are simply output verbatim (with the
+ exception of the seven mapped to Unicode basic Latin characters,
+ discussed above). 'use_charnames_in_special' is currently employed
+ only by 'grohtml'.
+
+ -- Request: .devicem name
+ -- Escape sequence: \Yn
+ -- Escape sequence: \Y(nm
+ -- Escape sequence: \Y[name]
+ This is approximately equivalent to '\X'\*[NAME]'' (one-character
+ name N, two-character name NM). However, the contents of the
+ string or macro NAME are not interpreted; also it is permitted for
+ NAME to have been defined as a macro and thus contain newlines (it
+ is not permitted for the argument to '\X' to contain newlines).
+ The inclusion of newlines requires an extension to the AT&T 'troff'
+ output format, and confuses drivers that do not know about this
+ extension (*note Device Control Commands::).
+
+ -- Request: .tag name
+ -- Request: .taga name
+ Reserved for internal use.
+
+ (1) that is, ISO 646:1991-IRV or, popularly, "US-ASCII"
+
+ (2) They are bypassed because these parameters are not rendered as
+glyphs in the output; instead, they remain abstract characters--in a PDF
+bookmark or a URL, for example.
+
+5.35 Miscellaneous
+==================
+
+We document here GNU 'troff' features that fit poorly elsewhere.
+
+ -- Request: .nm [start [increment [space [indentation]]]]
+ -- Register: \n[ln]
+ -- Register: \n[.nm]
+ Begin (or, with no arguments, cease) numbering output lines. START
+ assigns the number of the _next_ output line. Only line numbers
+ divisible by INCREMENT are marked (default: '1'). SPACE configures
+ the horizontal spacing between the number and the text (default:
+ '1'). Any given INDENTATION is applied to the numbers (default:
+ '0'). The third and fourth arguments are reckoned in numeral
+ widths ('\0'). START must be non-negative and INCREMENT positive.
+
+ The formatter aligns the number to the right in a width of three
+ numeral spaces plus INDENTATION, then catenates SPACE and the
+ output line. The line length is _not_ reduced. Depending on the
+ value of the page offset,(1) (*note Miscellaneous-Footnote-1::)
+ numbers wider than the allocated space protrude into the left
+ margin, or shift the output line to the right.
+
+ Line numbering parameters corresponding to missing arguments are
+ not altered. After numbering is disabled, '.nm +0' resumes it
+ using the previously active parameters.
+
+ The parameters of 'nm' are associated with the environment (*note
+ Environments::).
+
+ While numbering is enabled, the output line number register 'ln' is
+ updated as each line is output, even if no line number is formatted
+ with it because it is being skipped (it is not a multiple of
+ INCREMENT) or because numbering is suppressed (see the 'nn' request
+ below).
+
+ The '.nm' register tracks the enablement status of numbering.
+ Temporary suspension of numbering with the 'nn' request does _not_
+ alter its value.
+
+ .po 5n
+ .ll 44n
+ Programming,
+ when stripped of all its circumstantial irrelevancies,
+ .nm 999 1 1 -4
+ boils down to no more and no less than
+ .nm +0 3
+ very effective thinking so as to avoid unmastered
+ .nn 2
+ complexity,
+ to very vigorous separation of your many
+ different concerns.
+ .br
+ \(em Edsger Dijkstra
+ .sp
+ .nm 1 1 1
+ This guy's arrogance takes your breath away.
+ .br
+ \(em John Backus
+ => Programming, when stripped of all its cir-
+ => 999 cumstantial irrelevancies, boils down to no
+ => more and no less than very effective think-
+ => ing so as to avoid unmastered complexity, to
+ => very vigorous separation of your many dif-
+ => ferent concerns.
+ => 1002 -- Edsger Dijkstra
+ =>
+ => 1 This guy's arrogance takes your breath away.
+ => 2 -- John Backus
+
+ -- Request: .nn [skip]
+ -- Register: \n[.nn]
+ Suppress numbering of the next SKIP output lines that would
+ otherwise be numbered. The default is 1. 'nn' can be invoked when
+ line numbering is not active; suppression of numbering will take
+ effect for SKIP lines once 'nm' enables it.
+
+ The '.nn' register stores the count of output lines still to have
+ their numbering suppressed.
+
+ This count is associated with the environment (*note
+ Environments::).
+
+ To test whether the current output line will be numbered, you must
+check both the '.nm' and '.nn' registers.
+
+ .de is-numbered
+ . nop This line
+ . ie (\\n[.nm] & (1-\\n[.nn])) IS
+ . el ISN'T
+ . nop numbered.
+ . br
+ ..
+ Test line numbering.
+ .is-numbered
+ .nm 1
+ .nn 1
+ .is-numbered
+ .is-numbered
+ .nm
+ .is-numbered
+ => Test line numbering. This line ISN'T numbered.
+ => This line ISN'T numbered.
+ => 1 This line IS numbered.
+ => This line ISN'T numbered.
+
+ -- Request: .mc [margin-character [distance]
+ Begin (or, with no arguments, cease) writing a "margin-character"
+ to the right of each output line. The DISTANCE argument separates
+ MARGIN-CHARACTER from the right margin. If absent, the most recent
+ value is used; the default is 10 points. If an output line exceeds
+ the line length, the margin character is appended to it. No margin
+ character is written on lines produced by the 'tl' request.
+
+ The margin character is a property of the output line; the margin
+ character last configured when the line is output controls. If the
+ margin character is disabled before an output line breaks, none is
+ output (but see below).
+
+ The margin character is associated with the environment (*note
+ Environments::).
+
+ .ll 5i
+ .nf
+ .mc \[br]
+ This paragraph is marked with a margin character.
+ .sp
+ As seen above, vertical space isn't thus marked.
+ \&
+ An output line that is present, but empty, is.
+ => This paragraph is marked with a margin character. |
+ =>
+ => As seen above, vertical space isn't thus marked. |
+ => |
+ => An output line that is present, but empty, is. |
+
+ For compatibility with AT&T 'troff', a call to 'mc' to set the margin
+character can't be undone immediately; at least one line gets a margin
+character.
+
+ .ll 10n
+ .nf
+ .mc |
+ .mc *
+ .mc
+ foo
+ bar
+ => foo *
+ => bar
+
+ The margin character mechanism is commonly used to annotate changes
+in documents. The 'groff' distribution ships a program, 'gdiffmk', to
+assist with this task.(2) (*note Miscellaneous-Footnote-2::)
+
+ -- Request: .psbb file
+ -- Register: \n[llx]
+ -- Register: \n[lly]
+ -- Register: \n[urx]
+ -- Register: \n[ury]
+ Retrieve the bounding box of the PostScript image found in FILE,
+ which must conform to Adobe's "Document Structuring Conventions"
+ (DSC), locate a '%%BoundingBox' comment, and store the (upper-,
+ lower-, -left, -right) values into the registers 'llx', 'lly',
+ 'urx', and 'ury'. If an error occurs (for example, if no
+ '%%BoundingBox' comment is present), the formatter sets these
+ registers to 0.
+
+ The search path for FILE can be controlled with the '-I'
+ command-line option.
+
+ (1) Recall *note Line Layout::.
+
+ (2) Historically, tools named 'nrchbar' and 'changebar' were
+developed for marking changes with margin characters and could be found
+in archives of the 'comp.sources.unix' USENET group. Some proprietary
+Unices also offer(ed) a 'diffmk' program.
+
+5.36 'gtroff' Internals
+=======================
+
+'gtroff' processes input in three steps. One or more input characters
+are converted to an "input token".(1) (*note Gtroff
+Internals-Footnote-1::) Then, one or more input tokens are converted to
+an "output node". Finally, output nodes are converted to the
+intermediate output language understood by all output devices.
+
+ Actually, before step one happens, 'gtroff' converts certain escape
+sequences into reserved input characters (not accessible by the user);
+such reserved characters are used for other internal processing also -
+this is the very reason why not all characters are valid input. *Note
+Identifiers::, for more on this topic.
+
+ For example, the input string 'fi\[:u]' is converted into a character
+token 'f', a character token 'i', and a special token ':u' (representing
+u umlaut). Later on, the character tokens 'f' and 'i' are merged to a
+single output node representing the ligature glyph 'fi' (provided the
+current font has a glyph for this ligature); the same happens with ':u'.
+All output glyph nodes are 'processed', which means that they are
+invariably associated with a given font, font size, advance width, etc.
+During the formatting process, 'gtroff' itself adds various nodes to
+control the data flow.
+
+ Macros, diversions, and strings collect elements in two chained
+lists: a list of input tokens that have been passed unprocessed, and a
+list of output nodes. Consider the following diversion.
+
+ .di xxx
+ a
+ \!b
+ c
+ .br
+ .di
+
+It contains these elements.
+
+node list token list element number
+
+line start node -- 1
+glyph node 'a' -- 2
+word space node -- 3
+-- 'b' 4
+-- '\n' 5
+glyph node 'c' -- 6
+vertical size node -- 7
+vertical size node -- 8
+-- '\n' 9
+
+Elements 1, 7, and 8 are inserted by 'gtroff'; the latter two (which are
+always present) specify the vertical extent of the last line, possibly
+modified by '\x'. The 'br' request finishes the pending output line,
+inserting a newline input token, which is subsequently converted to a
+space when the diversion is reread. Note that the word space node has a
+fixed width that isn't adjustable anymore. To convert horizontal space
+nodes back to input tokens, use the 'unformat' request.
+
+ Macros only contain elements in the token list (and the node list is
+empty); diversions and strings can contain elements in both lists.
+
+ The 'chop' request simply reduces the number of elements in a macro,
+string, or diversion by one. Exceptions are "compatibility save" and
+"compatibility ignore" input tokens, which are ignored. The 'substring'
+request also ignores those input tokens.
+
+ Some requests like 'tr' or 'cflags' work on glyph identifiers only;
+this means that the associated glyph can be changed without destroying
+this association. This can be very helpful for substituting glyphs. In
+the following example, we assume that glyph 'foo' isn't available by
+default, so we provide a substitution using the 'fchar' request and map
+it to input character 'x'.
+
+ .fchar \[foo] foo
+ .tr x \[foo]
+
+Now let us assume that we install an additional special font 'bar' that
+has glyph 'foo'.
+
+ .special bar
+ .rchar \[foo]
+
+Since glyphs defined with 'fchar' are searched before glyphs in special
+fonts, we must call 'rchar' to remove the definition of the fallback
+glyph. Anyway, the translation is still active; 'x' now maps to the
+real glyph 'foo'.
+
+ Macro and request arguments preserve compatibility mode enablement.
+
+ .cp 1 \" switch to compatibility mode
+ .de xx
+ \\$1
+ ..
+ .cp 0 \" switch compatibility mode off
+ .xx caf\['e]
+ => café
+
+Since compatibility mode is enabled while 'de' is invoked, the macro
+'xx' enables compatibility mode when it is called. Argument '$1' can
+still be handled properly because it inherits the compatibility mode
+enablement status that was active at the point where 'xx' was called.
+
+ After interpolation of the parameters, the compatibility save and
+restore tokens are removed.
+
+ (1) Except the escape sequences '\f', '\F', '\H', '\m', '\M', '\R',
+'\s', and '\S', which are processed immediately if not in copy mode.
+
+5.37 Debugging
+==============
+
+ Standard troff voodoo, just put a power of two backslashes in
+ front of it until it works and if you still have problems add a \c.
+ -- Ron Natalie
+
+ GNU 'troff' is not the easiest language to debug, in part thanks to
+its design features of recursive interpolation and the use of
+multi-stage pipeline processing in the surrounding system. Nevertheless
+there exist several features useful for troubleshooting.
+
+ Preprocessors use the 'lf' request to preserve the identity of the
+line numbers and names of input files. GNU 'troff' emits a variety of
+error diagnostics and supports several categories of warning; the output
+of these can be selectively suppressed. A trace of the formatter's
+input processing stack can be emitted when errors or warnings occur by
+means of GNU 'troff''s '-b' option, or produced on demand with the
+'backtrace' request. The 'tm' and related requests can be used to emit
+customized diagnostic messages or for instrumentation while
+troubleshooting. The 'ex' and 'ab' requests cause early termination
+with successful and error exit codes respectively, to halt further
+processing when continuing would be fruitless. Examine the state of the
+formatter with requests that write lists of defined names (macros,
+strings, and diversions), environments, registers, and page location
+traps to the standard error stream.
+
+ -- Request: .lf line [file]
+ Set the input line number (and, optionally, the file name) GNU
+ 'troff' shall use for error and warning messages. LINE is the
+ input line number of the _next_ line. Without an argument, the
+ request is ignored.
+
+ 'lf''s primary purpose is to aid the debugging of documents that
+ undergo preprocessing. Programs like 'tbl' that transform input in
+ their own languages into 'roff' requests use it so that any
+ diagnostic messages emitted by 'troff' correspond to the source
+ document.
+
+ -- Request: .tm message
+ -- Request: .tm1 message
+ -- Request: .tmc message
+ Send MESSAGE, which consumes the remainder of the input line and
+ cannot contain special characters, to the standard error stream,
+ followed by a newline. Leading spaces in MESSAGE are ignored.
+
+ 'tm1' is similar, but recognizes and strips a leading neutral
+ double quote from MESSAGE to allow the embedding of leading spaces.
+
+ 'tmc' works as 'tm1', but does not append a newline.
+
+ -- Request: .ab [message]
+ Write any MESSAGE to the standard error stream (like 'tm') and then
+ abort GNU 'troff'; that is, stop processing and terminate with a
+ failure status.
+
+ -- Request: .ex
+ Exit GNU 'troff'; that is, stop processing and terminate with a
+ successful status. To stop processing only the current file, use
+ the 'nx' request; see *note I/O::.
+
+ When doing something involved, it is useful to leave the debugging
+statements in the code and have them turned on by a command-line flag.
+
+ .if \n[DB] .tm debugging output
+
+To activate such statements, use the '-r' option to set the register.
+
+ groff -rDB=1 file
+
+ If it is known in advance that there are many errors and no useful
+output, GNU 'troff' can be forced to suppress formatted output with the
+'-z' option.
+
+ -- Request: .pev
+ Report the state of the current environment followed by that of all
+ other environments to the standard error stream.
+
+ -- Request: .pm
+ Report, to the standard error stream, the names of all defined
+ macros, strings, and diversions with their sizes in bytes.
+
+ -- Request: .pnr
+ Report the names and contents of all currently defined registers to
+ the standard error stream.
+
+ -- Request: .ptr
+ Report the names and positions of all page location traps to the
+ standard error stream. Empty slots in the list, where a trap has
+ been planted but subsequently (re)moved, are printed as well.
+
+ -- Request: .fl
+ Instruct 'gtroff' to flush its output immediately. The intent is
+ for interactive use, but this behaviour is currently not
+ implemented in 'gtroff'. Contrary to Unix 'troff', TTY output is
+ sent to a device driver also ('grotty'), making it non-trivial to
+ communicate interactively.
+
+ This request causes a line break.
+
+ -- Request: .backtrace
+ Write the state of the input stack to the standard error stream.
+
+ Consider the following in a file 'test'.
+
+ .de xxx
+ . backtrace
+ ..
+ .de yyy
+ . xxx
+ ..
+ .
+ .yyy
+ error-> troff: backtrace: 'test':2: macro 'xxx'
+ error-> troff: backtrace: 'test':5: macro 'yyy'
+ error-> troff: backtrace: file 'test':8
+
+ The '-b' option of GNU 'troff' causes a backtrace to be generated
+ on each error or warning. Some warnings have to be enabled; *Note
+ Warnings::.
+
+ -- Register: \n[slimit]
+ If greater than 0, sets the maximum quantity of objects on GNU
+ 'troff''s internal input stack. If less than or equal to 0, there
+ is no limit: recursion can continue until program memory is
+ exhausted. The default is 1,000.
+
+ -- Request: .warnscale su
+ Set the scaling unit used in certain warnings to SU, which can take
+ the values 'u', 'i', 'c', 'p', and 'P'. The default is 'i'.
+
+ -- Request: .spreadwarn [limit]
+ Emit a 'break' warning if the additional space inserted for each
+ space between words in an output line adjusted to both margins with
+ '.ad b' is larger than or equal to LIMIT. A negative value is
+ treated as zero; an absent argument toggles the warning on and off
+ without changing LIMIT. The default scaling unit is 'm'. At
+ startup, 'spreadwarn' is inactive and LIMIT is 3m.
+
+ For example,
+
+ .spreadwarn 0.2m
+
+ causes a warning if 'break' warnings are not suppressed and
+ 'gtroff' must add 0.2m or more for each inter-word space in a line.
+ *Note Warnings::.
+
+ GNU 'troff' has command-line options for reporting warnings ('-w')
+and backtraces ('-b') when a warning or an error occurs.
+
+ -- Request: .warn [n]
+ -- Register: \n[.warn]
+ Select the categories, or "types", of reported warnings. N is the
+ sum of the numeric codes associated with each warning category that
+ is to be enabled; all other categories are disabled. The
+ categories and their associated codes are listed in *note
+ Warnings::. For example, '.warn 0' disables all warnings, and
+ '.warn 1' disables all warnings except those about missing glyphs.
+ If no argument is given, all warning categories are enabled.
+
+ The read-only register '.warn' contains the sum of the numeric
+ codes of enabled warning categories.
+
+5.37.1 Warnings
+---------------
+
+Warning diagnostics emitted by GNU 'troff' are divided into named,
+numbered categories. The name associated with each warning category is
+used by the '-w' and '-W' options. Each category is also assigned a
+power of two; the sum of enabled category values is used by the 'warn'
+request and the '.warn' register.
+
+ Warnings of each category are produced under the following
+circumstances.
+
+'char'
+'1'
+ No mounted font defines a glyph for the requested character. This
+ category is enabled by default.
+
+'number'
+'2'
+ An invalid numeric expression was encountered. This category is
+ enabled by default. *Note Numeric Expressions::.
+
+'break'
+'4'
+ A filled output line could not be broken such that its length was
+ less than the output line length '\n[.l]'. This category is
+ enabled by default.
+
+'delim'
+'8'
+ The closing delimiter in an escape sequence was missing or
+ mismatched.
+
+'el'
+'16'
+ The 'el' request was encountered with no prior corresponding 'ie'
+ request. *Note if-else::.
+
+'scale'
+'32'
+ A scaling unit inappropriate to its context was used in a numeric
+ expression.
+
+'range'
+'64'
+ A numeric expression was out of range for its context.
+
+'syntax'
+'128'
+ A self-contradictory hyphenation mode was requested; an empty or
+ incomplete numeric expression was encountered; an operand to a
+ numeric operator was missing; an attempt was made to define a
+ recursive, empty, or nonsensical character class; or a 'groff'
+ extension conditional expression operator was used while in
+ compatibility mode.
+
+'di'
+'256'
+ A 'di', 'da', 'box', or 'boxa' request was invoked without an
+ argument when there was no current diversion.
+
+'mac'
+'512'
+ An undefined string, macro, or diversion was used. When such an
+ object is dereferenced, an empty one of that name is automatically
+ created. So, unless it is later deleted, at most one warning is
+ given for each.
+
+ This warning is also emitted upon an attempt to move an unplanted
+ trap macro (*note Page Location Traps::). In such cases, the
+ unplanted macro is _not_ dereferenced, so it is not created if it
+ does not exist.
+
+'reg'
+'1024'
+ An undefined register was used. When an undefined register is
+ dereferenced, it is automatically defined with a value of 0. So,
+ unless it is later deleted, at most one warning is given for each.
+
+'tab'
+'2048'
+ A tab character was encountered where a number was expected, or
+ appeared in an unquoted macro argument.
+
+'right-brace'
+'4096'
+ A right brace escape sequence '\}' was encountered where a number
+ was expected.
+
+'missing'
+'8192'
+ A request was invoked with a mandatory argument absent.
+
+'input'
+'16384'
+ An invalid character occurred on the input stream.
+
+'escape'
+'32768'
+ An unsupported escape sequence was encountered.
+
+'space'
+'65536'
+ A space was missing between a request or macro and its argument.
+ This warning is produced when an undefined name longer than two
+ characters is encountered and the first two characters of the name
+ constitute a defined name. No request is invoked, no macro called,
+ and an empty macro is not defined. This category is enabled by
+ default. It never occurs in compatibility mode.
+
+'font'
+'131072'
+ A non-existent font was selected, or the selection was ignored
+ because a font selection escape sequence was used after the output
+ line continuation escape sequence on an input line. This category
+ is enabled by default.
+
+'ig'
+'262144'
+ An invalid escape sequence occurred in input ignored using the 'ig'
+ request. This warning category diagnoses a condition that is an
+ error when it occurs in non-ignored input.
+
+'color'
+'524288'
+ An undefined color was selected, an attempt was made to define a
+ color using an unrecognized color space, an invalid component in a
+ color definition was encountered, or an attempt was made to
+ redefine a default color.
+
+'file'
+'1048576'
+ An attempt was made to load a file that does not exist. This
+ category is enabled by default.
+
+ Two warning names group other warning categories for convenience.
+
+'all'
+ All warning categories except 'di', 'mac' and 'reg'. This
+ shorthand is intended to produce all warnings that are useful with
+ macro packages written for AT&T 'troff' and its descendants, which
+ have less fastidious diagnostics than GNU 'troff'.
+
+'w'
+ All warning categories. Authors of documents and macro packages
+ targeting 'groff' are encouraged to use this setting.
+
+5.38 Implementation Differences
+===============================
+
+GNU 'troff' has a number of features that cause incompatibilities with
+documents written for other versions of 'troff'. Some GNU extensions to
+'troff' have become supported by other implementations.
+
+5.38.1 Safer Mode
+-----------------
+
+The formatter operates in "safer" mode by default; to mitigate risks
+from untrusted input documents, the 'pi' and 'sy' requests are disabled.
+GNU 'troff''s '-U' option enables "unsafe mode", restoring their
+function and enabling additional 'groff' extension requests, 'open',
+'opena', and 'pso'. *Note I/O::.
+
+5.38.2 Compatibility Mode
+-------------------------
+
+Long identifier names may be GNU 'troff''s most obvious innovation.
+AT&T 'troff' interprets '.dsabcd' as defining a string 'ab' with
+contents 'cd'. Normally, GNU 'troff' interprets this as a call of a
+macro named 'dsabcd'. AT&T 'troff' also interprets '\*[' and '\n[' as
+an interpolation of a string or register, respectively, named '['. In
+GNU 'troff', however, the '[' is normally interpreted as delimiting a
+long name. In compatibility mode, GNU 'troff' interprets names in the
+traditional way; they thus can be two characters long at most.
+
+ -- Request: .cp [n]
+ -- Register: \n[.C]
+ If N is missing or non-zero, turn on compatibility mode; otherwise,
+ turn it off.
+
+ The read-only register '.C' is 1 if compatibility mode is on,
+ 0 otherwise.
+
+ Compatibility mode can be also turned on with the '-C' command-line
+ option.
+
+ -- Request: .do name
+ -- Register: \n[.cp]
+ The 'do' request interprets the string, request, diversion, or
+ macro NAME (along with any further arguments) with compatibility
+ mode disabled. Compatibility mode is restored (only if it was
+ active) when the _expansion_ of NAME is interpreted; that is, the
+ restored compatibility state applies to the contents of the macro,
+ string, or diversion NAME as well as data read from files or pipes
+ if NAME is any of the 'so', 'soquiet', 'mso', 'msoquiet', or 'pso'
+ requests.
+
+ The following example illustrates several aspects of 'do' behavior.
+
+ .de mac1
+ FOO
+ ..
+ .de1 mac2
+ groff
+ .mac1
+ ..
+ .de mac3
+ compatibility
+ .mac1
+ ..
+ .de ma
+ \\$1
+ ..
+ .cp 1
+ .do mac1
+ .do mac2 \" mac2, defined with .de1, calls "mac1"
+ .do mac3 \" mac3 calls "ma" with argument "c1"
+ .do mac3 \[ti] \" groff syntax accepted in .do arguments
+ => FOO groff FOO compatibility c1 ~
+
+ The read-only register '.cp', meaningful only when dereferenced
+ from a 'do' request, is 1 if compatibility mode was on when the
+ 'do' request was encountered, and 0 if it was not. This register
+ is specialized and may require a statement of rationale.
+
+ When writing macro packages or documents that use GNU 'troff'
+ features and which may be mixed with other packages or documents
+ that do not--common scenarios include serial processing of man
+ pages or use of the 'so' or 'mso' requests--you may desire correct
+ operation regardless of compatibility mode enablement in the
+ surrounding context. It may occur to you to save the existing
+ value of '\n(.C' into a register, say, '_C', at the beginning of
+ your file, turn compatibility mode off with '.cp 0', then restore
+ it from that register at the end with '.cp \n(_C'. At the same
+ time, a modular design of a document or macro package may lead you
+ to multiple layers of inclusion. You cannot use the same register
+ name everywhere lest you "clobber" the value from a preceding or
+ enclosing context. The two-character register name space of AT&T
+ 'troff' is confining and mnemonically challenging; you may wish to
+ use the more capacious name space of GNU 'troff'. However,
+ attempting '.nr _my_saved_C \n(.C' will not work in compatibility
+ mode; the register name is too long. "This is exactly what 'do' is
+ for," you think, '.do nr _my_saved_C \n(.C'. The foregoing will
+ always save zero to your register, because 'do' turns compatibility
+ mode _off_ while it interprets its argument list.
+
+ To robustly save compatibility mode before switching it off, use
+
+ .do nr _my_saved_C \n[.cp]
+ .cp 0
+
+ at the beginning of your file, followed by
+
+ .cp \n[_my_saved_C]
+ .do rr _my_saved_C
+
+ at the end. As in the C language, we all have to share one big
+ name space, so choose a register name that is unlikely to collide
+ with other uses.
+
+ Normally, GNU 'troff' preserves the interpolation depth in delimited
+arguments, but not in compatibility mode.
+
+ .ds xx '
+ \w'abc\*(xxdef'
+ => 168 (normal mode on a terminal device)
+ => 72def' (compatibility mode on a terminal device)
+
+ Furthermore, the escape sequences '\f', '\H', '\m', '\M', '\R', '\s',
+and '\S' are transparent for the purpose of recognizing a control
+character at the beginning of a line only in compatibility mode. For
+example, this code produces bold output in both cases, but the text
+differs.
+
+ .de xx
+ Hello!
+ ..
+ \fB.xx\fP
+ => .xx (normal mode)
+ => Hello! (compatibility mode)
+
+ Normally, the syntax form '\s'N accepts only a single character (a
+digit) for N, consistently with other forms that originated in AT&T
+'troff', like '\*', '\$', '\f', '\g', '\k', '\n', and '\z'. In
+compatibility mode only, a non-zero N must be in the range 4-39. Legacy
+documents relying upon this quirk of parsing(1) (*note Compatibility
+Mode-Footnote-1::) should be migrated to another '\s' form.
+
+ (1) The Graphic Systems C/A/T phototypesetter (the original device
+target for AT&T 'troff') supported only a few discrete type sizes in the
+range 6-36 points, so Ossanna contrived a special case in the parser to
+do what the user must have meant. Kernighan warned of this in the 1992
+revision of CSTR #54 (§2.3), and more recently, McIlroy referred to it
+as a "living fossil".
+
+5.38.3 Other Differences
+------------------------
+
+'groff' request names unrecognized by other 'troff' implementations will
+likely be ignored by them; escape sequences that are 'groff' extensions
+are liable to be interpreted as if the escape character were not
+present. For example, the adjustable, non-breaking escape sequence '\~'
+is also supported by Heirloom Doctools 'troff' 050915 (September 2005),
+'mandoc' 1.9.5 (2009-09-21), 'neatroff' (commit 1c6ab0f6e, 2016-09-13),
+and Plan 9 from User Space 'troff' (commit 93f8143600, 2022-08-12), but
+not by Solaris or Documenter's Workbench 'troff's. *Note Manipulating
+Filling and Adjustment::.
+
+ GNU 'troff' does not allow the use of the escape sequences '\|',
+'\^', '\&', '\{', '\}', '\<SP>', '\'', '\`', '\-', '\_', '\!', '\%', and
+'\c' in identifiers; AT&T 'troff' does. The '\A' escape sequence (*note
+Identifiers::) may be helpful in avoiding use of these escape sequences
+in names.
+
+ When adjusting to both margins, AT&T 'troff' at first adjusts spaces
+starting from the right; GNU 'troff' begins from the left. Both
+implementations adjust spaces from opposite ends on alternating output
+lines in this adjustment mode to prevent "rivers" in the text.
+
+ GNU 'troff' does not always hyphenate words as AT&T 'troff' does.
+The AT&T implementation uses a set of hard-coded rules specific to
+English, while GNU 'troff' uses language-specific hyphenation pattern
+files derived from TeX. Furthermore, in old versions of 'troff' there
+was a limited amount of space to store hyphenation exceptions (arguments
+to the 'hw' request); GNU 'troff' has no such restriction.
+
+ GNU 'troff' predefines a string '.T' containing the argument given to
+the '-T' command-line option, namely the current output device (for
+example, 'pdf' or 'utf8'). The existence of this string is a common
+feature of post-CSTR #54 'troff's(1) (*note Other
+Differences-Footnote-1::) but valid values are specific to each
+implementation.
+
+ AT&T 'troff' ignored attempts to remove read-only registers; GNU
+'troff' honors such requests. *Note Built-in Registers::.
+
+ The (read-only) register '.T' interpolates 1 if GNU 'troff' is called
+with the '-T' command-line option, and 0 otherwise. This behavior
+differs from AT&T 'troff', which interpolated 1 only if 'nroff' was the
+formatter and was called with '-T'.
+
+ AT&T 'troff' and other implementations handle the 'lf' request
+differently. For them, its LINE argument changes the line number of the
+_current_ line.
+
+ AT&T 'troff' had only environments named '0', '1', and '2'. In GNU
+'troff', any number of environments may exist, using any valid
+identifiers for their names (*note Identifiers::.)
+
+ Fractional type sizes cause one noteworthy incompatibility. In AT&T
+'troff' the 'ps' request ignores scaling units and thus '.ps 10u' sets
+the type size to 10 points, whereas in GNU 'troff' it sets the type size
+to 10 _scaled_ points. *Note Using Fractional Type Sizes::.
+
+ The 'ab' request differs from AT&T 'troff': GNU 'troff' writes no
+message to the standard error stream if no arguments are given, and it
+exits with a failure status instead of a successful one.
+
+ The 'bp' request differs from AT&T 'troff': GNU 'troff' does not
+accept a scaling unit on the argument, a page number; the former
+(somewhat uselessly) does.
+
+ The 'pm' request differs from AT&T 'troff': GNU 'troff' reports the
+sizes of macros, strings, and diversions in bytes and ignores an
+argument to report only the sum of the sizes.
+
+ Unlike AT&T 'troff', GNU 'troff' does not ignore the 'ss' request if
+the output is a terminal device; instead, the values of minimal
+inter-word and additional inter-sentence space are each rounded down to
+the nearest multiple of 12.
+
+ In GNU 'troff' there is a fundamental difference between
+(unformatted) characters and (formatted) glyphs. Everything that
+affects how a glyph is output is stored with the glyph node; once a
+glyph node has been constructed, it is unaffected by any subsequent
+requests that are executed, including 'bd', 'cs', 'tkf', 'tr', or 'fp'
+requests. Normally, glyphs are constructed from characters immediately
+before the glyph is added to an output line. Macros, diversions, and
+strings are all, in fact, the same type of object; they contain a
+sequence of intermixed character and glyph nodes. Special characters
+transform from one to the other: before being added to the output, they
+behave as characters; afterward, they are glyphs. A glyph node does not
+behave like a character node when it is processed by a macro: it does
+not inherit any of the special properties that the character from which
+it was constructed might have had. For example, the input
+
+ .di x
+ \\\\
+ .br
+ .di
+ .x
+
+produces '\\' in GNU 'troff'. Each pair of backslashes becomes one
+backslash _glyph_; the resulting backslashes are thus not interpreted as
+escape _characters_ when they are reread as the diversion is output.
+AT&T 'troff' _would_ interpret them as escape characters when rereading
+them and end up printing one '\'.
+
+ One correct way to obtain a printable backslash in most documents is
+to use the '\e' escape sequence; this always prints a single instance of
+the current escape character,(2) (*note Other Differences-Footnote-2::)
+regardless of whether or not it is used in a diversion; it also works in
+both GNU 'troff' and AT&T 'troff'.
+
+ The other correct way, appropriate in contexts independent of the
+backslash's common use as a 'troff' escape character--perhaps in
+discussion of character sets or other programming languages--is the
+character escape '\(rs' or '\[rs]', for "reverse solidus", from its name
+in the ECMA-6 (ISO/IEC 646) standard.(3) (*note Other
+Differences-Footnote-3::)
+
+ To store an escape sequence in a diversion that is interpreted when
+the diversion is reread, either use the traditional '\!' transparent
+output facility, or, if this is unsuitable, the new '\?' escape
+sequence. *Note Diversions:: and *note Gtroff Internals::.
+
+ In the somewhat pathological case where a diversion exists containing
+a partially collected line and a partially collected line at the
+top-level diversion has never existed, AT&T 'troff' will output the
+partially collected line at the end of input; GNU 'troff' will not.
+
+ (1) DWB 3.3, Solaris, Heirloom Doctools, and Plan 9 'troff' all
+support it.
+
+ (2) Naturally, if you've changed the escape character, you need to
+prefix the 'e' with whatever it is--and you'll likely get something
+other than a backslash in the output.
+
+ (3) The 'rs' special character identifier was not defined in AT&T
+'troff''s font description files, but is in those of its lineal
+descendant, Heirloom Doctools 'troff', as of the latter's 060716 release
+(July 2006).
+
+6 File Formats
+**************
+
+All files read and written by 'gtroff' are text files. The following
+two sections describe their format.
+
+6.1 'gtroff' Output
+===================
+
+This section describes the 'groff' intermediate output format produced
+by GNU 'troff'.
+
+ As 'groff' is a wrapper program around GNU 'troff' and automatically
+calls an output driver (or "postprocessor"), this output does not show
+up normally. This is why it is called _intermediate_. 'groff' provides
+the option '-Z' to inhibit postprocessing such that the produced
+intermediate output is sent to standard output just as it is when
+calling GNU 'troff' directly.
+
+ Here, the term "troff output" describes what is output by GNU
+'troff', while "intermediate output" refers to the language that is
+accepted by the parser that prepares this output for the output drivers.
+This parser handles whitespace more flexibly than AT&T's implementation
+and implements obsolete elements for compatibility; otherwise, both
+formats are the same.(1) (*note gtroff Output-Footnote-1::)
+
+ The main purpose of the intermediate output concept is to facilitate
+the development of postprocessors by providing a common programming
+interface for all devices. It has a language of its own that is
+completely different from the 'gtroff' language. While the 'gtroff'
+language is a high-level programming language for text processing, the
+intermediate output language is a kind of low-level assembler language
+by specifying all positions on the page for writing and drawing.
+
+ The intermediate output produced by 'gtroff' is fairly readable,
+while output from AT&T 'troff' is rather hard to understand because of
+strange habits that are still supported, but not used any longer by
+'gtroff'.
+
+ (1) The parser and postprocessor for intermediate output can be found
+in the file
+'GROFF-SOURCE-DIR/src/libs/libdriver/input.cpp'.
+
+6.1.1 Language Concepts
+-----------------------
+
+The fundamental operation of the GNU 'troff' formatter is the
+translation of the 'groff' input language into a device-independent form
+primarily concerned with what has to be written or drawn at specific
+positions on the output device. This language is simple and imperative.
+In the following discussion, the term "command" always refers to this
+intermediate output language, and never to the 'groff' language intended
+for direct use by document authors. Intermediate output commands
+comprise several categories: glyph output; font, color, and text size
+selection; motion of the printing position; page advancement; drawing of
+geometric objects; and device control commands, a catch-all for
+operations not easily classified as any of the foregoing, such as
+directives to start and stop output, identify the intended output
+device, or place URL hyperlinks in supported output formats.
+
+6.1.1.1 Separation
+..................
+
+AT&T 'troff' output has strange requirements regarding whitespace. The
+'gtroff' output parser, however, is more tolerant, making whitespace
+maximally optional. Such characters, i.e., the tab, space, and newline,
+always have a syntactical meaning. They are never printable because
+spacing within the output is always done by positioning commands.
+
+ Any sequence of space or tab characters is treated as a single
+"syntactical space". It separates commands and arguments, but is only
+required when there would occur a clashing between the command code and
+the arguments without the space. Most often, this happens when
+variable-length command names, arguments, argument lists, or command
+clusters meet. Commands and arguments with a known, fixed length need
+not be separated by syntactical space.
+
+ A line break is a syntactical element, too. Every command argument
+can be followed by whitespace, a comment, or a newline character. Thus
+a "syntactical line break" is defined to consist of optional syntactical
+space that is optionally followed by a comment, and a newline character.
+
+ The normal commands, those for positioning and text, consist of a
+single letter taking a fixed number of arguments. For historical
+reasons, the parser allows stacking of such commands on the same line,
+but fortunately, in 'gtroff''s intermediate output, every command with
+at least one argument is followed by a line break, thus providing
+excellent readability.
+
+ The other commands--those for drawing and device controlling--have a
+more complicated structure; some recognize long command names, and some
+take a variable number of arguments. So all 'D' and 'x' commands were
+designed to request a syntactical line break after their last argument.
+Only one command, 'x X', has an argument that can span several input
+lines; all other commands must have all of their arguments on the same
+line as the command, i.e., the arguments may not be split by a line
+break.
+
+ Empty lines (these are lines containing only space and/or a comment),
+can occur everywhere. They are just ignored.
+
+6.1.1.2 Argument Units
+......................
+
+Some commands take integer arguments that are assumed to represent
+values in a measurement unit, but the letter for the corresponding
+scaling unit is not written with the output command arguments. Most
+commands assume the scaling unit 'u', the basic unit of the device, some
+use 'z', the scaled point unit of the device, while others, such as the
+color commands, expect plain integers.
+
+ Single characters can have the eighth bit set, as can the names of
+fonts and special characters. The names of characters and fonts can be
+of arbitrary length. A character that is to be printed is always in the
+current font.
+
+ A string argument is always terminated by the next whitespace
+character (space, tab, or newline); an embedded '#' character is
+regarded as part of the argument, not as the beginning of a comment
+command. An integer argument is already terminated by the next
+non-digit character, which then is regarded as the first character of
+the next argument or command.
+
+6.1.1.3 Document Parts
+......................
+
+A correct intermediate output document consists of two parts, the
+"prologue" and the "body".
+
+ The task of the prologue is to set the general device parameters
+using three exactly specified commands. 'gtroff''s prologue is
+guaranteed to consist of the following three lines (in that order):
+
+ x T DEVICE
+ x res N H V
+ x init
+
+with the arguments set as outlined in *note Device Control Commands::.
+The parser for the intermediate output format is able to interpret
+additional whitespace and comments as well even in the prologue.
+
+ The body is the main section for processing the document data.
+Syntactically, it is a sequence of any commands different from the ones
+used in the prologue. Processing is terminated as soon as the first
+'x stop' command is encountered; the last line of any 'gtroff'
+intermediate output always contains such a command.
+
+ Semantically, the body is page oriented. A new page is started by a
+'p' command. Positioning, writing, and drawing commands are always done
+within the current page, so they cannot occur before the first 'p'
+command. Absolute positioning (by the 'H' and 'V' commands) is done
+relative to the current page; all other positioning is done relative to
+the current location within this page.
+
+6.1.2 Command Reference
+-----------------------
+
+This section describes all intermediate output commands, both from AT&T
+'troff' as well as the 'gtroff' extensions.
+
+6.1.2.1 Comment Command
+.......................
+
+'#ANYTHING<end of line>'
+ A comment. Ignore any characters from the '#' character up to the
+ next newline character.
+
+ This command is the only possibility for commenting in the
+ intermediate output. Each comment can be preceded by arbitrary
+ syntactical space; every command can be terminated by a comment.
+
+6.1.2.2 Simple Commands
+.......................
+
+The commands in this subsection have a command code consisting of a
+single character, taking a fixed number of arguments. Most of them are
+commands for positioning and text writing. These commands are tolerant
+of whitespace. Optionally, syntactical space can be inserted before,
+after, and between the command letter and its arguments. All of these
+commands are stackable; i.e., they can be preceded by other simple
+commands or followed by arbitrary other commands on the same line. A
+separating syntactical space is necessary only when two integer
+arguments would clash or if the preceding argument ends with a string
+argument.
+
+'C ID<whitespace>'
+ Typeset the glyph of the special character ID. Trailing
+ syntactical space is necessary to allow special character names of
+ arbitrary length. The drawing position is not advanced.
+
+'c G'
+ Typeset the glyph of the ordinary character C. The drawing
+ position is not advanced.
+
+'f N'
+ Select the font mounted at position N. N cannot be negative.
+
+'H N'
+ Horizontally move the drawing position to N basic units from the
+ left edge of the page. N cannot be negative.
+
+'h N'
+ Move the drawing position right N basic units. AT&T 'troff'
+ allowed negative N; GNU 'troff' does not produce such values, but
+ 'groff''s output driver library handles them.
+
+'m COLOR-SCHEME [COMPONENT ...]'
+ Select the stroke color using the COMPONENTs in the color space
+ SCHEME. Each COMPONENT is an integer between 0 and 65535. The
+ quantity of components and their meanings vary with each SCHEME.
+ This command is a 'groff' extension.
+
+ 'mc CYAN MAGENTA YELLOW'
+ Use the CMY color scheme with components cyan, magenta, and
+ yellow.
+
+ 'md'
+ Use the default color (no components; black in most cases).
+
+ 'mg GRAY'
+ Use a grayscale color scheme with a component ranging between
+ 0 (black) and 65535 (white).
+
+ 'mk CYAN MAGENTA YELLOW BLACK'
+ Use the CMYK color scheme with components cyan, magenta,
+ yellow, and black.
+
+ 'mr RED GREEN BLUE'
+ Use the RGB color scheme with components red, green, and blue.
+
+'N N'
+ Typeset the glyph with index N in the current font. N is normally
+ a non-negative integer. The drawing position is not advanced. The
+ 'html' and 'xhtml' devices use this command with negative N to
+ produce unbreakable space; the absolute value of N is taken and
+ interpreted in basic units.
+
+'n B A'
+ Indicate a break. No action is performed; the command is present
+ to make the output more easily parsed. The integers B and A
+ describe the vertical space amounts before and after the break,
+ respectively. GNU 'troff' issues this command but 'groff''s output
+ driver library ignores it. See 'v' and 'V' below.
+
+'p N'
+ Begin a new page, setting its number to N. Each page is
+ independent, even from those using the same number. The vertical
+ drawing position is set to 0. All positioning, writing, and
+ drawing commands are interpreted in the context of a page, so a
+ 'p' command must precede them.
+
+'s N'
+ Set type size to N scaled points (unit 'z' in GNU 'troff'. AT&T
+ 'troff' used unscaled points 'p' instead; see *note Output Language
+ Compatibility::.
+
+'t XYZ<whitespace>'
+'t XYZ DUMMY-ARG<whitespace>'
+ Typeset a word XYZ; that is, set a sequence of ordinary glyphs
+ named X, Y, Z, ..., terminated by a space character or a line
+ break; an optional second integer argument is ignored (this allows
+ the formatter to generate an even number of arguments). Each glyph
+ is set at the current drawing position, and the position is then
+ advanced horizontally by the glyph's width. A glyph's width is
+ read from its metrics in the font description file, scaled to the
+ current type size, and rounded to a multiple of the horizontal
+ motion quantum. Use the 'C' command to emplace glyphs of special
+ characters. The 't' command is a 'groff' extension and is output
+ only for devices whose 'DESC' file contains the 'tcommand'
+ directive; see *note DESC File Format::.
+
+'u N XYZ<whitespace>'
+ Typeset word XYZ with track kerning. As 't', but after placing
+ each glyph, the drawing position is further advanced horizontally
+ by N basic units ('u'). The 'u' command is a 'groff' extension and
+ is output only for devices whose 'DESC' file contains the
+ 'tcommand' directive; see *note DESC File Format::.
+
+'V N'
+ Vertically move the drawing position to N basic units from the top
+ edge of the page. N cannot be negative.
+
+'v N'
+ Move the drawing position down N basic units. AT&T 'troff' allowed
+ negative N; GNU 'troff' does not produce such values, but 'groff''s
+ output driver library handles them.
+
+'w'
+ Indicate an inter-word space. No action is performed; the command
+ is present to make the output more easily parsed. Only adjustable,
+ breakable inter-word spaces are thus described; those resulting
+ from '\~' or horizontal motion escape sequences are not. GNU
+ 'troff' issues this command but 'groff''s output driver library
+ ignores it. See 'h' and 'H' above.
+
+6.1.2.3 Graphics Commands
+.........................
+
+Each graphics or drawing command in the intermediate output starts with
+the letter 'D', followed by one or two characters that specify a
+subcommand; this is followed by a fixed or variable number of integer
+arguments that are separated by a single space character. A 'D' command
+may not be followed by another command on the same line (apart from a
+comment), so each 'D' command is terminated by a syntactical line break.
+
+ 'gtroff' output follows the classical spacing rules (no space between
+command and subcommand, all arguments are preceded by a single space
+character), but the parser allows optional space between the command
+letters and makes the space before the first argument optional. As
+usual, each space can be any sequence of tab and space characters.
+
+ Some graphics commands can take a variable number of arguments. In
+this case, they are integers representing a size measured in basic units
+'u'. The arguments called H1, H2, ..., HN stand for horizontal
+distances where positive means right, negative left. The arguments
+called V1, V2, ..., VN stand for vertical distances where positive means
+down, negative up. All these distances are offsets relative to the
+current location.
+
+ Each graphics command directly corresponds to a similar 'gtroff' '\D'
+escape sequence. *Note Drawing Geometric Objects::.
+
+ Unknown 'D' commands are assumed to be device-specific. Its
+arguments are parsed as strings; the whole information is then sent to
+the postprocessor.
+
+ In the following command reference, the syntax element <line break>
+means a syntactical line break as defined above.
+
+'D~ H1 V1 H2 V2 ... HN VN<line break>'
+ Draw B-spline from current position to offset (H1,V1), then to
+ offset (H2,V2), if given, etc., up to (HN,VN). This command takes
+ a variable number of argument pairs; the current position is moved
+ to the terminal point of the drawn curve.
+
+'Da H1 V1 H2 V2<line break>'
+ Draw arc from current position to (H1,V1)+(H2,V2) with center at
+ (H1,V1); then move the current position to the final point of the
+ arc.
+
+'DC D<line break>'
+'DC D DUMMY-ARG<line break>'
+ Draw a solid circle using the current fill color with diameter D
+ (integer in basic units 'u') with leftmost point at the current
+ position; then move the current position to the rightmost point of
+ the circle. An optional second integer argument is ignored (this
+ allows the formatter to generate an even number of arguments).
+ This command is a 'gtroff' extension.
+
+'Dc D<line break>'
+ Draw circle line with diameter D (integer in basic units 'u') with
+ leftmost point at the current position; then move the current
+ position to the rightmost point of the circle.
+
+'DE H V<line break>'
+ Draw a solid ellipse in the current fill color with a horizontal
+ diameter of H and a vertical diameter of V (both integers in basic
+ units 'u') with the leftmost point at the current position; then
+ move to the rightmost point of the ellipse. This command is a
+ 'gtroff' extension.
+
+'De H V<line break>'
+ Draw an outlined ellipse with a horizontal diameter of H and a
+ vertical diameter of V (both integers in basic units 'u') with the
+ leftmost point at current position; then move to the rightmost
+ point of the ellipse.
+
+'DF COLOR-SCHEME [COMPONENT ...]<line break>'
+ Set fill color for solid drawing objects using different color
+ schemes; the analogous command for setting the color of text, line
+ graphics, and the outline of graphic objects is 'm'. The color
+ components are specified as integer arguments between 0 and 65535.
+ The number of color components and their meaning vary for the
+ different color schemes. These commands are generated by
+ 'gtroff''s escape sequences '\D'F ...'' and '\M' (with no other
+ corresponding graphics commands). No position changing. This
+ command is a 'gtroff' extension.
+
+ 'DFc CYAN MAGENTA YELLOW<line break>'
+ Set fill color for solid drawing objects using the CMY color
+ scheme, having the 3 color components CYAN, MAGENTA, and
+ YELLOW.
+
+ 'DFd<line break>'
+ Set fill color for solid drawing objects to the default fill
+ color value (black in most cases). No component arguments.
+
+ 'DFg GRAY<line break>'
+ Set fill color for solid drawing objects to the shade of gray
+ given by the argument, an integer between 0 (black) and 65535
+ (white).
+
+ 'DFk CYAN MAGENTA YELLOW BLACK<line break>'
+ Set fill color for solid drawing objects using the CMYK color
+ scheme, having the 4 color components CYAN, MAGENTA, YELLOW,
+ and BLACK.
+
+ 'DFr RED GREEN BLUE<line break>'
+ Set fill color for solid drawing objects using the RGB color
+ scheme, having the 3 color components RED, GREEN, and BLUE.
+
+'Df N<line break>'
+ The argument N must be an integer in the range -32767 to 32767.
+
+ 0 <= N <= 1000
+ Set the color for filling solid drawing objects to a shade of
+ gray, where 0 corresponds to solid white, 1000 (the default)
+ to solid black, and values in between to intermediate shades
+ of gray; this is obsoleted by command 'DFg'.
+
+ N < 0 or N > 1000
+ Set the filling color to the color that is currently being
+ used for the text and the outline, see command 'm'. For
+ example, the command sequence
+
+ mg 0 0 65535
+ Df -1
+
+ sets all colors to blue.
+
+ No position changing. This command is a 'gtroff' extension.
+
+'Dl H V<line break>'
+ Draw line from current position to offset (H,V) (integers in basic
+ units 'u'); then set current position to the end of the drawn line.
+
+'Dp H1 V1 H2 V2 ... HN VN<line break>'
+ Draw a polygon line from current position to offset (H1,V1), from
+ there to offset (H2,V2), etc., up to offset (HN,VN), and from there
+ back to the starting position. For historical reasons, the
+ position is changed by adding the sum of all arguments with odd
+ index to the actual horizontal position and the even ones to the
+ vertical position. Although this doesn't make sense it is kept for
+ compatibility. This command is a 'gtroff' extension.
+
+'DP H1 V1 H2 V2 ... HN VN<line break>'
+ Draw a solid polygon in the current fill color rather than an
+ outlined polygon, using the same arguments and positioning as the
+ corresponding 'Dp' command. This command is a 'gtroff' extension.
+
+'Dt N<line break>'
+ Set the current line thickness to N (an integer in basic units 'u')
+ if N>0; if N=0 select the smallest available line thickness; if N<0
+ set the line thickness proportional to the type size (this is the
+ default before the first 'Dt' command was specified). For
+ historical reasons, the horizontal position is changed by adding
+ the argument to the actual horizontal position, while the vertical
+ position is not changed. Although this doesn't make sense it is
+ kept for compatibility. This command is a 'gtroff' extension.
+
+6.1.2.4 Device Control Commands
+...............................
+
+Each device control command starts with the letter 'x', followed by a
+space character (optional or arbitrary space or tab in 'gtroff') and a
+subcommand letter or word; each argument (if any) must be preceded by a
+syntactical space. All 'x' commands are terminated by a syntactical
+line break; no device control command can be followed by another command
+on the same line (except a comment).
+
+ The subcommand is basically a single letter, but to increase
+readability, it can be written as a word, i.e., an arbitrary sequence of
+characters terminated by the next tab, space, or newline character. All
+characters of the subcommand word but the first are simply ignored. For
+example, 'gtroff' outputs the initialization command 'x i' as 'x init'
+and the resolution command 'x r' as 'x res'.
+
+ In the following, the syntax element <line break> means a syntactical
+line break (*note Separation::).
+
+'xF NAME<line break>'
+ The 'F' stands for FILENAME.
+
+ Use NAME as the intended name for the current file in error
+ reports. This is useful for remembering the original file name
+ when 'gtroff' uses an internal piping mechanism. The input file is
+ not changed by this command. This command is a 'gtroff' extension.
+
+'xf N S<line break>'
+ The 'f' stands for FONT.
+
+ Mount font position N (a non-negative integer) with font named S (a
+ text word). *Note Font Positions::.
+
+'xH N<line break>'
+ The 'H' stands for HEIGHT.
+
+ Set glyph height to N (a positive integer in scaled points 'z').
+ AT&T 'troff' uses the unit points ('p') instead. *Note Output
+ Language Compatibility::.
+
+'xi<line break>'
+ The 'i' stands for INIT.
+
+ Initialize device. This is the third command of the prologue.
+
+'xp<line break>'
+ The 'p' stands for PAUSE.
+
+ Parsed but ignored. The AT&T 'troff' manual documents this command
+ as
+
+ pause device, can be restarted
+
+ but GNU 'troff' output drivers do nothing with this command.
+
+'xr N H V<line break>'
+ The 'r' stands for RESOLUTION.
+
+ Resolution is N, while H is the minimal horizontal motion, and V
+ the minimal vertical motion possible with this device; all
+ arguments are positive integers in basic units 'u' per inch. This
+ is the second command of the prologue.
+
+'xS N<line break>'
+ The 'S' stands for SLANT.
+
+ Set slant to N (an integer in basic units 'u').
+
+'xs<line break>'
+ The 's' stands for STOP.
+
+ Terminates the processing of the current file; issued as the last
+ command of any intermediate 'troff' output.
+
+'xt<line break>'
+ The 't' stands for TRAILER.
+
+ Generate trailer information, if any. In GNU 'troff', this is
+ ignored.
+
+'xT XXX<line break>'
+ The 'T' stands for TYPESETTER.
+
+ Set the name of the output driver to XXX, a sequence of
+ non-whitespace characters terminated by whitespace. The possible
+ names correspond to those of 'groff''s '-T' option. This is the
+ first command of the prologue.
+
+'xu N<line break>'
+ The 'u' stands for UNDERLINE.
+
+ Configure underlining of spaces. If N is 1, start underlining of
+ spaces; if N is 0, stop underlining of spaces. This is needed for
+ the 'cu' request in 'nroff' mode and is ignored otherwise. This
+ command is a 'gtroff' extension.
+
+'xX ANYTHING<line break>'
+ The 'x' stands for X-ESCAPE.
+
+ Send string ANYTHING uninterpreted to the device. If the line
+ following this command starts with a '+' character this line is
+ interpreted as a continuation line in the following sense. The '+'
+ is ignored, but a newline character is sent instead to the device,
+ the rest of the line is sent uninterpreted. The same applies to
+ all following lines until the first character of a line is not a
+ '+' character. This command is generated by the 'gtroff' escape
+ sequence '\X'. The line-continuing feature is a 'gtroff'
+ extension.
+
+6.1.2.5 Obsolete Command
+........................
+
+In AT&T 'troff' output, the writing of a single glyph is mostly done by
+a very strange command that combines a horizontal move and a single
+character giving the glyph name. It doesn't have a command code, but is
+represented by a 3-character argument consisting of exactly 2 digits and
+a character.
+
+DDG
+ Move right DD (exactly two decimal digits) basic units 'u', then
+ print glyph G (represented as a single character).
+
+ In GNU 'troff', arbitrary syntactical space around and within this
+ command is allowed. Only when a preceding command on the same line
+ ends with an argument of variable length is a separating space
+ obligatory. In AT&T 'troff', large clusters of these and other
+ commands are used, mostly without spaces; this made such output
+ almost unreadable.
+
+ For modern high-resolution devices, this command does not make sense
+because the width of the glyphs can become much larger than two decimal
+digits. In 'gtroff', this is only used for the devices 'X75', 'X75-12',
+'X100', and 'X100-12'. For other devices, the commands 't' and 'u'
+provide a better functionality.
+
+6.1.3 Intermediate Output Examples
+----------------------------------
+
+This section presents the intermediate output generated from the same
+input for three different devices. The input is the sentence 'hell
+world' fed into 'gtroff' on the command line.
+
+High-resolution device 'ps'
+
+ This is the standard output of 'gtroff' if no '-T' option is given.
+
+ shell> echo "hell world" | groff -Z -T ps
+
+ x T ps
+ x res 72000 1 1
+ x init
+ p1
+ x font 5 TR
+ f5
+ s10000
+ V12000
+ H72000
+ thell
+ wh2500
+ tw
+ H96620
+ torld
+ n12000 0
+ x trailer
+ V792000
+ x stop
+
+ This output can be fed into 'grops' to get its representation as a
+ PostScript file.
+
+Low-resolution device 'latin1'
+
+ This is similar to the high-resolution device except that the
+ positioning is done at a minor scale. Some comments (lines
+ starting with '#') were added for clarification; they were not
+ generated by the formatter.
+
+ shell> echo "hell world" | groff -Z -T latin1
+
+ # prologue
+ x T latin1
+ x res 240 24 40
+ x init
+ # begin a new page
+ p1
+ # font setup
+ x font 1 R
+ f1
+ s10
+ # initial positioning on the page
+ V40
+ H0
+ # write text 'hell'
+ thell
+ # inform about space, and issue a horizontal jump
+ wh24
+ # write text 'world'
+ tworld
+ # announce line break, but do nothing because...
+ n40 0
+ # ...the end of the document has been reached
+ x trailer
+ V2640
+ x stop
+
+ This output can be fed into 'grotty' to get a formatted text
+ document.
+
+AT&T 'troff' output
+ Since a computer monitor has a much lower resolution than modern
+ printers, the intermediate output for X11 devices can use the
+ jump-and-write command with its 2-digit displacements.
+
+ shell> echo "hell world" | groff -Z -T X100
+
+ x T X100
+ x res 100 1 1
+ x init
+ p1
+ x font 5 TR
+ f5
+ s10
+ V16
+ H100
+ # write text with jump-and-write commands
+ ch07e07l03lw06w11o07r05l03dh7
+ n16 0
+ x trailer
+ V1100
+ x stop
+
+ This output can be fed into 'xditview' or 'gxditview' for
+ displaying in X.
+
+ Due to the obsolete jump-and-write command, the text clusters in
+ the AT&T 'troff' output are almost unreadable.
+
+6.1.4 Output Language Compatibility
+-----------------------------------
+
+The intermediate output language of AT&T 'troff' was first documented in
+'A Typesetter-independent TROFF', by Brian Kernighan, and by 1992 the
+AT&T 'troff' manual was updated to incorprate a description of it.
+
+ The GNU 'troff' intermediate output format is compatible with this
+specification except for the following features.
+
+ * The classical quasi-device independence is not yet implemented.
+
+ * The old hardware was very different from what we use today. So the
+ 'groff' devices are also fundamentally different from the ones in
+ AT&T 'troff'. For example, the AT&T PostScript device is called
+ 'post' and has a resolution of only 720 units per inch, suitable
+ for printers 20 years ago, while 'groff''s 'ps' device has a
+ resolution of 72000 units per inch. Maybe, by implementing some
+ rescaling mechanism similar to the classical quasi-device
+ independence, 'groff' could emulate AT&T's 'post' device.
+
+ * The B-spline command 'D~' is correctly handled by the intermediate
+ output parser, but the drawing routines aren't implemented in some
+ of the postprocessor programs.
+
+ * The argument of the commands 's' and 'x H' has the implicit unit
+ scaled point 'z' in 'gtroff', while AT&T 'troff' has point ('p').
+ This isn't an incompatibility but a compatible extension, for both
+ units coincide for all devices without a 'sizescale' parameter in
+ the 'DESC' file, including all postprocessors from AT&T and
+ 'groff''s text devices. The few 'groff' devices with a 'sizescale'
+ parameter either do not exist for AT&T 'troff', have a different
+ name, or seem to have a different resolution. So conflicts are
+ very unlikely.
+
+ * The position changing after the commands 'Dp', 'DP', and 'Dt' is
+ illogical, but as old versions of 'gtroff' used this feature it is
+ kept for compatibility reasons.
+
+6.2 Device and Font Description Files
+=====================================
+
+The 'groff' font and output device description formats are slight
+extensions of those used by AT&T device-independent 'troff'. In
+distinction to the AT&T implementation, 'groff' lacks a binary format;
+all files are text files.(1) (*note Device and Font Description
+Files-Footnote-1::) The device and font description files for a device
+NAME are stored in a 'devNAME' directory. The device description file
+is called 'DESC', and, for each font supported by the device, a font
+description file is called 'F', where F is usually an abbreviation of a
+font's name and/or style. For example, the 'ps' (PostScript) device has
+'groff' font description files for Times roman ('TR') and Zapf Chancery
+Medium italic ('ZCMI'), among many others, while the 'utf8' device (for
+terminal emulators) has only font descriptions for the roman, italic,
+bold, and bold-italic styles ('R', 'I', 'B', and 'BI', respectively).
+
+ Device and font description files are read both by the formatter, GNU
+'troff', and by output drivers. The programs delegate these files'
+processing to an internal library, 'libgroff', ensuring their consistent
+interpretation.
+
+ (1) Plan 9 'troff' has also abandoned the binary format.
+
+6.2.1 'DESC' File Format
+------------------------
+
+The 'DESC' file contains a series of directives; each begins a line.
+Their order is not important, with two exceptions: (1) the 'res'
+directive must precede any 'papersize' directive; and (2) the 'charset'
+directive must come last (if at all). If a directive name is repeated,
+later entries in the file override previous ones (except that the paper
+dimensions are computed based on the 'res' directive last seen when
+'papersize' is encountered). Spaces and/or tabs separate words and are
+ignored at line boundaries. Comments start with the '#' character and
+extend to the end of a line. Empty lines are ignored.
+
+'family FAM'
+ The default font family is FAM.
+
+'fonts N F1 ... FN'
+ Fonts F1, ..., FN are mounted at font positions M+1, ..., M+N where
+ M is the number of 'styles' (see below). This directive may extend
+ over more than one line. A font name of '0' causes no font to be
+ mounted at the corresponding position.
+
+'hor N'
+ The horizontal motion quantum is N basic units. All horizontal
+ quantities are rounded to multiples of N.
+
+'image_generator PROGRAM'
+ Use PROGRAM to generate PNG images from PostScript input. Under
+ GNU/Linux, this is usually 'gs', but under other systems (notably
+ Cygwin) it might be set to another name. The 'grohtml' driver uses
+ this directive.
+
+'paperlength N'
+ The vertical dimension of the output medium is N basic units
+ (deprecated: use 'papersize' instead).
+
+'papersize FORMAT-OR-DIMENSION-PAIR-OR-FILE-NAME ...'
+ The dimensions of the output medium are as according to the
+ argument, which is either a standard paper format, a pair of
+ dimensions, or the name of a plain text file containing either of
+ the foregoing.
+
+ Recognized paper formats are the ISO and DIN formats 'A0'-'A7',
+ 'B0'-'B7', 'C0'-'C7', 'D0'-'D7'; the U.S. paper types 'letter',
+ 'legal', 'tabloid', 'ledger', 'statement', and 'executive'; and the
+ envelope formats 'com10', 'monarch', and 'DL'. Matching is
+ performed without regard for lettercase.
+
+ Alternatively, the argument can be a custom paper format in the
+ format 'LENGTH,WIDTH' (with no spaces before or after the comma).
+ Both LENGTH and WIDTH must have a unit appended; valid units are
+ 'i' for inches, 'c' for centimeters, 'p' for points, and 'P' for
+ picas. Example: '12c,235p'. An argument that starts with a digit
+ is always treated as a custom paper format.
+
+ Finally, the argument can be a file name (e.g., '/etc/papersize');
+ if the file can be opened, the first line is read and a match
+ attempted against each of the other forms. No comment syntax is
+ supported.
+
+ More than one argument can be specified; each is scanned in turn
+ and the first valid paper specification used.
+
+'paperwidth N'
+ The horizontal dimension of the output medium is N basic units
+ (deprecated: use 'papersize' instead).
+
+'pass_filenames'
+ Direct GNU 'troff' to emit the name of the source file being
+ processed. This is achieved with the intermediate output command
+ 'x F', which 'grohtml' interprets.
+
+'postpro PROGRAM'
+ Use PROGRAM as the postprocessor.
+
+'prepro PROGRAM'
+ Use PROGRAM as a preprocessor. The 'html' and 'xhtml' output
+ devices use this directive.
+
+'print PROGRAM'
+ Use PROGRAM as a spooler program for printing. If omitted, the
+ '-l' and '-L' options of 'groff' are ignored.
+
+'res N'
+ The device resolution is N basic units per inch.
+
+'sizes S1 ... SN 0'
+ The device has fonts at S1, ..., SN scaled points (see below). The
+ list of sizes must be terminated by '0'. Each SI can also be a
+ range of sizes M-N. The list can extend over more than one line.
+
+'sizescale N'
+ A typographical point is subdivided into N scaled points. The
+ default is '1'. *Note Using Fractional Type Sizes::.
+
+'styles S1 ... SM'
+ The first M mounting positions are associated with styles S1, ...,
+ SM.
+
+'tcommand'
+ The postprocessor can handle the 't' and 'u' intermediate output
+ commands.
+
+'unicode'
+ The output device supports the complete Unicode repertoire. This
+ directive is useful only for devices that produce character
+ entities instead of glyphs.
+
+ If 'unicode' is present, no 'charset' section is required in the
+ font description files since the Unicode handling built into
+ 'groff' is used. However, if there are entries in a font
+ description file's 'charset' section, they either override the
+ default mappings for those particular characters or add new
+ mappings (normally for composite characters).
+
+ The 'utf8', 'html', and 'xhtml' output devices use this directive.
+
+'unitwidth N'
+ Quantities in the font description files are in basic units for
+ fonts whose type size is N scaled points.
+
+'unscaled_charwidths'
+ Make the font handling module always return unscaled character
+ widths. The 'grohtml' driver uses this directive.
+
+'use_charnames_in_special'
+ GNU 'troff' should encode special characters inside device control
+ commands; see *note Postprocessor Access::. The 'grohtml' driver
+ uses this directive.
+
+'vert N'
+ The vertical motion quantum is N basic units. All vertical
+ quantities are rounded to multiples of N.
+
+'charset'
+ This line and everything following it in the file are ignored. It
+ is recognized for compatibility with other 'troff' implementations.
+ In GNU 'troff', character set repertoire is described on a per-font
+ basis.
+
+ GNU 'troff' recognizes but ignores the directives 'spare1', 'spare2',
+and 'biggestfont'.
+
+ The 'res', 'unitwidth', 'fonts', and 'sizes' lines are mandatory.
+Directives not listed above are ignored by GNU 'troff' but may be used
+by postprocessors to obtain further information about the device.
+
+6.2.2 Font Description File Format
+----------------------------------
+
+On typesetting output devices, each font is typically available at
+multiple sizes. While paper measurements in the device description file
+are in absolute units, measurements applicable to fonts must be
+proportional to the type size. 'groff' achieves this using the
+precedent set by AT&T device-independent 'troff': one font size is
+chosen as a norm, and all others are scaled linearly relative to that
+basis. The "unit width" is the number of basic units per point when the
+font is rendered at this nominal size.
+
+ For instance, 'groff''s 'lbp' device uses a 'unitwidth' of 800. Its
+Times roman font 'TR' has a 'spacewidth' of 833; this is also the width
+of its comma, period, centered period, and mathematical asterisk, while
+its 'M' is 2,963 basic units. Thus, an 'M' on the 'lbp' device is 2,963
+basic units wide at a notional type size of 800 points.(1) (*note Font
+Description File Format-Footnote-1::)
+
+ A font description file has two sections. The first is a sequence of
+directives, and is parsed similarly to the 'DESC' file described above.
+Except for the directive names that begin the second section, their
+ordering is immaterial. Later directives of the same name override
+earlier ones, spaces and tabs are handled in the same way, and the same
+comment syntax is supported. Empty lines are ignored throughout.
+
+'name F'
+ The name of the font is F. 'DESC' is an invalid font name. Simple
+ integers are valid, but their use is discouraged.(2) (*note Font
+ Description File Format-Footnote-2::)
+
+'spacewidth N'
+ The width of an unadjusted inter-word space is N basic units.
+
+ The directives above must appear in the first section; those below
+are optional.
+
+'slant N'
+ The font's glyphs have a slant of N degrees; a positive N slants in
+ the direction of text flow.
+
+'ligatures LIG1 ... LIGN [0]'
+ Glyphs LIG1, ..., LIGN are ligatures; possible ligatures are 'ff',
+ 'fi', 'fl', 'ffi' and 'ffl'. For compatibility with other 'troff'
+ implementations, the list of ligatures may be terminated with
+ a '0'. The list of ligatures must not extend over more than one
+ line.
+
+'special'
+ The font is "special": when a glyph is requested that is not
+ present in the current font, it is sought in any mounted fonts that
+ bear this property.
+
+ Other directives in this section are ignored by GNU 'troff', but may
+be used by postprocessors to obtain further information about the font.
+
+ The second section contains one or two subsections. These can appear
+in either order; the first one encountered commences the second section.
+Each starts with a directive on a line by itself. A 'charset'
+subsection is mandatory unless the associated 'DESC' file contains the
+'unicode' directive. Another subsection, 'kernpairs', is optional.
+
+ The directive 'charset' starts the character set subsection.(3)
+(*note Font Description File Format-Footnote-3::) It precedes a series
+of glyph descriptions, one per line. Each such glyph description
+comprises a set of fields separated by spaces or tabs and organized as
+follows.
+
+ NAME METRICS TYPE CODE [ENTITY-NAME] ['--' COMMENT]
+
+NAME identifies the glyph: if NAME is a printable character C, it
+corresponds to the 'troff' ordinary character C. If NAME is a
+multi-character sequence not beginning with '\', it corresponds to the
+GNU 'troff' special character escape sequence '\[NAME]'. A name
+consisting of three minus signs, '---', is special and indicates that
+the glyph is unnamed: such glyphs can be accessed only by the '\N'
+escape sequence in 'troff'. A special character named '---' can still
+be defined using 'char' and similar requests. The NAME '\-' defines the
+minus sign glyph. Finally, NAME can be the unbreakable one-sixth and
+one-twelfth space escape sequences, '\|' and '\^' ("thin" and "hair"
+spaces, respectively), in which case only the width metric described
+below is interpreted; a font can thus customize the widths of these
+spaces.
+
+ The form of the METRICS field is as follows.
+
+ WIDTH[','[HEIGHT[','[DEPTH[','[ITALIC-CORRECTION
+ [','[LEFT-ITALIC-CORRECTION[','[SUBSCRIPT-CORRECTION]]]]]]]]]]
+
+There must not be any spaces, tabs, or newlines between these
+"subfields" (which have been split here into two lines only for better
+legibility). The subfields are in basic units expressed as decimal
+integers. Unspecified subfields default to '0'. Since there is no
+associated binary format, these values are not required to fit into the
+C language data type 'char' as they are in AT&T device-independent
+'troff'.
+
+ The WIDTH subfield gives the width of the glyph. The HEIGHT subfield
+gives the height of the glyph (upward is positive); if a glyph does not
+extend above the baseline, it should be given a zero height, rather than
+a negative height. The DEPTH subfield gives the depth of the glyph,
+that is, the distance below the baseline to which the glyph extends
+(downward is positive); if a glyph does not extend below the baseline,
+it should be given a zero depth, rather than a negative depth. Italic
+corrections are relevant to glyphs in italic or oblique styles. The
+ITALIC-CORRECTION is the amount of space that should be added after an
+oblique glyph to be followed immediately by an upright glyph. The
+LEFT-ITALIC-CORRECTION is the amount of space that should be added
+before an oblique glyph to be preceded immediately by an upright glyph.
+The SUBSCRIPT-CORRECTION is the amount of space that should be added
+after an oblique glyph to be followed by a subscript; it should be less
+than the italic correction.
+
+ For fonts used with typesetting devices, the TYPE field gives a
+featural description of the glyph: it is a bit mask recording whether
+the glyph is an ascender, descender, both, or neither. When a '\w'
+escape sequence is interpolated, these values are bitwise or-ed together
+for each glyph and stored in the 'nr' register. In font descriptions
+for terminal devices, all glyphs might have a type of zero, regardless
+of their appearance.
+
+'0'
+ means the glyph lies entirely between the baseline and a horizontal
+ line at the "x-height" of the font; typical examples are 'a', 'c',
+ and 'x';
+
+'1'
+ means the glyph descends below the baseline, like 'p';
+
+'2'
+ means the glyph ascends above the font's x-height, like 'A' or 'b';
+ and
+
+'3'
+ means the glyph is both an ascender and a descender--this is true
+ of parentheses in some fonts.
+
+ The CODE field gives a numeric identifier that the postprocessor uses
+to render the glyph. The glyph can be specified to 'troff' using this
+code by means of the '\N' escape sequence. CODE can be any integer.(4)
+(*note Font Description File Format-Footnote-4::)
+
+ The ENTITY-NAME field defines an identifier for the glyph that the
+postprocessor uses to print the GNU 'troff' glyph NAME. This field is
+optional; it was introduced so that the 'grohtml' output driver could
+encode its character set. For example, the glyph '\[Po]' is represented
+by '&pound;' in HTML 4.0. For efficiency, these data are now compiled
+directly into 'grohtml'. 'grops' uses the field to build sub-encoding
+arrays for PostScript fonts containing more than 256 glyphs. Anything
+on the line after the ENTITY-NAME field or '--' is ignored.
+
+ A line in the 'charset' section can also have the form
+
+ NAME "
+
+identifying NAME as another name for the glyph mentioned in the
+preceding line. Such aliases can be chained.
+
+ The directive 'kernpairs' starts a list of kerning adjustments to be
+made to adjacent glyph pairs from this font. It contains a sequence of
+lines formatted as follows.
+
+ G1 G2 N
+
+The foregoing means that when glyph G1 is typeset immediately before G2,
+the space between them should be increased by N. Most kerning pairs
+should have a negative value for N.
+
+ (1) 800-point type is not practical for most purposes, but using it
+enables the quantities in the font description files to be expressed as
+integers.
+
+ (2) 'groff' requests and escape sequences interpret non-negative font
+names as mounting positions instead. Further, a font named '0' cannot
+be automatically mounted by the 'fonts' directive of a 'DESC' file.
+
+ (3) For typesetter devices, this directive is misnamed since it
+starts a list of glyphs, not characters.
+
+ (4) that is, any integer parsable by the C standard library's
+'strtol(3)' function
+
+Appendix A Copying This Manual
+******************************
+
+ Version 1.3, 3 November 2008
+
+ Copyright © 2000-2018 Free Software Foundation, Inc.
+ <http://fsf.org/>
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book. We
+ recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it can
+ be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You accept
+ the license if you copy, modify or distribute the work in a way
+ requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in the
+ notice that says that the Document is released under this License.
+ If a section does not fit the above definition of Secondary then it
+ is not allowed to be designated as Invariant. The Document may
+ contain zero Invariant Sections. If the Document does not identify
+ any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images composed
+ of pixels) generic paint programs or (for drawings) some widely
+ available drawing editor, and that is suitable for input to text
+ formatters or for automatic translation to a variety of formats
+ suitable for input to text formatters. A copy made in an otherwise
+ Transparent file format whose markup, or absence of markup, has
+ been arranged to thwart or discourage subsequent modification by
+ readers is not Transparent. An image format is not Transparent if
+ used for any substantial amount of text. A copy that is not
+ "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and standard-conforming
+ simple HTML, PostScript or PDF designed for human modification.
+ Examples of transparent image formats include PNG, XCF and JPG.
+ Opaque formats include proprietary formats that can be read and
+ edited only by proprietary word processors, SGML or XML for which
+ the DTD and/or processing tools are not generally available, and
+ the machine-generated HTML, PostScript or PDF produced by some word
+ processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ The "publisher" means any person or entity that distributes copies
+ of the Document to the public.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow the
+ conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the title
+ equally prominent and visible. You may add other material on the
+ covers in addition. Copying with changes limited to the covers, as
+ long as they preserve the title of the Document and satisfy these
+ conditions, can be treated as verbatim copying in other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a machine-readable
+ Transparent copy along with each Opaque copy, or state in or with
+ each Opaque copy a computer-network location from which the general
+ network-using public has access to download using public-standard
+ network protocols a complete Transparent copy of the Document, free
+ of added material. If you use the latter option, you must take
+ reasonably prudent steps, when you begin distribution of Opaque
+ copies in quantity, to ensure that this Transparent copy will
+ remain thus accessible at the stated location until at least one
+ year after the last time you distribute an Opaque copy (directly or
+ through your agents or retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of copies,
+ to give them a chance to provide you with an updated version of the
+ Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with the
+ Modified Version filling the role of the Document, thus licensing
+ distribution and modification of the Modified Version to whoever
+ possesses a copy of it. In addition, you must do these things in
+ the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of previous
+ versions (which should, if there were any, be listed in the
+ History section of the Document). You may use the same title
+ as a previous version if the original publisher of that
+ version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on the
+ Title Page. If there is no section Entitled "History" in the
+ Document, create one stating the title, year, authors, and
+ publisher of the Document as given on its Title Page, then add
+ an item describing the Modified Version as stated in the
+ previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in the
+ "History" section. You may omit a network location for a work
+ that was published at least four years before the Document
+ itself, or if the original publisher of the version it refers
+ to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section
+ all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document, unaltered
+ in their text and in their titles. Section numbers or the
+ equivalent are not considered part of the section titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option designate
+ some or all of these sections as invariant. To do this, add their
+ titles to the list of Invariant Sections in the Modified Version's
+ license notice. These titles must be distinct from any other
+ section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end of
+ the list of Cover Texts in the Modified Version. Only one passage
+ of Front-Cover Text and one of Back-Cover Text may be added by (or
+ through arrangements made by) any one entity. If the Document
+ already includes a cover text for the same cover, previously added
+ by you or by arrangement made by the same entity you are acting on
+ behalf of, you may not add another; but you may replace the old
+ one, on explicit permission from the previous publisher that added
+ the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination all
+ of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the documents
+ in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow this
+ License in all other respects regarding verbatim copying of that
+ document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of a
+ storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense, or distribute it is void,
+ and will automatically terminate your rights under this License.
+
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly and
+ finally terminates your license, and (b) permanently, if the
+ copyright holder fails to notify you of the violation by some
+ reasonable means prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from
+ that copyright holder, and you cure the violation prior to 30 days
+ after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate
+ the licenses of parties who have received copies or rights from you
+ under this License. If your rights have been terminated and not
+ permanently reinstated, receipt of a copy of some or all of the
+ same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ <http://www.gnu.org/copyleft/>.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If the
+ Document does not specify a version number of this License, you may
+ choose any version ever published (not as a draft) by the Free
+ Software Foundation. If the Document specifies that a proxy can
+ decide which future versions of this License can be used, that
+ proxy's public statement of acceptance of a version permanently
+ authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+ "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+ World Wide Web server that publishes copyrightable works and also
+ provides prominent facilities for anybody to edit those works. A
+ public wiki that anybody can edit is an example of such a server.
+ A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+ site means any set of copyrightable works thus published on the MMC
+ site.
+
+ "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+ license published by Creative Commons Corporation, a not-for-profit
+ corporation with a principal place of business in San Francisco,
+ California, as well as future copyleft versions of that license
+ published by that same organization.
+
+ "Incorporate" means to publish or republish a Document, in whole or
+ in part, as part of another Document.
+
+ An MMC is "eligible for relicensing" if it is licensed under this
+ License, and if all works that were first published under this
+ License somewhere other than this MMC, and subsequently
+ incorporated in whole or in part into the MMC, (1) had no cover
+ texts or invariant sections, and (2) were thus incorporated prior
+ to November 1, 2008.
+
+ The operator of an MMC Site may republish an MMC contained in the
+ site under CC-BY-SA on the same site at any time before August 1,
+ 2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of free
+software license, such as the GNU General Public License, to permit
+their use in free software.
+
+Appendix B Request Index
+************************
+
+Request names appear without a leading control character; the defaults
+are '.' for the regular control character and ''' for the no-break
+control character.
+
+* Menu:
+
+* ab: Debugging. (line 12127)
+* ad: Manipulating Filling and Adjustment.
+ (line 5701)
+* af: Assigning Register Formats.
+ (line 5419)
+* aln: Setting Registers. (line 5323)
+* als: Strings. (line 8972)
+* am: Writing Macros. (line 9530)
+* am1: Writing Macros. (line 9531)
+* ami: Writing Macros. (line 9532)
+* ami1: Writing Macros. (line 9533)
+* as: Strings. (line 8888)
+* as1: Strings. (line 8889)
+* asciify: Diversions. (line 11120)
+* backtrace: Debugging. (line 12176)
+* bd: Artificial Fonts. (line 8211)
+* blm: Blank Line Traps. (line 10779)
+* box: Diversions. (line 10975)
+* boxa: Diversions. (line 10976)
+* bp: Page Control. (line 7175)
+* br: Manipulating Filling and Adjustment.
+ (line 5657)
+* break: while. (line 9393)
+* brp: Manipulating Filling and Adjustment.
+ (line 5774)
+* c2: Control Characters.
+ (line 4749)
+* cc: Control Characters.
+ (line 4743)
+* ce: Manipulating Filling and Adjustment.
+ (line 5826)
+* cf: I/O. (line 11521)
+* cflags: Using Symbols. (line 7846)
+* ch: Page Location Traps.
+ (line 10528)
+* char: Using Symbols. (line 7945)
+* chop: Strings. (line 8919)
+* class: Character Classes. (line 8034)
+* close: I/O. (line 11703)
+* color: Colors. (line 8687)
+* composite: Using Symbols. (line 7802)
+* continue: while. (line 9397)
+* cp: Compatibility Mode.
+ (line 12414)
+* cs: Artificial Fonts. (line 8241)
+* cu: Artificial Fonts. (line 8202)
+* da: Diversions. (line 10944)
+* de: Writing Macros. (line 9418)
+* de1: Writing Macros. (line 9490)
+* defcolor: Colors. (line 8699)
+* dei: Writing Macros. (line 9512)
+* dei1: Writing Macros. (line 9513)
+* device: Postprocessor Access.
+ (line 11738)
+* devicem: Postprocessor Access.
+ (line 11768)
+* di: Diversions. (line 10943)
+* do: Compatibility Mode.
+ (line 12425)
+* ds: ms Document Control Settings.
+ (line 1803)
+* ds <1>: Strings. (line 8798)
+* ds1: Strings. (line 8799)
+* dt: Diversion Traps. (line 10668)
+* ec: Using Escape Sequences.
+ (line 5012)
+* ecr: Using Escape Sequences.
+ (line 5038)
+* ecs: Using Escape Sequences.
+ (line 5037)
+* el: if-else. (line 9213)
+* em: End-of-input Traps.
+ (line 10807)
+* eo: Using Escape Sequences.
+ (line 5007)
+* ev: Environments. (line 11308)
+* evc: Environments. (line 11362)
+* ex: Debugging. (line 12132)
+* fam: Font Families. (line 7463)
+* fc: Fields. (line 6704)
+* fchar: Using Symbols. (line 7946)
+* fcolor: Colors. (line 8757)
+* fi: Manipulating Filling and Adjustment.
+ (line 5684)
+* fl: Debugging. (line 12167)
+* fp: Font Positions. (line 7550)
+* fschar: Using Symbols. (line 7947)
+* fspecial: Special Fonts. (line 8104)
+* ft: Selecting Fonts. (line 7348)
+* ftr: Selecting Fonts. (line 7406)
+* fzoom: Selecting Fonts. (line 7420)
+* gcolor: Colors. (line 8729)
+* hc: Manipulating Hyphenation.
+ (line 6023)
+* hcode: Manipulating Hyphenation.
+ (line 6228)
+* hla: Manipulating Hyphenation.
+ (line 6262)
+* hlm: Manipulating Hyphenation.
+ (line 6275)
+* hpf: Manipulating Hyphenation.
+ (line 6168)
+* hpfa: Manipulating Hyphenation.
+ (line 6169)
+* hpfcode: Manipulating Hyphenation.
+ (line 6170)
+* hw: Manipulating Hyphenation.
+ (line 5957)
+* hy: Manipulating Hyphenation.
+ (line 6055)
+* hym: Manipulating Hyphenation.
+ (line 6289)
+* hys: Manipulating Hyphenation.
+ (line 6304)
+* ie: if-else. (line 9212)
+* if: if-then. (line 9171)
+* ig: Comments. (line 5180)
+* in: Line Layout. (line 6935)
+* it: Input Line Traps. (line 10679)
+* itc: Input Line Traps. (line 10680)
+* kern: Ligatures and Kerning.
+ (line 8288)
+* lc: Leaders. (line 6661)
+* length: Strings. (line 8909)
+* lf: Debugging. (line 12103)
+* lg: Ligatures and Kerning.
+ (line 8270)
+* linetabs: Tabs and Fields. (line 6614)
+* ll: Line Layout. (line 6987)
+* ls: Manipulating Spacing.
+ (line 6395)
+* lsm: Leading Space Traps.
+ (line 10789)
+* lt: Page Layout. (line 7134)
+* mc: Miscellaneous. (line 11897)
+* mk: Page Motions. (line 9867)
+* mso: I/O. (line 11512)
+* msoquiet: I/O. (line 11513)
+* na: Manipulating Filling and Adjustment.
+ (line 5768)
+* ne: Page Control. (line 7195)
+* nf: Manipulating Filling and Adjustment.
+ (line 5692)
+* nh: Manipulating Hyphenation.
+ (line 6163)
+* nm: Miscellaneous. (line 11796)
+* nn: Miscellaneous. (line 11861)
+* nop: if-then. (line 9190)
+* nr: ms Document Control Settings.
+ (line 1799)
+* nr <1>: Setting Registers. (line 5223)
+* nr <2>: Setting Registers. (line 5277)
+* nr <3>: Auto-increment. (line 5372)
+* nroff: troff and nroff Modes.
+ (line 6840)
+* ns: Manipulating Spacing.
+ (line 6454)
+* nx: I/O. (line 11553)
+* open: I/O. (line 11670)
+* opena: I/O. (line 11671)
+* os: Page Control. (line 7230)
+* output: Diversions. (line 11107)
+* pc: Page Layout. (line 7149)
+* pev: Debugging. (line 12150)
+* pi: I/O. (line 11612)
+* pl: Page Layout. (line 7090)
+* pm: Debugging. (line 12154)
+* pn: Page Layout. (line 7104)
+* pnr: Debugging. (line 12158)
+* po: Line Layout. (line 6909)
+* ps: Changing the Type Size.
+ (line 8462)
+* psbb: Miscellaneous. (line 11945)
+* pso: I/O. (line 11501)
+* ptr: Debugging. (line 12162)
+* pvs: Changing the Vertical Spacing.
+ (line 8581)
+* rchar: Using Symbols. (line 8004)
+* rd: I/O. (line 11558)
+* return: Writing Macros. (line 9567)
+* rfschar: Using Symbols. (line 8005)
+* rj: Manipulating Filling and Adjustment.
+ (line 5865)
+* rm: Strings. (line 8967)
+* rn: Strings. (line 8964)
+* rnn: Setting Registers. (line 5318)
+* rr: Setting Registers. (line 5312)
+* rs: Manipulating Spacing.
+ (line 6455)
+* rt: Page Motions. (line 9868)
+* schar: Using Symbols. (line 7948)
+* shc: Manipulating Hyphenation.
+ (line 6032)
+* shift: Parameters. (line 9610)
+* sizes: Changing the Type Size.
+ (line 8526)
+* so: I/O. (line 11472)
+* soquiet: I/O. (line 11473)
+* sp: Manipulating Spacing.
+ (line 6348)
+* special: Special Fonts. (line 8103)
+* spreadwarn: Debugging. (line 12207)
+* ss: Manipulating Filling and Adjustment.
+ (line 5885)
+* stringdown: Strings. (line 8944)
+* stringup: Strings. (line 8945)
+* sty: Font Families. (line 7504)
+* substring: Strings. (line 8927)
+* sv: Page Control. (line 7229)
+* sy: I/O. (line 11634)
+* ta: Tabs and Fields. (line 6488)
+* tag: Postprocessor Access.
+ (line 11781)
+* taga: Postprocessor Access.
+ (line 11782)
+* tc: Tabs and Fields. (line 6602)
+* ti: Line Layout. (line 6959)
+* tkf: Ligatures and Kerning.
+ (line 8307)
+* tl: Page Layout. (line 7120)
+* tm: Debugging. (line 12115)
+* tm1: Debugging. (line 12116)
+* tmc: Debugging. (line 12117)
+* tr: Character Translations.
+ (line 6729)
+* trf: I/O. (line 11520)
+* trin: Character Translations.
+ (line 6730)
+* trnt: Character Translations.
+ (line 6795)
+* troff: troff and nroff Modes.
+ (line 6832)
+* uf: Artificial Fonts. (line 8206)
+* ul: Artificial Fonts. (line 8180)
+* unformat: Diversions. (line 11145)
+* vpt: Vertical Position Traps.
+ (line 10406)
+* vs: Changing the Vertical Spacing.
+ (line 8540)
+* warn: Debugging. (line 12226)
+* warnscale: Debugging. (line 12203)
+* wh: Page Location Traps.
+ (line 10425)
+* while: while. (line 9331)
+* write: I/O. (line 11682)
+* writec: I/O. (line 11683)
+* writem: I/O. (line 11694)
+
+Appendix C Escape Sequence Index
+********************************
+
+The escape character, '\' by default, is always followed by at least one
+more input character, making an escape _sequence_. Any input token '\X'
+with X not in the list below emits a warning and interpolates glyph X.
+Note the entries for '\.', which may be obscured by the leader dots, and
+for '\<RET>' and '\<SP>', which are sorted alphabetically, not by code
+point order.
+
+* Menu:
+
+* \: Using Escape Sequences.
+ (line 4944)
+* \ <1>: Using Symbols. (line 7731)
+* \!: Diversions. (line 11065)
+* \": Comments. (line 5136)
+* \#: Comments. (line 5170)
+* \$: Parameters. (line 9602)
+* \$*: Parameters. (line 9622)
+* \$0: Parameters. (line 9657)
+* \$@: Parameters. (line 9623)
+* \$^: Parameters. (line 9624)
+* \%: Manipulating Hyphenation.
+ (line 5991)
+* \&: Dummy Characters. (line 8357)
+* \': Using Symbols. (line 7831)
+* \(: Using Symbols. (line 7733)
+* \): Dummy Characters. (line 8407)
+* \*: Strings. (line 8800)
+* \,: Italic Corrections.
+ (line 8338)
+* \-: Using Symbols. (line 7838)
+* \.: Copy Mode. (line 9739)
+* \/: Italic Corrections.
+ (line 8328)
+* \0: Page Motions. (line 10014)
+* \:: Manipulating Hyphenation.
+ (line 5992)
+* \?: Diversions. (line 11066)
+* \A: Identifiers. (line 4628)
+* \a: Leaders. (line 6658)
+* \B: Numeric Expressions.
+ (line 4522)
+* \b: Drawing Geometric Objects.
+ (line 10308)
+* \c: Line Continuation. (line 7047)
+* \C: Using Symbols. (line 7793)
+* \d: Page Motions. (line 9965)
+* \D: Drawing Geometric Objects.
+ (line 10216)
+* \e: Using Escape Sequences.
+ (line 5000)
+* \E: Copy Mode. (line 9794)
+* \f: Selecting Fonts. (line 7349)
+* \F: Font Families. (line 7465)
+* \g: Assigning Register Formats.
+ (line 5477)
+* \H: Artificial Fonts. (line 8129)
+* \h: Page Motions. (line 9982)
+* \k: Page Motions. (line 10082)
+* \l: Drawing Geometric Objects.
+ (line 10141)
+* \L: Drawing Geometric Objects.
+ (line 10167)
+* \m: Colors. (line 8730)
+* \M: Colors. (line 8758)
+* \n: Interpolating Registers.
+ (line 5338)
+* \n <1>: Auto-increment. (line 5381)
+* \N: Using Symbols. (line 7810)
+* \newline: Line Continuation. (line 7019)
+* \o: Page Motions. (line 10097)
+* \O: Suppressing Output.
+ (line 11410)
+* \p: Manipulating Filling and Adjustment.
+ (line 5775)
+* \R: Setting Registers. (line 5224)
+* \R <1>: Setting Registers. (line 5279)
+* \r: Page Motions. (line 9963)
+* \<RET>: Line Continuation. (line 7019)
+* \S: Artificial Fonts. (line 8160)
+* \s: Changing the Type Size.
+ (line 8465)
+* \<SP>: Page Motions. (line 9998)
+* \space: Page Motions. (line 9998)
+* \t: Tabs and Fields. (line 6485)
+* \u: Page Motions. (line 9964)
+* \v: Page Motions. (line 9938)
+* \V: I/O. (line 11719)
+* \w: Page Motions. (line 10020)
+* \x: Manipulating Spacing.
+ (line 6407)
+* \X: Postprocessor Access.
+ (line 11739)
+* \Y: Postprocessor Access.
+ (line 11769)
+* \z: Page Motions. (line 10102)
+* \Z: Page Motions. (line 10107)
+* \[: Using Symbols. (line 7733)
+* \\: Copy Mode. (line 9714)
+* \^: Page Motions. (line 10009)
+* \_: Using Symbols. (line 7841)
+* \`: Using Symbols. (line 7835)
+* \{: Conditional Blocks.
+ (line 9249)
+* \{ <1>: Conditional Blocks.
+ (line 9250)
+* \|: Page Motions. (line 10004)
+* \}: Conditional Blocks.
+ (line 9250)
+* \~: Manipulating Filling and Adjustment.
+ (line 5671)
+
+Appendix D Operator Index
+*************************
+
+* Menu:
+
+* !: Numeric Expressions.
+ (line 4426)
+* %: Numeric Expressions.
+ (line 4359)
+* &: Numeric Expressions.
+ (line 4422)
+* (: Numeric Expressions.
+ (line 4446)
+* ): Numeric Expressions.
+ (line 4446)
+* *: Numeric Expressions.
+ (line 4359)
+* +: Numeric Expressions.
+ (line 4359)
+* + <1>: Numeric Expressions.
+ (line 4365)
+* + (unary): Numeric Expressions.
+ (line 4457)
+* -: Numeric Expressions.
+ (line 4359)
+* - <1>: Numeric Expressions.
+ (line 4365)
+* - (unary): Numeric Expressions.
+ (line 4457)
+* /: Numeric Expressions.
+ (line 4359)
+* ;: Numeric Expressions.
+ (line 4390)
+* <: Numeric Expressions.
+ (line 4416)
+* <=: Numeric Expressions.
+ (line 4416)
+* <?: Numeric Expressions.
+ (line 4407)
+* <colon>: Numeric Expressions.
+ (line 4422)
+* =: Numeric Expressions.
+ (line 4416)
+* ==: Numeric Expressions.
+ (line 4416)
+* >: Numeric Expressions.
+ (line 4416)
+* >=: Numeric Expressions.
+ (line 4416)
+* >?: Numeric Expressions.
+ (line 4407)
+* |: Numeric Expressions.
+ (line 4471)
+
+Appendix E Register Index
+*************************
+
+The macro package or program a specific register belongs to is appended
+in brackets.
+
+ A register name 'x' consisting of exactly one character can be
+accessed as '\nx'. A register name 'xx' consisting of exactly two
+characters can be accessed as '\n(xx'. Register names 'xxx' of any
+length can be accessed as '\n[xxx]'.
+
+* Menu:
+
+* $$: Built-in Registers.
+ (line 5571)
+* %: Page Layout. (line 7149)
+* % <1>: Page Control. (line 7178)
+* .$: Parameters. (line 9594)
+* .A: Built-in Registers.
+ (line 5527)
+* .a: Manipulating Spacing.
+ (line 6408)
+* .b: Artificial Fonts. (line 8213)
+* .br: Control Characters.
+ (line 4759)
+* .c: Built-in Registers.
+ (line 5531)
+* .C: Compatibility Mode.
+ (line 12415)
+* .cdp: Environments. (line 11387)
+* .ce: Manipulating Filling and Adjustment.
+ (line 5827)
+* .cht: Environments. (line 11386)
+* .color: Colors. (line 8688)
+* .cp: Compatibility Mode.
+ (line 12426)
+* .csk: Environments. (line 11388)
+* .d: Diversions. (line 11000)
+* .ev: Environments. (line 11309)
+* .F: Built-in Registers.
+ (line 5536)
+* .f: Font Positions. (line 7551)
+* .fam: Font Families. (line 7464)
+* .fn: Selecting Fonts. (line 7352)
+* .fp: Font Positions. (line 7552)
+* .g: Built-in Registers.
+ (line 5539)
+* .H: Motion Quanta. (line 4300)
+* .h: Diversions. (line 11007)
+* .height: Artificial Fonts. (line 8132)
+* .hla: Manipulating Hyphenation.
+ (line 6263)
+* .hlc: Manipulating Hyphenation.
+ (line 6277)
+* .hlm: Manipulating Hyphenation.
+ (line 6276)
+* .hy: Manipulating Hyphenation.
+ (line 6056)
+* .hym: Manipulating Hyphenation.
+ (line 6290)
+* .hys: Manipulating Hyphenation.
+ (line 6305)
+* .i: Line Layout. (line 6938)
+* .in: Line Layout. (line 6962)
+* .int: Line Continuation. (line 7048)
+* .j: Manipulating Filling and Adjustment.
+ (line 5702)
+* .k: Page Motions. (line 10093)
+* .kern: Ligatures and Kerning.
+ (line 8289)
+* .L: Manipulating Spacing.
+ (line 6396)
+* .l: Line Layout. (line 6990)
+* .lg: Ligatures and Kerning.
+ (line 8271)
+* .linetabs: Tabs and Fields. (line 6615)
+* .ll: Line Layout. (line 6991)
+* .lt: Page Layout. (line 7137)
+* .m: Colors. (line 8733)
+* .M: Colors. (line 8761)
+* .n: Environments. (line 11403)
+* .ne: Page Location Traps.
+ (line 10579)
+* .nm: Miscellaneous. (line 11798)
+* .nn: Miscellaneous. (line 11862)
+* .ns: Manipulating Spacing.
+ (line 6456)
+* .o: Line Layout. (line 6912)
+* .O: Suppressing Output.
+ (line 11463)
+* .P: Built-in Registers.
+ (line 5543)
+* .p: Page Layout. (line 7093)
+* .pe: Page Location Traps.
+ (line 10598)
+* .pn: Page Layout. (line 7107)
+* .ps: Using Fractional Type Sizes.
+ (line 8622)
+* .psr: Using Fractional Type Sizes.
+ (line 8637)
+* .pvs: Changing the Vertical Spacing.
+ (line 8584)
+* .R: Built-in Registers.
+ (line 5547)
+* .rj: Manipulating Filling and Adjustment.
+ (line 5866)
+* .s: Changing the Type Size.
+ (line 8466)
+* .slant: Artificial Fonts. (line 8161)
+* .sr: Using Fractional Type Sizes.
+ (line 8638)
+* .ss: Manipulating Filling and Adjustment.
+ (line 5886)
+* .sss: Manipulating Filling and Adjustment.
+ (line 5887)
+* .sty: Font Families. (line 7505)
+* .T: Built-in Registers.
+ (line 5551)
+* .t: Page Location Traps.
+ (line 10520)
+* .tabs: Tabs and Fields. (line 6489)
+* .trunc: Page Location Traps.
+ (line 10587)
+* .U: Built-in Registers.
+ (line 5555)
+* .u: Manipulating Filling and Adjustment.
+ (line 5685)
+* .V: Motion Quanta. (line 4301)
+* .v: Changing the Vertical Spacing.
+ (line 8543)
+* .vpt: Vertical Position Traps.
+ (line 10407)
+* .w: Environments. (line 11385)
+* .warn: Debugging. (line 12227)
+* .x: Built-in Registers.
+ (line 5559)
+* .y: Built-in Registers.
+ (line 5563)
+* .Y: Built-in Registers.
+ (line 5567)
+* .z: Diversions. (line 10999)
+* .zoom: Selecting Fonts. (line 7421)
+* c.: Built-in Registers.
+ (line 5532)
+* ct: Page Motions. (line 10025)
+* DD [ms]: ms Document Control Settings.
+ (line 2089)
+* DI [ms]: ms Document Control Settings.
+ (line 2098)
+* dl: Diversions. (line 11026)
+* dn: Diversions. (line 11025)
+* dw: Built-in Registers.
+ (line 5589)
+* dy: Built-in Registers.
+ (line 5592)
+* FF [ms]: ms Document Control Settings.
+ (line 2029)
+* FI [ms]: ms Document Control Settings.
+ (line 2022)
+* FM [ms]: ms Document Control Settings.
+ (line 1848)
+* FPD [ms]: ms Document Control Settings.
+ (line 2070)
+* FPS [ms]: ms Document Control Settings.
+ (line 2056)
+* FVS [ms]: ms Document Control Settings.
+ (line 2063)
+* GROWPS [ms]: ms Document Control Settings.
+ (line 1987)
+* GS [ms]: Differences from AT&T ms.
+ (line 3360)
+* HM [ms]: ms Document Control Settings.
+ (line 1841)
+* HORPHANS [ms]: ms Document Control Settings.
+ (line 1998)
+* hours: Built-in Registers.
+ (line 5586)
+* hp: Page Motions. (line 10090)
+* HY [ms]: ms Document Control Settings.
+ (line 1917)
+* LL [ms]: ms Document Control Settings.
+ (line 1822)
+* llx: Miscellaneous. (line 11946)
+* lly: Miscellaneous. (line 11947)
+* ln: Miscellaneous. (line 11797)
+* lsn: Leading Space Traps.
+ (line 10790)
+* lss: Leading Space Traps.
+ (line 10791)
+* LT [ms]: ms Document Control Settings.
+ (line 1831)
+* MINGW [ms]: ms Document Control Settings.
+ (line 2111)
+* minutes: Built-in Registers.
+ (line 5583)
+* mo: Built-in Registers.
+ (line 5595)
+* nl: Page Control. (line 7240)
+* opmaxx: Suppressing Output.
+ (line 11426)
+* opmaxy: Suppressing Output.
+ (line 11426)
+* opminx: Suppressing Output.
+ (line 11426)
+* opminy: Suppressing Output.
+ (line 11426)
+* PD [ms]: ms Document Control Settings.
+ (line 1946)
+* PI [ms]: ms Document Control Settings.
+ (line 1938)
+* PO [ms]: ms Document Control Settings.
+ (line 1813)
+* PORPHANS [ms]: ms Document Control Settings.
+ (line 1961)
+* PS [ms]: ms Document Control Settings.
+ (line 1903)
+* PSINCR [ms]: ms Document Control Settings.
+ (line 1976)
+* QI [ms]: ms Document Control Settings.
+ (line 1953)
+* rsb: Page Motions. (line 10024)
+* rst: Page Motions. (line 10023)
+* sb: Page Motions. (line 10022)
+* seconds: Built-in Registers.
+ (line 5580)
+* skw: Page Motions. (line 10027)
+* slimit: Debugging. (line 12197)
+* ssc: Page Motions. (line 10026)
+* st: Page Motions. (line 10021)
+* systat: I/O. (line 11635)
+* TC-MARGIN [ms]: ms Document Control Settings.
+ (line 2119)
+* urx: Miscellaneous. (line 11948)
+* ury: Miscellaneous. (line 11949)
+* VS [ms]: ms Document Control Settings.
+ (line 1910)
+* year: Built-in Registers.
+ (line 5598)
+* yr: Built-in Registers.
+ (line 5601)
+
+Appendix F Macro Index
+**********************
+
+The macro package a specific macro belongs to is appended in brackets.
+They appear without the leading control character (normally '.').
+
+* Menu:
+
+* 1C [ms]: ms Multiple Columns.
+ (line 3125)
+* 2C [ms]: ms Multiple Columns.
+ (line 3128)
+* [ [ms]: ms Insertions. (line 2876)
+* ] [ms]: ms Insertions. (line 2877)
+* AB [ms]: ms Document Description Macros.
+ (line 2187)
+* AE [ms]: ms Document Description Macros.
+ (line 2194)
+* AI [ms]: ms Document Description Macros.
+ (line 2170)
+* AM [ms]: ms Legacy Features. (line 3443)
+* AU [ms]: ms Document Description Macros.
+ (line 2164)
+* B [ms]: Typeface and decoration.
+ (line 2485)
+* B1 [ms]: ms keeps and displays.
+ (line 2774)
+* B2 [ms]: ms keeps and displays.
+ (line 2775)
+* BD [ms]: ms keeps and displays.
+ (line 2815)
+* BI [ms]: Typeface and decoration.
+ (line 2498)
+* BT [man]: Optional man extensions.
+ (line 1442)
+* BX [ms]: Typeface and decoration.
+ (line 2506)
+* CD [ms]: ms keeps and displays.
+ (line 2821)
+* CT [man]: Optional man extensions.
+ (line 1457)
+* CW [man]: Optional man extensions.
+ (line 1460)
+* CW [ms]: Typeface and decoration.
+ (line 2502)
+* DA [ms]: ms Document Description Macros.
+ (line 2177)
+* De [man]: Optional man extensions.
+ (line 1467)
+* DE [ms]: ms keeps and displays.
+ (line 2830)
+* Ds [man]: Optional man extensions.
+ (line 1464)
+* DS [ms]: ms keeps and displays.
+ (line 2805)
+* DS [ms] <1>: ms keeps and displays.
+ (line 2809)
+* DS [ms] <2>: ms keeps and displays.
+ (line 2814)
+* DS [ms] <3>: ms keeps and displays.
+ (line 2820)
+* DS [ms] <4>: ms keeps and displays.
+ (line 2825)
+* EE [man]: Optional man extensions.
+ (line 1474)
+* EF [ms]: ms Headers and Footers.
+ (line 3069)
+* EH [ms]: ms Headers and Footers.
+ (line 3067)
+* EN [ms]: ms Insertions. (line 2869)
+* EQ [ms]: ms Insertions. (line 2868)
+* EX [man]: Optional man extensions.
+ (line 1470)
+* FE [ms]: ms Footnotes. (line 2935)
+* FS [ms]: ms Footnotes. (line 2934)
+* G [man]: Optional man extensions.
+ (line 1477)
+* GL [man]: Optional man extensions.
+ (line 1482)
+* HB [man]: Optional man extensions.
+ (line 1487)
+* I [ms]: Typeface and decoration.
+ (line 2495)
+* ID [ms]: ms keeps and displays.
+ (line 2810)
+* IP [ms]: Paragraphs in ms. (line 2294)
+* KE [ms]: ms keeps and displays.
+ (line 2762)
+* KF [ms]: ms keeps and displays.
+ (line 2761)
+* KS [ms]: ms keeps and displays.
+ (line 2760)
+* LD [ms]: ms keeps and displays.
+ (line 2806)
+* LG [ms]: Typeface and decoration.
+ (line 2516)
+* LP [ms]: Paragraphs in ms. (line 2287)
+* MC [ms]: ms Multiple Columns.
+ (line 3131)
+* MS [man]: Optional man extensions.
+ (line 1495)
+* ND [ms]: ms Document Description Macros.
+ (line 2182)
+* NE [man]: Optional man extensions.
+ (line 1507)
+* NH [ms]: Headings in ms. (line 2361)
+* NL [ms]: Typeface and decoration.
+ (line 2528)
+* NT [man]: Optional man extensions.
+ (line 1500)
+* OF [ms]: ms Headers and Footers.
+ (line 3068)
+* OH [ms]: ms Headers and Footers.
+ (line 3066)
+* P1 [ms]: ms Headers and Footers.
+ (line 3078)
+* PE [ms]: ms Insertions. (line 2861)
+* PF [ms]: ms Insertions. (line 2862)
+* PN [man]: Optional man extensions.
+ (line 1510)
+* Pn [man]: Optional man extensions.
+ (line 1514)
+* PP [ms]: Paragraphs in ms. (line 2290)
+* PS [ms]: ms Insertions. (line 2860)
+* PT [man]: Optional man extensions.
+ (line 1437)
+* PX [ms]: ms TOC. (line 3181)
+* QE [ms]: Paragraphs in ms. (line 2307)
+* QP [ms]: Paragraphs in ms. (line 2302)
+* QS [ms]: Paragraphs in ms. (line 2306)
+* R [man]: Optional man extensions.
+ (line 1520)
+* R [ms]: Typeface and decoration.
+ (line 2491)
+* RD [ms]: ms keeps and displays.
+ (line 2826)
+* RE [ms]: Indented regions in ms.
+ (line 2710)
+* RN [man]: Optional man extensions.
+ (line 1523)
+* RP [ms]: ms Document Description Macros.
+ (line 2145)
+* RS [ms]: Indented regions in ms.
+ (line 2706)
+* SH [ms]: Headings in ms. (line 2431)
+* SM [ms]: Typeface and decoration.
+ (line 2522)
+* TA [ms]: Tab Stops in ms. (line 3103)
+* TB [man]: Optional man extensions.
+ (line 1492)
+* TC [ms]: ms TOC. (line 3186)
+* TE [ms]: ms Insertions. (line 2852)
+* TL [ms]: ms Document Description Macros.
+ (line 2159)
+* TS [ms]: ms Insertions. (line 2851)
+* UL [ms]: Typeface and decoration.
+ (line 2512)
+* VE [man]: Optional man extensions.
+ (line 1530)
+* VS [man]: Optional man extensions.
+ (line 1526)
+* XA [ms]: ms TOC. (line 3170)
+* XE [ms]: ms TOC. (line 3171)
+* XH [ms]: ms TOC. (line 3222)
+* XH-REPLACEMENT [ms]: ms TOC. (line 3231)
+* XH-UPDATE-TOC [ms]: ms TOC. (line 3236)
+* XN [ms]: ms TOC. (line 3221)
+* XN-INIT [ms]: ms TOC. (line 3235)
+* XN-REPLACEMENT [ms]: ms TOC. (line 3230)
+* XP [ms]: Paragraphs in ms. (line 2313)
+* XS [ms]: ms TOC. (line 3169)
+
+Appendix G String Index
+***********************
+
+The macro package or program a that defines or uses each string is
+appended in brackets. (Only one string, '.T', is defined by the 'troff'
+formatter itself.) *Note Strings::.
+
+* Menu:
+
+* ! [ms]: ms Legacy Features. (line 3482)
+* ' [ms]: ms Legacy Features. (line 3415)
+* ' [ms] <1>: ms Legacy Features. (line 3446)
+* * [ms]: ms Footnotes. (line 2925)
+* , [ms]: ms Legacy Features. (line 3433)
+* , [ms] <1>: ms Legacy Features. (line 3461)
+* - [ms]: Typographical symbols in ms.
+ (line 2266)
+* . [ms]: ms Legacy Features. (line 3473)
+* .T: Strings. (line 8787)
+* .T <1>: Strings. (line 8787)
+* / [ms]: ms Legacy Features. (line 3464)
+* 3 [ms]: ms Legacy Features. (line 3491)
+* 8 [ms]: ms Legacy Features. (line 3485)
+* : [ms]: ms Legacy Features. (line 3421)
+* : [ms] <1>: ms Legacy Features. (line 3452)
+* < [ms]: Typeface and decoration.
+ (line 2562)
+* > [ms]: Typeface and decoration.
+ (line 2563)
+* ? [ms]: ms Legacy Features. (line 3479)
+* ^ [ms]: ms Legacy Features. (line 3424)
+* ^ [ms] <1>: ms Legacy Features. (line 3455)
+* _ [ms]: ms Legacy Features. (line 3470)
+* ` [ms]: ms Legacy Features. (line 3418)
+* ` [ms] <1>: ms Legacy Features. (line 3449)
+* { [ms]: Typeface and decoration.
+ (line 2558)
+* } [ms]: Typeface and decoration.
+ (line 2559)
+* ~ [ms]: ms Legacy Features. (line 3427)
+* ~ [ms] <1>: ms Legacy Features. (line 3458)
+* ABSTRACT [ms]: ms language and localization.
+ (line 3019)
+* ae [ms]: ms Legacy Features. (line 3506)
+* Ae [ms]: ms Legacy Features. (line 3509)
+* C [ms]: ms Legacy Features. (line 3430)
+* CF [ms]: ms Document Control Settings.
+ (line 1886)
+* CH [ms]: ms Document Control Settings.
+ (line 1865)
+* d- [ms]: ms Legacy Features. (line 3494)
+* D- [ms]: ms Legacy Features. (line 3497)
+* FAM [ms]: ms Document Control Settings.
+ (line 1926)
+* FR [ms]: ms Document Control Settings.
+ (line 2077)
+* LF [ms]: ms Document Control Settings.
+ (line 1879)
+* LH [ms]: ms Document Control Settings.
+ (line 1858)
+* MONTH1 [ms]: ms language and localization.
+ (line 3028)
+* MONTH10 [ms]: ms language and localization.
+ (line 3037)
+* MONTH11 [ms]: ms language and localization.
+ (line 3038)
+* MONTH12 [ms]: ms language and localization.
+ (line 3039)
+* MONTH2 [ms]: ms language and localization.
+ (line 3029)
+* MONTH3 [ms]: ms language and localization.
+ (line 3030)
+* MONTH4 [ms]: ms language and localization.
+ (line 3031)
+* MONTH5 [ms]: ms language and localization.
+ (line 3032)
+* MONTH6 [ms]: ms language and localization.
+ (line 3033)
+* MONTH7 [ms]: ms language and localization.
+ (line 3034)
+* MONTH8 [ms]: ms language and localization.
+ (line 3035)
+* MONTH9 [ms]: ms language and localization.
+ (line 3036)
+* o [ms]: ms Legacy Features. (line 3476)
+* oe [ms]: ms Legacy Features. (line 3512)
+* OE [ms]: ms Legacy Features. (line 3515)
+* Q [ms]: Typographical symbols in ms.
+ (line 2269)
+* q [ms]: ms Legacy Features. (line 3488)
+* REFERENCES [ms]: ms language and localization.
+ (line 3014)
+* RF [ms]: ms Document Control Settings.
+ (line 1893)
+* RH [ms]: ms Document Control Settings.
+ (line 1872)
+* SN [ms]: Headings in ms. (line 2410)
+* SN-DOT [ms]: Headings in ms. (line 2408)
+* SN-NO-DOT [ms]: Headings in ms. (line 2409)
+* SN-STYLE [ms]: ms Document Control Settings.
+ (line 2011)
+* SN-STYLE [ms] <1>: Headings in ms. (line 2407)
+* th [ms]: ms Legacy Features. (line 3500)
+* Th [ms]: ms Legacy Features. (line 3503)
+* TOC [ms]: ms language and localization.
+ (line 3024)
+* U [ms]: Typographical symbols in ms.
+ (line 2270)
+* v [ms]: ms Legacy Features. (line 3467)
+
+Appendix H File Keyword Index
+*****************************
+
+* Menu:
+
+* #: DESC File Format. (line 13432)
+* # <1>: Font Description File Format.
+ (line 13592)
+* ---: Font Description File Format.
+ (line 13639)
+* biggestfont: DESC File Format. (line 13562)
+* charset: DESC File Format. (line 13557)
+* charset <1>: Font Description File Format.
+ (line 13631)
+* family: Selecting Fonts. (line 7352)
+* family <1>: DESC File Format. (line 13436)
+* fonts: Using Symbols. (line 7612)
+* fonts <1>: Special Fonts. (line 8104)
+* fonts <2>: DESC File Format. (line 13439)
+* hor: DESC File Format. (line 13445)
+* image_generator: DESC File Format. (line 13449)
+* kernpairs: Font Description File Format.
+ (line 13727)
+* ligatures: Font Description File Format.
+ (line 13611)
+* name: Font Description File Format.
+ (line 13596)
+* paperlength: DESC File Format. (line 13455)
+* papersize: DESC File Format. (line 13459)
+* paperwidth: DESC File Format. (line 13486)
+* pass_filenames: DESC File Format. (line 13490)
+* postpro: DESC File Format. (line 13495)
+* prepro: DESC File Format. (line 13498)
+* print: DESC File Format. (line 13502)
+* res: DESC File Format. (line 13506)
+* sizes: DESC File Format. (line 13509)
+* sizescale: DESC File Format. (line 13514)
+* slant: Font Description File Format.
+ (line 13607)
+* spacewidth: Font Description File Format.
+ (line 13601)
+* spare1: DESC File Format. (line 13562)
+* spare2: DESC File Format. (line 13562)
+* special: Artificial Fonts. (line 8230)
+* special <1>: Font Description File Format.
+ (line 13618)
+* styles: Selecting Fonts. (line 7352)
+* styles <1>: Font Families. (line 7511)
+* styles <2>: DESC File Format. (line 13518)
+* tcommand: DESC File Format. (line 13522)
+* unicode: DESC File Format. (line 13526)
+* unitwidth: DESC File Format. (line 13540)
+* unscaled_charwidths: DESC File Format. (line 13544)
+* use_charnames_in_special: Postprocessor Access.
+ (line 11760)
+* use_charnames_in_special <1>: DESC File Format. (line 13548)
+* vert: DESC File Format. (line 13553)
+
+Appendix I Program and File Index
+*********************************
+
+* Menu:
+
+* an.tmac: man. (line 1417)
+* changebar: Miscellaneous. (line 11940)
+* composite.tmac: Using Symbols. (line 7802)
+* cp1047.tmac: Input Encodings. (line 3986)
+* cs.tmac: Manipulating Hyphenation.
+ (line 6215)
+* de.tmac: Manipulating Hyphenation.
+ (line 6215)
+* DESC: Selecting Fonts. (line 7352)
+* DESC <1>: Font Families. (line 7511)
+* DESC <2>: Using Symbols. (line 7612)
+* DESC <3>: Using Symbols. (line 7820)
+* DESC <4>: Special Fonts. (line 8104)
+* diffmk: Miscellaneous. (line 11940)
+* ec.tmac: Input Encodings. (line 4027)
+* en.tmac: Manipulating Hyphenation.
+ (line 6215)
+* eqn: ms Insertions. (line 2845)
+* fr.tmac: Manipulating Hyphenation.
+ (line 6215)
+* freeeuro.pfa: Input Encodings. (line 4027)
+* gchem: Groff Options. (line 478)
+* gdiffmk: Miscellaneous. (line 11940)
+* geqn: Groff Options. (line 478)
+* ggrn: Groff Options. (line 478)
+* gpic: Groff Options. (line 478)
+* grap: Groff Options. (line 478)
+* grefer: Groff Options. (line 478)
+* groff: Groff Options. (line 478)
+* gsoelim: Groff Options. (line 478)
+* gtbl: Groff Options. (line 478)
+* gtroff: Groff Options. (line 478)
+* it.tmac: Manipulating Hyphenation.
+ (line 6215)
+* ja.tmac: Manipulating Hyphenation.
+ (line 6215)
+* latin1.tmac: Input Encodings. (line 3991)
+* latin2.tmac: Input Encodings. (line 4004)
+* latin5.tmac: Input Encodings. (line 4010)
+* latin9.tmac: Input Encodings. (line 4015)
+* makeindex: Indexing. (line 1340)
+* man.local: Optional man extensions.
+ (line 1427)
+* man.tmac: man. (line 1417)
+* man.ultrix: Optional man extensions.
+ (line 1451)
+* nrchbar: Miscellaneous. (line 11940)
+* papersize.tmac: Paper Format. (line 975)
+* perl: I/O. (line 11645)
+* pic: ms Insertions. (line 2845)
+* post-grohtml: Groff Options. (line 766)
+* pre-grohtml: Groff Options. (line 766)
+* preconv: Groff Options. (line 478)
+* refer: ms Insertions. (line 2845)
+* soelim: Debugging. (line 12103)
+* sv.tmac: Manipulating Hyphenation.
+ (line 6215)
+* tbl: ms Insertions. (line 2845)
+* trace.tmac: Writing Macros. (line 9551)
+* troffrc: Groff Options. (line 699)
+* troffrc <1>: Paper Format. (line 975)
+* troffrc <2>: Manipulating Hyphenation.
+ (line 6215)
+* troffrc <3>: Manipulating Hyphenation.
+ (line 6263)
+* troffrc <4>: troff and nroff Modes.
+ (line 6832)
+* troffrc-end: Groff Options. (line 699)
+* troffrc-end <1>: Manipulating Hyphenation.
+ (line 6263)
+* troffrc-end <2>: troff and nroff Modes.
+ (line 6832)
+* tty.tmac: troff and nroff Modes.
+ (line 6840)
+* tty.tmac <1>: Line Layout. (line 6912)
+* vtroff: Operators in Conditionals.
+ (line 9070)
+* zh.tmac: Manipulating Hyphenation.
+ (line 6215)
+
+Appendix J Concept Index
+************************
+
+* Menu:
+
+* ", as delimiter: Delimiters. (line 5060)
+* ", at end of sentence: Sentences. (line 3663)
+* ", at end of sentence <1>: Using Symbols. (line 7892)
+* ", embedding in a macro argument: Calling Macros. (line 4875)
+* %, as delimiter: Delimiters. (line 5092)
+* &, as delimiter: Delimiters. (line 5092)
+* ', as a comment: Comments. (line 5164)
+* ', as delimiter: Delimiters. (line 5060)
+* ', at end of sentence: Sentences. (line 3663)
+* ', at end of sentence <1>: Using Symbols. (line 7892)
+* (, as delimiter: Delimiters. (line 5092)
+* ), as delimiter: Delimiters. (line 5092)
+* ), at end of sentence: Sentences. (line 3663)
+* ), at end of sentence <1>: Using Symbols. (line 7892)
+* *, as delimiter: Delimiters. (line 5092)
+* *, at end of sentence: Sentences. (line 3663)
+* *, at end of sentence <1>: Using Symbols. (line 7892)
+* +, and page motion: Numeric Expressions.
+ (line 4457)
+* +, as delimiter: Delimiters. (line 5092)
+* -, and page motion: Numeric Expressions.
+ (line 4457)
+* -, as delimiter: Delimiters. (line 5092)
+* ., as delimiter: Delimiters. (line 5090)
+* .h register, difference from nl: Diversions. (line 11020)
+* .ps register, in comparison with .psr: Using Fractional Type Sizes.
+ (line 8638)
+* .s register, in comparison with .sr: Using Fractional Type Sizes.
+ (line 8638)
+* .S register, Plan 9 alias for .tabs: Tabs and Fields. (line 6593)
+* .t register, and diversions: Diversion Traps. (line 10668)
+* .tabs register, Plan 9 alias (.S): Tabs and Fields. (line 6593)
+* .V register, and vs: Changing the Vertical Spacing.
+ (line 8546)
+* /, as delimiter: Delimiters. (line 5092)
+* 8-bit input: Font Description File Format.
+ (line 13639)
+* <, as delimiter: Delimiters. (line 5092)
+* <colon>, as delimiter: Delimiters. (line 5092)
+* =, as delimiter: Delimiters. (line 5092)
+* >, as delimiter: Delimiters. (line 5092)
+* [, macro names starting with, and refer: Identifiers. (line 4623)
+* \!, and copy mode: Diversions. (line 11074)
+* \!, and output request: Diversions. (line 11106)
+* \!, and trnt: Character Translations.
+ (line 6795)
+* \!, as delimiter: Delimiters. (line 5069)
+* \!, as delimiter <1>: Delimiters. (line 5096)
+* \!, in top-level diversion: Diversions. (line 11098)
+* \!, incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \!, incompatibilities with AT&T troff <1>: Other Differences.
+ (line 12636)
+* \$, when reading text for a macro: Copy Mode. (line 9699)
+* \%, and translations: Character Translations.
+ (line 6747)
+* \%, as delimiter: Delimiters. (line 5069)
+* \%, as delimiter <1>: Delimiters. (line 5096)
+* \%, following \X or \Y: Manipulating Hyphenation.
+ (line 6001)
+* \%, in \X: Postprocessor Access.
+ (line 11746)
+* \%, incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \&, and glyph definitions: Using Symbols. (line 7948)
+* \&, and translations: Character Translations.
+ (line 6758)
+* \&, as delimiter: Delimiters. (line 5069)
+* \&, at end of sentence: Sentences. (line 3647)
+* \&, in \X: Postprocessor Access.
+ (line 11746)
+* \&, incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \', and translations: Character Translations.
+ (line 6741)
+* \', as delimiter: Delimiters. (line 5069)
+* \', as delimiter <1>: Delimiters. (line 5096)
+* \', incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \(, and translations: Character Translations.
+ (line 6741)
+* \), as delimiter: Delimiters. (line 5069)
+* \), in \X: Postprocessor Access.
+ (line 11746)
+* \*, and warnings: Warnings. (line 12301)
+* \*, incompatibilities with AT&T troff: Compatibility Mode.
+ (line 12404)
+* \*, when reading text for a macro: Copy Mode. (line 9699)
+* \, disabling (eo): Using Escape Sequences.
+ (line 5007)
+* \, embedding in a macro argument: Calling Macros. (line 4875)
+* \,, as delimiter: Delimiters. (line 5069)
+* \- glyph, and cflags: Using Symbols. (line 7875)
+* \-, and translations: Character Translations.
+ (line 6741)
+* \-, as delimiter: Delimiters. (line 5069)
+* \-, as delimiter <1>: Delimiters. (line 5096)
+* \-, incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \/, as delimiter: Delimiters. (line 5069)
+* \/, as delimiter <1>: Delimiters. (line 5096)
+* \0, as delimiter: Delimiters. (line 5069)
+* \:, as delimiter: Delimiters. (line 5069)
+* \:, as delimiter <1>: Delimiters. (line 5096)
+* \<colon>, in \X: Postprocessor Access.
+ (line 11746)
+* \?, and copy mode: Operators in Conditionals.
+ (line 9116)
+* \?, and copy mode <1>: Diversions. (line 11074)
+* \?, as delimiter: Delimiters. (line 5069)
+* \?, in top-level diversion: Diversions. (line 11103)
+* \?, incompatibilities with AT&T troff: Other Differences. (line 12636)
+* \a, and copy mode: Leaders. (line 6658)
+* \a, and translations: Character Translations.
+ (line 6751)
+* \a, as delimiter: Delimiters. (line 5069)
+* \A, delimiters allowed by: Delimiters. (line 5076)
+* \A, incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \b, delimiters allowed by: Delimiters. (line 5076)
+* \b, limitations of: Drawing Geometric Objects.
+ (line 10316)
+* \C, and translations: Character Translations.
+ (line 6741)
+* \c, as delimiter: Delimiters. (line 5069)
+* \c, as delimiter <1>: Delimiters. (line 5096)
+* \c, incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \c, when filling disabled: Line Continuation. (line 7062)
+* \c, when filling enabled: Line Continuation. (line 7054)
+* \d, as delimiter: Delimiters. (line 5069)
+* \D, delimiters allowed by: Delimiters. (line 5087)
+* \e, and glyph definitions: Using Symbols. (line 7948)
+* \e, and translations: Character Translations.
+ (line 6745)
+* \e, as delimiter: Delimiters. (line 5069)
+* \E, as delimiter: Delimiters. (line 5069)
+* \e, as delimiter <1>: Delimiters. (line 5096)
+* \e, incompatibilities with AT&T troff: Other Differences. (line 12636)
+* \F, and changing fonts: Selecting Fonts. (line 7352)
+* \f, and font translations: Selecting Fonts. (line 7406)
+* \f, incompatibilities with AT&T troff: Compatibility Mode.
+ (line 12506)
+* \h, delimiters allowed by: Delimiters. (line 5087)
+* \H, delimiters allowed by: Delimiters. (line 5087)
+* \H, incompatibilities with AT&T troff: Compatibility Mode.
+ (line 12506)
+* \H, using + and - with: Numeric Expressions.
+ (line 4463)
+* \H, with fractional type sizes: Using Fractional Type Sizes.
+ (line 8604)
+* \l, and glyph definitions: Using Symbols. (line 7948)
+* \L, and glyph definitions: Using Symbols. (line 7948)
+* \l, delimiters allowed by: Delimiters. (line 5087)
+* \L, delimiters allowed by: Delimiters. (line 5087)
+* \N, and translations: Character Translations.
+ (line 6741)
+* \n, and warnings: Warnings. (line 12313)
+* \N, delimiters allowed by: Delimiters. (line 5087)
+* \n, incompatibilities with AT&T troff: Compatibility Mode.
+ (line 12404)
+* \n, when reading text for a macro: Copy Mode. (line 9699)
+* \o, delimiters allowed by: Delimiters. (line 5076)
+* \p, as delimiter: Delimiters. (line 5069)
+* \p, as delimiter <1>: Delimiters. (line 5096)
+* \R, after \c: Line Continuation. (line 7048)
+* \R, and warnings: Warnings. (line 12313)
+* \r, as delimiter: Delimiters. (line 5069)
+* \R, delimiters allowed by: Delimiters. (line 5087)
+* \R, difference from nr: Auto-increment. (line 5372)
+* \R, using + and - with: Numeric Expressions.
+ (line 4463)
+* \<RET>, when reading text for a macro: Copy Mode. (line 9699)
+* \s, delimiters allowed by: Delimiters. (line 5087)
+* \S, delimiters allowed by: Delimiters. (line 5087)
+* \s, incompatibilities with AT&T troff: Compatibility Mode.
+ (line 12506)
+* \S, incompatibilities with AT&T troff: Compatibility Mode.
+ (line 12506)
+* \s, incompatibilities with AT&T troff <1>: Compatibility Mode.
+ (line 12519)
+* \s, using + and - with: Numeric Expressions.
+ (line 4463)
+* \s, with fractional type sizes: Using Fractional Type Sizes.
+ (line 8604)
+* \<SP>, as delimiter: Delimiters. (line 5069)
+* \<SP>, difference from \~: Calling Macros. (line 4867)
+* \<SP>, incompatibilities with AT&T troff: Other Differences.
+ (line 12546)
+* \t, and copy mode: Tabs and Fields. (line 6485)
+* \t, and translations: Character Translations.
+ (line 6751)
+* \t, and warnings: Warnings. (line 12319)
+* \t, as delimiter: Delimiters. (line 5069)
+* \u, as delimiter: Delimiters. (line 5069)
+* \V, and copy mode: I/O. (line 11721)
+* \v, delimiters allowed by: Delimiters. (line 5087)
+* \v, internal representation: Gtroff Internals. (line 12017)
+* \w, delimiters allowed by: Delimiters. (line 5076)
+* \X, and special characters: Postprocessor Access.
+ (line 11760)
+* \X, delimiters allowed by: Delimiters. (line 5076)
+* \x, delimiters allowed by: Delimiters. (line 5087)
+* \X, followed by \%: Manipulating Hyphenation.
+ (line 6001)
+* \Y, followed by \%: Manipulating Hyphenation.
+ (line 6001)
+* \Z, delimiters allowed by: Delimiters. (line 5076)
+* \[, and translations: Character Translations.
+ (line 6741)
+* \\, when reading text for a macro: Copy Mode. (line 9738)
+* \^, as delimiter: Delimiters. (line 5069)
+* \^, incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \_, and translations: Character Translations.
+ (line 6741)
+* \_, as delimiter: Delimiters. (line 5069)
+* \_, as delimiter <1>: Delimiters. (line 5096)
+* \_, incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \`, and translations: Character Translations.
+ (line 6741)
+* \`, as delimiter: Delimiters. (line 5069)
+* \`, as delimiter <1>: Delimiters. (line 5096)
+* \`, incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \{, as delimiter: Delimiters. (line 5069)
+* \{, as delimiter <1>: Delimiters. (line 5096)
+* \{, incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \|, as delimiter: Delimiters. (line 5069)
+* \|, incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \}, and warnings: Warnings. (line 12324)
+* \}, as delimiter: Delimiters. (line 5069)
+* \}, as delimiter <1>: Delimiters. (line 5096)
+* \}, incompatibilities with AT&T troff: Other Differences. (line 12546)
+* \~, and translations: Character Translations.
+ (line 6747)
+* \~, as delimiter: Delimiters. (line 5069)
+* \~, difference from \<SP>: Calling Macros. (line 4867)
+* \~, incompatibilities with AT&T troff: Other Differences. (line 12539)
+* ], as part of an identifier: Identifiers. (line 4616)
+* ], at end of sentence: Sentences. (line 3663)
+* ], at end of sentence <1>: Using Symbols. (line 7892)
+* ], macro names starting with, and refer: Identifiers. (line 4623)
+* |, and page motion: Numeric Expressions.
+ (line 4471)
+* ab request, incompatibilities with AT&T troff: Other Differences.
+ (line 12592)
+* aborting (ab): Debugging. (line 12127)
+* absolute (sic) position operator (|): Numeric Expressions.
+ (line 4471)
+* abstract font style: Using Fonts. (line 7302)
+* abstract font style, setting up (sty): Font Families. (line 7505)
+* accent marks [ms]: ms Legacy Features.
+ (line 3405)
+* access to postprocessor: Postprocessor Access.
+ (line 11729)
+* accessing unnamed glyphs with \N: Font Description File Format.
+ (line 13639)
+* activating kerning (kern): Ligatures and Kerning.
+ (line 8289)
+* activating ligatures (lg): Ligatures and Kerning.
+ (line 8271)
+* activating track kerning (tkf): Ligatures and Kerning.
+ (line 8307)
+* ad request, and hyphenation margin: Manipulating Hyphenation.
+ (line 6290)
+* ad request, and hyphenation space: Manipulating Hyphenation.
+ (line 6305)
+* addition: Numeric Expressions.
+ (line 4359)
+* additional inter-sentence space: Manipulating Filling and Adjustment.
+ (line 5893)
+* adjustment and filling, manipulating: Manipulating Filling and Adjustment.
+ (line 5624)
+* adjustment mode register (.j): Manipulating Filling and Adjustment.
+ (line 5731)
+* adjustment to both margins, difference from AT&T troff: Other Differences.
+ (line 12552)
+* Adobe Glyph List (AGL): Using Symbols. (line 7688)
+* alias, diversion, creating (als): Strings. (line 8972)
+* alias, diversion, removing (rm): Strings. (line 9007)
+* alias, macro, creating (als): Strings. (line 8972)
+* alias, macro, removing (rm): Strings. (line 9007)
+* alias, register, creating (aln): Setting Registers. (line 5323)
+* alias, register, removing (rr): Setting Registers. (line 5329)
+* alias, string, creating (als): Strings. (line 8972)
+* alias, string, removing (rm): Strings. (line 9007)
+* aliasing fonts with third argument to fp request: Font Positions.
+ (line 7561)
+* als request, and \$0: Parameters. (line 9657)
+* am, am1, ami requests, and warnings: Warnings. (line 12301)
+* appending to a diversion (da, boxa): Diversions. (line 10944)
+* appending to a file (opena): I/O. (line 11671)
+* appending to a macro (am): Writing Macros. (line 9533)
+* appending to a string (as): Strings. (line 8889)
+* approximation output register (.A): Built-in Registers.
+ (line 5527)
+* arc, drawing (\D'a ...'): Drawing Geometric Objects.
+ (line 10225)
+* argument: Requests and Macros.
+ (line 3829)
+* arguments to macros: Calling Macros. (line 4851)
+* arguments to macros, and tabs: Invoking Requests. (line 4789)
+* arguments to requests: Invoking Requests. (line 4789)
+* arguments to requests, and tabs: Invoking Requests. (line 4789)
+* arguments, and compatibility mode: Gtroff Internals. (line 12054)
+* arguments, to escape sequences, delimiting: Delimiters. (line 5060)
+* arguments, to strings: Strings. (line 8802)
+* arithmetic operators: Numeric Expressions.
+ (line 4359)
+* artificial fonts: Artificial Fonts. (line 8122)
+* as, as1 requests, and comments: Comments. (line 5139)
+* as, as1 requests, and warnings: Warnings. (line 12301)
+* ASCII output encoding: Groff Options. (line 743)
+* asciify request, and writem: I/O. (line 11694)
+* assertion (arithmetic operator): Numeric Expressions.
+ (line 4365)
+* assign number format to register (af): Assigning Register Formats.
+ (line 5413)
+* assignments, indirect: Interpolating Registers.
+ (line 5340)
+* assignments, nested: Interpolating Registers.
+ (line 5340)
+* AT&T ms, macro package differences: Differences from AT&T ms.
+ (line 3276)
+* attributes, character cell: Using Fonts. (line 7323)
+* auto-incrementation of a register: Auto-increment. (line 5364)
+* automatic font mounting: Selecting Fonts. (line 7365)
+* automatic hyphenation: Manipulating Hyphenation.
+ (line 5941)
+* automatic hyphenation parameters: Manipulating Hyphenation.
+ (line 6042)
+* auxiliary macro package: Major Macro Packages.
+ (line 1408)
+* available glyphs, list of (groff_char(7) man page): Using Symbols.
+ (line 7675)
+* background: Background. (line 229)
+* background color name register (.M): Colors. (line 8765)
+* backslash glyph, formatting (\[rs]): Using Escape Sequences.
+ (line 5002)
+* backslash, embedding in a macro argument: Calling Macros. (line 4875)
+* backslash, printing (\\, \e, \E, \[rs]): Other Differences.
+ (line 12636)
+* backspace character, and translations: Character Translations.
+ (line 6751)
+* backtrace of input stack (backtrace): Debugging. (line 12176)
+* baseline rule special character(\[ru]): Drawing Geometric Objects.
+ (line 10146)
+* baseline, text: Page Geometry. (line 4184)
+* baseline, text <1>: Manipulating Type Size and Vertical Spacing.
+ (line 8438)
+* basic scaling unit (u): Measurements. (line 4245)
+* basic units: Page Geometry. (line 4169)
+* basic units, conversion to: Measurements. (line 4239)
+* basics of macro package usage: Basics. (line 1058)
+* bd request, and font styles: Font Families. (line 7505)
+* bd request, and font translations: Selecting Fonts. (line 7406)
+* bd request, incompatibilities with AT&T troff: Other Differences.
+ (line 12609)
+* beginning diversion (di, box): Diversions. (line 10944)
+* beginning of conditional block (\{): Conditional Blocks.
+ (line 9250)
+* blank line: Breaking. (line 3749)
+* blank line macro (blm): Breaking. (line 3749)
+* blank line macro (blm) <1>: Invoking Requests. (line 4820)
+* blank line macro (blm) <2>: Blank Line Traps. (line 10779)
+* blank line trap (blm): Invoking Requests. (line 4820)
+* blank line traps: Blank Line Traps. (line 10778)
+* blank lines, disabling: Manipulating Spacing.
+ (line 6456)
+* block, conditional, beginning (\{): Conditional Blocks.
+ (line 9250)
+* block, conditional, end (\}): Conditional Blocks.
+ (line 9250)
+* blocks, conditional: Conditional Blocks.
+ (line 9243)
+* body, of a while request: while. (line 9330)
+* boldface, imitating (bd): Artificial Fonts. (line 8213)
+* bottom margin: Page Location Traps.
+ (line 10440)
+* boundary-relative motion operator (|): Numeric Expressions.
+ (line 4471)
+* bounding box: Miscellaneous. (line 11949)
+* box (diversion operation): Diversions. (line 10971)
+* box request, and warnings: Warnings. (line 12296)
+* box rule glyph (\[br]): Drawing Geometric Objects.
+ (line 10168)
+* box, boxa requests, and warnings: Warnings. (line 12301)
+* boxa request, and dn (dl): Diversions. (line 11026)
+* boxa request, and warnings: Warnings. (line 12296)
+* boxes [ms]: ms keeps and displays.
+ (line 2771)
+* bp request, and top-level diversion: Page Control. (line 7183)
+* bp request, and traps (.pe): Page Location Traps.
+ (line 10598)
+* bp request, causing implicit break: Manipulating Filling and Adjustment.
+ (line 5624)
+* bp request, incompatibilities with AT&T troff: Other Differences.
+ (line 12596)
+* bp request, using + and - with: Numeric Expressions.
+ (line 4463)
+* br glyph, and cflags: Using Symbols. (line 7887)
+* brace escape sequence, closing (\}): Conditional Blocks.
+ (line 9250)
+* brace escape sequence, opening (\}): Conditional Blocks.
+ (line 9250)
+* brace escape sequences (\{, \}): Conditional Blocks.
+ (line 9250)
+* break: Breaking. (line 3725)
+* break <1>: Manipulating Filling and Adjustment.
+ (line 5624)
+* break (introduction): Basics. (line 1188)
+* break request, in a while loop: while. (line 9393)
+* break, page: Page Geometry. (line 4208)
+* break, page <1>: Page Control. (line 7170)
+* break, page <2>: The Implicit Page Trap.
+ (line 10638)
+* break, page (introduction): Basics. (line 1185)
+* break, page, final: End-of-input Traps.
+ (line 10834)
+* break, page, prevented by vpt: Vertical Position Traps.
+ (line 10414)
+* breaking file names (\:): Manipulating Hyphenation.
+ (line 6008)
+* breaking URLs (\:): Manipulating Hyphenation.
+ (line 6008)
+* breaking without hyphens (\:): Manipulating Hyphenation.
+ (line 6008)
+* built-in register, removing: Built-in Registers.
+ (line 5513)
+* built-in registers: Built-in Registers.
+ (line 5508)
+* bulleted list, example markup [ms]: Lists in ms. (line 2590)
+* c scaling unit: Measurements. (line 4252)
+* calling a macro: Requests and Macros.
+ (line 3840)
+* calling macros: Calling Macros. (line 4851)
+* capabilities of groff: groff Capabilities.
+ (line 281)
+* case-transforming a string (stringdown, stringup): Strings.
+ (line 8945)
+* categories, warning: Warnings. (line 12250)
+* CCSID 1047 output encoding (EBCDIC): Groff Options. (line 755)
+* ce request, causing implicit break: Manipulating Filling and Adjustment.
+ (line 5624)
+* ce request, difference from .ad c: Manipulating Filling and Adjustment.
+ (line 5836)
+* cell, character, attributes: Using Fonts. (line 7323)
+* centered text (filled): Manipulating Filling and Adjustment.
+ (line 5716)
+* centered text (unfilled): Manipulating Filling and Adjustment.
+ (line 5827)
+* centering lines (ce): Manipulating Filling and Adjustment.
+ (line 5827)
+* centering lines (introduction): Basics. (line 1170)
+* centimeter scaling unit (c): Measurements. (line 4252)
+* cf request, and copy mode: I/O. (line 11521)
+* cf request, causing implicit break: Manipulating Filling and Adjustment.
+ (line 5624)
+* changing control characters: Control Characters.
+ (line 4726)
+* changing font family (fam, \F): Font Families. (line 7467)
+* changing fonts (ft, \f): Selecting Fonts. (line 7352)
+* changing format, and read-only registers: Assigning Register Formats.
+ (line 5472)
+* changing the font height (\H): Artificial Fonts. (line 8132)
+* changing the font slant (\S): Artificial Fonts. (line 8161)
+* changing the page number character (pc): Page Layout. (line 7149)
+* changing trap location (ch): Page Location Traps.
+ (line 10528)
+* changing type sizes (ps, \s): Changing the Type Size.
+ (line 8466)
+* changing vertical line spacing (vs): Changing the Vertical Spacing.
+ (line 8543)
+* char request, and soft hyphen character: Manipulating Hyphenation.
+ (line 6032)
+* char request, and translations: Character Translations.
+ (line 6741)
+* char request, used with \N: Using Symbols. (line 7810)
+* character: Using Symbols. (line 7600)
+* character cell attributes: Using Fonts. (line 7323)
+* character class (class): Character Classes. (line 8034)
+* character classes: Character Classes. (line 8028)
+* character properties (cflags): Using Symbols. (line 7846)
+* character translations: Character Translations.
+ (line 6722)
+* character, backspace, and translations: Character Translations.
+ (line 6751)
+* character, control (.): Requests and Macros.
+ (line 3813)
+* character, control, changing (cc): Control Characters.
+ (line 4738)
+* character, defining (char): Using Symbols. (line 7948)
+* character, defining fallback (fchar, fschar, schar): Using Symbols.
+ (line 7948)
+* character, distinguished from glyph: Using Symbols. (line 7600)
+* character, dummy (\&): Dummy Characters. (line 8357)
+* character, dummy (\&), as control character suppressor: Requests and Macros.
+ (line 3820)
+* character, dummy (\&), effect on kerning: Ligatures and Kerning.
+ (line 8294)
+* character, dummy (\&), effect on \l escape sequence: Drawing Geometric Objects.
+ (line 10150)
+* character, escape, changing (ec): Using Escape Sequences.
+ (line 5012)
+* character, escape, while defining glyph: Using Symbols. (line 7948)
+* character, field delimiting (fc): Fields. (line 6692)
+* character, field padding (fc): Fields. (line 6692)
+* character, horizontal tab: Tabs and Leaders. (line 3785)
+* character, hyphenation (\%): Manipulating Hyphenation.
+ (line 5992)
+* character, leader: Tabs and Leaders. (line 3785)
+* character, leader repetition (lc): Leaders. (line 6661)
+* character, leader, and translations: Character Translations.
+ (line 6751)
+* character, leader, non-interpreted (\a): Leaders. (line 6658)
+* character, named (\C): Using Symbols. (line 7793)
+* character, newline, and translations: Character Translations.
+ (line 6751)
+* character, no-break control ('): Requests and Macros.
+ (line 3813)
+* character, no-break control, changing (c2): Control Characters.
+ (line 4738)
+* character, ordinary: Identifiers. (line 4577)
+* character, soft hyphen, setting (shc): Manipulating Hyphenation.
+ (line 6032)
+* character, special: Character Translations.
+ (line 6741)
+* character, tab repetition (tc): Tabs and Fields. (line 6602)
+* character, tab, and translations: Character Translations.
+ (line 6751)
+* character, tab, non-interpreted (\t): Tabs and Fields. (line 6485)
+* character, transparent: Using Symbols. (line 7892)
+* character, transparent dummy (\)): Dummy Characters. (line 8407)
+* characters, end-of-sentence: Using Symbols. (line 7863)
+* characters, end-of-sentence transparent: Sentences. (line 3663)
+* characters, hyphenation: Using Symbols. (line 7868)
+* characters, input, and output glyphs, compatibility with AT&T troff: Other Differences.
+ (line 12609)
+* characters, invalid for trf request: I/O. (line 11533)
+* characters, invalid input: Identifiers. (line 4581)
+* characters, overlapping: Using Symbols. (line 7882)
+* characters, special: Sentences. (line 3663)
+* characters, special, list of (groff_char(7) man page): Using Symbols.
+ (line 7675)
+* characters, unnamed, accessing with \N: Font Description File Format.
+ (line 13639)
+* circle, filled, drawing (\D'C ...'): Drawing Geometric Objects.
+ (line 10234)
+* circle, outlined, drawing (\D'c ...'): Drawing Geometric Objects.
+ (line 10230)
+* circle, solid, drawing (\D'C ...'): Drawing Geometric Objects.
+ (line 10234)
+* circle, stroked, drawing (\D'c ...'): Drawing Geometric Objects.
+ (line 10230)
+* class of characters (class): Character Classes. (line 8034)
+* classes, character: Character Classes. (line 8028)
+* clearing input line trap (it, itc): Input Line Traps. (line 10680)
+* closing brace escape sequence (\}): Conditional Blocks.
+ (line 9250)
+* closing file (close): I/O. (line 11703)
+* code page 1047 output encoding: Groff Options. (line 755)
+* code page 1047, input encoding: Input Encodings. (line 3986)
+* code, hyphenation (hcode): Manipulating Hyphenation.
+ (line 6228)
+* color name, background, register (.M): Colors. (line 8765)
+* color name, fill, register (.M): Colors. (line 8765)
+* color name, stroke, register (.m): Colors. (line 8744)
+* color, default: Colors. (line 8720)
+* color, fill: Colors. (line 8678)
+* color, stroke: Colors. (line 8678)
+* colors: Colors. (line 8678)
+* command prefix: Environment. (line 835)
+* command-line options: Groff Options. (line 520)
+* comments: Comments. (line 5132)
+* comments in device description files: DESC File Format. (line 13432)
+* comments in font description files: Font Description File Format.
+ (line 13592)
+* comments, lining up with tabs: Comments. (line 5145)
+* comments, with ds: Strings. (line 8823)
+* common features: Common Features. (line 1201)
+* common name space of macros, diversions, and strings: Identifiers.
+ (line 4668)
+* comparison of strings: Operators in Conditionals.
+ (line 9108)
+* comparison operators: Numeric Expressions.
+ (line 4416)
+* compatibility mode: Warnings. (line 12341)
+* compatibility mode <1>: Compatibility Mode.
+ (line 12404)
+* compatibility mode, and parameters: Gtroff Internals. (line 12054)
+* complementation, logical: Numeric Expressions.
+ (line 4426)
+* composite glyph names: Using Symbols. (line 7688)
+* conditional block, beginning (\{): Conditional Blocks.
+ (line 9250)
+* conditional block, end (\}): Conditional Blocks.
+ (line 9250)
+* conditional blocks: Conditional Blocks.
+ (line 9243)
+* conditional expressions: Operators in Conditionals.
+ (line 9027)
+* conditional output for terminal (TTY): Operators in Conditionals.
+ (line 9053)
+* conditional page break (ne): Page Control. (line 7195)
+* conditionals and loops: Conditionals and Loops.
+ (line 9020)
+* configuring control characters: Control Characters.
+ (line 4726)
+* configuring the page length (pl): Page Layout. (line 7093)
+* consecutive hyphenated lines (hlm): Manipulating Hyphenation.
+ (line 6277)
+* constant glyph space mode (cs): Artificial Fonts. (line 8241)
+* contents, table of: Table of Contents. (line 1323)
+* contents, table of <1>: Leaders. (line 6671)
+* continuation, input line (\<RET>): Line Continuation. (line 7019)
+* continuation, output line (\c): Line Continuation. (line 7048)
+* continue request, in a while loop: while. (line 9393)
+* continued output line register (.int): Line Continuation. (line 7073)
+* continuous underlining (cu): Artificial Fonts. (line 8202)
+* control character (.): Requests and Macros.
+ (line 3813)
+* control character, changing (cc): Control Characters.
+ (line 4738)
+* control character, no-break ('): Requests and Macros.
+ (line 3813)
+* control character, no-break, changing (c2): Control Characters.
+ (line 4738)
+* control characters: Control Characters.
+ (line 4726)
+* control line: Requests and Macros.
+ (line 3825)
+* control, line: Line Continuation. (line 7014)
+* control, page: Page Control. (line 7170)
+* conventions for input: Input Conventions. (line 4051)
+* conversion to basic units: Measurements. (line 4239)
+* copy mode: Copy Mode. (line 9699)
+* copy mode <1>: Copy Mode. (line 9699)
+* copy mode, and cf request: I/O. (line 11521)
+* copy mode, and device request: Postprocessor Access.
+ (line 11744)
+* copy mode, and length request: Strings. (line 8909)
+* copy mode, and macro parameters: Parameters. (line 9616)
+* copy mode, and output request: Diversions. (line 11106)
+* copy mode, and trf request: I/O. (line 11521)
+* copy mode, and write request: I/O. (line 11683)
+* copy mode, and writec request: I/O. (line 11683)
+* copy mode, and writem request: I/O. (line 11697)
+* copy mode, and \!: Diversions. (line 11074)
+* copy mode, and \?: Operators in Conditionals.
+ (line 9116)
+* copy mode, and \? <1>: Diversions. (line 11074)
+* copy mode, and \a: Leaders. (line 6658)
+* copy mode, and \t: Tabs and Fields. (line 6485)
+* copy mode, and \V: I/O. (line 11721)
+* copying environment (evc): Environments. (line 11362)
+* correction between oblique and upright glyph (\/, \,): Italic Corrections.
+ (line 8328)
+* correction between upright and oblique glyph (\/, \,): Italic Corrections.
+ (line 8338)
+* correction, italic (\/): Italic Corrections.
+ (line 8328)
+* correction, left italic (\,): Italic Corrections.
+ (line 8338)
+* cover page in [ms], example markup: ms Document Description Macros.
+ (line 2196)
+* cp request, and glyph definitions: Using Symbols. (line 7948)
+* cq glyph, at end of sentence: Sentences. (line 3663)
+* cq glyph, at end of sentence <1>: Using Symbols. (line 7892)
+* creating alias for register (aln): Setting Registers. (line 5323)
+* creating alias, for diversion (als): Strings. (line 8972)
+* creating alias, for macro (als): Strings. (line 8972)
+* creating alias, for string (als): Strings. (line 8972)
+* creating new characters (char): Using Symbols. (line 7948)
+* credits: Credits. (line 444)
+* cs request, and font styles: Font Families. (line 7505)
+* cs request, and font translations: Selecting Fonts. (line 7406)
+* cs request, incompatibilities with AT&T troff: Other Differences.
+ (line 12609)
+* cs request, with fractional type sizes: Using Fractional Type Sizes.
+ (line 8604)
+* CSTR #54 errata: Built-in Registers.
+ (line 5600)
+* CSTR #54 errata <1>: Line Layout. (line 6920)
+* CSTR #54 errata <2>: Page Control. (line 7185)
+* CSTR #54 errata <3>: Artificial Fonts. (line 8176)
+* CSTR #54 errata <4>: Changing the Type Size.
+ (line 8475)
+* CSTR #54 errata <5>: Page Motions. (line 10040)
+* CSTR #54 erratum, bp request: Page Control. (line 7185)
+* CSTR #54 erratum, po request: Line Layout. (line 6920)
+* CSTR #54 erratum, ps request: Changing the Type Size.
+ (line 8475)
+* CSTR #54 erratum, sb register: Page Motions. (line 10040)
+* CSTR #54 erratum, st register: Page Motions. (line 10040)
+* CSTR #54 erratum, yr register: Built-in Registers.
+ (line 5600)
+* CSTR #54 erratum, \S escape: Artificial Fonts. (line 8176)
+* CSTR #54 erratum, \s escape sequence: Changing the Type Size.
+ (line 8475)
+* current directory: Macro Directories. (line 910)
+* current input file name register (.F): Built-in Registers.
+ (line 5536)
+* current page number (%): Page Control. (line 7188)
+* current time, hours (hours): Built-in Registers.
+ (line 5586)
+* current time, minutes (minutes): Built-in Registers.
+ (line 5583)
+* current time, seconds (seconds): Built-in Registers.
+ (line 5580)
+* da request, and dn (dl): Diversions. (line 11026)
+* da request, and warnings: Warnings. (line 12296)
+* da request, and warnings <1>: Warnings. (line 12301)
+* date, day of the month register (dy): Built-in Registers.
+ (line 5592)
+* date, day of the week register (dw): Built-in Registers.
+ (line 5589)
+* date, month of the year register (mo): Built-in Registers.
+ (line 5595)
+* date, year register (year, yr): Built-in Registers.
+ (line 5598)
+* day of the month register (dy): Built-in Registers.
+ (line 5592)
+* day of the week register (dw): Built-in Registers.
+ (line 5589)
+* dd glyph, at end of sentence: Sentences. (line 3663)
+* dd glyph, at end of sentence <1>: Using Symbols. (line 7892)
+* de request, and while: while. (line 9343)
+* de, de1, dei requests, and warnings: Warnings. (line 12301)
+* debugging: Debugging. (line 12078)
+* debugging page location traps: Page Location Traps.
+ (line 10476)
+* decimal point, as delimiter: Delimiters. (line 5090)
+* decrementation, automatic, of a register: Auto-increment. (line 5364)
+* default color: Colors. (line 8720)
+* default tab stops: Tabs and Fields. (line 6493)
+* default units: Default Units. (line 4318)
+* deferred output: Deferring Output. (line 10337)
+* defining character (char): Using Symbols. (line 7948)
+* defining character class (class): Character Classes. (line 8034)
+* defining fallback character (fchar, fschar, schar): Using Symbols.
+ (line 7948)
+* defining glyph (char): Using Symbols. (line 7948)
+* defining symbol (char): Using Symbols. (line 7948)
+* delimited arguments, incompatibilities with AT&T troff: Compatibility Mode.
+ (line 12498)
+* delimiters, for escape sequence arguments: Delimiters. (line 5060)
+* delimiting character, for fields (fc): Fields. (line 6692)
+* delimiting escape sequence arguments: Delimiters. (line 5060)
+* depth, interpolation: Calling Macros. (line 4929)
+* depth, of last glyph (.cdp): Environments. (line 11388)
+* DESC file format: DESC File Format. (line 13425)
+* DESC file, and font mounting: Font Positions. (line 7590)
+* DESC file, and use_charnames_in_special keyword: Postprocessor Access.
+ (line 11760)
+* description file, font: Using Fonts. (line 7295)
+* device description files, comments: DESC File Format. (line 13432)
+* device request, and copy mode: Postprocessor Access.
+ (line 11744)
+* device resolution: Page Geometry. (line 4169)
+* device resolution <1>: DESC File Format. (line 13506)
+* device resolution, obtaining in the formatter: Measurements.
+ (line 4240)
+* devices for output: Output Device Intro.
+ (line 359)
+* dg glyph, at end of sentence: Sentences. (line 3663)
+* dg glyph, at end of sentence <1>: Using Symbols. (line 7892)
+* di request, and warnings: Warnings. (line 12296)
+* di request, and warnings <1>: Warnings. (line 12301)
+* differences in implementation: Implementation Differences.
+ (line 12388)
+* digit-width space (\0): Page Motions. (line 10014)
+* digits, as delimiters: Delimiters. (line 5090)
+* dimensions, line: Line Layout. (line 6855)
+* directories for fonts: Font Directories. (line 934)
+* directories for macros: Macro Directories. (line 898)
+* directory, current: Macro Directories. (line 910)
+* directory, for tmac files: Macro Directories. (line 900)
+* directory, home: Macro Directories. (line 913)
+* directory, platform-specific: Macro Directories. (line 915)
+* directory, site-local: Macro Directories. (line 915)
+* directory, site-local <1>: Font Directories. (line 957)
+* disabling hyphenation (\%): Manipulating Hyphenation.
+ (line 5992)
+* disabling \ (eo): Using Escape Sequences.
+ (line 5007)
+* discardable horizontal space: Manipulating Filling and Adjustment.
+ (line 5914)
+* displays: Displays and Keeps.
+ (line 1290)
+* displays [ms]: ms keeps and displays.
+ (line 2797)
+* displays, and footnotes [ms]: ms Footnotes. (line 2958)
+* distance to next vertical position trap register (.t): Page Location Traps.
+ (line 10520)
+* diversion: Deferring Output. (line 10337)
+* diversion name register (.z): Diversions. (line 11000)
+* diversion trap, setting (dt): Diversion Traps. (line 10668)
+* diversion traps: Diversion Traps. (line 10663)
+* diversion, appending to (da, boxa): Diversions. (line 10944)
+* diversion, beginning (di, box): Diversions. (line 10944)
+* diversion, creating alias for (als): Strings. (line 8972)
+* diversion, ending (di, box): Diversions. (line 10944)
+* diversion, nested: Diversions. (line 11000)
+* diversion, removing (rm): Strings. (line 8967)
+* diversion, removing alias for (rm): Strings. (line 9007)
+* diversion, renaming (rn): Strings. (line 8964)
+* diversion, stripping final newline: Punning Names. (line 11246)
+* diversion, top-level: Diversions. (line 10930)
+* diversion, top-level, and bp: Page Control. (line 7183)
+* diversion, top-level, and \!: Diversions. (line 11098)
+* diversion, top-level, and \?: Diversions. (line 11103)
+* diversion, unformatting (asciify): Diversions. (line 11120)
+* diversion, vertical position in, register (.d): Diversions.
+ (line 11000)
+* diversions: Diversions. (line 10918)
+* diversions <1>: Punning Names. (line 11157)
+* diversions, and traps: Page Location Traps.
+ (line 10618)
+* diversions, shared name space with macros and strings: Identifiers.
+ (line 4668)
+* division, truncating: Numeric Expressions.
+ (line 4359)
+* dl register, and da (boxa): Diversions. (line 11026)
+* dn register, and da (boxa): Diversions. (line 11026)
+* document description macros, [ms]: ms Document Description Macros.
+ (line 2132)
+* document formats: Document Formats. (line 1349)
+* documents, multi-file: Debugging. (line 12103)
+* documents, structuring the source of: Invoking Requests. (line 4803)
+* dot, as delimiter: Delimiters. (line 5090)
+* double quote, embedding in a macro argument: Calling Macros.
+ (line 4875)
+* double quotes, trailing, in strings: Strings. (line 8844)
+* double-spacing (ls): Manipulating Spacing.
+ (line 6396)
+* double-spacing (vs, pvs): Changing the Vertical Spacing.
+ (line 8575)
+* down-casing a string (stringdown): Strings. (line 8945)
+* drawing a filled circle (\D'C ...'): Drawing Geometric Objects.
+ (line 10234)
+* drawing a filled ellipse (\D'E ...'): Drawing Geometric Objects.
+ (line 10241)
+* drawing a filled polygon (\D'P ...'): Drawing Geometric Objects.
+ (line 10275)
+* drawing a line (\D'l ...'): Drawing Geometric Objects.
+ (line 10244)
+* drawing a solid circle (\D'C ...'): Drawing Geometric Objects.
+ (line 10234)
+* drawing a solid ellipse (\D'E ...'): Drawing Geometric Objects.
+ (line 10241)
+* drawing a solid polygon (\D'P ...'): Drawing Geometric Objects.
+ (line 10275)
+* drawing a spline (\D'~ ...'): Drawing Geometric Objects.
+ (line 10221)
+* drawing a stroked circle (\D'c ...'): Drawing Geometric Objects.
+ (line 10230)
+* drawing a stroked ellipse (\D'e ...'): Drawing Geometric Objects.
+ (line 10237)
+* drawing a stroked polygon (\D'p ...'): Drawing Geometric Objects.
+ (line 10269)
+* drawing an arc (\D'a ...'): Drawing Geometric Objects.
+ (line 10225)
+* drawing an outlined circle (\D'c ...'): Drawing Geometric Objects.
+ (line 10230)
+* drawing an outlined ellipse (\D'e ...'): Drawing Geometric Objects.
+ (line 10237)
+* drawing an outlined polygon (\D'p ...'): Drawing Geometric Objects.
+ (line 10269)
+* drawing horizontal lines (\l): Drawing Geometric Objects.
+ (line 10142)
+* drawing position: Page Geometry. (line 4181)
+* drawing position, vertical (nl): Page Control. (line 7240)
+* drawing requests: Drawing Geometric Objects.
+ (line 10130)
+* drawing vertical lines (\L): Drawing Geometric Objects.
+ (line 10168)
+* ds request, and comments: Strings. (line 8823)
+* ds request, and double quotes: Strings. (line 8844)
+* ds request, and leading spaces: Strings. (line 8844)
+* ds, ds1 requests, and comments: Comments. (line 5139)
+* ds, ds1 requests, and warnings: Warnings. (line 12301)
+* dummy character (\&): Dummy Characters. (line 8357)
+* dummy character (\&), as control character suppressor: Requests and Macros.
+ (line 3820)
+* dummy character (\&), effect on kerning: Ligatures and Kerning.
+ (line 8294)
+* dummy character (\&), effect on \l escape sequence: Drawing Geometric Objects.
+ (line 10150)
+* dummy character, transparent (\)): Dummy Characters. (line 8407)
+* dummy environment, used by \w escape sequence: Page Motions.
+ (line 10034)
+* dumping environments (pev): Debugging. (line 12150)
+* dumping page location traps (ptr): Debugging. (line 12162)
+* dumping registers (pnr): Debugging. (line 12158)
+* dumping symbol table (pm): Debugging. (line 12154)
+* EBCDIC output encoding: Groff Options. (line 755)
+* EBCDIC, input encoding: Input Encodings. (line 3986)
+* ejection, page: Page Geometry. (line 4208)
+* ejection, page <1>: Page Control. (line 7170)
+* ejection, page <2>: The Implicit Page Trap.
+ (line 10638)
+* ejection, page, of final page: End-of-input Traps.
+ (line 10834)
+* ejection, page, prevented by vpt: Vertical Position Traps.
+ (line 10414)
+* el request, and warnings: Warnings. (line 12273)
+* ellipse, filled, drawing (\D'E ...'): Drawing Geometric Objects.
+ (line 10241)
+* ellipse, outlined, drawing (\D'e ...'): Drawing Geometric Objects.
+ (line 10237)
+* ellipse, solid, drawing (\D'E ...'): Drawing Geometric Objects.
+ (line 10241)
+* ellipse, stroked, drawing (\D'e ...'): Drawing Geometric Objects.
+ (line 10237)
+* em glyph, and cflags: Using Symbols. (line 7875)
+* em scaling unit (m): Measurements. (line 4277)
+* embolding of special fonts: Artificial Fonts. (line 8230)
+* empty line: Breaking. (line 3749)
+* en scaling unit (n): Measurements. (line 4281)
+* enabling vertical position traps (vpt): Vertical Position Traps.
+ (line 10407)
+* encoding, input, code page 1047: Input Encodings. (line 3986)
+* encoding, input, EBCDIC: Input Encodings. (line 3986)
+* encoding, input, Latin-1 (ISO 8859-1): Input Encodings. (line 3991)
+* encoding, input, Latin-2 (ISO 8859-2): Input Encodings. (line 4004)
+* encoding, input, Latin-5 (ISO 8859-9): Input Encodings. (line 4010)
+* encoding, input, Latin-9 (ISO 8859-15): Input Encodings. (line 4015)
+* encoding, output, ASCII: Groff Options. (line 743)
+* encoding, output, code page 1047: Groff Options. (line 755)
+* encoding, output, EBCDIC: Groff Options. (line 755)
+* encoding, output, ISO 646: Groff Options. (line 743)
+* encoding, output, Latin-1 (ISO 8859-1): Groff Options. (line 747)
+* encoding, output, UTF-8: Groff Options. (line 751)
+* end of conditional block (\}): Conditional Blocks.
+ (line 9250)
+* end-of-input macro (em): End-of-input Traps.
+ (line 10807)
+* end-of-input trap, setting (em): End-of-input Traps.
+ (line 10807)
+* end-of-input traps: End-of-input Traps.
+ (line 10806)
+* end-of-sentence characters: Sentences. (line 3619)
+* end-of-sentence characters <1>: Using Symbols. (line 7863)
+* end-of-sentence transparent characters: Sentences. (line 3663)
+* ending diversion (di, box): Diversions. (line 10944)
+* endnotes: Footnotes and Endnotes.
+ (line 1313)
+* environment: Deferring Output. (line 10337)
+* environment availability and naming, incompatibilities with: Other Differences.
+ (line 12583)
+* environment number/name register (.ev): Environments. (line 11309)
+* environment variables: Environment. (line 827)
+* environment, copying (evc): Environments. (line 11362)
+* environment, dimensions of last glyph (.w, .cht, .cdp, .csk): Environments.
+ (line 11388)
+* environment, dummy, used by \w escape sequence: Page Motions.
+ (line 10034)
+* environment, previous line length (.n): Environments. (line 11403)
+* environment, switching (ev): Environments. (line 11309)
+* environments: Environments. (line 11268)
+* environments, dumping (pev): Debugging. (line 12150)
+* equality operator: Numeric Expressions.
+ (line 4416)
+* equation example [ms]: ms Insertions. (line 2903)
+* equations [ms]: ms Insertions. (line 2844)
+* escape character, changing (ec): Using Escape Sequences.
+ (line 5012)
+* escape character, formatting (\e): Using Escape Sequences.
+ (line 4999)
+* escape character, while defining glyph: Using Symbols. (line 7948)
+* escape sequence: Formatter Instructions.
+ (line 4714)
+* escape sequence argument delimiters: Delimiters. (line 5060)
+* escape sequences: Using Escape Sequences.
+ (line 4942)
+* escape sequences, brace (\{, \}): Conditional Blocks.
+ (line 9250)
+* escaping newline characters, in strings: Strings. (line 8853)
+* ex request, use in debugging: Debugging. (line 12132)
+* ex request, used with nx and rd: I/O. (line 11591)
+* example markup, bulleted list [ms]: Lists in ms. (line 2590)
+* example markup, cover page in [ms]: ms Document Description Macros.
+ (line 2196)
+* example markup, glossary-style list [ms]: Lists in ms. (line 2637)
+* example markup, numbered list [ms]: Lists in ms. (line 2609)
+* examples of invocation: Invocation Examples.
+ (line 1002)
+* exiting (ex): Debugging. (line 12132)
+* expansion of strings (\*): Strings. (line 8802)
+* explicit hyphen (\%): Manipulating Hyphenation.
+ (line 6277)
+* explicit hyphenation: Manipulating Hyphenation.
+ (line 5948)
+* expression, limitation of logical not in: Numeric Expressions.
+ (line 4426)
+* expression, order of evaluation: Numeric Expressions.
+ (line 4446)
+* expressions, and register format: Assigning Register Formats.
+ (line 5484)
+* expressions, and space characters: Numeric Expressions.
+ (line 4538)
+* expressions, conditional: Operators in Conditionals.
+ (line 9027)
+* expressions, numeric: Numeric Expressions.
+ (line 4348)
+* extra post-vertical line space (\x): Changing the Vertical Spacing.
+ (line 8568)
+* extra post-vertical line space register (.a): Manipulating Spacing.
+ (line 6420)
+* extra pre-vertical line space (\x): Changing the Vertical Spacing.
+ (line 8560)
+* extra spaces between words: Adjustment. (line 3775)
+* extreme values representable with Roman numerals: Assigning Register Formats.
+ (line 5465)
+* extremum operators (>?, <?): Numeric Expressions.
+ (line 4407)
+* f scaling unit: Colors. (line 8712)
+* factor, zoom, of a font (fzoom): Selecting Fonts. (line 7421)
+* fallback character, defining (fchar, fschar, schar): Using Symbols.
+ (line 7948)
+* fallback glyph, removing definition (rchar, rfschar): Using Symbols.
+ (line 8005)
+* fam request, and changing fonts: Selecting Fonts. (line 7352)
+* families, font: Font Families. (line 7448)
+* family, font: Using Fonts. (line 7280)
+* features, common: Common Features. (line 1201)
+* fi request, causing implicit break: Manipulating Filling and Adjustment.
+ (line 5624)
+* field delimiting character (fc): Fields. (line 6692)
+* field padding character (fc): Fields. (line 6692)
+* fields: Fields. (line 6692)
+* fields, and tabs: Tabs and Fields. (line 6481)
+* figure space (\0): Page Motions. (line 10014)
+* figures [ms]: ms Insertions. (line 2844)
+* file formats: File Formats. (line 12674)
+* file names, breaking (\:): Manipulating Hyphenation.
+ (line 6008)
+* file, appending to (opena): I/O. (line 11671)
+* file, closing (close): I/O. (line 11703)
+* file, font description: Using Fonts. (line 7295)
+* file, inclusion (so): I/O. (line 11473)
+* file, macro, search path: Macro Directories. (line 900)
+* file, opening (open): I/O. (line 11671)
+* file, processing next (nx): I/O. (line 11553)
+* file, writing to (write, writec): I/O. (line 11683)
+* files, font: Device and Font Description Files.
+ (line 13401)
+* fill color: Colors. (line 8678)
+* fill color name register (.M): Colors. (line 8765)
+* fill mode (fi), enabling: Manipulating Filling and Adjustment.
+ (line 5685)
+* fill mode, and \c: Line Continuation. (line 7054)
+* fill mode, disabling: Manipulating Filling and Adjustment.
+ (line 5692)
+* filled circle, drawing (\D'C ...'): Drawing Geometric Objects.
+ (line 10234)
+* filled ellipse, drawing (\D'E ...'): Drawing Geometric Objects.
+ (line 10241)
+* filled polygon, drawing (\D'P ...'): Drawing Geometric Objects.
+ (line 10275)
+* filling: Filling. (line 3581)
+* filling and adjustment, manipulating: Manipulating Filling and Adjustment.
+ (line 5624)
+* filling of output, disabling (nf): Manipulating Filling and Adjustment.
+ (line 5692)
+* filling of output, enabling (fi): Manipulating Filling and Adjustment.
+ (line 5685)
+* filling, and break warnings: Warnings. (line 12262)
+* filling, and inter-sentence space: Manipulating Filling and Adjustment.
+ (line 5898)
+* final newline, stripping in diversions: Punning Names. (line 11246)
+* fl request, causing implicit break: Manipulating Filling and Adjustment.
+ (line 5624)
+* floating keep: Displays and Keeps.
+ (line 1301)
+* flush output (fl): Debugging. (line 12167)
+* font: Using Fonts. (line 7280)
+* font aliasing with third argument to fp request: Font Positions.
+ (line 7561)
+* font description file: Using Fonts. (line 7295)
+* font description file format: DESC File Format. (line 13425)
+* font description file, format: Font Description File Format.
+ (line 13572)
+* font description files, comments: Font Description File Format.
+ (line 13592)
+* font directories: Font Directories. (line 934)
+* font families: Font Families. (line 7448)
+* font family: Using Fonts. (line 7280)
+* font family, changing (fam, \F): Font Families. (line 7467)
+* font file, format: Font Description File Format.
+ (line 13572)
+* font files: Device and Font Description Files.
+ (line 13401)
+* font for underlining (uf): Artificial Fonts. (line 8206)
+* font height, changing (\H): Artificial Fonts. (line 8132)
+* font metrics: Using Fonts. (line 7295)
+* font mounting, automatic: Selecting Fonts. (line 7365)
+* font path: Font Directories. (line 942)
+* font position register (.f): Font Positions. (line 7578)
+* font positions: Font Positions. (line 7540)
+* font slant, changing (\S): Artificial Fonts. (line 8161)
+* font style: Using Fonts. (line 7280)
+* font style, abstract: Using Fonts. (line 7302)
+* font style, abstract, setting up (sty): Font Families. (line 7505)
+* font styles: Font Families. (line 7448)
+* font translation (ftr): Selecting Fonts. (line 7406)
+* font, magnification (fzoom): Selecting Fonts. (line 7421)
+* font, mounting (fp): Font Positions. (line 7552)
+* font, optical size: Selecting Fonts. (line 7421)
+* font, previous, selecting (\f[], \fP): Selecting Fonts. (line 7378)
+* font, previous, slecting (ft): Selecting Fonts. (line 7352)
+* font, selection: Selecting Fonts. (line 7343)
+* font, special: Using Fonts. (line 7280)
+* font, text: Using Fonts. (line 7280)
+* font, unstyled: Using Fonts. (line 7280)
+* font, zoom factor (fzoom): Selecting Fonts. (line 7421)
+* fonts, artificial: Artificial Fonts. (line 8122)
+* fonts, changing (ft, \f): Selecting Fonts. (line 7352)
+* fonts, searching: Font Directories. (line 934)
+* fonts, special: Special Fonts. (line 8092)
+* footers: Page Layout. (line 7115)
+* footers <1>: Page Location Traps.
+ (line 10440)
+* footers [ms]: ms Headers and Footers.
+ (line 3052)
+* footnote marker [ms]: ms Footnotes. (line 2920)
+* footnotes: Footnotes and Endnotes.
+ (line 1313)
+* footnotes [ms]: ms Footnotes. (line 2920)
+* footnotes, and displays [ms]: ms Footnotes. (line 2958)
+* footnotes, and keeps [ms]: ms Footnotes. (line 2958)
+* form letters: I/O. (line 11575)
+* format of font description file: DESC File Format. (line 13425)
+* format of font description files: Font Description File Format.
+ (line 13572)
+* format of font files: Font Description File Format.
+ (line 13572)
+* format of register (\g): Assigning Register Formats.
+ (line 5479)
+* format, paper: Paper Format. (line 972)
+* formats, file: File Formats. (line 12674)
+* formatter instructions: Formatter Instructions.
+ (line 4703)
+* formatting a backslash glyph (\[rs]): Using Escape Sequences.
+ (line 5002)
+* formatting a title line (tl): Page Layout. (line 7120)
+* formatting the escape character (\e): Using Escape Sequences.
+ (line 4999)
+* formatting the time: I/O. (line 11656)
+* fp request, and font translations: Selecting Fonts. (line 7406)
+* fp request, incompatibilities with AT&T troff: Other Differences.
+ (line 12609)
+* fractional point sizes: Using Fractional Type Sizes.
+ (line 8597)
+* fractional point sizes <1>: Other Differences. (line 12587)
+* fractional type sizes: Using Fractional Type Sizes.
+ (line 8597)
+* fractional type sizes <1>: Other Differences. (line 12587)
+* fractional type sizes in ms macros: Differences from AT&T ms.
+ (line 3315)
+* French spacing: Sentences. (line 3619)
+* fspecial request, and font styles: Font Families. (line 7505)
+* fspecial request, and font translations: Selecting Fonts. (line 7406)
+* fspecial request, and glyph search order: Using Symbols. (line 7612)
+* fspecial request, and imitating bold: Artificial Fonts. (line 8230)
+* ft request, and font translations: Selecting Fonts. (line 7406)
+* full-service macro package: Major Macro Packages.
+ (line 1397)
+* geometry, page: Page Geometry. (line 4162)
+* GGL (groff glyph list): Using Symbols. (line 7688)
+* GGL (groff glyph list) <1>: Character Classes. (line 8055)
+* glossary-style list, example markup [ms]: Lists in ms. (line 2637)
+* glyph: Using Symbols. (line 7600)
+* glyph for line drawing: Drawing Geometric Objects.
+ (line 10168)
+* glyph names, composite: Using Symbols. (line 7688)
+* glyph pile (\b): Drawing Geometric Objects.
+ (line 10308)
+* glyph properties (cflags): Using Symbols. (line 7846)
+* glyph, box rule (\[br]): Drawing Geometric Objects.
+ (line 10168)
+* glyph, constant space: Artificial Fonts. (line 8241)
+* glyph, defining (char): Using Symbols. (line 7948)
+* glyph, distinguished from character: Using Symbols. (line 7600)
+* glyph, for line drawing: Drawing Geometric Objects.
+ (line 10146)
+* glyph, for margins (mc): Miscellaneous. (line 11897)
+* glyph, last, dimensions (.w, .cht, .cdp, .csk): Environments.
+ (line 11388)
+* glyph, leader repetition (lc): Leaders. (line 6661)
+* glyph, numbered (\N): Character Translations.
+ (line 6741)
+* glyph, numbered (\N) <1>: Using Symbols. (line 7810)
+* glyph, removing definition (rchar, rfschar): Using Symbols.
+ (line 8005)
+* glyph, soft hyphen (hy): Manipulating Hyphenation.
+ (line 6032)
+* glyph, tab repetition (tc): Tabs and Fields. (line 6602)
+* glyph, underscore (\[ru]): Drawing Geometric Objects.
+ (line 10146)
+* glyphs, available, list of (groff_char(7) man page): Using Symbols.
+ (line 7675)
+* glyphs, output, and input characters, compatibility with AT&T troff: Other Differences.
+ (line 12609)
+* glyphs, overstriking (\o): Page Motions. (line 10097)
+* glyphs, unnamed: Using Symbols. (line 7820)
+* glyphs, unnamed, accessing with \N: Font Description File Format.
+ (line 13639)
+* GNU troff, identification register (.g): Built-in Registers.
+ (line 5539)
+* GNU troff, PID register ($$): Built-in Registers.
+ (line 5571)
+* GNU troff, process ID register ($$): Built-in Registers.
+ (line 5571)
+* GNU-specific register (.g): Built-in Registers.
+ (line 5539)
+* graphic renditions: Using Fonts. (line 7323)
+* greater than (or equal to) operator: Numeric Expressions.
+ (line 4416)
+* groff capabilities: groff Capabilities.
+ (line 281)
+* groff glyph list (GGL): Using Symbols. (line 7688)
+* groff glyph list (GGL) <1>: Character Classes. (line 8055)
+* groff invocation: Invoking groff. (line 454)
+* groff, and pi request: I/O. (line 11629)
+* groff--what is it?: What Is groff?. (line 264)
+* GROFF_BIN_PATH, environment variable: Environment. (line 831)
+* GROFF_COMMAND_PREFIX, environment variable: Environment. (line 835)
+* GROFF_ENCODING, environment variable: Environment. (line 846)
+* GROFF_FONT_PATH, environment variable: Environment. (line 855)
+* GROFF_FONT_PATH, environment variable <1>: Font Directories.
+ (line 955)
+* GROFF_TMAC_PATH, environment variable: Environment. (line 862)
+* GROFF_TMAC_PATH, environment variable <1>: Macro Directories.
+ (line 908)
+* GROFF_TMPDIR, environment variable: Environment. (line 869)
+* GROFF_TYPESETTER, environment variable: Environment. (line 877)
+* grohtml, the program: Groff Options. (line 766)
+* gtroff, interactive use: Debugging. (line 12167)
+* gtroff, output: gtroff Output. (line 12680)
+* gtroff, reference: GNU troff Reference.
+ (line 3549)
+* hair space (\^): Page Motions. (line 10008)
+* hcode request, and glyph definitions: Using Symbols. (line 7948)
+* headers: Page Layout. (line 7115)
+* headers <1>: Page Location Traps.
+ (line 10440)
+* headers [ms]: ms Headers and Footers.
+ (line 3052)
+* height, font, changing (\H): Artificial Fonts. (line 8132)
+* height, of last glyph (.cht): Environments. (line 11388)
+* high-water mark register (.h): Diversions. (line 11007)
+* home directory: Macro Directories. (line 913)
+* horizontal discardable space: Manipulating Filling and Adjustment.
+ (line 5914)
+* horizontal input line position register (hp): Page Motions.
+ (line 10090)
+* horizontal input line position, saving (\k): Page Motions.
+ (line 10084)
+* horizontal line, drawing (\l): Drawing Geometric Objects.
+ (line 10142)
+* horizontal motion (\h): Page Motions. (line 9982)
+* horizontal motion quantum: DESC File Format. (line 13445)
+* horizontal motion quantum register (.H): Motion Quanta. (line 4299)
+* horizontal output line position register (.k): Page Motions.
+ (line 10093)
+* horizontal resolution: DESC File Format. (line 13445)
+* horizontal resolution register (.H): Motion Quanta. (line 4299)
+* horizontal space (\h): Page Motions. (line 9982)
+* horizontal space, unformatting: Punning Names. (line 11246)
+* horizontal tab character: Tabs and Leaders. (line 3785)
+* hours, current time (hours): Built-in Registers.
+ (line 5586)
+* hpf request, and hyphenation language: Manipulating Hyphenation.
+ (line 6263)
+* hw request, and hy restrictions: Manipulating Hyphenation.
+ (line 5970)
+* hw request, and hyphenation language: Manipulating Hyphenation.
+ (line 6263)
+* hy glyph, and cflags: Using Symbols. (line 7875)
+* hyphen, explicit (\%): Manipulating Hyphenation.
+ (line 6277)
+* hyphenated lines, consecutive (hlm): Manipulating Hyphenation.
+ (line 6277)
+* hyphenating characters: Using Symbols. (line 7868)
+* hyphenation: Hyphenation. (line 3707)
+* hyphenation character (\%): Manipulating Hyphenation.
+ (line 5992)
+* hyphenation code (hcode): Manipulating Hyphenation.
+ (line 6228)
+* hyphenation consecutive line count register (.hlc): Manipulating Hyphenation.
+ (line 6284)
+* hyphenation consecutive line limit register (.hlm): Manipulating Hyphenation.
+ (line 6284)
+* hyphenation exceptions: Manipulating Hyphenation.
+ (line 5956)
+* hyphenation language register (.hla): Manipulating Hyphenation.
+ (line 6270)
+* hyphenation margin (hym): Manipulating Hyphenation.
+ (line 6290)
+* hyphenation margin register (.hym): Manipulating Hyphenation.
+ (line 6300)
+* hyphenation mode register (.hy): Manipulating Hyphenation.
+ (line 6054)
+* hyphenation parameters, automatic: Manipulating Hyphenation.
+ (line 6042)
+* hyphenation pattern files: Manipulating Hyphenation.
+ (line 6116)
+* hyphenation patterns (hpf): Manipulating Hyphenation.
+ (line 6170)
+* hyphenation space (hys): Manipulating Hyphenation.
+ (line 6305)
+* hyphenation space adjustment threshold: Manipulating Hyphenation.
+ (line 6305)
+* hyphenation space adjustment threshold register (.hys): Manipulating Hyphenation.
+ (line 6316)
+* hyphenation, automatic: Manipulating Hyphenation.
+ (line 5941)
+* hyphenation, disabling (\%): Manipulating Hyphenation.
+ (line 5992)
+* hyphenation, explicit: Manipulating Hyphenation.
+ (line 5948)
+* hyphenation, incompatibilities with AT&T troff: Other Differences.
+ (line 12557)
+* hyphenation, manipulating: Manipulating Hyphenation.
+ (line 5941)
+* hyphenation, manual: Manipulating Hyphenation.
+ (line 5948)
+* i scaling unit: Measurements. (line 4249)
+* i/o: I/O. (line 11469)
+* IBM code page 1047 input encoding: Input Encodings. (line 3986)
+* IBM code page 1047 output encoding: Groff Options. (line 755)
+* identifiers: Identifiers. (line 4574)
+* identifiers, undefined: Identifiers. (line 4656)
+* ie request, and font translations: Selecting Fonts. (line 7406)
+* ie request, and warnings: Warnings. (line 12273)
+* ie request, operators to use with: Operators in Conditionals.
+ (line 9027)
+* if request, and font translations: Selecting Fonts. (line 7406)
+* if request, and the ! operator: Numeric Expressions.
+ (line 4365)
+* if request, operators to use with: Operators in Conditionals.
+ (line 9027)
+* if-else: if-else. (line 9211)
+* if-then: if-then. (line 9170)
+* imitating boldface (bd): Artificial Fonts. (line 8213)
+* implementation differences: Implementation Differences.
+ (line 12388)
+* implicit line break: Breaking. (line 3725)
+* implicit trap: The Implicit Page Trap.
+ (line 10638)
+* in request, causing implicit break: Manipulating Filling and Adjustment.
+ (line 5624)
+* in request, using + and - with: Numeric Expressions.
+ (line 4463)
+* inch scaling unit (i): Measurements. (line 4249)
+* including a file (so): I/O. (line 11473)
+* incompatibilities with AT&T troff: Implementation Differences.
+ (line 12388)
+* increment value without changing the register: Auto-increment.
+ (line 5403)
+* incrementation, automatic, of a register: Auto-increment. (line 5364)
+* indentation (in): Line Layout. (line 6874)
+* indentation, of roff source code: Invoking Requests. (line 4803)
+* index, in macro package: Indexing. (line 1340)
+* indicator, scaling: Measurements. (line 4232)
+* indirect assignments: Interpolating Registers.
+ (line 5340)
+* input and output requests: I/O. (line 11469)
+* input characters and output glyphs, compatibility with AT&T troff: Other Differences.
+ (line 12609)
+* input characters, invalid: Identifiers. (line 4581)
+* input conventions: Input Conventions. (line 4051)
+* input encoding, code page 1047: Input Encodings. (line 3986)
+* input encoding, EBCDIC: Input Encodings. (line 3986)
+* input encoding, Latin-1 (ISO 8859-1): Input Encodings. (line 3991)
+* input encoding, Latin-2 (ISO 8859-2): Input Encodings. (line 4004)
+* input encoding, Latin-5 (ISO 8859-9): Input Encodings. (line 4010)
+* input encoding, Latin-9 (ISO 8859-15): Input Encodings. (line 4015)
+* input file name, current, register (.F): Built-in Registers.
+ (line 5536)
+* input level: Calling Macros. (line 4929)
+* input level in delimited arguments: Compatibility Mode.
+ (line 12498)
+* input line continuation (\<RET>): Line Continuation. (line 7019)
+* input line number register (.c, c.): Built-in Registers.
+ (line 5532)
+* input line number, setting (lf): Debugging. (line 12103)
+* input line position, horizontal, saving (\k): Page Motions.
+ (line 10084)
+* input line trap, clearing (it, itc): Input Line Traps. (line 10680)
+* input line trap, setting (it, itc): Input Line Traps. (line 10680)
+* input line traps: Input Line Traps. (line 10678)
+* input line traps and interrupted lines (itc): Input Line Traps.
+ (line 10704)
+* input line, horizontal position, register (hp): Page Motions.
+ (line 10090)
+* input line, productive: Manipulating Filling and Adjustment.
+ (line 5797)
+* input stack, backtrace (backtrace): Debugging. (line 12176)
+* input stack, setting limit: Debugging. (line 12197)
+* input token: Gtroff Internals. (line 11970)
+* input, 8-bit: Font Description File Format.
+ (line 13639)
+* input, standard, reading from (rd): I/O. (line 11558)
+* inserting horizontal space (\h): Page Motions. (line 9982)
+* installation: Installation. (line 370)
+* instructing the formatter: Formatter Instructions.
+ (line 4703)
+* inter-sentence space size register (.sss): Manipulating Filling and Adjustment.
+ (line 5887)
+* inter-sentence space, additional: Manipulating Filling and Adjustment.
+ (line 5893)
+* inter-word spacing, minimal: Manipulating Filling and Adjustment.
+ (line 5891)
+* interactive use of gtroff: Debugging. (line 12167)
+* intercepting requests: Control Characters.
+ (line 4765)
+* intermediate output: gtroff Output. (line 12690)
+* interpolating registers (\n): Interpolating Registers.
+ (line 5335)
+* interpolation: Requests and Macros.
+ (line 3840)
+* interpolation depth: Calling Macros. (line 4929)
+* interpolation depth in delimited arguments: Compatibility Mode.
+ (line 12498)
+* interpolation of strings (\*): Strings. (line 8802)
+* interpretation mode: Copy Mode. (line 9708)
+* interrupted line: Line Continuation. (line 7048)
+* interrupted line register (.int): Line Continuation. (line 7073)
+* interrupted lines and input line traps (itc): Input Line Traps.
+ (line 10704)
+* introduction: Introduction. (line 222)
+* invalid characters for trf request: I/O. (line 11533)
+* invalid input characters: Identifiers. (line 4581)
+* invocation examples: Invocation Examples.
+ (line 1002)
+* invoking groff: Invoking groff. (line 454)
+* invoking requests: Invoking Requests. (line 4781)
+* ISO 646 output encoding: Groff Options. (line 743)
+* ISO 8859-1 (Latin-1) output encoding: Groff Options. (line 747)
+* ISO 8859-1 (Latin-1), input encoding: Input Encodings. (line 3991)
+* ISO 8859-15 (Latin-9), input encoding: Input Encodings. (line 4015)
+* ISO 8859-2 (Latin-2), input encoding: Input Encodings. (line 4004)
+* ISO 8859-9 (Latin-5), input encoding: Input Encodings. (line 4010)
+* italic correction (\/): Italic Corrections.
+ (line 8328)
+* justifying text: Manipulating Filling and Adjustment.
+ (line 5624)
+* justifying text (rj): Manipulating Filling and Adjustment.
+ (line 5866)
+* keep, floating: Displays and Keeps.
+ (line 1301)
+* keeps (introduction): Displays and Keeps.
+ (line 1297)
+* keeps [ms]: ms keeps and displays.
+ (line 2743)
+* keeps, and footnotes [ms]: ms Footnotes. (line 2958)
+* kerning and ligatures: Ligatures and Kerning.
+ (line 8253)
+* kerning enabled register (.kern): Ligatures and Kerning.
+ (line 8289)
+* kerning, activating (kern): Ligatures and Kerning.
+ (line 8289)
+* kerning, track: Ligatures and Kerning.
+ (line 8300)
+* landscape page orientation: Paper Format. (line 972)
+* language [ms]: ms language and localization.
+ (line 3003)
+* last glyph, dimensions (.w, .cht, .cdp, .csk): Environments.
+ (line 11388)
+* last-requested point size registers (.psr, .sr): Using Fractional Type Sizes.
+ (line 8638)
+* last-requested type size registers (.psr, .sr): Using Fractional Type Sizes.
+ (line 8638)
+* Latin-1 (ISO 8859-1) output encoding: Groff Options. (line 747)
+* Latin-1 (ISO 8859-1), input encoding: Input Encodings. (line 3991)
+* Latin-2 (ISO 8859-2), input encoding: Input Encodings. (line 4004)
+* Latin-5 (ISO 8859-9), input encoding: Input Encodings. (line 4010)
+* Latin-9 (ISO 8859-15), input encoding: Input Encodings. (line 4015)
+* layout, line: Line Layout. (line 6855)
+* layout, page: Page Layout. (line 7087)
+* lc request, and glyph definitions: Using Symbols. (line 7948)
+* leader character: Tabs and Leaders. (line 3785)
+* leader character <1>: Leaders. (line 6652)
+* leader character, and translations: Character Translations.
+ (line 6751)
+* leader character, non-interpreted (\a): Leaders. (line 6658)
+* leader repetition character (lc): Leaders. (line 6661)
+* leaders: Leaders. (line 6645)
+* leading: Manipulating Type Size and Vertical Spacing.
+ (line 8444)
+* leading space macro (lsm): Breaking. (line 3757)
+* leading space traps: Leading Space Traps.
+ (line 10788)
+* leading spaces: Breaking. (line 3757)
+* leading spaces macro (lsm): Leading Space Traps.
+ (line 10791)
+* leading spaces with ds: Strings. (line 8844)
+* left italic correction (\,): Italic Corrections.
+ (line 8338)
+* left margin (po): Line Layout. (line 6870)
+* length of a string (length): Strings. (line 8909)
+* length of line (ll): Line Layout. (line 6878)
+* length of previous line (.n): Environments. (line 11403)
+* length of the page, configuring (pl): Page Layout. (line 7093)
+* length of title line, configuring (lt): Page Layout. (line 7137)
+* length request, and copy mode: Strings. (line 8909)
+* less than (or equal to) operator: Numeric Expressions.
+ (line 4416)
+* letters, form: I/O. (line 11575)
+* level, input: Calling Macros. (line 4929)
+* level, suppression nesting, register: Suppressing Output.
+ (line 11463)
+* lf request, incompatibilities with AT&T troff: Other Differences.
+ (line 12579)
+* ligature: Using Symbols. (line 7600)
+* ligatures and kerning: Ligatures and Kerning.
+ (line 8253)
+* ligatures enabled register (.lg): Ligatures and Kerning.
+ (line 8271)
+* ligatures, activating (lg): Ligatures and Kerning.
+ (line 8271)
+* limitations of \b escape sequence: Drawing Geometric Objects.
+ (line 10316)
+* line break: Manipulating Filling and Adjustment.
+ (line 5624)
+* line break (introduction): Basics. (line 1188)
+* line break, output: Breaking. (line 3725)
+* line control: Line Continuation. (line 7014)
+* line dimensions: Line Layout. (line 6855)
+* line drawing glyph: Drawing Geometric Objects.
+ (line 10146)
+* line drawing glyph <1>: Drawing Geometric Objects.
+ (line 10168)
+* line indentation (in): Line Layout. (line 6874)
+* line layout: Line Layout. (line 6855)
+* line length (ll): Line Layout. (line 6878)
+* line length register (.l): Line Layout. (line 7003)
+* line length, previous (.n): Environments. (line 11403)
+* line number, input, register (.c, c.): Built-in Registers.
+ (line 5532)
+* line number, output, register (ln): Miscellaneous. (line 11820)
+* line numbers, printing (nm): Miscellaneous. (line 11798)
+* line space, extra post-vertical (\x): Changing the Vertical Spacing.
+ (line 8568)
+* line space, extra pre-vertical (\x): Changing the Vertical Spacing.
+ (line 8560)
+* line spacing register (.L): Manipulating Spacing.
+ (line 6400)
+* line spacing, post-vertical (pvs): Changing the Vertical Spacing.
+ (line 8572)
+* line thickness (\D't ...'): Drawing Geometric Objects.
+ (line 10298)
+* line, blank: Breaking. (line 3749)
+* line, drawing (\D'l ...'): Drawing Geometric Objects.
+ (line 10244)
+* line, horizontal, drawing (\l): Drawing Geometric Objects.
+ (line 10142)
+* line, input, continuation (\<RET>): Line Continuation. (line 7019)
+* line, input, horizontal position, register (hp): Page Motions.
+ (line 10090)
+* line, input, horizontal position, saving (\k): Page Motions.
+ (line 10084)
+* line, interrupted: Line Continuation. (line 7048)
+* line, output, continuation (\c): Line Continuation. (line 7048)
+* line, output, horizontal position, register (.k): Page Motions.
+ (line 10093)
+* line, productive input: Manipulating Filling and Adjustment.
+ (line 5797)
+* line, vertical, drawing (\L): Drawing Geometric Objects.
+ (line 10168)
+* line-tabs mode: Tabs and Fields. (line 6615)
+* lines, blank, disabling: Manipulating Spacing.
+ (line 6456)
+* lines, centering (ce): Manipulating Filling and Adjustment.
+ (line 5827)
+* lines, centering (introduction): Basics. (line 1170)
+* lines, consecutive hyphenated (hlm): Manipulating Hyphenation.
+ (line 6277)
+* lines, interrupted, and input line traps (itc): Input Line Traps.
+ (line 10704)
+* lines, right-aligning (introduction): Basics. (line 1182)
+* lines, right-justifying (introduction): Basics. (line 1182)
+* list of special characters (groff_char(7) man page): Using Symbols.
+ (line 7675)
+* listing page location traps (ptr): Debugging. (line 12162)
+* lists: Paragraphs. (line 1228)
+* ll request, using + and - with: Numeric Expressions.
+ (line 4463)
+* localization: Manipulating Hyphenation.
+ (line 6215)
+* localization [ms]: ms language and localization.
+ (line 3003)
+* locating macro files: Macro Directories. (line 900)
+* locating macro packages: Macro Directories. (line 900)
+* location, vertical, page, marking (mk): Page Motions. (line 9868)
+* location, vertical, page, returning to marked (rt): Page Motions.
+ (line 9868)
+* logical "and" operator: Numeric Expressions.
+ (line 4422)
+* logical "or" operator: Numeric Expressions.
+ (line 4422)
+* logical complementation operator: Numeric Expressions.
+ (line 4426)
+* logical conjunction operator: Numeric Expressions.
+ (line 4422)
+* logical disjunction operator: Numeric Expressions.
+ (line 4422)
+* logical not, limitation in expression: Numeric Expressions.
+ (line 4426)
+* logical operators: Numeric Expressions.
+ (line 4422)
+* long names: Compatibility Mode.
+ (line 12404)
+* loops and conditionals: Conditionals and Loops.
+ (line 9020)
+* lowercasing a string (stringdown): Strings. (line 8945)
+* ls request, alternative to (pvs): Changing the Vertical Spacing.
+ (line 8584)
+* lt request, using + and - with: Numeric Expressions.
+ (line 4463)
+* m scaling unit: Measurements. (line 4277)
+* M scaling unit: Measurements. (line 4287)
+* machine units: Page Geometry. (line 4169)
+* macro: Requests and Macros.
+ (line 3840)
+* macro arguments: Calling Macros. (line 4851)
+* macro arguments, and compatibility mode: Gtroff Internals.
+ (line 12054)
+* macro arguments, and tabs: Invoking Requests. (line 4789)
+* macro directories: Macro Directories. (line 898)
+* macro file search path: Macro Directories. (line 900)
+* macro name register (\$0): Parameters. (line 9657)
+* macro names, starting with [ or ], and refer: Identifiers.
+ (line 4623)
+* macro package: Macro Packages. (line 3963)
+* macro package search path: Macro Directories. (line 900)
+* macro package usage, basics of: Basics. (line 1058)
+* macro package, auxiliary: Major Macro Packages.
+ (line 1408)
+* macro package, full-service: Major Macro Packages.
+ (line 1397)
+* macro package, introduction: Macro Package Intro.
+ (line 316)
+* macro package, major: Major Macro Packages.
+ (line 1394)
+* macro package, minor: Major Macro Packages.
+ (line 1408)
+* macro package, structuring the source of: Invoking Requests.
+ (line 4803)
+* macro, appending to (am): Writing Macros. (line 9533)
+* macro, creating alias for (als): Strings. (line 8972)
+* macro, end-of-input (em): End-of-input Traps.
+ (line 10807)
+* macro, parameters (\$): Parameters. (line 9616)
+* macro, removing (rm): Strings. (line 8967)
+* macro, removing alias for (rm): Strings. (line 9007)
+* macro, renaming (rn): Strings. (line 8964)
+* macros, recursive: while. (line 9359)
+* macros, searching: Macro Directories. (line 898)
+* macros, shared name space with strings and diversions: Identifiers.
+ (line 4668)
+* macros, tutorial for users: Tutorial for Macro Users.
+ (line 1046)
+* macros, writing: Writing Macros. (line 9410)
+* magnification of a font (fzoom): Selecting Fonts. (line 7421)
+* major macro package: Major Macro Packages.
+ (line 1394)
+* major version number register (.x): Built-in Registers.
+ (line 5559)
+* man macros, custom headers and footers: Optional man extensions.
+ (line 1433)
+* man macros, Ultrix-specific: Optional man extensions.
+ (line 1451)
+* man pages: man. (line 1417)
+* manipulating filling and adjustment: Manipulating Filling and Adjustment.
+ (line 5624)
+* manipulating hyphenation: Manipulating Hyphenation.
+ (line 5941)
+* manipulating spacing: Manipulating Spacing.
+ (line 6344)
+* manipulating type size and vertical spacing: Manipulating Type Size and Vertical Spacing.
+ (line 8438)
+* manual hyphenation: Manipulating Hyphenation.
+ (line 5948)
+* manual pages: man. (line 1417)
+* margin for hyphenation (hym): Manipulating Hyphenation.
+ (line 6290)
+* margin glyph (mc): Miscellaneous. (line 11897)
+* margin, bottom: Page Location Traps.
+ (line 10440)
+* margin, left (po): Line Layout. (line 6870)
+* margin, right: Line Layout. (line 6881)
+* margin, top: Page Location Traps.
+ (line 10440)
+* mark, high-water, register (.h): Diversions. (line 11007)
+* marker, footnote [ms]: ms Footnotes. (line 2920)
+* marking vertical page location (mk): Page Motions. (line 9868)
+* maximum operator: Numeric Expressions.
+ (line 4407)
+* maximum value representable with Roman numerals: Assigning Register Formats.
+ (line 5465)
+* mdoc macros: mdoc. (line 1552)
+* me macro package: me. (line 1559)
+* measurement units: Measurements. (line 4232)
+* measurements: Measurements. (line 4232)
+* measurements, specifying safely: Default Units. (line 4341)
+* metrics, font: Using Fonts. (line 7295)
+* minimal inter-word spacing: Manipulating Filling and Adjustment.
+ (line 5891)
+* minimum operator: Numeric Expressions.
+ (line 4407)
+* minimum value representable with Roman numerals: Assigning Register Formats.
+ (line 5465)
+* minor macro package: Major Macro Packages.
+ (line 1408)
+* minor version number register (.y): Built-in Registers.
+ (line 5563)
+* minutes, current time (minutes): Built-in Registers.
+ (line 5583)
+* mm macro package: mm. (line 1571)
+* mode for constant glyph space (cs): Artificial Fonts. (line 8241)
+* mode, compatibility: Compatibility Mode.
+ (line 12404)
+* mode, compatibility, and parameters: Gtroff Internals. (line 12054)
+* mode, copy: Copy Mode. (line 9699)
+* mode, copy <1>: Copy Mode. (line 9699)
+* mode, copy, and cf request: I/O. (line 11521)
+* mode, copy, and device request: Postprocessor Access.
+ (line 11744)
+* mode, copy, and length request: Strings. (line 8909)
+* mode, copy, and macro parameters: Parameters. (line 9616)
+* mode, copy, and output request: Diversions. (line 11106)
+* mode, copy, and trf request: I/O. (line 11521)
+* mode, copy, and write request: I/O. (line 11683)
+* mode, copy, and writec request: I/O. (line 11683)
+* mode, copy, and writem request: I/O. (line 11697)
+* mode, copy, and \!: Diversions. (line 11074)
+* mode, copy, and \?: Operators in Conditionals.
+ (line 9116)
+* mode, copy, and \? <1>: Diversions. (line 11074)
+* mode, copy, and \a: Leaders. (line 6658)
+* mode, copy, and \t: Tabs and Fields. (line 6485)
+* mode, copy, and \V: I/O. (line 11721)
+* mode, fill (fi), enabling: Manipulating Filling and Adjustment.
+ (line 5685)
+* mode, fill, and break warnings: Warnings. (line 12262)
+* mode, fill, and inter-sentence space: Manipulating Filling and Adjustment.
+ (line 5898)
+* mode, fill, and \c: Line Continuation. (line 7054)
+* mode, fill, disabling: Manipulating Filling and Adjustment.
+ (line 5692)
+* mode, interpretation: Copy Mode. (line 9708)
+* mode, line-tabs: Tabs and Fields. (line 6615)
+* mode, no-fill: Manipulating Filling and Adjustment.
+ (line 5692)
+* mode, no-fill, and \c: Line Continuation. (line 7062)
+* mode, no-space (ns): Manipulating Spacing.
+ (line 6456)
+* mode, nroff: troff and nroff Modes.
+ (line 6813)
+* mode, safer: Groff Options. (line 707)
+* mode, safer <1>: Macro Directories. (line 910)
+* mode, safer <2>: Built-in Registers.
+ (line 5555)
+* mode, safer <3>: I/O. (line 11504)
+* mode, safer <4>: I/O. (line 11616)
+* mode, safer <5>: I/O. (line 11638)
+* mode, safer <6>: I/O. (line 11677)
+* mode, safer <7>: Safer Mode. (line 12395)
+* mode, troff: troff and nroff Modes.
+ (line 6813)
+* mode, unsafe: Groff Options. (line 783)
+* mode, unsafe <1>: Macro Directories. (line 910)
+* mode, unsafe <2>: Built-in Registers.
+ (line 5555)
+* mode, unsafe <3>: I/O. (line 11504)
+* mode, unsafe <4>: I/O. (line 11616)
+* mode, unsafe <5>: I/O. (line 11638)
+* mode, unsafe <6>: I/O. (line 11677)
+* modifying requests: Control Characters.
+ (line 4765)
+* modulus: Numeric Expressions.
+ (line 4359)
+* mom macro package: mom. (line 1581)
+* month of the year register (mo): Built-in Registers.
+ (line 5595)
+* motion operators: Numeric Expressions.
+ (line 4457)
+* motion quanta: Motion Quanta. (line 4292)
+* motion quantum, horizontal: DESC File Format. (line 13445)
+* motion quantum, horizontal, register (.H): Motion Quanta. (line 4299)
+* motion quantum, vertical: DESC File Format. (line 13553)
+* motion, horizontal (\h): Page Motions. (line 9982)
+* motion, vertical (\v): Page Motions. (line 9938)
+* motions, page: Page Motions. (line 9863)
+* mounting a font (fp): Font Positions. (line 7552)
+* mounting position: Using Fonts. (line 7295)
+* mounting position <1>: Using Fonts. (line 7295)
+* mounting, font, automatic: Selecting Fonts. (line 7365)
+* ms macros: ms. (line 1603)
+* ms macros, accent marks: ms Legacy Features.
+ (line 3405)
+* ms macros, body text: ms Body Text. (line 2231)
+* ms macros, creating table of contents: ms TOC. (line 3139)
+* ms macros, displays: ms keeps and displays.
+ (line 2743)
+* ms macros, document control settings: ms Document Control Settings.
+ (line 1794)
+* ms macros, document description: ms Document Description Macros.
+ (line 2132)
+* ms macros, equations: ms Insertions. (line 2844)
+* ms macros, figures: ms Insertions. (line 2844)
+* ms macros, footers: ms Headers and Footers.
+ (line 3052)
+* ms macros, footnotes: ms Footnotes. (line 2920)
+* ms macros, fractional type sizes in: Differences from AT&T ms.
+ (line 3315)
+* ms macros, general structure: ms Document Structure.
+ (line 1747)
+* ms macros, groff differences from AT&T: Differences from AT&T ms.
+ (line 3276)
+* ms macros, headers: ms Headers and Footers.
+ (line 3052)
+* ms macros, headings: Headings in ms. (line 2352)
+* ms macros, keeps: ms keeps and displays.
+ (line 2743)
+* ms macros, language: ms language and localization.
+ (line 3003)
+* ms macros, lists: Lists in ms. (line 2582)
+* ms macros, localization: ms language and localization.
+ (line 3003)
+* ms macros, margins: ms Margins. (line 3109)
+* ms macros, multiple columns: ms Multiple Columns.
+ (line 3117)
+* ms macros, naming conventions: ms Naming Conventions.
+ (line 3520)
+* ms macros, nested lists: Indented regions in ms.
+ (line 2713)
+* ms macros, obtaining typographical symbols: Typographical symbols in ms.
+ (line 2261)
+* ms macros, page layout: ms Page Layout. (line 3045)
+* ms macros, paragraph handling: Paragraphs in ms. (line 2277)
+* ms macros, references: ms Insertions. (line 2844)
+* ms macros, special characters: ms Legacy Features.
+ (line 3405)
+* ms macros, strings: ms Legacy Features.
+ (line 3405)
+* ms macros, tables: ms Insertions. (line 2844)
+* ms macros, text settings: Text settings in ms.
+ (line 2239)
+* multi-file documents: Debugging. (line 12103)
+* multi-line strings: Strings. (line 8853)
+* multi-page table example [ms]: ms Insertions. (line 2886)
+* multiple columns [ms]: ms Multiple Columns.
+ (line 3117)
+* multiplication: Numeric Expressions.
+ (line 4359)
+* n scaling unit: Measurements. (line 4281)
+* name space, common, of macros, diversions, and strings: Identifiers.
+ (line 4668)
+* name, background color, register (.M): Colors. (line 8765)
+* name, fill color, register (.M): Colors. (line 8765)
+* name, stroke color, register (.m): Colors. (line 8744)
+* named character (\C): Using Symbols. (line 7793)
+* names, long: Compatibility Mode.
+ (line 12404)
+* naming conventions, ms macros: ms Naming Conventions.
+ (line 3520)
+* ne request, and the .trunc register: Page Location Traps.
+ (line 10587)
+* ne request, comparison with sv: Page Control. (line 7230)
+* negating register values: Setting Registers. (line 5289)
+* negation: Numeric Expressions.
+ (line 4365)
+* nested assignments: Interpolating Registers.
+ (line 5340)
+* nested diversions: Diversions. (line 11000)
+* nested lists [ms]: Indented regions in ms.
+ (line 2713)
+* nesting level, suppression, register: Suppressing Output.
+ (line 11463)
+* new page (bp): Page Control. (line 7178)
+* newline character, and translations: Character Translations.
+ (line 6751)
+* newline character, in strings, escaping: Strings. (line 8853)
+* newline, as delimiter: Delimiters. (line 5076)
+* newline, final, stripping in diversions: Punning Names. (line 11246)
+* next file, processing (nx): I/O. (line 11553)
+* next free font position register (.fp): Font Positions. (line 7589)
+* next page number register (.pn): Page Layout. (line 7112)
+* next page number, configuring (pn): Page Layout. (line 7107)
+* nf request, causing implicit break: Manipulating Filling and Adjustment.
+ (line 5624)
+* nl register, and .d: Diversions. (line 11000)
+* nl register, difference from .h: Diversions. (line 11020)
+* nm request, using + and - with: Numeric Expressions.
+ (line 4463)
+* no-break control character ('): Requests and Macros.
+ (line 3813)
+* no-break control character, changing (c2): Control Characters.
+ (line 4738)
+* no-fill mode: Manipulating Filling and Adjustment.
+ (line 5692)
+* no-fill mode, and \c: Line Continuation. (line 7062)
+* no-space mode (ns): Manipulating Spacing.
+ (line 6456)
+* node, output: Gtroff Internals. (line 11970)
+* non-printing break point (\:): Manipulating Hyphenation.
+ (line 6008)
+* nr request, and warnings: Warnings. (line 12313)
+* nr request, using + and - with: Numeric Expressions.
+ (line 4463)
+* nroff mode: troff and nroff Modes.
+ (line 6813)
+* number formats, assigning to register (af): Assigning Register Formats.
+ (line 5413)
+* number of registers register (.R): Built-in Registers.
+ (line 5547)
+* number, input line, setting (lf): Debugging. (line 12103)
+* number, page, next, configuring (pn): Page Layout. (line 7107)
+* numbered glyph (\N): Character Translations.
+ (line 6741)
+* numbered glyph (\N) <1>: Using Symbols. (line 7810)
+* numbered list, example markup [ms]: Lists in ms. (line 2609)
+* numbers, line, printing (nm): Miscellaneous. (line 11798)
+* numeral-width space (\0): Page Motions. (line 10014)
+* numerals, as delimiters: Delimiters. (line 5090)
+* numerals, Roman: Assigning Register Formats.
+ (line 5433)
+* numeric expression, valid: Numeric Expressions.
+ (line 4522)
+* numeric expressions: Numeric Expressions.
+ (line 4348)
+* object creation: Writing Macros. (line 9558)
+* offset, page: Page Geometry. (line 4193)
+* offset, page (po): Line Layout. (line 6870)
+* open request, and safer mode: Groff Options. (line 707)
+* opena request, and safer mode: Groff Options. (line 707)
+* opening brace escape sequence (\}): Conditional Blocks.
+ (line 9250)
+* opening file (open): I/O. (line 11671)
+* operator, scaling: Numeric Expressions.
+ (line 4390)
+* operators, arithmetic: Numeric Expressions.
+ (line 4359)
+* operators, as delimiters: Delimiters. (line 5092)
+* operators, comparison: Numeric Expressions.
+ (line 4416)
+* operators, extremum (>?, <?): Numeric Expressions.
+ (line 4407)
+* operators, logical: Numeric Expressions.
+ (line 4422)
+* operators, motion: Numeric Expressions.
+ (line 4457)
+* operators, unary arithmetic: Numeric Expressions.
+ (line 4365)
+* optical size of a font: Selecting Fonts. (line 7421)
+* options: Groff Options. (line 478)
+* order of evaluation in expressions: Numeric Expressions.
+ (line 4446)
+* ordinary character: Identifiers. (line 4577)
+* orientation, landscape: Paper Format. (line 972)
+* orphan: Page Control. (line 7222)
+* orphan lines, preventing with ne: Page Control. (line 7195)
+* os request, and no-space mode: Page Control. (line 7233)
+* outlined circle, drawing (\D'c ...'): Drawing Geometric Objects.
+ (line 10230)
+* outlined ellipse, drawing (\D'e ...'): Drawing Geometric Objects.
+ (line 10237)
+* outlined polygon, drawing (\D'p ...'): Drawing Geometric Objects.
+ (line 10269)
+* output and input requests: I/O. (line 11469)
+* output comparison operator: Operators in Conditionals.
+ (line 9080)
+* output device name string (.T): Groff Options. (line 772)
+* output device name string (.T) <1>: Strings. (line 8787)
+* output device name string (.T), in other implementations: Other Differences.
+ (line 12564)
+* output device usage register (.T): Groff Options. (line 772)
+* output device usage register (.T), incompatibility with AT&T troff: Other Differences.
+ (line 12574)
+* output devices: Output Device Intro.
+ (line 359)
+* output encoding, ASCII: Groff Options. (line 743)
+* output encoding, code page 1047: Groff Options. (line 755)
+* output encoding, EBCDIC: Groff Options. (line 755)
+* output encoding, ISO 646: Groff Options. (line 743)
+* output encoding, Latin-1 (ISO 8859-1): Groff Options. (line 747)
+* output encoding, UTF-8: Groff Options. (line 751)
+* output glyphs, and input characters, compatibility with AT&T troff: Other Differences.
+ (line 12609)
+* output line break: Breaking. (line 3725)
+* output line number register (ln): Miscellaneous. (line 11820)
+* output line properties: Manipulating Filling and Adjustment.
+ (line 5644)
+* output line, continuation (\c): Line Continuation. (line 7048)
+* output line, horizontal position, register (.k): Page Motions.
+ (line 10093)
+* output node: Gtroff Internals. (line 11970)
+* output request, and copy mode: Diversions. (line 11106)
+* output request, and \!: Diversions. (line 11106)
+* output, filling, disablement of (nf): Manipulating Filling and Adjustment.
+ (line 5692)
+* output, filling, enablement of (fi): Manipulating Filling and Adjustment.
+ (line 5685)
+* output, flush (fl): Debugging. (line 12167)
+* output, gtroff: gtroff Output. (line 12680)
+* output, intermediate: gtroff Output. (line 12690)
+* output, suppressing (\O): Suppressing Output.
+ (line 11410)
+* output, transparent (cf, trf): I/O. (line 11521)
+* output, transparent (\!, \?): Diversions. (line 11066)
+* output, transparent, incompatibilities with AT&T troff: Other Differences.
+ (line 12636)
+* output, troff: gtroff Output. (line 12690)
+* overlapping characters: Using Symbols. (line 7882)
+* overstriking glyphs (\o): Page Motions. (line 10097)
+* p scaling unit: Measurements. (line 4255)
+* P scaling unit: Measurements. (line 4259)
+* package, macro: Macro Packages. (line 3963)
+* package, macro, auxiliary: Major Macro Packages.
+ (line 1408)
+* package, macro, full-service: Major Macro Packages.
+ (line 1397)
+* package, macro, introduction: Macro Package Intro.
+ (line 316)
+* package, macro, major: Major Macro Packages.
+ (line 1394)
+* package, macro, minor: Major Macro Packages.
+ (line 1408)
+* package, macro, search path: Macro Directories. (line 900)
+* package, package, structuring the source of: Invoking Requests.
+ (line 4803)
+* padding character, for fields (fc): Fields. (line 6692)
+* page: Page Geometry. (line 4175)
+* page break: Page Geometry. (line 4208)
+* page break <1>: Page Control. (line 7170)
+* page break <2>: The Implicit Page Trap.
+ (line 10638)
+* page break (introduction): Basics. (line 1185)
+* page break, conditional (ne): Page Control. (line 7195)
+* page break, final: End-of-input Traps.
+ (line 10834)
+* page break, prevented by vpt: Vertical Position Traps.
+ (line 10414)
+* page control: Page Control. (line 7170)
+* page ejection: Page Geometry. (line 4208)
+* page ejection <1>: Page Control. (line 7170)
+* page ejection <2>: The Implicit Page Trap.
+ (line 10638)
+* page ejection status register (.pe): Page Location Traps.
+ (line 10598)
+* page ejection, of final page: End-of-input Traps.
+ (line 10834)
+* page ejection, prevented by vpt: Vertical Position Traps.
+ (line 10414)
+* page footers: Page Location Traps.
+ (line 10440)
+* page headers: Page Location Traps.
+ (line 10440)
+* page layout: Page Layout. (line 7087)
+* page layout [ms]: ms Page Layout. (line 3045)
+* page length register (.p): Page Layout. (line 7101)
+* page length, configuring (pl): Page Layout. (line 7093)
+* page location traps: Page Location Traps.
+ (line 10420)
+* page location traps, debugging: Page Location Traps.
+ (line 10476)
+* page location, vertical, marking (mk): Page Motions. (line 9868)
+* page location, vertical, returning to marked (rt): Page Motions.
+ (line 9868)
+* page motions: Page Motions. (line 9863)
+* page number character (%): Page Layout. (line 7120)
+* page number character, changing (pc): Page Layout. (line 7149)
+* page number register (%): Page Control. (line 7188)
+* page number, configuring next (pn): Page Layout. (line 7107)
+* page number, next, register (.pn): Page Layout. (line 7112)
+* page offset: Page Geometry. (line 4193)
+* page offset (po): Line Layout. (line 6870)
+* page orientation, landscape: Paper Format. (line 972)
+* page, geometry of: Page Geometry. (line 4162)
+* page, new (bp): Page Control. (line 7178)
+* paper format: Paper Format. (line 972)
+* paper size: Paper Format. (line 972)
+* paragraphs: Paragraphs. (line 1220)
+* parameter count register (.$): Parameters. (line 9594)
+* parameters: Parameters. (line 9586)
+* parameters, and compatibility mode: Gtroff Internals. (line 12054)
+* parameters, macro (\$): Parameters. (line 9616)
+* parentheses: Numeric Expressions.
+ (line 4446)
+* partially collected line: Manipulating Filling and Adjustment.
+ (line 5644)
+* path, for font files: Font Directories. (line 942)
+* path, for tmac files: Macro Directories. (line 900)
+* pattern files, for hyphenation: Manipulating Hyphenation.
+ (line 6116)
+* patterns for hyphenation (hpf): Manipulating Hyphenation.
+ (line 6170)
+* pending output line: Manipulating Filling and Adjustment.
+ (line 5644)
+* pi request, and groff: I/O. (line 11629)
+* pi request, and safer mode: Groff Options. (line 707)
+* pi request, disabled by default: Safer Mode. (line 12395)
+* pica scaling unit (P): Measurements. (line 4259)
+* PID of GNU troff register ($$): Built-in Registers.
+ (line 5571)
+* pile, glyph (\b): Drawing Geometric Objects.
+ (line 10308)
+* pl request, using + and - with: Numeric Expressions.
+ (line 4463)
+* plain text approximation output register (.A): Groff Options.
+ (line 521)
+* plain text approximation output register (.A) <1>: Built-in Registers.
+ (line 5527)
+* planting a trap: Traps. (line 10393)
+* platform-specific directory: Macro Directories. (line 915)
+* pm request, incompatibilities with AT&T troff: Other Differences.
+ (line 12600)
+* pn request, using + and - with: Numeric Expressions.
+ (line 4463)
+* PNG image generation from PostScript: DESC File Format. (line 13449)
+* po request, using + and - with: Numeric Expressions.
+ (line 4463)
+* point scaling unit (p): Measurements. (line 4255)
+* point size registers (.s, .ps): Changing the Type Size.
+ (line 8480)
+* point size registers, last-requested (.psr, .sr): Using Fractional Type Sizes.
+ (line 8638)
+* point sizes, changing (ps, \s): Changing the Type Size.
+ (line 8466)
+* point sizes, fractional: Using Fractional Type Sizes.
+ (line 8597)
+* point sizes, fractional <1>: Other Differences. (line 12587)
+* polygon, filled, drawing (\D'P ...'): Drawing Geometric Objects.
+ (line 10275)
+* polygon, outlined, drawing (\D'p ...'): Drawing Geometric Objects.
+ (line 10269)
+* polygon, solid, drawing (\D'P ...'): Drawing Geometric Objects.
+ (line 10275)
+* polygon, stroked, drawing (\D'p ...'): Drawing Geometric Objects.
+ (line 10269)
+* position of lowest text line (.h): Diversions. (line 11007)
+* position, absolute (sic) operator (|): Numeric Expressions.
+ (line 4471)
+* position, drawing: Page Geometry. (line 4181)
+* position, horizontal input line, saving (\k): Page Motions.
+ (line 10084)
+* position, horizontal, in input line, register (hp): Page Motions.
+ (line 10090)
+* position, horizontal, in output line, register (.k): Page Motions.
+ (line 10093)
+* position, mounting: Using Fonts. (line 7295)
+* position, vertical, in diversion, register (.d): Diversions.
+ (line 11000)
+* positions, font: Font Positions. (line 7540)
+* post-vertical line spacing: Changing the Vertical Spacing.
+ (line 8572)
+* post-vertical line spacing register (.pvs): Changing the Vertical Spacing.
+ (line 8584)
+* post-vertical line spacing, changing (pvs): Changing the Vertical Spacing.
+ (line 8584)
+* postprocessor access: Postprocessor Access.
+ (line 11729)
+* postprocessors: Output Device Intro.
+ (line 359)
+* PostScript, bounding box: Miscellaneous. (line 11949)
+* PostScript, PNG image generation: DESC File Format. (line 13449)
+* prefix, for commands: Environment. (line 835)
+* preprocessors: Preprocessor Intro.
+ (line 328)
+* previous font, selecting (ft): Selecting Fonts. (line 7352)
+* previous font, selecting (\f[], \fP): Selecting Fonts. (line 7378)
+* previous line length (.n): Environments. (line 11403)
+* print current page register (.P): Groff Options. (line 670)
+* printing backslash (\\, \e, \E, \[rs]): Other Differences.
+ (line 12636)
+* printing line numbers (nm): Miscellaneous. (line 11798)
+* printing to stderr (tm, tm1, tmc): Debugging. (line 12117)
+* printing, zero-width (\z, \Z): Page Motions. (line 10102)
+* printing, zero-width (\z, \Z) <1>: Page Motions. (line 10107)
+* process ID of GNU troff register ($$): Built-in Registers.
+ (line 5571)
+* processing next file (nx): I/O. (line 11553)
+* productive input line: Manipulating Filling and Adjustment.
+ (line 5797)
+* properties of characters (cflags): Using Symbols. (line 7846)
+* properties of glyphs (cflags): Using Symbols. (line 7846)
+* properties of output lines: Manipulating Filling and Adjustment.
+ (line 5644)
+* ps request, and constant glyph space mode: Artificial Fonts.
+ (line 8241)
+* ps request, incompatibilities with AT&T troff: Other Differences.
+ (line 12587)
+* ps request, using + and - with: Numeric Expressions.
+ (line 4463)
+* ps request, with fractional type sizes: Using Fractional Type Sizes.
+ (line 8604)
+* pso request, and safer mode: Groff Options. (line 707)
+* pvs request, using + and - with: Numeric Expressions.
+ (line 4463)
+* quanta, motion: Motion Quanta. (line 4292)
+* quantum, horizontal motion: DESC File Format. (line 13445)
+* quantum, vertical motion: DESC File Format. (line 13553)
+* radicalex glyph, and cflags: Using Symbols. (line 7882)
+* ragged-left text: Manipulating Filling and Adjustment.
+ (line 5723)
+* ragged-right text: Manipulating Filling and Adjustment.
+ (line 5720)
+* rc request, and glyph definitions: Using Symbols. (line 7948)
+* read-only register removal, incompatibility with AT&T troff: Other Differences.
+ (line 12571)
+* read-only register, changing format: Assigning Register Formats.
+ (line 5472)
+* reading from standard input (rd): I/O. (line 11558)
+* recursive macros: while. (line 9359)
+* refer, and macro names starting with [ or ]: Identifiers. (line 4623)
+* reference, gtroff: GNU troff Reference.
+ (line 3549)
+* references [ms]: ms Insertions. (line 2844)
+* register format, in expressions: Assigning Register Formats.
+ (line 5484)
+* register, assigning number format to (af): Assigning Register Formats.
+ (line 5413)
+* register, built-in, removing: Built-in Registers.
+ (line 5513)
+* register, creating alias for (aln): Setting Registers. (line 5323)
+* register, format (\g): Assigning Register Formats.
+ (line 5479)
+* register, read-only, removal, incompatibility with AT&T troff: Other Differences.
+ (line 12571)
+* register, removing (rr): Setting Registers. (line 5312)
+* register, removing alias for (rr): Setting Registers. (line 5329)
+* register, renaming (rnn): Setting Registers. (line 5318)
+* registers: Registers. (line 5210)
+* registers, built-in: Built-in Registers.
+ (line 5508)
+* registers, dumping (pnr): Debugging. (line 12158)
+* registers, interpolating (\n): Interpolating Registers.
+ (line 5335)
+* registers, number of, register (.R): Built-in Registers.
+ (line 5547)
+* registers, setting (nr, \R): Setting Registers. (line 5219)
+* removal of read-only registers, incompatibility with AT&T troff: Other Differences.
+ (line 12571)
+* removing a built-in register: Built-in Registers.
+ (line 5513)
+* removing a register (rr): Setting Registers. (line 5312)
+* removing alias for register (rr): Setting Registers. (line 5329)
+* removing alias, for diversion (rm): Strings. (line 9007)
+* removing alias, for macro (rm): Strings. (line 9007)
+* removing alias, for string (rm): Strings. (line 9007)
+* removing diversion (rm): Strings. (line 8967)
+* removing glyph definition (rchar, rfschar): Using Symbols.
+ (line 8005)
+* removing macro (rm): Strings. (line 8967)
+* removing request (rm): Strings. (line 8967)
+* removing string (rm): Strings. (line 8967)
+* renaming a register (rnn): Setting Registers. (line 5318)
+* renaming diversion (rn): Strings. (line 8964)
+* renaming macro (rn): Strings. (line 8964)
+* renaming request (rn): Strings. (line 8964)
+* renaming string (rn): Strings. (line 8964)
+* renditions, graphic: Using Fonts. (line 7323)
+* request: Requests and Macros.
+ (line 3813)
+* request <1>: Formatter Instructions.
+ (line 4708)
+* request arguments: Invoking Requests. (line 4789)
+* request arguments, and compatibility mode: Gtroff Internals.
+ (line 12054)
+* request arguments, and tabs: Invoking Requests. (line 4789)
+* request, removing (rm): Strings. (line 8967)
+* request, renaming (rn): Strings. (line 8964)
+* request, undefined: Comments. (line 5150)
+* requests for drawing: Drawing Geometric Objects.
+ (line 10130)
+* requests for input and output: I/O. (line 11469)
+* requests, intercepting: Control Characters.
+ (line 4765)
+* requests, invoking: Invoking Requests. (line 4781)
+* requests, modifying: Control Characters.
+ (line 4765)
+* resolution, device: Page Geometry. (line 4169)
+* resolution, device <1>: DESC File Format. (line 13506)
+* resolution, device, obtaining in the formatter: Measurements.
+ (line 4240)
+* resolution, horizontal: DESC File Format. (line 13445)
+* resolution, horizontal, register (.H): Motion Quanta. (line 4299)
+* resolution, vertical: DESC File Format. (line 13553)
+* returning to marked vertical page location (rt): Page Motions.
+ (line 9868)
+* revision number register (.Y): Built-in Registers.
+ (line 5567)
+* right margin: Line Layout. (line 6881)
+* right-aligning lines (introduction): Basics. (line 1182)
+* right-justifying (rj): Manipulating Filling and Adjustment.
+ (line 5866)
+* right-justifying lines (introduction): Basics. (line 1182)
+* rivers: Other Differences. (line 12552)
+* rj request, causing implicit break: Manipulating Filling and Adjustment.
+ (line 5624)
+* rn glyph, and cflags: Using Symbols. (line 7882)
+* roman glyph, correction after italic glyph (\/): Italic Corrections.
+ (line 8328)
+* roman glyph, correction before italic glyph (\,): Italic Corrections.
+ (line 8338)
+* Roman numerals: Assigning Register Formats.
+ (line 5433)
+* Roman numerals, extrema (maximum and minimum): Assigning Register Formats.
+ (line 5465)
+* rq glyph, at end of sentence: Sentences. (line 3663)
+* rq glyph, at end of sentence <1>: Using Symbols. (line 7892)
+* rt request, using + and - with: Numeric Expressions.
+ (line 4463)
+* ru glyph, and cflags: Using Symbols. (line 7882)
+* running system commands: I/O. (line 11633)
+* s scaling unit: Using Fractional Type Sizes.
+ (line 8604)
+* safer mode: Groff Options. (line 707)
+* safer mode <1>: Macro Directories. (line 910)
+* safer mode <2>: Built-in Registers.
+ (line 5555)
+* safer mode <3>: I/O. (line 11504)
+* safer mode <4>: I/O. (line 11616)
+* safer mode <5>: I/O. (line 11638)
+* safer mode <6>: I/O. (line 11677)
+* safer mode <7>: Safer Mode. (line 12395)
+* saving horizontal input line position (\k): Page Motions. (line 10084)
+* scaling indicator: Measurements. (line 4232)
+* scaling operator: Numeric Expressions.
+ (line 4390)
+* scaling unit c: Measurements. (line 4252)
+* scaling unit f: Colors. (line 8712)
+* scaling unit i: Measurements. (line 4249)
+* scaling unit m: Measurements. (line 4277)
+* scaling unit M: Measurements. (line 4287)
+* scaling unit n: Measurements. (line 4281)
+* scaling unit p: Measurements. (line 4255)
+* scaling unit P: Measurements. (line 4259)
+* scaling unit s: Using Fractional Type Sizes.
+ (line 8604)
+* scaling unit u: Measurements. (line 4245)
+* scaling unit v: Measurements. (line 4284)
+* scaling unit z: Using Fractional Type Sizes.
+ (line 8604)
+* searching fonts: Font Directories. (line 934)
+* searching macros: Macro Directories. (line 898)
+* seconds, current time (seconds): Built-in Registers.
+ (line 5580)
+* selecting the previous font (ft): Selecting Fonts. (line 7352)
+* sentence space: Sentences. (line 3619)
+* sentence space size register (.sss): Manipulating Filling and Adjustment.
+ (line 5887)
+* sentences: Sentences. (line 3607)
+* sequence, escape: Formatter Instructions.
+ (line 4714)
+* setting diversion trap (dt): Diversion Traps. (line 10668)
+* setting end-of-input trap (em): End-of-input Traps.
+ (line 10807)
+* setting input line number (lf): Debugging. (line 12103)
+* setting input line trap (it, itc): Input Line Traps. (line 10680)
+* setting registers (nr, \R): Setting Registers. (line 5219)
+* setting the page length (pl): Page Layout. (line 7093)
+* setting up an abstract font style (sty): Font Families. (line 7505)
+* shc request, and translations: Character Translations.
+ (line 6755)
+* site-local directory: Macro Directories. (line 915)
+* site-local directory <1>: Font Directories. (line 957)
+* size of sentence space register (.sss): Manipulating Filling and Adjustment.
+ (line 5887)
+* size of word space register (.ss): Manipulating Filling and Adjustment.
+ (line 5887)
+* size, optical, of a font: Selecting Fonts. (line 7421)
+* size, paper: Paper Format. (line 972)
+* size, size: Manipulating Type Size and Vertical Spacing.
+ (line 8438)
+* sizes, fractional: Other Differences. (line 12587)
+* sizes, fractional type: Using Fractional Type Sizes.
+ (line 8597)
+* skew, of last glyph (.csk): Environments. (line 11388)
+* slant, font, changing (\S): Artificial Fonts. (line 8161)
+* soft hyphen character, setting (shc): Manipulating Hyphenation.
+ (line 6032)
+* soft hyphen glyph (hy): Manipulating Hyphenation.
+ (line 6032)
+* solid circle, drawing (\D'C ...'): Drawing Geometric Objects.
+ (line 10234)
+* solid ellipse, drawing (\D'E ...'): Drawing Geometric Objects.
+ (line 10241)
+* solid polygon, drawing (\D'P ...'): Drawing Geometric Objects.
+ (line 10275)
+* SOURCE_DATE_EPOCH, environment variable: Environment. (line 882)
+* sp request, and no-space mode: Manipulating Spacing.
+ (line 6456)
+* sp request, causing implicit break: Manipulating Filling and Adjustment.
+ (line 5624)
+* space between sentences: Sentences. (line 3619)
+* space between sentences register (.sss): Manipulating Filling and Adjustment.
+ (line 5887)
+* space between words register (.ss): Manipulating Filling and Adjustment.
+ (line 5887)
+* space character, as delimiter: Delimiters. (line 5094)
+* space characters, in expressions: Numeric Expressions.
+ (line 4538)
+* space, between sentences: Manipulating Filling and Adjustment.
+ (line 5893)
+* space, between words: Manipulating Filling and Adjustment.
+ (line 5891)
+* space, discardable, horizontal: Manipulating Filling and Adjustment.
+ (line 5914)
+* space, hair (\^): Page Motions. (line 10008)
+* space, horizontal (\h): Page Motions. (line 9982)
+* space, horizontal, unformatting: Punning Names. (line 11246)
+* space, thin (\|): Page Motions. (line 10003)
+* space, unbreakable (\~): Manipulating Filling and Adjustment.
+ (line 5671)
+* space, unbreakable and unadjustable (\<SP>): Page Motions.
+ (line 9998)
+* space, vertical, unit (v): Measurements. (line 4284)
+* space, width of a digit (numeral) (\0): Page Motions. (line 10014)
+* spaces with ds: Strings. (line 8844)
+* spaces, in a macro argument: Calling Macros. (line 4856)
+* spaces, leading and trailing: Breaking. (line 3757)
+* spacing (introduction): Basics. (line 1150)
+* spacing, manipulating: Manipulating Spacing.
+ (line 6344)
+* spacing, vertical: Page Geometry. (line 4202)
+* spacing, vertical <1>: Manipulating Type Size and Vertical Spacing.
+ (line 8438)
+* spacing, vertical (introduction): Basics. (line 1136)
+* special characters: Sentences. (line 3663)
+* special characters <1>: Character Translations.
+ (line 6741)
+* special characters [ms]: ms Legacy Features.
+ (line 3405)
+* special characters, list of (groff_char(7) man page): Using Symbols.
+ (line 7675)
+* special font: Using Fonts. (line 7280)
+* special fonts: Using Symbols. (line 7612)
+* special fonts <1>: Special Fonts. (line 8092)
+* special fonts <2>: Font Description File Format.
+ (line 13618)
+* special fonts, emboldening: Artificial Fonts. (line 8230)
+* special request, and font translations: Selecting Fonts. (line 7406)
+* special request, and glyph search order: Using Symbols. (line 7612)
+* spline, drawing (\D'~ ...'): Drawing Geometric Objects.
+ (line 10221)
+* springing a trap: Traps. (line 10394)
+* sqrtex glyph, and cflags: Using Symbols. (line 7882)
+* ss request, incompatibilities with AT&T troff: Other Differences.
+ (line 12604)
+* stack: Environments. (line 11273)
+* stacking glyphs (\b): Drawing Geometric Objects.
+ (line 10308)
+* standard input, reading from (rd): I/O. (line 11558)
+* stderr, printing to (tm, tm1, tmc): Debugging. (line 12117)
+* stops, tab: Tabs and Leaders. (line 3785)
+* string arguments: Strings. (line 8802)
+* string comparison: Operators in Conditionals.
+ (line 9108)
+* string expansion (\*): Strings. (line 8802)
+* string interpolation (\*): Strings. (line 8802)
+* string, appending (as): Strings. (line 8889)
+* string, creating alias for (als): Strings. (line 8972)
+* string, length of (length): Strings. (line 8909)
+* string, removing (rm): Strings. (line 8967)
+* string, removing alias for (rm): Strings. (line 9007)
+* string, renaming (rn): Strings. (line 8964)
+* strings: Strings. (line 8780)
+* strings [ms]: ms Legacy Features.
+ (line 3405)
+* strings, multi-line: Strings. (line 8853)
+* strings, shared name space with macros and diversions: Identifiers.
+ (line 4668)
+* stripping final newline in diversions: Punning Names. (line 11246)
+* stroke color: Colors. (line 8678)
+* stroke color name register (.m): Colors. (line 8744)
+* stroked circle, drawing (\D'c ...'): Drawing Geometric Objects.
+ (line 10230)
+* stroked ellipse, drawing (\D'e ...'): Drawing Geometric Objects.
+ (line 10237)
+* stroked polygon, drawing (\D'p ...'): Drawing Geometric Objects.
+ (line 10269)
+* structuring source code of documents or macro packages: Invoking Requests.
+ (line 4803)
+* sty request, and changing fonts: Selecting Fonts. (line 7352)
+* sty request, and font translations: Selecting Fonts. (line 7406)
+* style, font: Using Fonts. (line 7280)
+* style, font, abstract: Using Fonts. (line 7302)
+* style, font, abstract, setting up (sty): Font Families. (line 7505)
+* styles, font: Font Families. (line 7448)
+* substring (substring): Strings. (line 8927)
+* subtraction: Numeric Expressions.
+ (line 4359)
+* suppressing output (\O): Suppressing Output.
+ (line 11410)
+* suppression nesting level register: Suppressing Output.
+ (line 11463)
+* sv request, and no-space mode: Page Control. (line 7233)
+* switching environments (ev): Environments. (line 11309)
+* sy request, and safer mode: Groff Options. (line 707)
+* sy request, disabled by default: Safer Mode. (line 12395)
+* symbol: Using Symbols. (line 7612)
+* symbol table, dumping (pm): Debugging. (line 12154)
+* symbol, defining (char): Using Symbols. (line 7948)
+* symbols, using: Using Symbols. (line 7600)
+* system commands, running: I/O. (line 11633)
+* system() return value register (systat): I/O. (line 11666)
+* tab character: Tabs and Leaders. (line 3785)
+* tab character encoding: Tabs and Fields. (line 6481)
+* tab character, and translations: Character Translations.
+ (line 6751)
+* tab character, as delimiter: Delimiters. (line 5094)
+* tab character, non-interpreted (\t): Tabs and Fields. (line 6485)
+* tab repetition character (tc): Tabs and Fields. (line 6602)
+* tab stop settings register (.tabs): Tabs and Fields. (line 6593)
+* tab stops: Tabs and Leaders. (line 3785)
+* tab stops, default: Tabs and Fields. (line 6493)
+* tab, line-tabs mode: Tabs and Fields. (line 6615)
+* table of contents: Table of Contents. (line 1323)
+* table of contents <1>: Leaders. (line 6671)
+* table of contents, creating [ms]: ms TOC. (line 3139)
+* table, multi-page, example [ms]: ms Insertions. (line 2886)
+* tables [ms]: ms Insertions. (line 2844)
+* tabs, and fields: Tabs and Fields. (line 6481)
+* tabs, and macro arguments: Invoking Requests. (line 4789)
+* tabs, and request arguments: Invoking Requests. (line 4789)
+* tabs, before comments: Comments. (line 5145)
+* tagged paragraphs: Paragraphs. (line 1228)
+* tags, paragraph: Paragraphs. (line 1228)
+* terminal, conditional output for: Operators in Conditionals.
+ (line 9053)
+* text baseline: Page Geometry. (line 4184)
+* text baseline <1>: Manipulating Type Size and Vertical Spacing.
+ (line 8438)
+* text font: Using Fonts. (line 7280)
+* text line: Requests and Macros.
+ (line 3826)
+* text line, position of lowest (.h): Diversions. (line 11007)
+* text, GNU troff processing: Text. (line 3556)
+* text, justifying: Manipulating Filling and Adjustment.
+ (line 5624)
+* text, justifying (rj): Manipulating Filling and Adjustment.
+ (line 5866)
+* thickness of lines (\D't ...'): Drawing Geometric Objects.
+ (line 10298)
+* thin space (\|): Page Motions. (line 10003)
+* three-part title (tl): Page Layout. (line 7120)
+* ti request, causing implicit break: Manipulating Filling and Adjustment.
+ (line 5624)
+* ti request, using + and - with: Numeric Expressions.
+ (line 4463)
+* time, current, hours (hours): Built-in Registers.
+ (line 5586)
+* time, current, minutes (minutes): Built-in Registers.
+ (line 5583)
+* time, current, seconds (seconds): Built-in Registers.
+ (line 5580)
+* time, formatting: I/O. (line 11656)
+* title length, configuring (lt): Page Layout. (line 7137)
+* title line length register (.lt): Page Layout. (line 7146)
+* title line, formatting (tl): Page Layout. (line 7120)
+* titles: Page Layout. (line 7115)
+* tkf request, and font styles: Font Families. (line 7505)
+* tkf request, and font translations: Selecting Fonts. (line 7406)
+* tkf request, with fractional type sizes: Using Fractional Type Sizes.
+ (line 8604)
+* tl request, and mc: Miscellaneous. (line 11901)
+* tmac, directory: Macro Directories. (line 900)
+* tmac, path: Macro Directories. (line 900)
+* TMPDIR, environment variable: Environment. (line 869)
+* token, input: Gtroff Internals. (line 11970)
+* top margin: Page Location Traps.
+ (line 10440)
+* top-level diversion: Diversions. (line 10930)
+* top-level diversion, and bp: Page Control. (line 7183)
+* top-level diversion, and \!: Diversions. (line 11098)
+* top-level diversion, and \?: Diversions. (line 11103)
+* tr request, and glyph definitions: Using Symbols. (line 7948)
+* tr request, and soft hyphen character: Manipulating Hyphenation.
+ (line 6032)
+* tr request, incompatibilities with AT&T troff: Other Differences.
+ (line 12609)
+* track kerning: Ligatures and Kerning.
+ (line 8300)
+* track kerning, activating (tkf): Ligatures and Kerning.
+ (line 8307)
+* trailing double quotes in strings: Strings. (line 8844)
+* trailing spaces in string definitions and appendments: Strings.
+ (line 8823)
+* trailing spaces on text lines: Breaking. (line 3757)
+* translations of characters: Character Translations.
+ (line 6722)
+* transparent characters: Using Symbols. (line 7892)
+* transparent dummy character (\)): Dummy Characters. (line 8407)
+* transparent output (cf, trf): I/O. (line 11521)
+* transparent output (\!, \?): Diversions. (line 11066)
+* transparent output, incompatibilities with AT&T troff: Other Differences.
+ (line 12636)
+* trap: Deferring Output. (line 10337)
+* trap, changing location (ch): Page Location Traps.
+ (line 10528)
+* trap, distance to next vertical position, register (.t): Page Location Traps.
+ (line 10520)
+* trap, diversion, setting (dt): Diversion Traps. (line 10668)
+* trap, end-of-input, setting (em): End-of-input Traps.
+ (line 10807)
+* trap, implicit: The Implicit Page Trap.
+ (line 10638)
+* trap, input line, clearing (it, itc): Input Line Traps. (line 10680)
+* trap, input line, setting (it, itc): Input Line Traps. (line 10680)
+* trap, planting: Traps. (line 10393)
+* trap, springing: Traps. (line 10394)
+* traps: Traps. (line 10387)
+* traps, and diversions: Page Location Traps.
+ (line 10618)
+* traps, blank line: Blank Line Traps. (line 10778)
+* traps, diversion: Diversion Traps. (line 10663)
+* traps, end-of-input: End-of-input Traps.
+ (line 10806)
+* traps, input line: Input Line Traps. (line 10678)
+* traps, input line, and interrupted lines (itc): Input Line Traps.
+ (line 10704)
+* traps, leading space: Leading Space Traps.
+ (line 10788)
+* traps, page location: Page Location Traps.
+ (line 10420)
+* traps, page location, dumping (ptr): Debugging. (line 12162)
+* traps, page location, listing (ptr): Debugging. (line 12162)
+* traps, sprung by bp request (.pe): Page Location Traps.
+ (line 10598)
+* traps, vertical position: Vertical Position Traps.
+ (line 10399)
+* trf request, and copy mode: I/O. (line 11521)
+* trf request, and invalid characters: I/O. (line 11533)
+* trf request, causing implicit break: Manipulating Filling and Adjustment.
+ (line 5624)
+* trin request, and asciify: Diversions. (line 11120)
+* troff mode: troff and nroff Modes.
+ (line 6813)
+* troff output: gtroff Output. (line 12690)
+* truncated vertical space register (.trunc): Page Location Traps.
+ (line 10587)
+* truncating division: Numeric Expressions.
+ (line 4359)
+* TTY, conditional output for: Operators in Conditionals.
+ (line 9053)
+* tutorial for macro users: Tutorial for Macro Users.
+ (line 1046)
+* type size: Manipulating Type Size and Vertical Spacing.
+ (line 8438)
+* type size registers (.s, .ps): Changing the Type Size.
+ (line 8480)
+* type size registers, last-requested (.psr, .sr): Using Fractional Type Sizes.
+ (line 8638)
+* type sizes, changing (ps, \s): Changing the Type Size.
+ (line 8466)
+* type sizes, fractional: Using Fractional Type Sizes.
+ (line 8597)
+* type sizes, fractional <1>: Other Differences. (line 12587)
+* typeface: Using Fonts. (line 7280)
+* TZ, environment variable: Environment. (line 889)
+* u scaling unit: Measurements. (line 4245)
+* uf request, and font styles: Font Families. (line 7505)
+* ul glyph, and cflags: Using Symbols. (line 7882)
+* ul request, and font translations: Selecting Fonts. (line 7406)
+* Ultrix-specific man macros: Optional man extensions.
+ (line 1451)
+* unadjustable and unbreakable space (\<SP>): Page Motions. (line 9998)
+* unary arithmetic operators: Numeric Expressions.
+ (line 4365)
+* unbreakable and unadjustable space (\<SP>): Page Motions. (line 9998)
+* unbreakable space (\~): Manipulating Filling and Adjustment.
+ (line 5671)
+* undefined identifiers: Identifiers. (line 4656)
+* undefined request: Comments. (line 5150)
+* underline font (uf): Artificial Fonts. (line 8206)
+* underlining (ul): Artificial Fonts. (line 8180)
+* underlining, continuous (cu): Artificial Fonts. (line 8202)
+* unformatting diversions (asciify): Diversions. (line 11120)
+* unformatting horizontal space: Punning Names. (line 11246)
+* Unicode: Identifiers. (line 4581)
+* Unicode <1>: Using Symbols. (line 7810)
+* unit, scaling, c: Measurements. (line 4252)
+* unit, scaling, f: Colors. (line 8712)
+* unit, scaling, i: Measurements. (line 4249)
+* unit, scaling, m: Measurements. (line 4277)
+* unit, scaling, M: Measurements. (line 4287)
+* unit, scaling, n: Measurements. (line 4281)
+* unit, scaling, p: Measurements. (line 4255)
+* unit, scaling, P: Measurements. (line 4259)
+* unit, scaling, s: Using Fractional Type Sizes.
+ (line 8604)
+* unit, scaling, u: Measurements. (line 4245)
+* unit, scaling, v: Measurements. (line 4284)
+* unit, scaling, z: Using Fractional Type Sizes.
+ (line 8604)
+* units of measurement: Measurements. (line 4232)
+* units, basic: Page Geometry. (line 4169)
+* units, basic, conversion to: Measurements. (line 4239)
+* units, default: Default Units. (line 4318)
+* units, machine: Page Geometry. (line 4169)
+* unnamed glyphs: Using Symbols. (line 7820)
+* unnamed glyphs, accessing with \N: Font Description File Format.
+ (line 13639)
+* unsafe mode: Groff Options. (line 783)
+* unsafe mode <1>: Macro Directories. (line 910)
+* unsafe mode <2>: Built-in Registers.
+ (line 5555)
+* unsafe mode <3>: I/O. (line 11504)
+* unsafe mode <4>: I/O. (line 11616)
+* unsafe mode <5>: I/O. (line 11638)
+* unsafe mode <6>: I/O. (line 11677)
+* unstyled font: Using Fonts. (line 7280)
+* up-casing a string (stringup): Strings. (line 8945)
+* uppercasing a string (stringup): Strings. (line 8945)
+* upright glyph, correction after oblique glyph (\/): Italic Corrections.
+ (line 8328)
+* upright glyph, correction before oblique glyph (\,): Italic Corrections.
+ (line 8338)
+* URLs, breaking (\:): Manipulating Hyphenation.
+ (line 6008)
+* user's macro tutorial: Tutorial for Macro Users.
+ (line 1046)
+* user's tutorial for macros: Tutorial for Macro Users.
+ (line 1046)
+* using escape sequences: Using Escape Sequences.
+ (line 4942)
+* using symbols: Using Symbols. (line 7600)
+* UTF-8 output encoding: Groff Options. (line 751)
+* v scaling unit: Measurements. (line 4284)
+* valid numeric expression: Numeric Expressions.
+ (line 4522)
+* value, incrementing without changing the register: Auto-increment.
+ (line 5403)
+* variables in environment: Environment. (line 827)
+* vee: Page Geometry. (line 4202)
+* vee scaling unit (v): Measurements. (line 4284)
+* version number, major, register (.x): Built-in Registers.
+ (line 5559)
+* version number, minor, register (.y): Built-in Registers.
+ (line 5563)
+* vertical drawing position (nl): Page Control. (line 7240)
+* vertical line drawing (\L): Drawing Geometric Objects.
+ (line 10168)
+* vertical line spacing register (.v): Changing the Vertical Spacing.
+ (line 8543)
+* vertical line spacing, changing (vs): Changing the Vertical Spacing.
+ (line 8543)
+* vertical line spacing, effective value: Changing the Vertical Spacing.
+ (line 8558)
+* vertical motion (\v): Page Motions. (line 9938)
+* vertical motion quantum: DESC File Format. (line 13553)
+* vertical page location, marking (mk): Page Motions. (line 9868)
+* vertical page location, returning to marked (rt): Page Motions.
+ (line 9868)
+* vertical position in diversion register (.d): Diversions. (line 11000)
+* vertical position trap enable register (.vpt): Vertical Position Traps.
+ (line 10407)
+* vertical position traps: Vertical Position Traps.
+ (line 10399)
+* vertical position traps, enabling (vpt): Vertical Position Traps.
+ (line 10407)
+* vertical position, drawing (nl): Page Control. (line 7240)
+* vertical resolution: DESC File Format. (line 13553)
+* vertical space unit (v): Measurements. (line 4284)
+* vertical spacing: Page Geometry. (line 4202)
+* vertical spacing <1>: Manipulating Type Size and Vertical Spacing.
+ (line 8438)
+* vertical spacing (introduction): Basics. (line 1136)
+* warning categories: Warnings. (line 12250)
+* warning level (warn): Debugging. (line 12227)
+* warnings: Debugging. (line 12222)
+* warnings <1>: Warnings. (line 12241)
+* what is groff?: What Is groff?. (line 264)
+* while: while. (line 9327)
+* while request, and font translations: Selecting Fonts. (line 7406)
+* while request, and the ! operator: Numeric Expressions.
+ (line 4365)
+* while request, confusing with br: while. (line 9393)
+* while request, operators to use with: Operators in Conditionals.
+ (line 9027)
+* widow: Page Control. (line 7203)
+* widow <1>: Page Control. (line 7222)
+* width escape (\w): Page Motions. (line 10027)
+* width, of last glyph (.w): Environments. (line 11388)
+* word space size register (.ss): Manipulating Filling and Adjustment.
+ (line 5887)
+* word, definition of: Filling. (line 3581)
+* write request, and copy mode: I/O. (line 11683)
+* writec request, and copy mode: I/O. (line 11683)
+* writem request, and copy mode: I/O. (line 11697)
+* writing macros: Writing Macros. (line 9410)
+* writing to file (write, writec): I/O. (line 11683)
+* year, current, register (year, yr): Built-in Registers.
+ (line 5598)
+* z scaling unit: Using Fractional Type Sizes.
+ (line 8604)
+* zero-width printing (\z, \Z): Page Motions. (line 10102)
+* zero-width printing (\z, \Z) <1>: Page Motions. (line 10107)
+* zoom factor of a font (fzoom): Selecting Fonts. (line 7421)
+
diff --git a/doc/me-revisions b/doc/me-revisions
new file mode 100644
index 0000000..50913f9
--- /dev/null
+++ b/doc/me-revisions
@@ -0,0 +1,261 @@
+8.1 Sat Jun 5 14:06:23 1993 UTC bostic
+-- 4.4BSD snapshot (revision 8.1); add 1993 to copyright
+
+2.37 Sat Oct 26 22:29:25 1991 UTC eric
+-- have .rn (in @h) check to see that the temp macros are defined
+ first -- for SoftQuad troff, per Rick Adam's request
+
+2.36 Mon Oct 7 20:57:46 1991 UTC cael
+-- modify pathname
+
+2.35 Wed Apr 17 15:31:46 1991 UTC bostic
+-- new copyright; att/bsd/shared
+
+2.34 Sat Jun 2 18:30:49 1990 UTC karels
+-- reorg: move me library directory
+
+2.33 Wed Jan 4 10:54:00 1989 UTC karels
+-- don't use bold if \n(pf is >4 but not 8 (allow pf to be, eg, 5)
+
+2.32 Fri Sep 30 10:19:15 1988 UTC bostic
+-- update to new copyright notices
+
+2.31 Sat May 21 15:12:44 1988 UTC bostic
+-- don't strip copyright notice
+
+2.30 Thu May 19 17:21:40 1988 UTC bostic
+-- written by Eric Allman; add Berkeley specific header
+
+2.29 Fri Apr 22 10:48:37 1988 UTC karels
+-- allow .PS to support old or new pic (new uses units of inches)
+
+2.28 12 May 86
+-- Fix footnotes if no -rv flag specified
+
+2.27 17 Apr 86
+-- Assume non-C/A/T typesetters -- use -rv2 to get old function
+
+2.26 27 Mar 86
+-- Always go into fill mode in .sh; necessary to get output format
+ correct.
+
+2.25 3 Mar 86
+-- Drop basic unit scaling on .sz and .ps requests; this confuses some
+ versions of troff.
+
+2.24 7 Jan 86
+-- Merge ditroff and troff versions.
+-- Add support for pic, gremlin, and ideal.
+-- Add .lh macro to print a letterhead.
+-- Adjust .bi (bold italics) to be more device resolution independent.
+
+2.23 23 Jun 85
+-- Allow .]< to initialize refer macros (as well as .]-).
+
+2.22 27 Apr 85
+-- Fix incorrect comment strip in $p macro.
+-- Drop into fill mode in .TS so that text boxes will work properly.
+
+2.21 4 Mar 85
+-- Change \*- macro from \- to \(em in troff.
+-- Change block indent (\n(bi) from 4n to 4m to look better in troff.
+
+2.20 18 Feb 85
+-- Don't reset ii register in .bu or .np
+
+2.19 14 Feb 85
+-- add .bu and .sm macros (bullet and smaller).
+-- have .np take a fixed .ip width.
+
+2.18 14 Feb 85
+-- Avoid cut marks on laser printers.
+
+2.17 14 Feb 85
+-- Some bug fixes as reported from many places.
+
+2.16 11 Oct 84
+-- Improve some tracing.
+-- Minor improvements from rrh.
+
+2.15 10 Apr 83
+-- Fix a name conflict between .sh and floating keeps (as suggested
+ by Hy Murviet).
+
+2.14 28 Dec 81
+-- Integrate the refer macros into -me. This is basically a cheap
+ and dirty modification of the -ms version, and is probably not
+ terribly compatible with the usual -me standards. This can be
+ tuned later if needed.
+
+2.13 22 Dec 81
+-- Allow the -rb<x> flag to set the font you want for bold font --
+ set it to font <x>. Default 2 (italic) in nroff, 3 (bold) in
+ troff.
+
+2.12 20 Mar 81
+-- Remove silly "." at top of page on dumb terminals -- lpr is smarter
+ now.
+
+2.11 19 Mar 81
+-- Fixed indexes to indent on second line.
+
+2.10 26 Feb 81
+-- Improvement to nested index solution, now works for ()b & ()z.
+
+2.9 10 Dec 80
+-- More stuff to make indices inside keeps work correctly.
+
+2.8 10 Nov 80
+-- Had .)c do a .br to insure that the final line is forced out.
+
+2.7 24 Sep 80
+-- Fixed bug in 2.6
+
+2.6 23 Sep 80
+-- Fixed problem introduced by 2.2 which occurred in footnotes and
+ index entries in filled keeps
+
+2.5 29 Aug 80
+-- Changed umlaut to not be so tricky -- it seems to backfire.
+
+2.4 25 Aug 80
+-- Fixed bug in indices caused by 2.2.
+
+2.3 20 Aug 80
+-- Fixed bug in footnotes caused by 2.2.
+-- Changed temp file names that macros that do dynamic loading rename
+ themselves to. For example, if you say '.TS ... .(f' when both of
+ them have been used for the first time, the @T macro got used twice.
+
+2.2 18 Aug 80
+-- Suspended footnote & index processing until final output
+ (so that they will work properly in keeps).
+
+2.1 18 Aug 80
+-- Release 2. No changes.
+
+Mod 28 18 Aug 80
+-- If \nv is set on entry, handle .po differently (for vtroff).
+-- Allow ".nr fi 0".
+
+Mod 27 30 Jun 80
+-- Put in a cludge to try to make multi-columned output work
+ with wide floating keeps. Moves all wide keeps to the top
+ of the next real page.
+
+Mod 26 9 Nov 79
+-- Fixed footnote bug that caused the first line of footnotes
+ that were broken across a page to be indented.
+
+Mod 25 1 Oct 79
+-- Fixed footnote bug that caused footnotes invoked at the
+ top of pages to come out in bold font.
+-- Fixed equation bug that caused equations at the top of
+ page to be improperly centered.
+
+Mod 24 27 Sep 79
+-- Changed delimiter in all \w's to " from ', to allow for
+ apostrophes in labels.
+-- Increased footnote fudge factor.
+-- Changed \x factor in \*[ & \*< to be one half previous value.
+
+Mod 23 24 Aug 79
+-- Changed .ip to start new line if the tag is too long for
+ the space provided.
+
+Mod 22 11 Jul 79
+-- Changed .ac to handle new paper (with second parameter
+ == "*").
+
+Mod 21 24 Apr 79
+-- Changed \*[ and \*< to use \x -- to avoid line overlap.
+
+Mod 20 6 Apr 79
+-- Changed 12-pitch DTC terminals to still space 1/6 inch (instead
+ of 1/8 inch), unless the 'x' register is non-zero -- do-able with
+ the -rx1 option on the nroff command line.
+
+Mod 19 28 Mar 79
+-- Had .ep do a .rs, to avoid occasional problems (like with
+ .+c (again).
+-- Added the 'X' register: if non-zero on startup on a 12-pitch
+ terminal, it outputs 6 LPI instead of 8 LPI.
+
+Mod 18 26 Mar 79
+-- Had .+c reset indent, to solve problems of prelim material
+ after a .ip (as with references)
+
+Mod 17 19 Mar 79
+-- Fixed a bug in .++ which caused it to renumber pages incorrectly,
+ the result of nroff starting a new page immediately upon reaching
+ the end of the previous page (damn!).
+
+Mod 16 8 Mar 79
+-- Fixed a bug in .++ which caused it to change page number formats
+ before forcing out the page.
+-- Changed tmac.e so that extra '.so's to the package will next to
+ 'null.me'.
+-- Changed .sh so that a title of "_" will cause section depth change
+ side-effects only (base indent will remain the same, and no output
+ will occur).
+
+Mod 15a 7 Mar 79
+-- Fixed a bug in Mod 15 which caused .ip's to fail.
+
+Mod 15 2 Mar 79
+-- Changed .@p to do paragraph indents normally in keeps, which
+ will override the indent parameter in keeps with paragraph
+ forms in them (use .ba to fix this).
+
+Mod 14 23 Feb 79
+-- Fixed .ip so it would hyphenate correctly.
+
+Mod 13 16 Feb 79
+-- Added .rs before eqn title output to fix vertical centering
+ problem.
+
+Mod 12 15 Feb 79
+-- Changed NROFF bold font to be regular .ul (.cu is a pain).
+-- Changed .sh to output regular spaces instead of unpaddable
+ spaces.
+-- Fixed bug in .1c with bad line length (didn't reset \n($l).
+
+Mod 11 13 Feb 79
+-- Added hook to .$c to call .$C (for index entries or whatever).
+
+Mod 10 12 Feb 79
+-- Had .xp print in current environment and not reset to single
+ spacing, to allow more control over output format.
+
+Mod 9 26 Dec 78
+-- Fixed yet another problem with equation spacing.
+
+Mod 8 18 Dec 78
+-- Fixed .@q to solve a problem with \n(dn getting lost on
+ equations at top of page.
+
+Mod 7 11 Dec 78
+-- Had .@q (equation output) move to end of equation after
+ equation output (eqn doesn't seem to space quite right).
+
+Mod 6 27 Nov 78
+-- Fixed the umlaut on DTC output to be prettier.
+
+Mod 5 5 Nov 78
+-- Fixed a bug with the second parameter to .ip.
+
+Mod 4 2 Nov 78
+-- Added .uh command (unnumbered heading).
+-- Changed .$p and .sh accordingly.
+
+Mod 3 2 Oct 78
+-- Fixed .ne command in .$p (print section headings).
+
+Mod 2 25 Sep 78
+-- Changed .np to use () instead of [].
+
+Mod 1 12 Sep 78
+-- Fixed footnote fudge factor (curse NROFF!!)
+-- Put "needs" on .(z, .)z.
+
+Mod 0 11 Sep 78
diff --git a/doc/meintro.me.in b/doc/meintro.me.in
new file mode 100644
index 0000000..ac23ce6
--- /dev/null
+++ b/doc/meintro.me.in
@@ -0,0 +1,2266 @@
+.\" groff -me
+.\"
+.\" Copyright (c) 1986, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in
+.\" the documentation and/or other materials provided with the
+.\" distribution.
+.\" 3. [Deleted. See
+.\" ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
+.\" 4. Neither the name of the University nor the names of its
+.\" contributors may be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+.\" PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
+.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)intro.me 8.2 (Berkeley) 06/01/94
+.\"
+.\" Modified for groff by jjc@jclark.com.
+.\"UC 7
+.if t .ll 6.5i
+.if t .lt 6.5i
+.nr sx 0
+.ds MO @VERSION@
+.nr si 3n
+.he 'Using \f(BIgroff\fP and \f(BI\-me\fP''%'
+.\"eh 'USD:19-%''Writing Papers with NROFF using \-me'
+.\"oh 'Writing Papers with NROFF using \-me''USD:19-%'
+.ds U Unix
+.ds N \fInroff\fP
+.ds T \fItroff\fP
+.ds G \fIgroff\fP
+.ds UG groff\" upright "groff" for use in slanted contexts
+.+c
+.(l C
+.sz 14
+.b "Writing Papers with \f(BIgroff\fP using \f(BI\-me\fP"
+.sz
+.sp 2
+.ul
+Eric P. Allman
+.sp
+Project INGRES
+Electronics Research Laboratory
+University of California, Berkeley
+Berkeley, California 94720
+.sp 2
+.i "Modified for \fR\*(UG\fP by James Clark*"
+.(f
+* This document applies to the version of the \-me macros
+included with \*G version \*(MO.
+.)f
+.)l
+.sp 4
+.pp
+This document describes
+the text processing facilities
+available on \*U
+and other
+operating systems
+via \*G and the
+\-me
+macro package.
+It is assumed
+that the reader
+already is generally familiar
+with the \*U operating system
+and a text editor
+such as
+.i vi .
+This is intended to be a casual introduction,
+and
+as such not all material is covered.
+In particular,
+many variations and additional features
+of the \-me macro package
+are not explained.
+For a complete discussion of this
+and other issues,
+see
+the
+.q "\fIme\fP Reference Manual"
+and
+.i "groff: The GNU implementation of troff."
+.pp
+\*G, a computer program
+that runs on the \*U operating system,
+reads an input file
+prepared by the user
+and outputs a formatted paper
+suitable for publication or framing.
+The input consists of
+.i text ,
+or words to be printed,
+and
+.i requests ,
+which give instructions
+to the \*G program
+telling how to format the printed copy.
+.pp
+Section 1
+describes the basics
+of text processing.
+Section 2
+describes the basic requests.
+Section 3
+introduces displays.
+Annotations,
+such as footnotes,
+are handled in
+section 4.
+The more complex requests
+which are not discussed in section 2
+are covered in section 5.
+Finally,
+section 6
+discusses things you will need
+to know
+if you want to typeset documents.
+If you are a novice,
+you probably won't want to read beyond section 4
+until you have tried some of the basic features out.
+.pp
+When you have your raw text ready,
+call the \*G formatter by typing
+as a request to the \*U shell:
+.(b
+groff \-me \-T\c
+.i "type files"
+.)b
+where
+.i type
+describes the type of
+output device you are using.
+A complete description of options
+to the \*G command can be found in
+.i groff (1).
+.pp
+The word
+.i argument
+is used in this manual
+to mean a word or number
+which appears on the same line
+as a request
+which modifies the meaning
+of that request.
+For example,
+the request
+.(b
+\&.sp
+.)b
+spaces one line,
+but
+.(b
+\&.sp 4
+.)b
+spaces four lines.
+The number
+.b 4
+is an
+.i argument
+to the
+.b .sp
+request
+which says to space four lines
+instead of one.
+Arguments are separated from the request
+and from each other
+by spaces.
+.sh 1 "Basics of Text Processing"
+.pp
+The primary function
+of \*G
+is to
+.i collect
+words from input lines,
+.i fill
+output lines with those words,
+.i justify
+the right hand margin by inserting extra spaces
+in the line,
+and output the result.
+For example,
+the input:
+.(b
+Now is the time
+for all good men
+to come to the aid
+of their party.
+Four score and seven
+years ago,...
+.)b
+will be read,
+packed onto output lines,
+and justified
+to produce:
+.(b F
+Now is the time
+for all good men
+to come to the aid
+of their party.
+Four score and seven
+years ago,...
+.)b
+Sometimes you may want to start a new output line
+even though the line you are on
+is not yet full;
+for example,
+at the end of a paragraph.
+To do this
+you can cause a
+.i break ,
+which
+starts a new output line.
+Some requests
+cause a break automatically,
+as do blank input lines
+and input lines beginning with a space.
+.pp
+Not all input lines
+are text to be formatted.
+Some of the input lines
+are
+.i requests
+which describe
+how to format the text.
+Requests always have a period
+or an apostrophe
+(\c
+.q "\|\(aq\|" )
+as the first character
+of the input line.
+.pp
+The text formatter
+also does more complex things,
+such as automatically numbering pages,
+skipping over page folds,
+putting footnotes in the correct place,
+and so forth.
+.pp
+I can offer you a few hints
+for preparing text
+for input to \*G.
+First,
+keep the input lines short.
+Short input lines are easier to edit,
+and \*G will pack words onto longer lines
+for you anyhow.
+In keeping with this,
+it is helpful
+to begin a new line
+after every period,
+comma,
+or phrase,
+since common corrections
+are to add or delete sentences
+or phrases.
+Second,
+do not put spaces at the end of lines.
+Third,
+do not hyphenate words at the end of lines
+(except words that should have hyphens in them,
+such as
+.q mother-in-law );
+\*G is smart enough to hyphenate words
+for you as needed,
+but is not smart enough
+to take hyphens out
+and join a word back together.
+Also,
+words such as
+.q mother-in-law
+should not be broken
+over a line,
+since then you will get a space
+where not wanted,
+such as
+.tr @-
+.nh
+.q "mother@\ in@law" .
+.br
+.tr @@
+.hy 14
+.sh 1 "Basic Requests"
+.sh 2 "Paragraphs"
+.pp
+Paragraphs are begun
+by using the
+.b .pp
+request.
+For example,
+the input:
+.(b
+\&.pp
+Now is the time for all good men
+to come to the aid of their party.
+Four score and seven years ago,...
+.)b
+produces a blank line
+followed by an indented first line.
+The result is:
+.(b F
+.ti +\n(piu
+Now is the time for all good men
+to come to the aid of their party.
+Four score and seven years ago,...
+.)b
+.pp
+Notice that the sentences
+of the paragraphs
+.i "must not"
+begin with a space,
+since blank lines
+and lines beginning with spaces
+cause a break.
+For example,
+if I had typed:
+.(b
+\&.pp
+Now is the time for all good men
+ to come to the aid of their party.
+Four score and seven years ago,...
+.)b
+The output would be:
+.(b F
+.ti +\n(piu
+Now is the time for all good men
+ to come to the aid of their party.
+Four score and seven years ago,...
+.)b
+A new line begins after the word
+.q men
+because the second line began with a space character.
+.pp
+There are many
+fancier
+types of paragraphs,
+which will be described later.
+.sh 2 "Headers and Footers"
+.pp
+Arbitrary headers and footers
+can be put
+at the top and bottom
+of every page.
+Two requests
+of the form
+.b .he \ \c
+.i title
+and
+.b .fo \ \c
+.i title
+define the titles to put at the head and the foot
+of every page,
+respectively.
+The titles are called
+.i three-part
+titles,
+that is,
+there is a left-justified part,
+a centered part,
+and a right-justified part.
+To separate these three parts
+the first character of
+.i title
+(whatever it may be)
+is used as a delimiter.
+Any character may be used,
+but
+backslash
+and double quote marks
+should be avoided.
+The percent sign
+is replaced by the current page number
+whenever found in the title.
+For example,
+the input:
+.(b
+\&.he \(aq\(aq%\(aq\(aq
+\&.fo \(aqJane Jones\(aq\(aqMy Book\(aq
+.)b
+results in the page number
+centered at the top
+of each page,
+.q "Jane Jones"
+in the lower left corner,
+and
+.q "My Book"
+in the lower right corner.
+.sh 2 "Double Spacing"
+.pp
+.ls 2
+\*G will double space output text automatically if you
+use the request
+.b ".ls\ 2" ,
+as is done in this section.
+You can revert to single spaced mode
+by typing
+.b ".ls\ 1" .
+.ls 1
+.sh 2 "Page Layout"
+.pp
+A number of requests allow
+you to change the way the printed copy looks,
+sometimes called the
+.i layout
+of the output page.
+Most of these requests adjust the placing
+of
+.q "white space"
+(blank lines or spaces).
+In these explanations,
+characters in italics
+should be replaced with values you wish to use;
+bold characters
+represent characters which should actually be typed.
+.pp
+The
+.b .bp
+request
+starts a new page.
+.pp
+The request
+.b .sp \ \c
+.i N
+leaves
+.i N
+lines of blank space.
+.i N
+can be omitted
+(meaning skip a single line)
+or can be of the form
+.i N \^\c
+.b i
+(for
+.i N
+inches)
+or
+.i N \^\c
+.b c
+(for
+.i N
+centimeters).
+For example, the input:
+.(b
+\&.sp 1.5i
+My thoughts on the subject
+\&.sp
+.)b
+leaves one and a half inches of space,
+followed by the line
+.q "My thoughts on the subject" ,
+followed by a single blank line.
+.pp
+This request will not leave space at the top of a page.
+If you need the requested space to appear regardless of page position,
+use the
+.b .bl
+request, which has the same syntax as
+.b .sp
+but always leaves the requested space, even at the top of a page.
+.pp
+The
+.b .in \ \c
+.i +N
+request
+changes the amount of white space
+on the left of the page
+(the
+.i indent ).
+The argument
+.i N
+can be of the form
+.b + \c
+.i N
+(meaning leave
+.i N
+spaces more than you are already leaving),
+.b \- \c
+.i N
+(meaning leave less than you do now),
+or just
+.i N
+(meaning leave exactly
+.i N
+spaces).
+.i N
+can be of the form
+.i N \^\c
+.b i
+or
+.i N \^\c
+.b c
+also.
+For example,
+the input:
+.(b
+initial text
+\&.in 5
+some text
+\&.in +1i
+more text
+\&.in \-2c
+final text
+.)b
+produces
+.q "some text"
+indented exactly five spaces
+from the left margin,
+.q "more text"
+indented five spaces
+plus one inch
+from the left margin
+(fifteen spaces
+on a pica typewriter),
+and
+.q "final text"
+indented five spaces
+plus one inch
+minus two centimeters
+from the margin.
+That is,
+the output is:
+.(b
+initial text
+.in +5
+some text
+.in +1i
+more text
+.in -2c
+final text
+.)b
+.pp
+The
+.b .ti \ \c
+.i +N
+(temporary indent)
+request is used like
+.b .in \ \c
+.i +N
+when the indent
+should apply to one line only,
+after which it should revert
+to the previous indent.
+For example,
+the input:
+.(b
+\&.in 1i
+\&.ti 0
+Ware, James R. The Best of Confucius,
+Halcyon House, 1950.
+An excellent book containing translations of
+most of Confucius\(aq most delightful sayings.
+A definite must for anyone interested in the early
+foundations of Chinese philosophy.
+.)b
+produces:
+.in 1i+\n($iu
+.ti \n($iu
+Ware, James R. The Best of Confucius,
+Halcyon House, 1950.
+An excellent book containing translations of
+most of Confucius' most delightful sayings.
+A definite must for anyone interested in the early foundations
+of Chinese philosophy.
+.pp
+Text lines can be centered
+by using the
+.b .ce
+request.
+The line after the
+.b .ce
+is centered
+(horizontally)
+on the page.
+To center more than one line,
+use
+.b .ce \ \c
+.i N
+(where
+.i N
+is the number of lines to center),
+followed by the
+.i N
+lines.
+If you want to center many lines
+but don't want to count them,
+type:
+.(b
+\&.ce 1000
+lines to center
+\&.ce 0
+.)b
+The
+.b ".ce\ 0"
+request tells \*G to center zero more lines,
+in other words,
+stop centering.
+.pp
+All of these requests
+cause a break;
+that is,
+they always start
+a new line.
+If you want to start a new line
+without performing any other action,
+use
+.b .br .
+.sh 1 "Displays"
+.pp
+Displays are sections of text
+to be set off
+from the body of the paper.
+Major quotes,
+tables,
+and figures
+are types of displays,
+as are all the examples
+used in this document.
+All displays
+except centered blocks
+are output
+single spaced.
+.sh 2 "Major Quotes"
+.pp
+Major quotes
+are quotes which are several lines long,
+and hence are set in from the rest
+of the text
+without quote marks
+around them.
+These can be generated
+using the requests
+.b .(q
+and
+.b .)q
+to surround the quote.
+For example,
+the input:
+.(b
+As Weizenbaum points out:
+\&.(q
+It is said that to explain is to explain away.
+This maxim is nowhere so well fulfilled
+as in the areas of computer programming,...
+\&.)q
+.)b
+generates as output:
+.lp
+As Weizenbaum points out:
+.(q
+It is said that to explain is to explain away.
+This maxim is nowhere so well fulfilled
+as in the areas of computer programming,...
+.)q
+.sh 2 "Lists"
+.pp
+A
+.i list
+is an indented,
+single spaced,
+unfilled display.
+Lists should be used
+when the material to be printed
+should not be filled and justified
+like normal text,
+such as columns of figures
+or the examples used in this paper.
+Lists are surrounded
+by the requests
+.b .(l
+and
+.b .)l .
+For example,
+type:
+.(b
+Alternatives to avoid deadlock are:
+\&.(l
+Lock in a specified order
+Detect deadlock and back out one process
+Lock all resources needed before proceeding
+\&.)l
+.)b
+will produce:
+.br
+Alternatives to avoid deadlock are:
+.(l
+Lock in a specified order
+Detect deadlock and back out one process
+Lock all resources needed before proceeding
+.)l
+.sh 2 "Keeps"
+.pp
+A
+.i keep
+is a display of lines
+which are kept on a single page
+if possible.
+An example of where you would use a keep
+might be a diagram.
+Keeps differ from lists
+in that lists may be broken
+over a page boundary
+whereas keeps will not.
+.pp
+Blocks are the basic kind of keep.
+They begin with the request
+.b .(b
+and end with the request
+.b .)b .
+If there is not room on the current page
+for everything in the block,
+a new page is begun.
+This has the unpleasant effect
+of leaving blank space
+at the bottom of the page.
+When this is not appropriate,
+you can use the alternative,
+called
+.i "floating keeps" .
+.pp
+.i "Floating keeps"
+move relative to the text.
+Hence,
+they are good for things
+which will be referred to
+by name,
+such as
+.q "See figure 3" .
+A floating keep will appear
+at the bottom of the current page
+if it will fit;
+otherwise,
+it will appear at the top
+of the next page.
+Floating keeps begin with the line
+.b .(z
+and end with the line
+.b .)z .
+For an example of a floating keep,
+see figure 1.
+.(z
+.in 1i
+.xl -1i
+.hl
+\&.(z
+\&.hl
+Text of keep to be floated.
+\&.sp
+\&.ce
+Figure 1. Example of a Floating Keep.
+\&.hl
+\&.)z
+.sp
+.ce
+Figure 1. Example of a Floating Keep.
+.hl
+.)z
+The
+.b .hl
+request is used
+to draw a horizontal line
+so that the figure
+stands out from the text.
+.sh 2 "Fancier Displays"
+.pp
+Keeps and lists are normally collected in
+.i nofill
+mode,
+so that they are good for tables and such.
+If you want filling enabled in the display
+(for text),
+type
+.b ".(l\ F"
+(Throughout this section,
+comments applied to
+.b .(l
+also apply to
+.b .(b
+and
+.b .(z ).
+This kind of display
+will be indented from both margins.
+For example,
+the input:
+.(b
+\&.(l F
+And now boys and girls,
+a newer, bigger, better toy than ever before!
+Be the first on your block to have your own computer!
+Yes kids, you too can have one of these modern
+data processing devices.
+You too can produce beautifully formatted papers
+without even batting an eye!
+\&.)l
+.)b
+will be output as:
+.(b F
+And now boys and girls,
+a newer, bigger, better toy than ever before!
+Be the first on your block to have your own computer!
+Yes kids, you too can have one of these modern
+data processing devices.
+You too can produce beautifully formatted papers
+without even batting an eye!
+.)b
+.pp
+Lists and blocks are also normally indented
+(floating keeps are normally left justified).
+To get a left-justified list,
+type
+.b ".(l\ L" .
+To get a list centered
+line-for-line,
+type
+.b ".(l C" .
+For example,
+to get a filled,
+left justified list, enter:
+.(b
+\&.(l L F
+text of block
+\&.)l
+.)b
+The input:
+.(b
+\&.(l
+first line of unfilled display
+more lines
+\&.)l
+.)b
+produces the indented text:
+.(b
+first line of unfilled display
+more lines
+.)b
+Typing the character
+.b L
+after the
+.b .(l
+request produces the left justified result:
+.(b L
+first line of unfilled display
+more lines
+.)b
+Using
+.b C
+instead of
+.b L
+produces the line-at-a-time centered output:
+.(b C
+first line of unfilled display
+more lines
+.)b
+.pp
+Sometimes it may be
+that you want to center several lines
+as a group,
+rather than centering them
+one line at a time.
+To do this
+use centered blocks,
+which are surrounded by the requests
+.b .(c
+and
+.b .)c .
+All the lines are centered as a unit,
+such that the longest line is centered
+and the rest are
+lined up around that line.
+Notice that lines
+do not move
+relative to each other
+using centered blocks,
+whereas they do
+using the
+.b C
+argument to keeps.
+.pp
+Centered blocks are
+.i not
+keeps,
+and may be used
+in conjunction
+with keeps.
+For example,
+to center a group of lines
+as a unit
+and keep them
+on one page,
+use:
+.(b
+\&.(b L
+\&.(c
+first line of unfilled display
+more lines
+\&.)c
+\&.)b
+.)b
+.ne 1i
+to produce:
+.(b L
+.(c
+first line of unfilled display
+more lines
+.)c
+.)b
+If the block requests
+(\c
+.b .(b
+and
+.b .)b )
+had been omitted
+the result would have been the same,
+but with no guarantee
+that the lines of the centered block
+would have all been on one page.
+Note the use of the
+.b L
+argument to
+.b .(b ;
+this causes the centered block
+to center within the entire line
+rather than within the line
+minus the indent.
+Also,
+the center requests
+must
+be nested
+.i inside
+the keep requests.
+.sh 1 "Annotations"
+.pp
+There are a number of requests
+to save text
+for later printing.
+.i Footnotes
+are printed at the bottom of the current page.
+.i "Delayed text"
+is intended to be a variant form
+of footnote;
+the text is printed only
+when explicitly called for,
+such as at the end of each chapter.
+.i Indexes
+are a type of delayed text
+having a tag
+(usually the page number)
+attached to each entry
+after a row of dots.
+Indexes are also saved
+until called for explicitly.
+.sh 2 "Footnotes"
+.pp
+Footnotes begin with the request
+.b .(f
+and end with the request
+.b .)f .
+The current footnote number is maintained
+automatically,
+and can be used by typing \e**,
+to produce a footnote number\**.
+.(f
+\** Like this.
+.)f
+The number is automatically incremented
+after every footnote.
+For example,
+the input:
+.(b
+\&.(q
+A man who is not upright
+and at the same time is presumptuous;
+one who is not diligent and at the same time is ignorant;
+one who is untruthful and at the same time is incompetent;
+such men I do not count among acquaintances.\e**
+\&.(f
+\e** James R. Ware,
+\&.ul
+The Best of Confucius,
+Halcyon House, 1950.
+Page 77.
+\&.)f
+\&.)q
+.)b
+generates the result:
+.(q
+A man who is not upright
+and at the same time is presumptuous;
+one who is not diligent and at the same time is ignorant;
+one who is untruthful and at the same time is incompetent;
+such men I do not count among acquaintances.\**
+.(f
+\** James R. Ware,
+.ul
+The Best of Confucius,
+Halcyon House, 1950.
+Page 77.
+.)f
+.)q
+It is important
+that the footnote
+appears
+.i inside
+the quote,
+so that you can be sure
+that the footnote
+will appear
+on the same page
+as the quote.
+.sh 2 "Delayed Text"
+.pp
+Delayed text
+is very similar to a footnote
+except that it is printed
+when called for explicitly.
+This allows a list of
+references to
+appear
+(for example)
+at the end of each chapter,
+as is the convention in some disciplines.
+Use
+.b \e*#
+on delayed text
+instead of
+.b \e**
+as on footnotes.
+.pp
+If you are using delayed text
+as your standard reference mechanism,
+you can still use footnotes,
+except that you may want to reference them
+with special characters*
+.(f
+*Such as an asterisk.
+.)f
+rather than numbers.
+.sh 2 "Indexes"
+.pp
+An
+.q index
+(actually more like a table of contents,
+since the entries are not sorted alphabetically)
+resembles delayed text,
+in that it is saved until called for.
+However,
+each entry has the page number
+(or some other tag)
+appended to the last line
+of the index entry
+after a row of dots.
+.pp
+Index entries begin with the request
+.b .(x
+and end with
+.b .)x .
+The
+.b .)x
+request may have a argument,
+which is the value to print
+as the
+.q "page number" .
+It defaults to the current page number.
+If the page number given is an underscore
+(\c
+.q _ )
+no page number
+or line of dots
+is printed at all.
+To get the line of dots
+without a page number,
+type
+.b ".)x """"" ,
+which specifies an explicitly null page number.
+.pp
+The
+.b .xp
+request prints the index.
+.pp
+For example,
+the input:
+.(b
+\&.(x
+Sealing wax
+\&.)x
+\&.(x
+Cabbages and kings
+\&.)x _
+\&.(x
+Why the sea is boiling hot
+\&.)x 2.5a
+\&.(x
+Whether pigs have wings
+\&.)x ""
+\&.(x
+This is a terribly long index entry, such as might be used
+for a list of illustrations, tables, or figures; I expect it to
+take at least two lines.
+\&.)x
+\&.xp
+.)b
+generates:
+.(x
+Sealing wax
+.)x
+.(x
+Cabbages and kings
+.)x _
+.(x
+Why the sea is boiling hot
+.)x 2.5a
+.(x
+Whether pigs have wings
+.)x ""
+.(x
+This is a terribly long index entry, such as might be used
+for a list of illustrations, tables, or figures; I expect it to
+take at least two lines.
+.)x
+.xp
+.pp
+The
+.b .(x
+request may have a single character
+argument,
+specifying the
+.q name
+of the index;
+the normal index is
+.b x .
+Thus,
+several
+.q indices
+may be maintained simultaneously
+(such as a list of tables, table of contents, etc.).
+.pp
+Notice that the index must be printed
+at the
+.i end
+of the paper,
+rather than at the beginning
+where it will probably appear
+(as a table of contents);
+the pages may have to be physically rearranged
+after printing.
+.sh 1 "Fancier Features"
+.pp
+A large number of fancier requests
+exist,
+notably requests to provide other sorts of paragraphs,
+numbered sections of the form
+.b 1.2.3
+(such as used in this document),
+and multicolumn output.
+.sh 2 "More Paragraphs"
+.pp
+Paragraphs generally start with
+a blank line
+and with the first line
+indented.
+It is possible to get
+left-justified block-style paragraphs
+by using
+.b .lp
+instead of
+.b .pp ,
+as demonstrated by the next paragraph.
+.lp
+Sometimes you want to use paragraphs
+that have the
+.i body
+indented,
+and the first line
+exdented
+(opposite of indented)
+with a label.
+This can be done with the
+.b .ip
+request.
+A word specified on the same line as
+.b .ip
+is printed in the margin,
+and the body is lined up
+at a prespecified position
+.ne 1i
+(normally five spaces).
+For example,
+the input:
+.(b
+\&.ip one
+This is the first paragraph.
+Notice how the first line
+of the resulting paragraph lines up
+with the other lines in the paragraph.
+\&.ip two
+And here we are at the second paragraph already.
+You may notice that the argument to \c
+.b .ip
+appears
+in the margin.
+\&.lp
+We can continue text...
+.)b
+produces as output:
+.ip one
+This is the first paragraph.
+Notice how the first line of the resulting paragraph lines up
+with the other lines in the paragraph.
+.ip two
+And here we are at the second paragraph already.
+You may notice that the argument to
+.b .ip
+appears
+in the margin.
+.lp
+We can continue text without starting a new indented
+paragraph
+by using the
+.b .lp
+request.
+.pp
+If you have spaces in the label of a
+.b .ip
+request,
+you must use an
+.q "unpaddable space"
+instead of a regular space.
+This is typed as a backslash character
+(\c
+.q \e )
+followed by a space.
+For example,
+to print the label
+.q "Part 1" ,
+enter:
+.(b
+\&.ip "Part\e 1"
+.)b
+.pp
+If a label of an indented paragraph
+(that is, the argument to
+.b .ip )
+is longer than the space allocated for the label,
+.b .ip
+will begin a new line after the label.
+For example,
+the input:
+.(b
+\&.ip longlabel
+This paragraph had a long label.
+The first character of text on the first line
+will not line up with the text on second and subsequent lines,
+although they will line up with each other.
+.)b
+will produce:
+.ip longlabel
+This paragraph had a long label.
+The first character of text on the first line
+will not line up with the text on second and subsequent lines,
+although they will line up with each other.
+.pp
+It is possible to change the size of the label
+by using a second argument
+which is the size of the label.
+For example,
+the above example could be done correctly
+by saying:
+.(b
+\&.ip longlabel 10
+.)b
+which will make the paragraph indent
+10 spaces for this paragraph only.
+If you have many paragraphs to indent
+all the same amount,
+alter the value of the
+.i register
+.b ii .
+For example, to leave one inch of space
+for the label,
+type:
+.(b
+\&.nr ii 1i
+.)b
+somewhere before the first call to
+.b .ip .
+Refer to the reference manual
+for more information.
+.pp
+If
+.b .ip
+is used
+with no argument at all
+no hanging tag will be printed.
+For example,
+the input:
+.(b
+\&.ip [a]
+This is the first paragraph of the example.
+We have seen this sort of example before.
+\&.ip
+This paragraph is lined up with the previous paragraph,
+but it has no tag in the margin.
+.)b
+produces as output:
+.ip [a]
+This is the first paragraph of the example.
+We have seen this sort of example before.
+.ip
+This paragraph is lined up with the previous paragraph,
+but it has no tag in the margin.
+.pp
+A special case of
+.b .ip
+is
+.b .np ,
+which automatically
+numbers paragraphs sequentially from 1.
+The numbering is reset at the next
+.b .pp ,
+.b .lp ,
+or
+.b .sh
+(to be described in the next section)
+request.
+For example,
+the input:
+.(b
+\&.np
+This is the first point.
+\&.np
+This is the second point.
+Points are just regular paragraphs
+which are given sequence numbers automatically
+by the \&.np request.
+\&.pp
+This paragraph will reset numbering by \&.np.
+\&.np
+For example,
+we have reverted to numbering from one now.
+.)b
+generates:
+.np
+This is the first point.
+.np
+This is the second point.
+Points are just regular paragraphs
+which are given sequence numbers automatically
+by the \&.np request.
+.pp
+This paragraph will reset numbering by \&.np.
+.np
+For example,
+we have reverted to numbering from one now.
+.pp
+The
+.b .bu
+request gives lists of this sort that are identified with
+bullets rather than numbers.
+The paragraphs are also crunched together.
+For example,
+the input:
+.(b
+\&.bu
+\&One egg yolk
+\&.bu
+\&One tablespoon cream or top milk
+\&.bu
+\&Salt, cayenne, and lemon juice to taste
+\&.bu
+\&A generous two tablespoonfuls of butter
+.)b
+produces\**:
+.(f
+\** By the way,
+if you put the first three ingredients in a a heavy, deep pan
+and whisk the ingredients madly over a medium flame
+(never taking your hand off the handle of the pot)
+until the mixture reaches the consistency of custard
+(just a minute or two),
+then mix in the butter off-heat,
+you will have a wonderful Hollandaise sauce.
+.)f
+.bu
+One egg yolk
+.bu
+One tablespoon cream or top milk
+.bu
+Salt, cayenne, and lemon juice to taste
+.bu
+A generous two tablespoonfuls of butter
+.sh 2 "Section Headings"
+.pp
+Section numbers
+(such as the ones used in this document)
+can be automatically generated
+using the
+.b .sh
+request.
+You must tell
+.b .sh
+the
+.i depth
+of the section number
+and a section title.
+The depth
+specifies how many numbers
+are to appear
+(separated by decimal points)
+in the section number.
+For example,
+the section number
+.b 4.2.5
+has a depth of three.
+.pp
+Section numbers
+are incremented
+in a fairly intuitive fashion.
+If you add a number
+(increase the depth),
+the new number starts out
+at one.
+If you subtract section numbers
+(or keep the same number)
+the final number is incremented.
+For example,
+the input:
+.(b
+\&.sh 1 "The Preprocessor"
+\&.sh 2 "Basic Concepts"
+\&.sh 2 "Control Inputs"
+\&.sh 3
+\&.sh 3
+\&.sh 1 "Code Generation"
+\&.sh 3
+.)b
+produces as output the result:
+.(b
+.b
+1. The Preprocessor
+1.1. Basic Concepts
+1.2. Control Inputs
+1.2.1.
+1.2.2.
+2. Code Generation
+2.1.1.
+.)b
+.pp
+You can specify the section number to begin
+by placing the section number after the section title,
+using spaces instead of dots.
+For example,
+the request:
+.(b
+\&.sh 3 "Another section" 7 3 4
+.)b
+will begin the section numbered
+.b 7.3.4 ;
+all subsequent
+.b .sh
+requests will number relative to this number.
+.pp
+There are more complex features
+which will cause each section to be indented
+proportionally to the depth of the section.
+For example, if you enter:
+.(b
+\&.nr si \c
+.i N
+.)b
+each section will be indented by an amount
+.i N .
+.i N
+must have a scaling factor attached,
+that is, it must be of the form
+.i Nx ,
+where
+.i x
+is a character telling what units
+.i N
+is in.
+Common values for
+.i x
+are
+.b i
+for inches,
+.b c
+for centimeters,
+and
+.b n
+for
+.i ens
+(the width of a single character).
+For example,
+to indent each section
+one-half inch,
+type:
+.(b
+\&.nr si 0.5i
+.)b
+After this,
+sections will be indented by
+one-half inch
+per level of depth in the section number.
+For example,
+this document was produced
+using the request
+.(b
+\&.nr si 3n
+.)b
+at the beginning of the input file,
+giving three spaces of indent
+per section depth.
+.pp
+Section headers without automatically generated numbers
+can be done using:
+.(b
+\&.uh "Title"
+.)b
+which will do a section heading,
+but will put no number on the section.
+.sh 2 "Parts of the Basic Paper"
+.pp
+There are some requests
+which assist in setting up
+papers.
+The
+.b .tp
+request
+initializes for a title page.
+There are no headers or footers
+on a title page,
+and unlike other pages
+you can space down
+and leave blank space
+at the top.
+For example,
+a typical title page might appear as:
+.(b
+\&.tp
+\&.sp 2i
+\&.(l C
+THE GROWTH OF TOENAILS
+IN UPPER PRIMATES
+\&.sp
+by
+\&.sp
+Frank N. Furter
+\&.)l
+\&.bp
+.)b
+.pp
+The
+.b .+c \ \c
+.i T
+request can be used
+to start chapters.
+Each chapter is automatically numbered
+from one,
+and a heading is printed at the top of each chapter
+with the chapter number
+and the chapter name
+.i T .
+For example,
+to begin a chapter called
+.q Conclusions ,
+use the request:
+.(b
+\&.+c "CONCLUSIONS"
+.)b
+which will produce,
+on a new page,
+the lines
+.(b C
+Chapter 5
+CONCLUSIONS
+.)b
+with appropriate spacing for a thesis.
+Also, the header is moved to the foot of the page
+on the first page of a chapter.
+Although the
+.b .+c
+request was not designed to work only with the
+.b .th
+request,
+it is tuned for the format acceptable
+for a PhD thesis
+at Berkeley.
+.pp
+If the
+title parameter
+.i T
+is omitted from the
+.b .+c
+request,
+the result is a chapter with no heading.
+This can also be used at the beginning
+of a paper;
+for example,
+.b .+c
+was used to generate page one
+of this document.
+.pp
+Although
+papers traditionally have the abstract,
+table of contents,
+and so forth at the front of the paper,
+it is more convenient to format
+and print them last
+when using \*G.
+This is so that index entries
+can be collected and then printed
+for the table of contents
+(or whatever).
+At the end of the paper,
+issue the
+.b ".++ P"
+request,
+which begins the preliminary part
+of the paper.
+After issuing this request,
+the
+.b .+c
+request will begin a preliminary section
+of the paper.
+Most notably,
+this prints the page number
+restarted from one
+in lower case Roman numbers.
+.b .+c
+may be used repeatedly
+to begin different parts of the
+front material
+for example,
+the abstract,
+the table of contents,
+acknowledgments,
+list of illustrations,
+etc.
+The request
+.b ".++ B"
+may also be used
+to begin the bibliographic section
+at the end of the paper.
+For example,
+the paper might appear
+as outlined in figure 2.
+(In this figure,
+comments begin with the sequence
+.b \e" .)
+.(z
+.hl
+.if t .in 0.5i
+.if t .ta 2i
+.if n .ta 3i
+\&.th \e" set for thesis mode
+\&.fo \(aq\(aqDRAFT\(aq\(aq \e" define footer for each page
+\&.tp \e" begin title page
+\&.(l C \e" center a large block
+THE GROWTH OF TOENAILS
+IN UPPER PRIMATES
+\&.sp
+by
+\&.sp
+Frank Furter
+\&.)l \e" end centered part
+\&.+c INTRODUCTION \e" begin chapter named "INTRODUCTION"
+\&.(x t \e" make an entry into index `t'
+Introduction
+\&.)x \e" end of index entry
+text of chapter one
+\&.+c "NEXT CHAPTER" \e" begin another chapter
+\&.(x t \e" enter into index `t' again
+Next Chapter
+\&.)x
+text of chapter two
+\&.+c CONCLUSIONS
+\&.(x t
+Conclusions
+\&.)x
+text of chapter three
+\&.++ B \e" begin bibliographic information
+\&.+c BIBLIOGRAPHY \e" begin another `chapter'
+\&.(x t
+Bibliography
+\&.)x
+text of bibliography
+\&.++ P \e" begin preliminary material
+\&.+c "TABLE OF CONTENTS"
+\&.xp t \e" print index `t' collected above
+\&.+c PREFACE \e" begin another preliminary section
+text of preface
+.sp 2
+.in 0
+.ce
+Figure 2. Outline of a Sample Paper
+.hl
+.)z
+.sh 2 "Equations and Tables"
+.pp
+Two special \*U programs exist
+to format special types of material.
+.b Eqn
+sets equations.
+.b Tbl
+arranges to print
+extremely pretty tables
+in a variety of formats.
+This document will only describe
+the embellishments
+to the standard features;
+consult the reference manuals
+for those processors
+for a description of their use.
+.pp
+The
+.b eqn
+program is described fully
+in the document
+.ul
+Typesetting Mathematics \- User's Guide
+by Brian W. Kernighan
+and Lorinda L. Cherry.
+Equations are centered,
+and are kept on one page.
+They are introduced by the
+.b .EQ
+request and terminated by the
+.b .EN
+request.
+.pp
+The
+.b .EQ
+request may take an
+equation number as an
+optional argument,
+which is printed vertically centered
+on the right hand side
+of the equation.
+If the equation becomes too long
+it should be split
+between two lines.
+To do this, type:
+.(b
+\&.EQ (eq 34)
+text of equation 34
+\&.EN C
+\&.EQ
+continuation of equation 34
+\&.EN
+.)b
+The
+.b C
+on the
+.b .EN
+request
+specifies that the equation
+will be continued.
+.pp
+The
+.b tbl
+program produces tables.
+It is fully described
+(including numerous examples)
+in the document
+.ul
+Tbl \- A Program to Format Tables
+by M. E. Lesk.
+Tables begin with the
+.b .TS
+request
+and end with the
+.b .TE
+request.
+Tables are normally kept on a single page.
+If you have a table which is too big
+to fit on a single page,
+so that you know it will extend
+to several pages,
+begin the table with the request
+.b ".TS\ H"
+and put the request
+.b .TH
+after the part of the table
+which you want
+duplicated at the top of every page
+that the table is printed on.
+For example, a table definition
+for a long table might look like:
+.ds TA \|\h'.4n'\v'-.2n'\s-4\zT\s0\v'.2n'\h'-.4n'\(ci\|
+.if n .ds TA \ \o'-T'\ \"
+.(b
+\&.TS H
+c s s
+n n n.
+THE TABLE TITLE
+\&.TH
+text of the table
+\&.TE
+.)b
+.sh 2 "Two Column Output"
+.pp
+You can get two-column output
+automatically
+by using the request
+.b .2c .
+This causes everything after it
+to be output in two-column form.
+The request
+.b .bc
+will start a new column;
+it differs from
+.b .bp
+in that
+.b .bp
+may leave a totally blank column
+when it starts a new page.
+To revert to single-column output,
+use
+.b .1c .
+.sh 2 "Defining Macros"
+.pp
+A
+.i macro
+is a collection of requests and text
+which may be used
+by stating a simple request.
+Macros begin with the line
+.b ".de" \ \c
+.i xx
+(where
+.i xx
+is the name of the macro to be defined)
+and end with the line consisting of two dots.
+After defining the macro,
+stating the line
+.b . \c
+.i xx
+is the same as stating all the other lines.
+For example,
+to define a macro
+that spaces 3 lines
+and then centers the next input line,
+enter:
+.(b
+\&.de SS
+\&.sp 3
+\&.ce
+\&..
+.)b
+and use it by typing:
+.(b
+\&.SS
+\&Title Line
+(beginning of text)
+.)b
+.pp
+Macro names may be one or two characters.
+In order to avoid conflicts
+with names in \-me,
+always use upper case letters as names.
+The only names to avoid are
+.b TS ,
+.b TH ,
+.b TE ,
+.b EQ ,
+and
+.b EN .
+.sh 2 "Annotations Inside Keeps"
+.pp
+Sometimes you may want to put
+a footnote
+or index entry inside a keep.
+For example,
+if you want to maintain a
+.q "list of figures"
+you will want to do something like:
+.(b
+\&.(z
+\&.(c
+text of figure
+\&.)c
+\&.ce
+Figure 5.
+\&.(x f
+Figure 5
+\&.)x
+\&.)z
+.)b
+which you may hope
+will give you a figure
+with a label
+and an entry in the index
+.b f
+(presumably a list of figures index).
+Unfortunately,
+the
+index entry
+is read and interpreted
+when the keep is read,
+not when it is printed,
+so the page number in the index is likely to be wrong.
+The solution is to use the magic string
+.b \e!
+at the beginning of all the lines dealing with the index.
+In other words,
+you should use:
+.(b
+\&.(z
+\&.(c
+Text of figure
+\&.)c
+\&.ce
+Figure 5.
+\e!.(x f
+\e!Figure 5
+\e!.)x
+\&.)z
+.)b
+which will defer the processing of the index
+until the figure is output.
+This will guarantee
+that the page number in the index
+is correct.
+The same comments apply
+to
+blocks
+(with
+.b .(b
+and
+.b .)b )
+as well.
+.sh 1 "\*T and the Photosetter"
+.pp
+With a little care,
+you can prepare
+documents that
+will print nicely
+on either a regular terminal
+or when phototypeset
+using the \*T formatting program.
+.sh 2 "Fonts"
+.pp
+A
+.i font
+is a style of type.
+There are three fonts
+that are available simultaneously,
+Times Roman,
+Times Italic,
+and Times Bold,
+plus the special math font.
+The normal font is Roman.
+.pp
+There are ways of switching between fonts.
+The requests
+.b .r ,
+.b .i ,
+.b .b ,
+and
+.b .bi
+switch to Roman,
+italic,
+bold,
+and bold-italic fonts respectively.
+You can set a single word
+in some font
+by typing (for example):
+.(b
+\&.i word
+.)b
+which will set
+.i word
+in italics
+but does not affect the surrounding text.
+.pp
+Notice that if you are setting more than one word
+in whatever font,
+you must surround that word with double quote marks
+(`\|"\|')
+so that it will appear to the \*G processor as a single word.
+The quote marks will not appear in the formatted text.
+If you do want a quote mark to appear,
+you should quote the entire string
+(even if a single word),
+and use
+.i two
+quote marks where you want one to appear.
+For example,
+if you want to produce the text:
+.(b
+.i """Master Control\|"""
+.)b
+in italics, you must type:
+.(b
+\&.i """Master Control\e|"""
+.)b
+The
+.b \e|
+produces a thin space
+so that the
+.q l
+does not overlap the quote sign in \*G,
+like this:
+.(b
+.i """Master Control"""
+.)b
+.pp
+There are also some
+.q pseudo-fonts
+available.
+The input:
+.(b
+\&.(b
+\&.u underlined
+\&.bx "words in a box"
+\&.)b
+.)b
+generates
+.(b
+.u underlined
+.bx "words in a box"
+.)b
+Notice that pseudo font requests
+set only the single parameter in the pseudo font;
+ordinary font requests will begin setting all text
+in the special font
+if you do not provide a parameter.
+No more than one word
+should appear
+with these three font requests
+in the middle of lines.
+This is because
+of the way \*G justifies text.
+For example,
+if you were to issue the requests:
+.(b
+\&.u "some underlined words"
+and
+\&.bx "words in a box"
+.)b
+in the middle of a line
+\*G would produce
+.u "some underlined words"
+and
+.bx "words in a box" ,\p
+which I think you will agree does not look good.
+.pp
+The second parameter
+of all font requests
+is set in the original font.
+For example,
+the font request:
+.(b
+\&.b bold face
+.)b
+generates
+.q bold
+in bold font,
+but sets
+.q face
+in the font of the surrounding text,
+resulting in:
+.(b
+.b bold face.
+.)b
+To set the two words
+.b bold
+and
+.b face
+both in
+.b "bold face" ,
+type:
+.(b
+\&.b "bold face"
+.)b
+.pp
+You can mix fonts in a word by using the
+special sequence
+.b \ec
+at the end of a line
+to indicate
+.q "continue text processing" ;
+this allows input lines
+to be joined together
+without a space between them.
+For example, the input:
+.(b
+\&.u under \ec
+\&.i italics
+.)b
+generates
+.u under \c
+.i italics ,
+but if we had typed:
+.(b
+\&.u under
+\&.i italics
+.)b
+the result would have been
+.u under
+.i italics
+as two words.
+.sh 2 "Point Sizes"
+.pp
+The phototypesetter
+supports different sizes of type,
+measured in points.
+The default point size
+is 10 points
+for most text,
+8 points for footnotes.
+To change the point size,
+type:
+.(b
+\&.sz \c
+.i +N
+.)b
+where
+.i N
+is the size wanted in points.
+The
+.i "vertical spacing"
+(distance between the bottom of most letters
+(the
+.i baseline )
+between adjacent lines)
+is set to be proportional
+to the type size.
+.pp
+These point-size changes are
+.i temporary !!!
+For example,
+to reset the point size of basic text to twelve point, use:
+.(b
+\&.nr pp 12
+\&.nr sp 12
+\&.nr tp 12
+.)b
+to reset the default point size of
+paragraphs,
+section headers,
+and titles respectively.
+If you only want to set the names of sections in a larger point size,
+use:
+.(b
+\&.nr sp 11
+.)b
+alone \*- this sets section titles
+(e.g.,
+.b "Point Sizes"
+above)
+in a larger font than the default.
+.pp
+A single word or phrase can be set in a smaller point size
+than the surrounding text
+using the
+.b .sm
+request.
+This is especially convenient for words that are all capitals,
+due to the optical illusion that makes them look even larger
+than they actually are.
+For example:
+.(b
+\&.sm UNIX
+.)b
+prints as
+.sm UNIX
+rather than
+UNIX.
+.\" Dave Kemper notes that the following probably has not been true
+.\" since 1986; keeping (but commented) for historical interest.
+.\" .pp
+.\" Warning:
+.\" changing point sizes
+.\" on the phototypesetter
+.\" is a slow mechanical operation.
+.\" On laser printers it may require loading new fonts.
+.\" Size changes
+.\" .ne 1i
+.\" should be considered carefully.
+.sh 2 "Quotes"
+.pp
+It is conventional when using
+the typesetter to
+use pairs of grave and acute accents
+to generate double quotes,
+rather than the
+double quote character
+(`\|"\|').
+This is because it looks better
+to use grave and acute accents;
+for example, compare
+"quote" to
+``quote''.
+.pp
+You may use the sequences
+.b \e*(lq
+and
+.b \e*(rq
+to stand for the left and right quote
+respectively.
+For example,
+use:
+.(b
+\e*(lqSome things aren\(aqt true
+even if they did happen.\e*(rq
+.)b
+to generate the result:
+.(b
+.q "Some things aren't true even if they did happen."
+.)b
+As a shorthand,
+the special font request:
+.(b
+\&.q "quoted text"
+.)b
+will generate
+.q "quoted text" .
+Notice that you must surround
+the material to be quoted
+with double quote marks
+if it is more than one word.
+.sx 0
+.uh Acknowledgments
+.pp
+I would like to thank
+Bob Epstein,
+Bill Joy,
+and Larry Rowe
+for having the courage
+to use the \-me macros
+to produce non-trivial papers
+during the development stages;
+Ricki Blau,
+Pamela Humphrey,
+and Jim Joyce
+for their help with the documentation phase;
+peter kessler
+for numerous complaints years after I was
+.q done
+with this project,
+most accompanied by fixes
+(hence forcing me to fix several small bugs);
+and the plethora of people who have contributed ideas
+and have given support for the project.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/doc/meintro_fr.me.in b/doc/meintro_fr.me.in
new file mode 100644
index 0000000..4c49586
--- /dev/null
+++ b/doc/meintro_fr.me.in
@@ -0,0 +1,2374 @@
+.\" groff -kt -me -mfr
+.\"
+.\" Copyright (c) 1986, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in
+.\" the documentation and/or other materials provided with the
+.\" distribution.
+.\" 3. [Deleted. See
+.\" ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
+.\" 4. Neither the name of the University nor the names of its
+.\" contributors may be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+.\" PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
+.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)intro.me 8.2 (Berkeley) 06/01/94
+.\"
+.\" Modified for groff by jjc@jclark.com.
+.\"
+.\" Translated to French by Grégoire Babey <gibux@gmx.ch>
+.\"UC 7
+.if t .ll 6.5i
+.if t .lt 6.5i
+.nr sx 0
+.ds MO @VERSION@
+.nr si 3n
+.he '\f(BIgroff\fP en option \f(BI\-me\fP''%'
+.\"eh 'USD:19-%''Writing Papers with NROFF using \-me'
+.\"oh 'Writing Papers with NROFF using \-me''USD:19-%'
+.ds U Unix
+.ds N \fInroff\fP
+.ds T \fItroff\fP
+.ds G \fIgroff\fP
+.ds UG groff\" upright "groff" for use in slanted contexts
+.+c
+.(l C
+.sz 14
+.b "Rédiger des documents avec \f(BIgroff \-me\fP"
+.sz
+.sp 2
+.ul
+Eric P. Allman
+.sp
+Projet INGRES
+Electronics Research Laboratory
+University of California, Berkeley
+Berkeley, California 94720
+.sp 2
+.i "Modifié pour \fR\*(UG\fP par James Clark*"
+.(f
+* Ce document a été
+.i \*(UG\fRé \" defeat italic correction
+le 27 octobre 2001 et s'applique à la version des macros \-me
+inclus dans la version \*(MO de \*G.
+.)f
+.sp 2
+.i "Adapté au français par Grégoire Babey\(dg"
+.(f
+\(dg La traduction française a été
+.i \*(UG\fRée \" defeat italic correction
+le 20 octobre 2013,
+toutes les commandes ont été testées sur la version 1.21 de \*G.
+.)f
+.)l
+.sp 2
+.pp
+Ce document décrit les outils de traitement de texte
+sur un système \*U
+et autres systèmes d'exploitation
+fournis par \*G
+et le
+paquet de macros
+\-me.
+Il présuppose que le lecteur
+est déjà familiarisé avec les systèmes \*U
+et un éditeur de texte
+(tel que par exemple
+.i vi ).
+Son intention est d'être une introduction
+simple et concrète, et par conséquent,
+il ne traitera pas toute la matière disponible.
+En particulier,
+de nombreuses variantes et fonctionnalités supplémentaires
+du paquet de macros \-me ne seront pas décrites.
+Pour une discussion plus complète de telle ou telle fonctionnalité,
+voyez
+.q "\fIme\fP Reference Manual"
+et
+.i "groff: The GNU implementation of troff."
+.pp
+\*G, est un logiciel
+fonctionnant sur le système d'exploitation \*U.
+Il lit un fichier d'entrée
+préparé par l'utilisateur
+et sort un texte formaté,
+prêt à être publié ou mis en page.
+Le fichier d'entrée est formé de
+.i texte ,
+les mots destinés à être imprimés,
+et de
+.i requêtes ,
+qui donnent des instructions au programme \*G
+et lui indiquent quelle forme donner à la copie imprimée.
+.nr ii \w'Chapitre\~\0'u+1n
+.ip "Chapitre\~1"
+décrit les éléments de base du traitement de texte.
+.ip "Chapitre\~2"
+décrit les requêtes de base.
+.ip "Chapitre\~3"
+introduit les mises en évidence: citations, tableaux, figures.
+.ip "Chapitre\~4"
+annotations (notes en bas de page, texte différé, index).
+.ip "Chapitre\~5"
+requêtes plus complexes, n'ayant pu être traitées au chapitre 2.
+.ip "Chapitre\~6"
+les choses que vous devez savoir pour pouvoir rédiger des documents.
+.pp
+Si vous êtes novice,
+vous ne voudrez sans doute pas attendre d'avoir lu jusqu'au chapitre 4
+pour tester par vous mêmes les fonctions de base du programme.
+Quand votre texte sera prêt à être traité,
+appelez le formateur \*G en tapant
+cette commande dans votre shell \*U (ou terminal):
+.(b
+groff \-k \-me \-mfr foo.me > foo.ps
+.)b
+L'option
+.b \-k
+tient compte des caractères accentués propres au français.
+L'option
+.b \-mfr
+permet de configurer les espaces entre les phrases
+ainsi que les césures de manière appropriée
+si on suppose que
+.q foo.me
+est rédigé en français.
+Remplacez
+.q foo
+par le nom de votre fichier qui devra être en un mot.
+Le fichier devra être placé dans votre répertoire personnel,
+sinon remplacez foo par le chemin du fichier.
+À la place de \&.ps,
+vous pouvez mettre \&.pdf ou le format que vous désirez obtenir.
+Vous trouverez un description plus complète des options pour la commande
+\*G en tapant
+.b "man groff"
+dans votre terminal ou console.
+.pp
+Le mot
+.i argument
+est utilisé dans ce manuel
+pour décrire un mot ou un nombre
+qui apparait sur la même ligne qu'une requête
+en modifiant le sens de cette requête.
+Par exemple,
+la requête
+.(b
+\&.sp
+.)b
+met un espace après une ligne,
+mais
+.(b
+\&.sp 4
+.)b
+met 4 espaces après une ligne.
+Le nombre
+.b 4
+est un
+.i argument
+de la requête
+.b .sp
+qui lui dit d'espacer de quatre lignes
+au lieu d'une.
+Les arguments sont séparés de la requête et des autres arguments
+par un espacement.
+.sh 1 "Éléments de base du traitement de texte"
+.pp
+La fonction primaire
+de \*G
+est de
+.i collecter
+des mots sur les lignes du fichier d'entrée, de
+.i remplir
+de ces mots les lignes du ficher de sortie, de
+.i justifier
+le texte sur la marge de droite
+en insérant des espaces supplémentaires entre les mots,
+et de rendre le fichier de sortie.
+Par exemple,
+l'entrée:
+.(b
+Maintenant il est temps
+pour tous les hommes bons
+de venir en aide
+à leur parti.
+Il y a quatre-vingt-sept ans...
+.)b
+sera lu,
+rendu dans des lignes de sortie,
+et justifié,
+ce qui produira:
+.(b F
+Maintenant il est temps
+pour tous les hommes bons
+de venir en aide
+à leur parti.
+Il y a quatre-vingt-sept ans...
+.)b
+Parfois,
+vous désirerez commencer une nouvelle ligne,
+même si la ligne actuelle n'est pas encore pleine;
+par exemple,
+à la fin d'un paragraphe.
+Pour y parvenir,
+vous pouvez provoquer une
+.i interruption:
+une ligne d'entrée vide,
+ou une nouvelle ligne commençant par un espacement
+provoquent le début d'une nouvelle ligne.
+Certaines requêtes provoquent automatiquement une interruption.
+.pp
+Les lignes d'entrée ne sont pas toutes destinées à être formatées
+(voir plus bas).
+Certaines lignes sont des
+.i requêtes
+qui décrivent
+comment le texte doit être formaté.
+Les requêtes commencent toujours par un point ou une apostrophe
+(\c
+.q "\|\(aq\|" ).
+.pp
+Le formateur de texte effectue aussi des tâches plus complexes,
+comme la numérotation automatique des pages,
+le saut de page automatique,
+le placement des notes en bas de page au bon endroit,
+et ainsi de suite.
+.pp
+Je peux vous donner quelques conseils
+comment préparer votre texte d'entrée pour \*G.
+Premièrement,
+écrivez des lignes d'entrée courtes.
+Des lignes d'entrée courtes seront plus faciles à modifier,
+et de toutes façons, \*G les saisira pour vous en lignes plus longues.
+En accord avec cette idée,
+il est pratique de commencer une
+nouvelle ligne après
+chaque virgule ou point,
+puisque habituellement les corrections consistent à
+modifier ou supprimer des propositions ou des phrases.
+Deuxièmement,
+n'ajoutez pas d'espacements à la fin des lignes.
+Troisièmement,
+ne séparez pas vous-même les mots en fin de ligne
+avec des traits d'union
+(excepté les mots qui en contiennent naturellement,
+comme
+.q belle-mère );
+\*G est assez futé pour séparer pour vous les mots qui doivent l'être,
+mais il ne l'est pas assez pour réunir les syllabes
+que vous auriez séparées vous-même.
+Ainsi,
+des mots tels que
+.q belle-mère
+ne devraient pas être écrit sur deux lignes,
+sinon vous obtiendrez un espacement là ou vous n'en vouliez pas,
+comme ici par exemple:
+.tr @-
+.nh
+.q "belle@\~mère" .
+.br
+.tr @@
+.hy 14
+.sh 1 "Requêtes de base"
+.sh 2 "Paragraphes"
+.pp
+On commence un nouveau paragraphe
+en utilisant la requête
+.b .pp .
+Par exemple,
+l'entrée:
+.(b
+\&.pp
+Maintenant il est temps pour tous les hommes bons
+de venir en aide à leur parti.
+Il y a quatre-vingt-sept ans...
+.)b
+donne un ligne d'espacement, suivie d'une ligne indentée.
+Le résultat est:
+.(b F
+.ti +\n(piu
+Maintenant il est temps pour tous les hommes bons
+de venir en aide à leur parti.
+Il y a quatre-vingt-sept ans...
+.)b
+.pp
+Notez que les phrases d'un paragraphes ne
+.i "devront pas"
+commencer par un espacement,
+puisque une ligne d'espacement ou un espace en début de ligne
+provoque une interruption.
+Par exemple,
+si je tapais:
+.(b
+\&.pp
+Maintenant il est temps pour tous les hommes bons
+ de venir en aide à leur parti.
+Il y a quatre-vingt-sept ans...
+.)b
+La sortie serait:
+.(b F
+.ti +\n(piu
+Maintenant il est temps pour tous les hommes bons
+ de venir en aide à leur parti.
+Il y a quatre-vingt-sept ans...
+.)b
+Une nouvelle ligne commence après le mot
+.q bons
+parce que la deuxième ligne d'entrée a été commencée avec un espacement.
+.pp
+Il existe beaucoup de types de paragraphes plus élaborés,
+qui seront décrits plus tard.
+.sh 2 "En-têtes et pied de page "
+.pp
+On peut ajouter si on veut des en-têtes et des pieds de page.
+Deux requêtes
+ayant la forme de
+.b .he \~\c
+.i titre
+and
+.b .fo \~\c
+.i titre
+définissent les titres à mettre respectivement en haut
+et en pied de page.
+Ces titres sont appelés titres
+.i "en trois parties"
+:
+une première partie est justifiée sur la gauche,
+la deuxième est centrée,
+la troisième justifiée sur la droite.
+Les trois parties sont séparées par des apostrophes.
+Le signe %,
+si il est présent dans le titre,
+sera automatiquement remplacé par le numéro de page courant.
+Par exemple l'entrée:
+.(b
+\&.he \(aq\(aq%\(aq\(aq
+.)b
+donnera le numéro de page courant centré sur chaque page.
+.(b
+\&.he \(aq\(aq\(aq%\(aq
+.)b
+donnera le numéro de page jusifié à droite sur chaque page.
+.(b
+\&.he \(aqGroff -me\(aqTraduction\(aq%\(aq
+.)b
+donnera à gauche "Groff -me",
+au centre "Traduction" et à droite le numéro de page courant.
+.br
+Les éléments de l'en-tête peuvent débuter par n'importe quelle lettre,
+mais antislash et guillemets sont à éviter.
+La commande
+.b .fo
+fonctionne de manière analogue.
+.sh 2 "Double espacement"
+.pp
+.ls 2
+\*G insère un double espacement vertical dans le texe de sortie
+si vous utilisez la requête
+.b ".ls\~2" ,
+comme cela a été fait ici.
+Vous pouvez retourner à l'espacement vertical simple en tapant
+.b ".ls\~1" .
+.ls 1
+.sh 2 "Layout de la page"
+.pp
+Un certain nombre de requêtes
+vous permettent de modifier la présentation de la copie imprimée,
+ce qu'on appelle le
+.i layout
+de la page de sortie.
+La plupart de ces requêtes ajustent dans le texte des
+.q "espaces blancs"
+(espacement, espacement vertical).
+Dans les explications qui suivent, les caractères en italique
+doivent être remplacés par les valeurs que vous souhaitez;
+les caractères gras
+devront être tapés tels quels.
+.pp
+La requête
+.b .bp
+commence une nouvelle page.
+.pp
+La requête
+.b .sp \~\c
+.i N
+laisse
+.i N
+lignes d'espacement vertical.
+.i N
+peut être négligé
+(dans ce cas, il n'y aura qu'une ligne d'espacement),
+ou peut prendre la forme
+.i N \^\c
+.b i
+(pour
+.i N
+pouces)
+or
+.i N \^\c
+.b c
+(pour
+.i N
+centimètres).
+Par exemple, l'entrée:
+.(b
+\&.sp 3.5c
+Mes pensées sur le sujet
+\&.sp
+.)b
+laissera trois centimètres et demi d'espace sur la gauche,
+suivis de la ligne
+.q "Mes pensées sur le sujet" ,
+suivie elle-même d'un espacement vertical.
+.pp
+Cette requête ne laissera pas d'espacement vertical en haut d'une page.
+Si vous avez besoin de l'espacement que apparaisse quelle que soit la
+position sur la page,
+utilisez la requête
+.b .bl
+, qui a la même syntaxe que
+.b .sp
+mais qui ajoutera toujours l'espacement demandé,
+même en haut d'une page.
+.pp
+La requête
+.b .in \~\c
+.i +N
+change le nombre d'espacements sur la gauche de la page
+(l'
+.i indentation).
+L'argument
+.i N
+peut avoir la forme
+.b + \c
+.i N
+(ce qui veut dire
+.i N
+espacements de plus que ce qu'il y avait avant),
+.b \- \c
+.i N
+(ce qui veut dire
+.i N
+espacements de moins que ce qu'il y avait avant),
+ou juste
+.i N
+(ce qui veut dire exactement
+.i N
+espacements).
+.i N
+peut aussi avoir la forme
+.i N \^\c
+.b i
+ou
+.i N \^\c
+.b c .
+Par exemple,
+l'entrée:
+.(b
+texte initial
+\&.in 5
+plus de texte
+\&.in +1i
+encore plus de texte
+\&.in \-2c
+fin du texte
+.)b
+produit
+.q "texte initial"
+justifié à gauche
+.q "plus de texte"
+indenté à 5 espacements
+de la marge de gauche,
+.q "encore plus d texte"
+indenté à 5 espacements
+plus un pouce
+de la marge de gauche
+(15 espacements sur une machine à écrire à picas),
+et
+.q "fin du texte"
+à 5 espacements
+plus un pouce
+moins deux centimètres
+de la marge de gauche.
+C'est à dire la sortie suivante:
+.(b
+texte initial
+.in +5
+plus de texte
+.in +1i
+encore plus de texte
+.in -2c
+fin du texte
+.)b
+.pp
+La requête
+.b .ti \~\c
+.i +N
+(indentation temporaire)
+est utilisée de la même manière que
+.b .in \~\c
+.i +N
+quand l'indentation ne concerne qu'une seule ligne,
+après quoi on retourne à l'indentation initiale.
+Par exemple,
+l'entrée:
+.(b
+\&.in 1i
+\&.ti 0
+Ware, James R. The Best of Confucius,
+Halcyon House, 1950.
+Un livre excellent,
+qui présente en traduction (anglaise)
+les phrases les plus délicieuses de Confucius.
+Décidément un passage obligé
+pour tous ceux qui s'intéressent
+au fondements primitifs de la philosophie chinoise.
+.)b
+produira:
+.sp 2
+.in 1i+\n($iu
+.ti \n($iu
+Ware, James R. The Best of Confucius,
+Halcyon House, 1950.
+Un livre excellent, qui présente
+en traduction (anglaise) les phrases les plus délicieuses de Confucius.
+Décidément un passage obligé pour tous ceux
+qui s'intéressent au fondements primitifs de la philosophie chinoise.
+.pp
+Les lignes de texte peuvent être centrées en utilisant la requête
+.b .ce .
+La ligne qui suit
+.b .ce
+est centrée (horizontalement)
+sur la page.
+Pour centrer plus qu'une ligne,
+utilisez
+.b .ce \~\c
+.i N
+(où
+.i N
+est le nombre de lignes à centrer),
+suivi de
+.i N
+lignes.
+Si vous voulez centrer plusieurs lignes,
+mais vous vous refusez à les compter,
+tapez:
+.(b
+\&.ce 1000
+lignes à centrer
+\&.ce 0
+.)b
+Cette requête
+.b ".ce\~0"
+dit à \*G de ne centrer plus que 0 lignes,
+c'est à dire,
+d'arrêter de centrer.
+.pp
+Toutes ces requêtes provoquent une interruption;
+c'est à dire qu'elles commencent toutes une nouvelle ligne.
+Si vous voulez commencer une nouvelle ligne sans rien faire d'autre,
+utilisez
+.b .br .
+.sh 1 "Mises en évidences"
+.pp
+Les mises en évidences sont des passages de textes sortis
+du corps de texte.
+Citations,
+tableaux
+et figures
+sont des types de mise en évidence,
+comme le sont tous les exemples
+exposés dans ce document.
+Toutes les mises en évidence,
+exceptés les blocs centrés,
+sont précédés et suivis en sortie d'un seul espacement vertical.
+.sh 2 "Citations longues"
+.pp
+Les citations longues
+sont des citations qui s'étalent sur plusieurs lignes,
+elles sont donc sorties du corps de texte
+et ne sont pas entourées de guillemets.
+Cela peut être réalisé
+en utilisant les requêtes
+.b .(q
+et
+.b .)q
+entourant la citation.
+Par exemple,
+l'entrée:
+.(b
+Comme l'indique Weizenbaum:
+\&.(q
+On dit qu'expliquer, c'est expliquer en s'éloignant.
+Cette maxime ne s'accomplit nulle part aussi bien
+que dans le domaine de la programmation informatique,...
+\&.)q
+.)b
+génère comme sortie:
+.lp
+Comme l'indique Weizenbaum:
+.(q
+On dit qu'expliquer, c'est expliquer en s'éloignant.
+Cette maxime ne s'accomplit nulle part aussi bien
+que dans le domaine de la programmation informatique,...
+.)q
+.sh 2 "Listes"
+.pp
+Une
+.i liste
+est une mise en évidence
+indentée,
+à espacements simples,
+non justifiée.
+On devrait utiliser une liste
+quand le matériel à imprimer
+ne doit pas être justifié comme un texte normal,
+tels les colonnes de figures
+ou les exemples utilisés dans ce document.
+Les listes sont encadrées par les requêtes
+.b .(l
+et
+.b .)l .
+Par exemple,
+tapez:
+.(b
+La famille des Équidés comprend:
+\&.(l
+les chevaux
+les ânes
+les hémiones
+les zèbres
+\&.)l
+.)b
+cela produira:
+.br
+La famille des Équidés comprend:
+.(l
+les chevaux
+les ânes
+les hémiones
+les zèbres
+.)l
+.sh 2 "Clos"
+.pp
+Un
+.i clos
+est un ensemble de lignes mises en évidences
+que l'on désire garder sur la même page
+si possible.
+Par exemple un diagramme.
+Les clos diffèrent des listes.
+Les listes peuvent être réparties sur plusieurs pages,
+tandis que les clos ne peuvent pas l'être.
+.pp
+Les blocs sont un genre primitif de clos.
+Ils débutent avec la requête
+.b .(b
+et se terminent avec la requête
+.b .)b .
+Si il n'y a pas de place sur la page courante
+pour y placer le bloc entier,
+il sera placé sur une nouvelle page.
+Cela a pour effet déplaisant de laisser
+un espace blanc en fin de page.
+Quand cela n'est pas approprié,
+vous pouvez user d'une alternative
+appelée
+.i "clos flottants" .
+.pp
+Les
+.i "clos flottants"
+se déplacent dans le texte.
+Donc,
+il sont appropriés pour les choses
+auxquelles on se réfère nommément, comme
+.q "voir Figure 3" .
+Un clos flottant apparaîtra
+au bas de la page courante
+si il y a la place;
+autrement,
+il apparaîtra
+sur la page suivante.
+Les clos flottants commencent par
+.b .(z
+et finissent par
+.b .)z .
+Comme exemple de clos flottant,
+voir figure 1.
+.(z
+.in 1i
+.xl -1i
+.hl
+\&.(z
+\&.hl
+Texte du clos flottant
+\&.sp
+\&.ce
+Figure 1. Exemple de clos flottant.
+\&.hl
+\&.)z
+.sp
+.ce
+Figure 1. Exemple de clos flottant.
+.hl
+.)z
+La requête
+.b .hl
+est utilisée
+pour dessiner une ligne horizontale
+de sorte que la figure
+soit séparée du texte.
+.sp 15
+.sh 2 "Mises en évidences plus élaborées"
+.pp
+Les clos et les listes sont normalement collectés en mode
+.i non-justifié .
+Ils sont donc propres à contenir des tableaux et autres.
+Si vous voulez obtenir une mise en évidence
+en mode justifié
+(pour du texte),
+tapez
+.b ".(l\~F"
+[Tout au long de ce chapitre,
+les remarques s'appliquant à
+.b .(l
+s'appliquent aussi à
+.b .(b
+et
+.b .(z ].
+Cette espèce de mise en évidence
+sera indentée des deux côtés.
+Par exemple,
+l'entrée:
+.(b
+\&.(l F
+Et maintenant les garçons et les filles,
+un jouet plus grand,
+plus beau que tout ce qui a existé auparavant!
+Soyez le premier, la première de votre quartier
+à posséder votre propre ordinateur!
+Oui les enfants, vous aussi vous pouvez posséder
+une de ces machines à gérer les informations.
+Vous aussi vous pouvez produire de beaux papiers
+formatés sans même remuer le petit doigt!
+\&.)l
+.)b
+donnera en sortie:
+.(b F
+Et maintenant les garçons et les filles,
+un jouet plus grand,
+plus beau que tout ce qui a existé auparavant!
+Soyez le premier, la première de votre quartier
+à posséder votre propre ordinateur!
+Oui les enfants, vous aussi vous pouvez posséder
+une de ces machines à gérer les informations.
+Vous aussi vous pouvez produire de beaux papiers
+formatés sans même remuer le petit doigt!
+.)b
+.pp
+Par exemple,
+pour obtenir une liste justifiée,
+alignée sur la gauche, entrez:
+.(b
+\&.(l L F
+Et maintenant les garçons et les filles,
+un jouet plus grand,
+plus beau que tout ce qui a existé auparavant!
+Soyez le premier, la première de votre quartier
+à posséder votre propre ordinateur!
+Oui les enfants, vous aussi vous pouvez posséder
+une de ces machines à gérer les informations.
+Vous aussi vous pouvez produire de beaux papiers
+formatés sans même remuer le petit doigt!
+\&.)l
+.)b
+Ce qui donnera:
+.(l L F
+Et maintenant les garçons et les filles,
+un jouet plus grand,
+plus beau que tout ce qui a existé auparavant!
+Soyez le premier, la première de votre quartier
+à posséder votre propre ordinateur!
+Oui les enfants, vous aussi vous pouvez posséder
+une de ces machines à gérer les informations.
+Vous aussi vous pouvez produire de beaux papiers
+formatés sans même remuer le petit doigt!
+.)l
+.pp
+Normalement, les listes et les blocs sont indentés
+(les clos flottant sont normalement alignés sur la gauche).
+Pour obtenir une liste
+alignée sur la gauche,
+tapez
+.b ".(l\~L" .
+Pour obtenir une ligne centrée
+ligne après ligne,
+tapez
+.b ".(l C" .
+L'entrée:
+.(b
+\&.(l
+première ligne d'une mise en évidence non-justifiée
+lignes suivantes
+\&.)l
+.)b
+produit un texte indenté:
+.(b
+première ligne d'une mise en évidence non-justifiée
+lignes suivantes
+.)b
+En tapant
+.b L
+après la requête
+.b .(l
+cela produira le même résultat, mais aligné à gauche:
+.(b L
+première ligne d'une mise en évidence non-justifiée
+lignes suivantes
+.)b
+Si vous utilisez
+.b C
+à la place de
+.b L
+vous obtenez une liste centrée:
+.(b C
+première ligne d'une mise en évidence non-justifiée
+lignes suivantes
+.)b
+.pp
+Parfois,
+vous voudrez centrer
+plusieurs lignes en groupe
+plutôt que de centrer ligne par ligne.
+Pour le faire,
+utilisez les blocs centrés
+qui sont produits par les requêtes
+.b .(c
+et
+.b .)c .
+Toutes les lignes sont centrées en tant que groupe.
+La ligne la plus longue est centrée par rapport aux marges
+et les lignes plus courtes sont alignées sur la plus longue.
+Notez que si vous utilisez un bloc centré,
+les lignes ne bougent pas les unes par rapport aux autres,
+tandis qu'elles le feront si vous utilisez l'argument
+.b C
+pour les clos.
+.pp
+Les blocs centrés ne sont
+.i pas
+des clos,
+et peuvent même être combinés
+avec eux comme nous allons le voir.
+Par exemple,
+pour centrer des lignes
+en groupe
+et les garder
+sur une même page,
+utilisez:
+.(b
+\&.(b L
+\&.(c
+première ligne d'une mise en évidence non-justifiée
+lignes suivantes
+\&.)c
+\&.)b
+.\" .ne 1i
+.)b
+ce qui produira:
+.(b L
+.(c
+première ligne d'une mise en évidence non-justifiée
+lignes suivantes
+.)c
+.)b
+Sans les requêtes
+(\c
+.b .(b
+et
+.b .)b )
+le résultat aurait été le même,
+mais sans garantie
+que les lignes du bloc centré
+aient été sur la même page.
+Notez l'usage de l'argument
+.b L
+après
+.b .(b .
+Il fait en sorte
+que le bloc se centre
+sur toute la longueur de la ligne
+plutôt que sur la longueur de ligne raccourcie de l'indentation.
+Aussi,
+la requête demandant de centrer
+doit être placée
+.i à \~l'intérieur
+de la requête formant le clos.
+.sh 1 "Annotations"
+.pp
+Un certain nombre de requêtes
+servent à mettre du texte de côté
+pour l'imprimer plus tard, comme les
+.i "notes en bas de page"
+qui sont imprimées au bas de la page courante.
+.br
+Le
+.i "texte différé"
+est en quelque sorte une variante de la
+note en bas de page;
+le texte n'est imprimé
+qu'au moment où on fait appel à lui,
+par exemple à la fin de chaque chapitre.
+.br
+Les
+.i Index
+sont un genre de texte différé
+ayant un numéro de rappel
+(habituellement le numéro de la page)
+attaché à chaque entrée
+après une rangée de points.
+Les Index sont aussi mis de côté
+jusqu'à ce qu'on fasse explicitement appel à eux.
+.sh 2 "Notes en bas de page"
+.pp
+Une note en bas de page commence avec la requête
+.b .(f
+et se termine avec la requête
+.b .)f .
+La note en bas de page courante
+est maintenue automatiquement,
+et peut être utilisée en tapant \e**,
+ce qui produira un numéro de note\**.
+.(f
+\**Comme celui-ci.
+.)f
+Le numéro est automatiquement incrémenté
+après chaque note en bas de page.
+Par exemple,
+l'entrée:
+.(b
+\&.(q
+Un homme qui n'est pas honnête
+et qui, en même temps, est présomptueux;
+un homme qui n'est pas attentif
+et qui, en même temps, est ignorant;
+un homme qui est rempli de mensonge
+et qui, en même temps, est incompétent;
+un tel homme ne fait pas partie de mes relations.\e**
+\&.(f
+\e**Traduit de :James R. Ware,
+\&.ul
+The Best of Confucius,
+Halcyon House, 1950.
+Page 77.
+\&.)f
+\&.)q
+.)b
+génère le résultat suivant:
+.(q
+Un homme qui n'est pas honnête
+et qui, en même temps, est présomptueux;
+un homme qui n'est pas attentif
+et qui, en même temps, est ignorant;
+un homme qui est rempli de mensonge
+et qui, en même temps, est incompétent;
+un tel homme ne fait pas partie de mes relations.\**
+.(f
+\**Traduit de: James R. Ware,
+.ul
+The Best of Confucius,
+Halcyon House, 1950.
+Page 77.
+.)f
+.)q
+Il est important que la note en bas de page
+apparaisse
+.i "à l'intérieur"
+de la citation,
+ainsi vous serez sûr
+qu'elle
+apparaîtra
+sur la même page
+que la citation.
+.sh 2 "Texte différé"
+.pp
+Le texte différé
+ressemble beaucoup à la note en bas de page
+sauf qu'il est imprimé seulement
+si on fait explicitement appel à lui.
+Cela permet de faire apparaître par exemple
+une liste de références
+à la fin de chaque chapitre,
+ce qui est une convention dans certaines disciplines.
+Utilisez
+.b \e*#
+pour le texte différé
+en lieu et place du
+.b \e**
+des notes en bas de page.
+.pp
+Si vous faites du texte différé
+votre moyen habituel de noter les références,
+vous pourrez toujours utiliser en parallèle
+les notes en bas de page,
+mais, comme référence,
+vous utiliserez alors des signes spéciaux*
+.(f
+*comme un astérisque (!)
+.)f
+plutôt que des numéros.
+.br
+Pour faire apparaître une note en bas de page munie
+d'un signe spécial comme celle que vous admirez ci- dessus,
+entrez:
+.br
+\&...vous utiliserez alors des signes spéciaux*.
+.br
+Suivi de:
+.(b
+\&.(f
+.br
+*comme un astérisque (!).
+.br
+\&.)f
+.)b
+.sh 2 "Index"
+.pp
+Un
+.q index
+(ou plutôt table des matières
+puisque les éléments ne sont pas classés
+par ordre alphabétique)
+ressemble au texte différé,
+par le fait qu'il est gardé en réserve
+jusqu'à ce qu'on fasse appel à lui.
+Cependant,
+chaque élément de l'index
+a un numéro de page
+(ou un autre signe distinctif)
+à la fin de la dernière ligne le décrivant,
+à la suite d'une rangée de points (voir ci-dessous).
+.pp
+Les entrées pour l'index
+commencent avec
+.b .(x
+et finissent avec
+.b .)x .
+Dans chaque chapitre
+dont vous voulez qu'il apparaisse dans l'index,
+introduisez une telle requête
+en répétant l'énoncé du titre**.
+.(f
+**Voir aussi le plan de thèse exposé au chapitre 5.3.
+.)f
+La requête
+.b .)x
+peut avoir un argument,
+quand on veut formuler soi-même
+une valeur prenant la place du
+.q "numéro de page" .
+Sans argument,
+c'est le numéro de page où se trouve la requête
+qui sera utilisé automatiquement.
+Si le numéro de page donné est un trait de soulignage
+(\c
+.q _ )
+aucun numéro de page
+ou ligne de points ne sera imprimé.
+Pour obtenir une ligne de points
+sans numéro de page,
+tapez
+.b ".)x """"" ,
+ce qui signifie qu'il n'y a pas de numéro de page.
+.pp
+La requête
+.b .xp
+imprime l'index.
+.pp
+Par exemple,
+l'entrée:
+.(b
+\&.(x
+Cire à cacheter
+\&.)x
+\&.(x
+Des choux et des rois
+\&.)x _
+\&.(x
+Pourquoi la mer bout
+\&.)x 2.5a
+\&.(x
+Si les cochons avaient des ailes
+\&.)x ""
+\&.(x
+Ceci est une entrée d'index terriblement longue,
+comme on pourrait en avoir besoin pour
+une liste d'illustrations, de tableaux, ou de figures;
+je m'attends à ce qu'elle fasse au moins deux lignes.
+\&.)x
+\&.xp
+.)b
+génère:
+.(x
+Cire à cacheter
+.)x
+.(x
+Des choux et des rois
+.)x _
+.(x
+Pourquoi la mer bout
+.)x 2.5a
+.(x
+Si les cochons avaient des ailes
+.)x ""
+.(x
+Ceci est une entrée d'index terriblement longue,
+comme on pourrait en avoir besoin pour
+une liste d'illustrations, de tableaux, ou de figures;
+je m'attends à ce qu'elle fasse au moins deux lignes.
+.)x
+.xp
+.pp
+La requête
+.b .(x
+peut avoir comme argument
+un caractère unique,
+qui spécifie le
+.q nom
+de l'index;
+l'index normal répond à la requête
+.b x .
+Donc,
+on peut maintenir plusieurs
+.q indices
+simultanément**
+.(f
+**Voir aussi le plan de thèse exposé au chapitre 5.3
+.)f
+(un pour la liste des tableaux, un pour la table des matières, etc.).
+.pp
+Notez que l'index doit
+être imprimé à la
+.i fin
+du document,
+plutôt qu'au début
+où il apparaîtra sans doute
+(en temps que table des matières);
+les pages devront peut-être être réarrangées physiquement
+après impression.
+.sh 1 "Fonctionnalités plus complexes"
+.pp
+Il existe un grand nombre d'autres possibilités,
+notamment des requêtes
+qui fournissent d'autres types de paragraphes,
+des chapitres numérotés en forme
+.b 1.2.3
+(comme ils le sont dans le présent document),
+et l'impression sur plusieurs colonnes.
+.sh 2 "Autres types de paragraphes"
+.pp
+Généralement, les paragraphes
+commencent par un espacement vertical et
+la première ligne est indentée.
+On peut obtenir des paragraphes justifiés
+et alignés à gauche
+en utilisant
+.b .lp
+au lieu de
+.b .pp ,
+comme démontré au paragraphe suivant.
+.lp
+Parfois, vous voudrez utiliser des paragraphes dont le
+.i corps
+est indenté
+et la première ligne
+non-indentée
+et munie d'un label.
+Cela peut être réalisé grâce à la requête
+.b .ip .
+Un mot spécifié sur la même ligne que
+.b .ip
+est imprimé dans la marge,
+et le corps du paragraphe est aligné
+sur une position prédéfinie
+.\" .ne 1i
+(normalement cinq espacements).
+Par exemple,
+l'entrée:
+.(b
+\&.ip un
+Ceci est le premier paragraphe.
+Notez comment le reste de la première
+ligne s'aligne
+sur les autres lignes du paragraphe.
+\&.ip deux
+Et ici nous sommes déjà au second paragraphe.
+Vous noterez que l'argument de \c
+.b .ip
+apparaît dans la marge.
+\&.lp
+Nous pouvons poursuivre ce texte...
+.)b
+produit comme sortie:
+.ip un
+Ceci est le premier paragraphe.
+Notez comment le reste de la première
+ligne s'aligne
+sur les autres lignes du paragraphe.
+.ip deux
+Et ici nous sommes déjà au second paragraphe.
+Vous noterez que l'argument de
+.b .ip
+apparaît dans la marge
+.lp
+Nous pouvons poursuivre ce texte sans
+commencer un nouveau paragraphe indenté
+en utilisant la requête
+.b .lp .
+.pp
+Si vous avez des espacements
+dans le label de la requête
+.b .ip ,
+vous devrez utiliser un
+.q "espacement inremplissable"
+au lieu d'un espacement normal.
+On crée celui-ci à l'aide d'un caractère antislash
+(\c
+.q \e )
+suivi d'un espacement.
+Par exemple,
+pour imprimer le label
+.q "Partie 1" ,
+entrer:
+.(b
+\&.ip "Partie\e 1"
+.)b
+.pp
+Si le label prévu pour un paragraphe indenté
+(c'est à dire l'argument de
+.b .ip )
+est plus long que l'espace prévu pour le label (cinq espacements),
+.b .ip
+commencera une nouvelle ligne après le label.
+Par exemple,
+l'entrée:
+.(b
+\&.ip label\~long
+Ce paragraphe a un label long.
+Le premier caractère du texte de la première ligne
+ne s'alignera pas sur le texte de la seconde ligne
+et suivantes,
+bien que celles-ci soient alignées entre elles.
+.)b
+produira:
+.ip label\~long
+Ce paragraphe a un label long.
+Le premier caractère du texte de la première ligne
+ne s'alignera pas sur le texte de la seconde ligne
+et suivantes,
+bien que celles-ci soient alignées entre elles.
+.pp
+Il est possible de changer la taille du label
+en utilisant un second argument
+qui définit la taille du label.
+Par exemple,
+on pourra écrire l'exemple ci-dessus correctement
+en disant:
+.(b
+\&.ip label\~long 10
+.)b
+qui rendra l'indentation du paragraphe longue de
+10 espacements pour ce paragraphe seulement.
+Si vous avez plusieurs paragraphes à indenter
+de la même longueur,
+utilisez un
+.i "registre de nombres"
+.b ii .
+Par exemple, pour laisser un pouce d'espace
+avant le label,
+tapez:
+.(b
+\&.nr ii 1i
+.)b
+quelque part avant le premier appel de
+.b .ip .
+Pour plus d'informations, voyez le
+.i "Manuel de Référence" .
+.pp
+Si
+.b .ip
+est utilisé
+sans aucun argument
+aucun label ne sera imprimé.
+Par exemple,
+l'entrée:
+.(b
+\&.ip [a]
+Ceci est le premier paragraphe de l'exemple.
+Nous avons déjà vu ce genre d'exemples auparavant.
+\&.ip
+Ce paragraphe est aligné sur le précédent,
+mais il n'a pas de label dans la marge.
+.)b
+produit la sortie:
+.ip [a]
+Ceci est le premier paragraphe de l'exemple.
+Nous avons déjà vu ce genre d'exemples auparavant.
+.ip
+Ce paragraphe est aligné sur le précédent,
+mais il n'a pas de label dans la marge.
+.pp
+Un cas spécial de
+.b .ip
+est
+.b .np ,
+qui numérote automatiquement
+les paragraphes de manière séquentielle à partir de 1.
+La numérotation repart de 1 à la prochaine requête
+.b .pp ,
+.b .lp ,
+or
+.b .sh
+(cette dernière est décrite au chapitre suivant).
+Par exemple,
+l'entrée:
+.(b
+\&.np
+Ceci est le premier point.
+\&.np
+Ceci est le second point.
+Les "points" sont juste des paragraphes normaux
+auxquels on donne automatiquement un numéro
+à l'aide de la requête \&.np.
+\&.pp
+Ce paragraphe remet la numérotation par \&.np à 1.
+\&.np
+Là par exemple,
+nous avons recommencé la numérotation à 1.
+.)b
+génère:
+.np
+Ceci est le premier point.
+.np
+Ceci est le second point.
+Les "points" sont juste des paragraphes normaux
+auxquels on donne automatiquement un numéro
+à l'aide de la requête \&.np.
+.pp
+Ce paragraphe remet la numérotation à 1 à cause de \&.pp.
+.np
+Là par exemple,
+nous avons recommencé la numérotation à 1.
+.pp
+La requête
+.b .bu
+donne des listes de ce type,
+qui sont identifiées par des puces
+plutôt que par des numéros.
+Les paragraphes sont aussi regroupés verticalement.
+Par exemple,
+l'entrée:
+.(b
+\&.bu
+\&Un jaune d'oeuf
+\&.bu
+\&Une c.-à-s. de crème
+\&.bu
+\&Sel, poivre de Cayenne et jus de citron pour assaisonner
+\&.bu
+\&Deux bonnes c.-à-s. de beurre
+.)b
+produit\**:
+.(f
+\**Par ailleurs,
+si vous mettez ces trois ingrédients
+dans une cocotte assez haute,
+et que vous remuez le tout comme un cinglé à feu moyen
+(ne lâchez jamais l'anse de la cocotte)
+jusqu'à ce que le mélange ait la consistance d'une béchamel
+(ce qui prend juste une à deux minutes),
+si ensuite,
+vous retirez la cocotte du feu et vous incorporez le beurre,
+vous obtiendrez une délicieuse sauce hollandaise.
+.)f
+.bu
+Un jaune d'oeuf
+.bu
+Une c.-à-s. de crème
+.bu
+Sel, poivre de Cayenne et jus de citron pour assaisonner
+.bu
+Deux bonnes c.-à-s. de beurre
+.sh 2 "Titres de chapitres"
+.pp
+Les titres de chapitre
+(comme ceux utilisés dans ce document)
+peuvent être générés automatiquement
+pa la requête
+.b .sh .
+Vous devez indiquer à la requête
+.b .sh
+la
+.i profondeur
+du numéro de chapitre
+et le titre du chapitre.
+La profondeur indique
+combien de nombres doivent apparaître
+(séparés par des points décimaux)
+dans le numéro de chapitre.
+Par exemple,
+le numéro de chapitre
+.b 4.2.5
+a une profondeur de trois.
+.pp
+Les numéros de chapitres
+sont incrémentés
+de façon assez intuitive.
+Si vous ajoutez un numéro
+(ce faisant, vous augmentez la profondeur),
+le nouveau numéro commencera à 1.
+Si vous enlevez un numéro de chapitre
+(vous réduisez la profondeur)
+ou que vous gardez
+le même nombre de chapitre
+(vous gardez la même profondeur),
+le numéro final sera incrémenté.
+Par exemple,
+l'entrée:
+.(b
+\&.sh 1 "Le Préprocesseur"
+\&.sh 2 "Concepts de base"
+\&.sh 2 "Entrées de contrôle"
+\&.sh 3
+\&.sh 3
+\&.sh 1 "Produire du code"
+\&.sh 3
+.)b
+donnera comme résultat:
+.(b
+.b
+1. Le Préprocesseur
+1.1. Concepts de base
+1.2. Entrées de contrôle
+1.2.1.
+1.2.2.
+2. Produire du code
+2.1.1.
+.)b
+.pp
+Vous pouvez spécifier le numéro de chapitre dès le départ
+en plaçant le numéro de chapitre après le titre de chapitre,
+en utilisant des espacements à la place des points.
+Par exemple,
+la requête:
+.(b
+\&.sh 3 "un autre chapitre" 7 3 4
+.)b
+commencera par le chapitre ayant le numéro
+.b 7.3.4 ;
+toutes les requêtes
+.b .sh
+suivantes seront numérotées relativement à ce chapitre.
+.pp
+Il y a des fonctionnalités encore plus complexes
+qui vont indenter le titre de chaque chapitre,
+sous-chapitre, ou sous-sous-chapitre
+relativement à sa profondeur.
+Par exemple, si vous entrez:
+.(b
+\&.nr si \c
+.i N
+.)b
+chaque titre et sous-titre sera indenté d'une quantité
+.i N .
+.i N
+a un facteur d'échelle attaché,
+c'est à dire qu'il doit avoir la forme
+.i Nx ,
+où
+.i x
+indique de quelle unité est
+.i N .
+Les valeurs courantes pour
+.i x
+.b i
+pour les pouces (inches),
+.b c
+pour les centimètres,
+et
+.b n
+pour les
+.i ens
+(= une largeur de caractère).
+Par exemple,
+pour indenter chaque sous-chapitre
+d'un demi-pouce,
+tapez:
+.(b
+\&.nr si 0.5i
+.)b
+après cette requête,
+les titre de chapitres seront indentés
+d'un demi-pouce
+par niveau de profondeur.
+Par exemple,
+le présent document a écrit
+en ayant recours à la requête
+.(b
+\&.nr si 3n
+.)b
+au début du fichier d'entrée,
+ce qui donne trois espacements d'indentation
+par niveau de profondeur du chapitre.
+.pp
+Des numéros de chapitre
+sans indentation automatique
+peuvent être créés
+grâce à la requête:
+.(b
+\&.uh "Titre"
+.)b
+qui fera un titre de chapitre,
+sans numérotation.
+.sh 2 "Les parties du document"
+.pp
+Certaines requêtes sont là pour
+aider à mettre en forme le document.
+La requête
+.b .tp
+initialise une page de titre.
+Sur une page de titre,
+il n'y a ni en-tête ni pied de page, et,
+contrairement à ce qui se passe sur les autres pages,
+vous pouvez laisser des grands espaces blancs
+en haut de la page.
+Par exemple,
+une page de titre typique aura cette apparence:
+.(b
+\&.tp
+\&.sp 7c
+\&.(l C
+LA CROISSANCE DES ONGLES D\(aqORTEILS
+CHEZ LES PRIMATES SUPÉRIEURS
+\&.sp
+par
+\&.sp
+Frank N. Furter
+\&.)l
+\&.bp
+.)b
+.pp
+La requête
+.b .+c \~\c
+.i T
+peut être utilisée pour
+commencer un nouveau chapitre.
+Chaque nouveau chapitre sera numéroté automatiquement
+à partir de 1,
+et le titre sera imprimé au début de chaque chapitre
+avec le numéro de chapitre
+et le nom du chapitre
+.i T .
+Par exemple,
+pour commencer un chapitre s'intitulant
+.q Conclusions,
+utilisez la requête:
+.(b
+\&.+c "CONCLUSIONS"
+.)b
+qui produira sur une nouvelle page,
+les lignes
+.(b C
+Chapitre 5
+CONCLUSIONS
+.)b
+avec des espacements appropriés pour une thèse.
+L'en-tête aussi est déplacé en bas de page
+sur la première page d'un chapitre\** \&.
+.(f
+\**Voir la première page de ce document
+.)f
+.pp
+Si on omet le paramètre de titre
+.i T
+après la requête
+.b .+c
+,
+Le chapitre résultant sera un chapitre sans titre.
+cela peut être utilisé au commencement d'un document;
+par exemple,
+.b .+c
+a été utilisé pour créer la page 1
+du présent document.
+.pp
+Même si traditionnellement
+les documents ont le résumé,
+la table des matières,
+etc... au début du document,
+si vous utilisez
+\*G,
+il sera plus pratique
+de les rédiger en dernier.
+Il faut vous dire que les entrées d'index
+peuvent être collectées en amont
+et être imprimées
+dans la table des matières
+(ou d'autres index).
+À la fin du document,
+utilisez la requête
+.b ".++ P" ,
+qui commence la partie préliminaire du document.
+Après cette requête,
+la requête
+.b .+c
+commencera une section préliminaire
+pour votre document.
+Remarquez que,
+cela imprime le numéro de la page
+en repartant de 1
+en chiffres romains minuscules.
+.b .+c
+peut être utilisé plusieurs fois d'affilée
+pour ébaucher les différentes parties du document.
+Par exemple,
+le résumé,
+la table des matières,
+les remerciements,
+la liste des illustrations,
+etc.
+La requête
+.b ".++ B"
+peut aussi être employée
+pour commencer le chapitre de bibliographie
+à la fin du document.
+.pp
+Une ébauche peut être organisée
+comme le montre la figure 2 ci-dessous.
+(Dans cette figure,
+les commentaires débutent par la requête
+.b \e" .)
+.(z
+.hl
+.if t .in 0.5i
+.if t .ta 2i
+.if n .ta \w'.+c "CHAPITRE SUIVANT"'u+1n
+\&.fo \(aq\(aqÉBAUCHE\(aq\(aq \e" définir un pied de page pour chaque\
+ page
+\&.tp \e" commencer la page de titre
+\&.(l C \e" liste centrée
+LA CROISSANCE
+DES ONGLES D\(aqORTEILS
+CHEZ LES PRIMATES SUPÉRIEURS
+\&.sp
+par
+\&.sp
+Frank Furter
+\&.)l \e" fin de la liste centrée
+\&.+c INTRODUCTION \e" début du chapitre intitulé "INTRODUCTION"
+\&.(x t \e" faire une entrée pour l\(aqindex "t"
+Introduction
+\&.)x \e" fin de l\(aqentrée d\(aqindex
+texte du chapitre 1 \e" =Introduction
+\&.+c "CHAPITRE SUIVANT" \e" commencer un nouveau chapitre
+\&.(x t \e" faire un entrée pour l\(aqindex "t"
+Chapitre suivant
+\&.)x
+texte du chapitre 2 \e" =chapitre suivant
+\&.+c CONCLUSIONS
+\&.(x t
+Conclusions
+\&.)x
+texte du chapitre 3 \e" =Conclusions
+\&.++ B \e" commencer la bibliographie
+\&.+c BIBLIOGRAPHIE \e" commencer un nouveau "chapitre"
+\&.(x t
+Bibliographie
+\&.)x
+texte de la bibliographie
+\&.++ P \e" commencer la partie préliminaire...
+\&. \e" ...du document
+\&.+c "TABLE DES MATIÈRES"
+\&.xp t \e" imprimer l\(aqindex "t" collecté en amont
+\&.+c PREFACE \e" commencer un nouveau chapitre...
+\&. \e" ...dans la partie préliminaire.
+texte de la préface
+.sp 2
+.in 0
+.ce
+Figure 2. Ébauche d'un exemple de document.
+.hl
+.)z
+.sh 2 "Équations et Tableaux"
+.pp
+Il existe deux programmes \*U spécialement conçus
+pour formater les types de matières spéciaux.
+.b Eqn
+imprime les équations.
+.b Tbl
+permet d'imprimer
+de très jolis tableaux
+dans toute une variété de formats.
+Le présent document décrira seulement comment
+rendre plus jolie
+leur fonctionnalités standard.
+Pour savoir
+comment ces deux programmes fonctionnent
+consultez les manuels de référence de ces processeurs\**.
+.(f
+\**N.d.tr.
+.b "man eqn"
+et
+.b "man tbl"
+.)f
+.pp
+Le logiciel
+.b eqn
+est décrit complètement
+dans le document
+.ul
+Typesetting Mathematics \- User's Guide
+par Brian W. Kernighan
+and Lorinda L. Cherry\**.
+.(f
+\**Disponible sur la toile
+.)f
+Les équations sont centrées
+et restent sur une page.
+On les introduit dans le texte par la requête
+.b .EQ
+et on les termine par la requête
+.b .E .
+.pp
+La requête
+.b .EQ
+peut avoir un numéro d'équation comme
+argument optionnel.
+Ce numéro sera imprimé centré
+à droite de l'équation.
+Si l'équation devient trop longue,
+on devra l'imprimer sur deux lignes.
+Pour faire ceci, tapez:
+.(b
+\&.EQ (eq 34)
+texte de l'équation 34
+\&.EN C
+\&.EQ
+continuation de l'équation 34
+\&.EN
+.)b
+Le
+.b C
+après la requête
+.b .EN
+spécifie que l'équation
+sera continuée.
+.pp
+Le programme
+.b tbl
+produit des tableaux.
+Il est décrit complètement
+(avec des exemples numériques)
+dans le document
+.ul
+Tbl \- A Program to Format Tables
+par M. E. Lesk\**.
+.(f
+\**Également disponible sur la toile
+.)f
+Les tableaux commencent par la requête
+.b .TS
+et se terminent par la requête
+.b .TE .
+Normalement, les tableaux restent sur la même page.
+Si vous avez un tableau trop grand
+pour tenir sur une seule page,
+et dont vous savez
+qu'il lui en faudra plusieurs,
+commencez le tableau avec la requête
+.b ".TS\~H"
+et mettez la requête
+.b .TH
+après la ligne du tableau
+que vous voulez
+imprimer au début de chaque page
+contenant le tableau.
+Par exemple, la définition
+d'un long tableau
+pourrait être:
+.ds TA \|\h'.4n'\v'-.2n'\s-4\zT\s0\v'.2n'\h'-.4n'\(ci\|
+.if n .ds TA \~\o'-T'\~\"
+.(b
+\&.TS H
+c s s
+n n n.
+TITRE DU TABLEAU
+\&.TH
+texte du tableau
+\&.TE
+.)b
+.sh 2 "Sortie sur deux colonnes"
+.pp
+Vous pouvez rédiger votre texte sur deux colonnes
+automatiquement
+grâce à la requête
+.b .2c .
+Cela rendra tout contenu
+suivant cette requête
+sur deux colonnes.
+La requête
+.b .bc
+commencera une nouvelle colonne;
+elle diffère de
+.b .bp
+en ce que
+.b .bp
+peut laisser une colonne totalement
+vide quand il commence une nouvelle page.
+Pour revenir à l'impression sur une colonne,
+utilisez
+.b .1c .
+.sh 2 "Définir un macro"
+.pp
+Un
+.i macro
+est un ensemble formé de requêtes et de texte
+qui peut être résumé
+en une seule requête.
+Les macros commencent par la ligne
+.b ".de" \~\c
+.i xx
+(où
+.i xx
+est le nom du macro que l'on va définir)
+et elle finit par une ligne consistant en 2 points.
+Après avoir défini le macro,
+écrire la ligne
+.b . \c
+.i xx
+revient à écrire toutes les autres lignes.
+Par exemple,
+pour définir un macro
+qui espace de trois lignes
+et centre les lignes qui suivent,
+entrez:
+.(b
+\&.de SS
+\&.sp 3
+\&.ce
+\&..
+.)b
+et utilisez en rédigeant:
+.(b
+\&.SS
+\&Ligne de titre
+(début du texte)
+.)b
+.pp
+Les noms des macros peuvent être formés d'un ou deux caractères.
+Pour éviter les conflits avec des noms de requêtes
+dans \-me,
+utilisez toujours des majuscules.
+Les seuls noms à éviter sont
+.b TS ,
+.b TH ,
+.b TE ,
+.b EQ ,
+and
+.b EN .
+.sh 2 "Annotations à l'intérieur d'un clos"
+.pp
+Parfois, vous voudrez insérer
+une note en bas de page
+ou une entrée d'index
+à l'intérieur d'un clos.
+Par exemple,
+si vous vouliez maintenir une
+.q "liste des figures"
+vous pourriez vouloir faire quelque chose comme:
+.(b
+\&.(z
+\&.(c
+texte de la figure
+\&.)c
+\&.ce
+Figure 5.
+\&.(x f
+Figure 5
+\&.)x
+\&.)z
+.)b
+et vous pourriez espérer
+que ça donne une figure
+avec un label
+et une entrée d'index
+.b f
+(probablement une liste des figures).
+Par malheur,
+l'entrée d'index
+est lue et interprétée
+lorsque le clos est lu,
+et non pas lorsqu'il est imprimé,
+et donc le numéro de page dans l'index sera probablement erroné.
+La solution est d'utiliser la chaîne magique
+.b \e!
+au début de chaque ligne se rapportant à l'index.
+Autrement dit,
+vous utiliserez:
+.(b
+\&.(z
+\&.(c
+Texte de la figure
+\&.)c
+\&.ce
+Figure 5.
+\e!.(x f
+\e!Figure 5
+\e!.)x
+\&.)z
+.)b
+qui différera l'indexation
+jusqu'à ce que la figure soit en sortie.
+Cela garantira
+que le numéro de la page dans l'index soit correct.
+Le même commentaire s'applique aussi
+aux blocs (avec
+.b .(b
+et
+.b .)b )
+.
+.sh 1 "\*T et le photocompositeur"
+.pp
+Avec un peu de soin,
+vous pouvez préparer
+des documents
+qui seront joliment imprimés
+sur un terminal normal,
+ou, si vous avez besoin d'un photocompositeur,
+en utilisant le programme de formatage \*T \&.
+.sh 2 "Polices"
+.pp
+Une
+.i police
+est un style de caractères.
+Trois polices sont
+disponibles simultanément,
+Times Roman,
+Times italique,
+et Times en gras,
+plus la police spéciale pour les maths.
+La police normale est Roman.
+.pp
+On peut à tout instant
+changer de police.
+Les requêtes
+.b .r ,
+.b .i ,
+.b .b ,
+et
+.b .bi
+changent respectivement sur Roman,
+italique,
+gras,
+et italique gras.
+Vous pouvez mettre un seul mot
+dans une certaine police
+en tapant (par exemple):
+.(b
+\&.i mot
+.)b
+ce qui mettra ce
+.i mot
+en italique,
+mais n'affectera pas le texte environnant.
+.pp
+Notez que si vous voulez mettre plus d'un mot à la fois
+dans une police de votre choix,
+vous devez entourer ces mots de guillemets
+(`\|"\|')
+ainsi, pour le processeur \*G, ils apparaîtront comme un seul mot.
+Les guillemets n'apparaîtront pas dans le texte.
+Si vous voulez que des guillemets apparaissent dans le texte,
+vous devrez mettre toute la chaîne de caractères entre guillemets
+(même si il s'agit d'un seul mot),
+et utiliser
+.i deux
+paires de guillemets,
+quand vous voulez qu'une paire apparaisse.
+Par exemple,
+si vous voulez produire le texte:
+.(b
+.i """poisson d'avril\|"""
+.)b
+en italique, vous devez taper:
+.(b
+\&.i """poisson d'avril\e|"""
+.)b
+Le
+.b \e|
+produit un petit espacement
+de sorte que
+.q l
+d'
+.i avril
+ne soit pas trop proche des guillemets dans \*G,
+comme cela l'est ici:
+.(b
+.i """poisson d'avril"""
+.)b
+.pp
+Quelques
+.q pseudo-polices
+sont disponibles.
+L'entrée:
+.(b
+\&.(b
+\&.u souligné
+\&.bx "mots dans un cadre"
+\&.)b
+.)b
+génère
+.(b
+.u souligné
+.bx "mots dans un cadre"
+.)b
+Notez que les requêtes de pseudo-police
+ne mettent qu'un seul paramètre dans la pseudo-police;
+les requêtes de police ordinaire (.r, \&.i, \&.b, et \&.bi)
+vont commencer à mettre
+tout le texte qui suit
+dans la police spéciale
+si vous ne fournissez pas de paramètre précis\**.
+.(f
+\**N.d.tr. Pour cela,
+commencer une nouvelle ligne directement après la requête.
+La police spéciale sera maintenue jusqu'à la fin du paragraphe.
+.)f
+Si vous utilisez ces requêtes de pseudo-polices (.u, \&.bx)
+au milieu des lignes,
+elles ne devraient porter vraiment que sur un seul mot.
+Ceci à cause de la manière
+de laquelle \*G justifie le texte.
+Par exemple,
+si vous voulez utiliser les requêtes:
+.(b
+\&.u "mots soulignés"
+et
+\&.bx "mots dans un cadre"
+.)b
+au milieu d'une ligne,
+\*G produirait
+.u "mots soulignés"
+et
+.bx "mots dans un cadre" ,\p
+ce qui, vous l'admettrez sans peine, n'est pas très joli.
+.pp
+Le second paramètre
+de toutes les requêtes de police
+est dans la police d'origine.
+Par exemple,
+la requête de police:
+.(b
+\&.b hardi petit
+.)b
+génère
+.q hardi
+en caractères gras,
+mais mettra
+.q petit
+dans la police du texte environnant,
+ce qui donne:
+.(b
+.b hardi petit.
+.)b
+Pour avoir les deux mots
+.b hardi
+et
+.b petit
+en gras
+.b "hardi petit" ,
+tapez:
+.(b
+\&.b "hardi petit"
+.)b
+.pp
+Vous pouvez panacher les polices à l'intérieur
+d'un seul mot en utilisant une séquence spéciale
+.b \ec
+en fin de ligne
+pour indiquer
+.q "continuer à traiter le texte" ;
+cela permet aux lignes d'entrée
+d'être mises bout à bout
+sans être interrompues par un espacement.
+Par exemple, l'entrée:
+.(b
+\&.u sou \ec
+\&.i ligné
+.)b
+génère
+.u sou \c
+.i ligné ,
+mais si nous avions tapé:
+.(b
+\&.u sou
+\&.i ligné
+.)b
+le résultat aurait été
+.u sou
+.i ligné
+en deux mots.
+.sh 2 "Tailles de caractères"
+.pp
+Le photocompositeur
+supporte différentes tailles de caractères,
+mesurées en points.
+La taille de caractères par défaut
+est 10 points
+pour le corps de texte,
+8 points pour les notes en bas de page.
+Pour changer la taille des caractères,
+tapez:
+.(b
+\&.sz \c
+.i N
+.)b
+où
+.i N
+est la taille souhaitée exprimée en points.
+Vous pouvez aussi
+.q "ajouter de la taille"
+avec la requête
+.(b
+\&.sz \c
+.i +N
+.)b
+ou en
+.q enlever
+en utilisant le signe - à la place de + \&.
+.br
+L'
+.i "espacement vertical"\**
+.(f
+\**Distance entre le bas de la plupart des lettre
+(la
+.i "ligne de base")
+de deux lignes adjacentes.
+.)f
+sera proportionnel à
+la taille des caractères.
+.pp
+Avec
+.b .sz
+, ces changements de tailles de caractères sont
+.i temporaires !!!
+Pour revenir à la taille par défaut, tapez simplement
+.(b
+\& \&.sz
+.)b
+Si vous voulez influencer systématiquement
+la taille des éléments de votre texte,
+utilisez les commandes
+.b .nr:
+.(b
+\&.nr pp 12
+.)b
+met tout corps de texte se trouvant après cette commande à 12 pts.
+.(b
+\&.nr sp 12
+.)b
+met tous les titres de chapitre suivant cette commande à 12 pts.
+.(b
+\&.nr tp 12
+.)b
+met tous les en-têtes et pieds de page suivant cette commande à 12 pts.
+Vous la placerez avantageusement directement après la commande
+.b .he
+(ou
+.b .fo ).
+.pp
+On peut donner à un seul mot ou phrase
+une taille plus petite
+que celle du texte environnant
+en utilisant la requête
+.b .sm .
+Cela convient spécialement aux mots écrits en capitales,
+à cause d'une illusion d'optique qui les fait paraître
+plus grandes qu'elles ne le sont vraiment.
+Par exemple:
+.(b
+\&.sm UNIX
+.)b
+s'imprime
+.sm UNIX ,
+ce qui est plus joli que UNIX.
+.\" Dave Kemper notes that the following probably has not been true
+.\" since 1986; keeping (but commented) for historical interest.
+.\" .pp
+.\" Avertissement:
+.\" changer les tailles de caractères
+.\" sur le photocompositeur
+.\" est une opération mécanique lente.
+.\" Sur les imprimantes laser, il faudra peut-être recharger de
+.\" nouvelles polices.
+.\" Dès lors les changements de tailles de caractères devraient être
+.\" .ne 1i
+.\" utilisés avec prudence.
+.sh 2 "Guillemets"
+.pp
+En typographie,
+pour créer des guillemets,
+il est habituel
+d'utiliser deux accents graves et deux accents aigus,
+plutôt que les guillemets
+(`\|"\|').
+C'est parce que
+deux accents graves et deux accents aigus
+donnent un meilleur résultat optique.
+Par exemple, comparez
+"guillemets" à
+``guillemets''.
+.pp
+Vous pourrez aussi utiliser la séquence
+.b \e*(lq
+et
+.b \e*(rq
+pour mettre les guillemets respectivement à gauche et à droite
+du mot ou de l'expression concernés.
+Par exemple,
+utilisez:
+.(b
+\e*(lqCertaines choses ne sont pas vraies,
+même si elles ont eu lieu.\e*(rq
+.)b
+génère le résultat:
+.(b
+\*(lqCertaines choses ne sont pas vraies,
+même si elles ont eu lieu.\*(rq
+.)b
+Plus rapide, la requête:
+.(b
+\&.q "texte entre guillemets"
+.)b
+générera
+.q "texte entre guillemets" .
+Notez que vous devez entourer
+le texte concerné de guillemets
+s'il est formé de plusieurs mots.
+.sx 0
+.uh Remerciements
+.pp
+J'aimerais remercier
+Bob Epstein,
+Bill Joy,
+et Larry Rowe
+pour avoir eu le courage
+d'utiliser les macros \-me
+pour écrire des documents inhabituels
+durant la phase de développement;
+Ricki Blau,
+Pamela Humphrey,
+et Jim Joyce
+pour leur aide durant la phase de documentation;
+Peter Kessler
+pour ses nombreux griefs,
+des années après que j'aie considéré le projet comme
+.q achevé ,
+le plus souvent accompagnés de propositions de solutions
+(qui m'ont donc forcé à réparer plusieurs petits bogues);
+et la foule de gens qui ont contribué à ce projet
+par leurs idées ou leur soutien.
+.(b
+.uh "Annexe: petit lexique des noms de requêtes"
+Par ordre d'apparition dans le texte
+.sp
+.TS
+tab(|);
+L L Lx.
+\&.sp|space|espacement
+\&.pp|paragraph|nouveau paragraphe
+\&.he|header|en-tête
+\&.fo|footer|pied de page
+\&.ls|line spacing|T{
+espacement vertical (entre les lignes)
+T}
+\&.in|indent|indentation
+\&.ce|center|centrer
+\&.br|break|T{
+interruption (commence une nouvelle ligne)
+T}
+\&.(q|quote|citation (début)
+\&.)q|quote|citation (fin)
+\&.(l|list|liste (début)
+\&.)l|list|liste (fin)
+\&.(b|bloc|bloc (début)
+\&.)b|bloc|bloc (fin)
+\&.(z|floating keep|clos flottant (début)
+\&.)z|floating keep|clos flottant (fin)
+\&.hl|horizontal line|ligne horizontale
+\&.(c|centered block|bloc centré (début)
+\&.)c|centered block|bloc centré (fin)
+\&.(f|footnote|note en bas de page (début)
+\&.)f|footnote|note en bas de page (fin)
+\&.(x|index|T{
+faire apparaître dans l'index (début)
+T}
+\&.)x|index|T{
+faire apparaître dans l'index (fin)
+T}
+\&.xp|print index|imprimer l'index
+\&.lp|lined up paragraph|T{
+paragraphe aligné (à 1e ligne non-indentée)
+T}
+\&.ip|indented paragraph|T{
+paragraphe indenté, sauf en sa première ligne
+T}
+\&.np|numbered paragraph|paragraphe numéroté
+\&.sh|set header|faire un titre
+\&.uh|unnumbered header|titre non-numéroté
+\&.tp|title page|page de titre
+\&.+c|add chapter|ajouter un chapitre
+\&.EQ|equation|équation (début)
+\&.EN|equation|équation (fin)
+\&.TS|table start|tableau (début)
+\&.TE|table end|tableau (fin)
+\&.2c|2 column|écrire sur 2 colonnes
+\&.1c|1 columns|écrire sur 1 colonne
+\&.de xx|define macro|définir un macro
+\&.r|roman|roman
+\&.i|italic|italique
+\&.b|bold|gras
+\&.bi|bold italic|italique gras
+\&.u|underlined|souligné
+\&.bx|box|encadré
+\&.sz|size|taille de police
+\&.sm|small|T{
+plus petit que le texte environnant
+T}
+\&.q|quoted|entre guillemets
+.TE
+.)b
+.\" Local Variables:
+.\" mode: nroff
+.\" coding: utf-8
+.\" End:
+.\" vim: filetype=groff:
diff --git a/doc/meref.me.in b/doc/meref.me.in
new file mode 100644
index 0000000..bc5eb62
--- /dev/null
+++ b/doc/meref.me.in
@@ -0,0 +1,2439 @@
+.\" Copyright (c) 1986, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in
+.\" the documentation and/or other materials provided with the
+.\" distribution.
+.\" 3. [Deleted. See
+.\" ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
+.\" 4. Neither the name of the University nor the names of its
+.\" contributors may be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+.\" PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
+.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)ref.me 8.2 (Berkeley) 06/01/94
+.\"
+.\" Modified by jjc@jclark.com and g.branden.robinson@gmail.com for
+.\" groff.
+.\"UC 7
+.nr fi 1n
+.nr sx 0
+.\"pn 0
+.ds MO @VERSION@
+.de TL \" *** title line
+.lp
+.di XX
+..
+.ie \n(.g \{\
+.de DE
+\?\h'|\\n(DIu'\c\?
+..
+.\}
+.el \{\
+.de DE
+\\\\h'|\\\\n(DIu'\\\\c
+..
+.\}
+.am DE
+.br
+.di
+.in +\\n(DIu
+.ti 0
+.XX
+.rm XX
+..
+.ds UG groff\" upright "groff" for use outside of running text
+.ds UM me\" upright "me"
+.ds G \fI\*(UG\fP\"
+.ds N \fInroff\fP\"
+.ds T \fItroff\fP\"
+.ds ME \fI\*(UM\fP\"
+.ds MR \f(BI\*(UM\fP Reference Manual\"
+.\" Compute an indentation for the macro and string synopses based on
+.\" the length of the longest entry.
+.nr DI \w'.sh \(+-N T a b c d e f'+2n
+.he '\*(MR''%'
+.de NR
+.b "\en\\$1" "\\$2"
+..
+.de ST
+.b "\e*\\$1" "\\$2"
+..
+.\"sc
+.\"eh 'USD:20-%''\-me Reference Manual'
+.\"oh '\-me Reference Manual''USD:20-%'
+.+c
+.ce 20
+.sz 14
+.b "\*(MR"
+.sz
+.sp
+.i "for \fR\*(UG \*(UM\fP version \*(MO*"
+.(f
+* based on \fIe.tmac\fP 8.1 from 4.4BSD
+.)f
+.sp 2
+.ul
+Eric P. Allman
+.sp
+.i "Adapted for \fR\*(UG\fP by James Clark and G.\& Branden Robinson"
+.ce 0
+.sp 4
+.pp
+This document describes
+in terse form
+the features
+of the \*(ME macro package
+for \*G.
+Some familiarity with the latter is assumed.
+Specifically,
+the reader should understand
+breaks;
+filling;
+adjustment;
+font selection;
+type sizes;
+the definition and use of
+registers,
+strings,
+and macros;
+and typographical units of measurement:
+points, ems, ens, and vees.
+For a more casual introduction
+to text processing,
+refer to
+.\" the document \" slack phrasing for widow/orphan control
+.q "Writing Papers with \*G using \-\*(ME" .
+.pp
+Many of the package's rendering parameters
+can be adjusted through
+registers,
+strings,
+and macro calls.
+Macro arguments are denoted with lowercase letters for
+numeric values
+(suffixed with a scaling unit if appropriate)
+and with uppercase for text arguments.
+Default parameter values are shown in square brackets.
+The notation
+.i \(+-n
+indicates a numerical value with an optional leading sign.
+Without the sign,
+it assigns a value
+.i n.
+With it,
+it expresses alteration of an existing value by the amount
+.i n.
+\*(ME's font registers may be set only to mounting positions.
+Position zero tells \*(ME to perform no font change;
+the font of the preceding text
+is used instead.
+Position zero is a
+.q pseudo-font ;
+that is,
+it is interpreted and handled by the macros.
+In contrast,
+using position zero
+may produce unexpected results
+in a font selection escape sequence such as
+.b \ef0 ,
+because those are interpreted directly by \*T.
+\*(ME's type size registers support only integral values in points.
+Changes to parameters
+that affect the layout of the page
+(notably page length and vertical margins)
+should be done before calling
+any paragraphing or sectioning macros.
+Normally,
+vertical space is suppressed at the top of a page
+if no text has yet appeared
+(page headers notwithstanding).
+.pp
+\*G measures distances
+in device-specific basic units,
+so it is often necessary
+to specify measurements with a scaling unit.
+For instance,
+to set the paragraph indentation
+to eight ens,
+input
+.q ".nr pi 8n" .
+.q ".nr pi 8"
+makes the paragraph indentation eight basic units,
+or 8/72,000 inches on
+.i grops,
+\*G's PostScript output driver.
+.pp
+Registers and strings
+with names of the form
+.b $ \c
+.bi x
+may be used in expressions and text
+but should not be changed.
+Macros with names of the form
+.b $ \c
+.bi x
+are
+.i hooks,
+called internally by \*(ME,
+and can be redefined
+to alter their function.
+This may be a sensitive operation;
+look at the macro definition in the
+.i e.tmac
+file before changing it.
+If you don't require a given hook,
+(re)define it as empty instead of removing it.
+.pp
+Objects in \*(ME
+follow a rigid naming convention.
+To avoid conflict,
+any user-defined register,
+string,
+or macro
+names should be single numerals or uppercase letters,
+or any longer character sequence
+including at least one uppercase letter.\**
+.(f
+\**
+For portability between BSD and \*G \*(ME,
+limit names to
+two characters,
+and avoid names starting with
+.b [
+(left square bracket).
+.)f
+The names employed
+by any preprocessors in use
+should also not be repurposed.
+.\" dead-tree pagination
+.br
+.ne 8v
+.sh 1 "Paragraphing"
+.TL
+.b .lp
+.DE
+Begin left-aligned paragraph.
+Centering,
+right-alignment,
+and underlining are canceled.
+The font is set to
+.NR (pf
+[1],
+the type size
+to
+.NR (pp
+[10p],
+and vertical spacing
+(text baseline spacing)
+to
+.NR (tv
+[120]%
+of the type size.
+Vertical space of
+.NR (ps
+[0.35v]
+is inserted
+before the paragraph.
+The indentation is reset
+to
+.NR ($i
+[0]
+plus
+.NR (po
+[0]
+unless the paragraph
+is inside a display
+(see
+.b .ba ).
+At least
+the first two output lines
+of the paragraph
+are kept together
+on a page.
+.TL
+.b .pp
+.DE
+Like
+.b .lp ,
+but apply a (further) indentation of
+.NR (pi
+[5n]
+to the first output line.
+.TL
+.b .ip
+.i T
+.i i
+.DE
+Like
+.b .lp ,
+but set the paragraph
+with an optional hanging tag
+.i T
+[empty]
+and the remainder indented by
+.i i
+[\c
+.NR (ii
+[5n]].
+The tag
+.i T
+is
+.q exdented
+(the opposite of
+.i in dented).
+Any spaces in
+.i T
+must be unbreakable.
+If
+.i T
+does not fit in the space
+.i i,
+.b .ip
+breaks the line after
+.i T .
+.TL
+.b .np
+.DE
+Like
+.b .ip ,
+but tag the paragraph with a number in parentheses,
+starting at 1.
+Each subsequent
+.b .np
+call increments it.
+The paragraph number is stored in
+.NR ($p
+and reset to 1 by
+.b .lp ,
+.b .pp ,
+.b .bu ,
+.b .sh ,
+and
+.b .sx .
+.TL
+.b .bu
+.DE
+Like
+.b .ip ,
+except that the tag is a bullet (\(bu).
+No vertical space is inserted
+between adjacent bulleted paragraphs,
+.\" TODO: Move the following application note to meintro.me.in or some
+.\" future non-introductory me(7) usage manual.
+enabling the construction of compact itemized lists.
+.sh 1 "Sectioning"
+.pp
+Numbered sections
+are similar to paragraphs
+except that a
+section number of the form
+.q 1.2.3
+is automatically
+generated for each.
+\*(ME supports up to six levels of sectioning;
+any given section has a
+.i depth
+that determines
+the quantity of components
+(separated by dots)
+shown in its section number.
+Unnumbered section headings are similar,
+except that no number is prefixed
+to the section title.
+.TL
+.b .sh
+.i \(+-n
+.i T
+.i "a b c d e f"
+.DE
+Begin section with numbered heading
+of depth
+.i \(+-n
+[+0]
+and optional title
+.i T
+[empty].
+Vertical space of
+.NR (ss
+[1v]
+precedes the heading.
+The components
+of the section number
+are maintained in
+.NR ($1
+through
+.NR ($6 ;
+combined,
+they are available in
+.ST ($n .
+Automatic section numbering at all depths begins at 1.
+The heading is set in font
+.NR (sf
+[3]
+at size
+.NR (sp
+[10p]
+and uses the indentation of its parent depth;
+a further indentation of
+.NR (so
+[0]
+is applied only to its output line.
+The section number is followed by a period,
+after which the typeface is set
+to the paragraph font
+.NR (pf
+at size
+.NR (pp
+so that content may follow immediately
+on the same output line.
+.b .sh
+ensures that there is enough room
+to format the section heading
+with the beginning of a paragraph on the same page
+(about 3 lines total).
+If any of
+.i a
+through
+.i f
+[all empty]
+is specified,
+each component of the section number
+is assigned the corresponding argument
+instead of being automatically adjusted.
+A hyphen
+(\c
+.q \- )
+for a component argument
+prevents its alteration.
+If
+.i T
+is an underscore
+(\c
+.q _ ),
+the section depth and numbering are reset,
+the base indentation is not,
+and nothing is output\(em\c
+.\" TODO: Move the following application note to meintro.me.in or some
+.\" future non-introductory me(7) usage manual.
+this is useful to automatically
+coordinate section numbers with
+chapter numbers.
+If all components are zero,
+no number is output.
+.TL
+.b .sx
+.i \(+-n
+.DE
+Go to section depth
+.i \(+-n
+[\-1],
+but emit no section heading
+and do not increment the section number.
+This has the effect of an
+.b .lp
+call
+at the new depth.
+.TL
+.b .uh
+.i T
+.DE
+Begin unnumbered section.
+Like
+.b .sh ,
+without the section numbering features.
+.TL
+.b .$p
+.i T
+.i B
+.i n
+.DE
+Output section heading.
+.i T
+is the title,
+.i B
+is the concatenated number,
+and
+.i n
+is the depth.
+These parameters are not always present;
+.b .sh
+passes all three,
+.b .uh
+only the first,
+and
+.b .sx
+all three,
+but the first two
+are empty.
+If
+.i n
+is present,
+the section indentation is set to
+.NR (si
+times\~\c
+.i n .
+.TL
+.b .$0
+.i T
+.i B
+.i n
+.DE
+This hook macro,
+normally empty,
+is called automatically
+by
+.b .sh
+and
+.b .uh
+after they call
+.b .$p ,
+and is passed the same arguments.
+.\" TODO: Move the following application note to meintro.me.in or some
+.\" future non-introductory me(7) usage manual.
+You can define it to,
+for instance,
+automatically put
+each section title
+into a table of contents
+using
+.b .(x
+and
+.b .)x .
+.TL
+.b .$ \c
+.bi n
+.DE
+These hook macros
+(where
+.i n
+is an integer 1\(en6)
+are called by
+.b .$p
+just before it outputs
+a section heading
+of depth
+.i n.
+.\" TODO: Move the following application note to meintro.me.in or some
+.\" future non-introductory me(7) usage manual.
+They could be used
+to obtain section depth-dependent spacing.
+.sh 1 "Headers, Footers, and Margins"
+.ds TP \(aq\,\fIL\/\fP\(aq\,\fIM\/\fP\(aq\,\fIR\/\fP\(aq
+.pp
+Headers and footers
+are known as
+.i "three-part titles"
+for their left,
+middle,
+and right-hand components
+.i L,
+.i M,
+and
+.i R.
+The components are separated
+by a
+.i delimiter,
+shown here as a neutral apostrophe,
+but which can be any character
+that does not occur in any of the components.
+Any defined title is
+placed on the page automatically,
+set in font
+.NR (tf
+[3]
+at size
+.NR (tp
+[10p].
+Each title definition
+applies starting with the
+.i next
+page;
+titles intended for output on the first page
+should be defined prior to any sectioning or paragraphing macro calls.
+A title
+must be quoted
+if it contains more than two adjacent spaces
+or more than eight spaces total.
+.pp
+The placement
+of headers and footers
+is controlled by four registers
+initialized to values scaled
+with respect to the default type size and vertical spacing.
+.NR (hm
+[4v]
+is the distance from the top of the page
+to the top of the header,
+.NR (fm
+[3v]
+that from the bottom of the page
+to the bottom of the footer,
+.NR (tm
+[7v]
+that from the top of the page
+to the top of the text,
+and
+.NR (bm
+[6v]
+that from the bottom of the page
+to the (nominal) bottom of the text.
+.pp
+\*(ME uses \*T's environment 0 for body text,
+1 for keeps
+(see below),
+and 2 for headers and footers.
+The default line length is two inches less than the page width
+(e.g.,
+6.5i on U.S.\& letter paper).
+The default page offset
+(left margin)
+is determined by the output device;
+it is typically 1.0i on typesetting devices and 0 on terminals.
+.TL
+.b .xl
+.i \(+-n
+.DE
+Set line length to
+.i n
+[see above]
+only in the current environment.
+.TL
+.b .ll
+.i \(+-n
+.DE
+Set line length to
+to
+.i n
+[see above]
+in all environments used by \*(ME,\**
+.(f
+\**
+\*(ME uses only the three environments of AT&T \*T,
+but in GNU \*T,
+the user can create additional ones.
+.b .ll
+works like
+.b .xl
+for the latter.
+.)f
+and store it in
+.NR ($l .
+This macro should not be used
+after output has begun,
+and particularly not in multi-column layouts.
+.TL
+.b .he
+\*(TP
+.DE
+Define header
+to be placed at the top
+of every page.
+.TL
+.b .fo
+\*(TP
+.DE
+Define footer
+to be placed at the bottom
+of every page.
+.TL
+.b .eh
+\*(TP
+.DE
+Define header
+to be placed at the top
+of every even-numbered page.
+.TL
+.b .oh
+\*(TP
+.DE
+Define header
+to be placed at the top
+of every odd-numbered page.
+.TL
+.b .ef
+\*(TP
+.DE
+Define footer
+to be placed at the bottom
+of every even-numbered page.
+.TL
+.b .of
+\*(TP
+.DE
+Define footer
+to be placed at the bottom
+of every odd-numbered page.
+.TL
+.b .hx
+.DE
+Suppress headers and footers
+on the next page.
+.TL
+.b .$h
+.DE
+Output the page header.
+Care should be taken when redefining this macro.
+Doing so
+can disable the
+.b .he ,
+.b .fo ,
+.b .eh ,
+.b .oh ,
+.b .ef ,
+and
+.b .of
+macros,
+as well as the chapter-style title feature
+of
+.b .+c .
+.TL
+.b .$f
+.DE
+Output the page footer;
+the same comments apply
+as to
+.b .$h .
+.TL
+.b .$H
+.DE
+This hook macro is called
+at the top of each page
+(after the header and any
+pending floating keeps are emitted)
+and of each column in multi-column mode.
+.\" TODO: Move the following application note to meintro.me.in or some
+.\" future non-introductory me(7) usage manual.
+Use it for column headings.
+.sh 1 "Displays"
+.pp
+Display macros enclose material;
+their names are of the form
+.b .( \c
+.bi x
+and
+.b .) \c
+.bi x ,
+and must be paired.
+Not all display types can nest
+with themselves or each other.
+All displays except centered blocks
+and long quotations
+are preceded and followed
+by an extra
+.NR (bs
+[0.35v]
+of vertical space
+and use a vertical spacing of
+.NR (dv
+[120]%.
+Long quotation pre- and post-space is stored in a dedicated register,
+while centered blocks have none;
+both use the vertical spacing of normal text,
+.NR (tv .
+.TL
+.b .(l
+.i A
+.i F
+.DE
+Begin list.
+Text until
+.b .)l
+is set in font
+.NR (df
+[0]
+with filling disabled.
+If
+.i A
+[\c
+.b I ]
+is
+.b I ,
+the list is indented by
+.NR (bi
+[4m];
+if
+.b M ,
+it is set at the left margin;
+if
+.b L ,
+it is left-aligned
+(distinguishably from
+.b M
+only if the base indentation
+is not zero);
+and if
+.b C ,
+the list is centered on a line-by-line basis.
+If
+.i F
+[empty]
+is
+.b F ,
+filling is enabled.
+.TL
+.b .)l
+.DE
+End list.
+.\" dead-tree pagination
+.br
+.ne 4v
+.TL
+.b .(q
+.DE
+Begin long quotation.
+Text until
+.b .)q
+is filled,
+indented on the left and right
+by
+.NR (qi
+[4n],
+preceded and followed
+by
+.NR (qs
+[0.35v]
+space,
+and set at type size
+.NR (qp
+[\-1p].
+.TL
+.b .)q
+.DE
+End long quotation.
+.TL
+.b .(b
+.i A
+.i F
+.DE
+Begin a block,
+a form of
+.i keep:
+\*(ME tries to avoid breaking a page
+or column between
+.b .(b
+and
+.b .)b .
+Such a break is allowed anyway
+if respecting the keep
+would leave more than
+.NR (bt
+[0]
+vees of blank space
+below it.
+If
+.NR (bt
+is zero,
+this threshold feature
+is disabled:
+the break will not occur within the keep.
+The font and
+.i A
+and
+.i F
+arguments are handled as with
+.b .(l .
+.TL
+.b .)b
+.DE
+End block.
+.\" dead-tree pagination
+.br
+.ne 3v
+.TL
+.b .(z
+.i A
+.i F
+.DE
+Begin floating keep.
+Like
+.b .(b ,
+except that
+.i A
+defaults to
+.b M
+and the keep
+.i floats
+to the bottom of the page or column
+if it fits,
+or the top of the next otherwise.
+Its position relative to adjacent formatted text
+is thus flexible.
+.NR (zs
+[1v]
+space
+precedes and follows
+a floating keep.
+.TL
+.b .)z
+.DE
+End floating keep.
+.TL
+.b .(c
+.DE
+Begin centered block.
+Input until
+.b .)c
+is collected,
+its longest output line centered,
+and the remainder aligned with respect to that line;
+contrast with the line-by-line centering obtained with
+\(lq\c
+.b ".(b C" \(rq.
+.TL
+.b .)c
+.DE
+End centered block.
+.sh 1 "Annotations"
+.pp
+Some annotation macros are also mandatorily paired enclosures,
+as display macros are.
+.TL
+.b .(d
+.DE
+Begin delayed text.
+Input until
+.b .)d
+is saved for later output by
+.b .pd .
+Delayed text regions are numbered
+starting at 1;
+the number is kept in
+.NR ($d
+and in the associated string
+.ST # .
+.\" TODO: Move the following application note to meintro.me.in or some
+.\" future non-introductory me(7) usage manual.
+Endnotes are one application.
+.TL
+.b .)d
+.DE
+End delayed text.
+.NR ($d
+and the associated string
+.ST #
+are incremented.
+.TL
+.b .pd
+.DE
+Emit delayed text:
+output everything accumulated with
+.b .(d
+since the last call to
+.b .pd .
+The delayed text number is reset to 1.
+.\" TODO: Move the following application note to meintro.me.in or some
+.\" future non-introductory me(7) usage manual.
+This might be used
+at the end of each chapter.
+.TL
+.b .(f
+.DE
+Begin footnote.
+Input until
+.b .)f
+is saved for output
+when the foot of the page is reached.
+Footnotes are numbered
+starting at 1;
+the number is kept in
+.NR ($f
+and in the associated string
+.ST * .
+The text of the footnote
+floats to the bottom
+of the page
+and set in font
+.NR (ff
+[1]
+at size
+.NR (fp
+[8p].
+Each entry
+is preceded by
+.NR (fs
+[0.2v]
+space,
+indented
+.NR (fi
+[3n]
+on its first line,
+and
+.q undented
+(indented from the right margin)
+by
+.NR (fu
+[0].
+Footnotes line up underneath
+columns in the page layout.
+.\" XXX: Quantify when debugged. See Savannah #58447, #63163, #63164.
+If the footnote's content
+does not fit on the page,
+it carries over
+to the next.
+.TL
+.b .)f
+.DE
+End footnote.
+.NR ($f
+and the associated string
+.ST *
+are incremented
+if the latter has been interpolated
+outside a footnote.
+.TL
+.b .$s
+.DE
+Output footnote separator:
+draw a horizontal line up to 2 inches wide.
+Called by
+.b .(f .
+Any redefinition should produce output
+no more than one vee in height.
+.TL
+.b .(x
+.i X
+.DE
+Begin index entry.
+Input until
+.b .)x
+is saved in an index named
+.i X
+[\c
+.b x ]
+until called up with
+.b .xp.
+Each entry is preceded
+by
+.NR (xs
+[0.2v]
+of vertical space
+and undented by
+.NR (xu
+[0.5i];
+that amount of space is reserved
+on the right end of the line
+for the
+(possibly affixed)
+page number.
+.TL
+.b .)x
+.i P
+.i A
+.DE
+End index entry.
+The entry
+is rendered with a
+.i leader
+(row of dots)
+up to an affix
+(such as a volume number and
+separating punctuation)
+.i A
+[empty]
+followed by
+.i P
+[\c
+.NR % ]
+right-aligned on the last line of the entry.
+If
+.i A
+is specified,
+.i P
+must be as well.
+If
+.i P
+is an underscore,
+the leader,
+.i P,
+and any
+.i A
+are suppressed.
+.TL
+.b .xp
+.i X
+.DE
+Emit index
+.i X
+[\c
+.b x ]
+using the current font and type size
+with display vertical spacing
+(\c
+.NR (dv ).
+.\" dead-tree pagination
+.br
+.ne 4v
+.sh 1 "Columnated Output"
+.TL
+.b .2c
+.i \(+-s
+.i n
+.DE
+Enter multi-column mode,
+formatting text in
+.i n
+[2]
+columns of equal width.
+The column separation
+(\c
+.q gutter )
+is set to
+.i \(+-s
+[4n],
+saved
+in
+.NR ($s ,
+and persists until changed by this macro.
+The
+.i n
+columns with
+.i n \-1
+gutters
+fill the single-column line length;
+each column's line length
+is stored in
+.NR ($l .
+The current column number
+is in
+.NR ($c
+and the number of columns in
+.NR ($m .
+.TL
+.b .1c
+.DE
+Leave multi-column mode;
+return to single-column layout.
+.TL
+.b .bc
+.DE
+Begin new column.
+Like
+.b .bp ,
+but begin a column
+on a new page
+only if necessary.
+.\" dead-tree pagination
+.br
+.ne 4v
+.sh 1 "Type Size and Font Styles"
+.TL
+.b .sz
+.i \(+-p
+.DE
+Set the type size to
+.i \(+-p
+[10p],
+and the vertical spacing per
+.NR (tv .
+These do
+.i not
+persist beyond many \*(ME macro calls:
+paragraph macros reset
+the type size and vertical spacing.
+Similarly,
+headers/footers,
+section headings,
+long quotations,
+footnotes,
+and
+chapter titles
+alter them.
+.pp
+\*(ME assumes that font positions 1 through 4 correspond to
+roman,
+italic,
+bold,
+and bold-italic typefaces,
+respectively.
+Use the
+.b .fp
+request to mount your preferred fonts in these positions.
+.pp
+The following macros
+style or decorate an argument
+.i W
+and accept an optional second argument
+.i X,
+formatted as the previous text without intervening space.
+To suppress a word break after the call,
+populate or suffix
+.i X
+with
+.b \ec .
+.TL
+.b .r
+.i W
+.i X
+.DE
+Set
+.i W
+in the roman style.
+If no parameters,
+change to the roman style.
+.TL
+.b .i
+.i W
+.i X
+.DE
+Set
+.i W
+in italics.
+If no parameters,
+change to the italic style.
+.TL
+.b .b
+.i W
+.i X
+.DE
+Set
+.i W
+in boldface.
+If no parameters,
+switch to the bold style.
+.TL
+.b .bi
+.i W
+.i X
+.DE
+Set
+.i W
+in bold italics.
+If no parameters,
+switch to the bold-italic style.
+.TL
+.b .q
+.i W
+.i X
+.DE
+Quote
+.i W ,
+surrounding it with
+with
+.b \(lq
+and
+.b \(rq .
+.TL
+.b .sm
+.i W
+.i X
+.DE
+Set
+.i W
+one point smaller than the surrounding type.
+It has no effect in \*N mode.
+.TL
+.b .u
+.i W
+.i X
+.DE
+Underline
+.i W.
+On typesetting output devices,
+this is true underlining,
+in contrast to the
+.b .ul
+request,
+which changes to the
+.q "underline font"
+(usually italics in \*G).
+On terminal output devices,
+.i W
+is surrounded by underscores.
+This argument should not be subject to adjustment,
+hyphenation,
+or breaking;
+.b .u
+is reliable only when filling is disabled.
+.TL
+.b .bx
+.i W
+.i X
+.DE
+Set
+.i W
+in a box.
+On typesetting output devices,
+.i W
+is surrounded by rules (lines).
+On terminal output devices,
+.i W
+is simulated with ISO\~6429 color escape sequences
+or surrounded by vertical bars.
+It is not marked specially on
+.i groff 's
+.b html
+output device.
+This argument should not be subject to adjustment,
+hyphenation,
+or breaking;
+.b .bx
+is reliable only when filling is disabled.
+.sh 1 "Preprocessor Support"
+.TL
+.b .EQ
+.i A
+.i T
+.DE
+Begin
+.i \%@g@eqn (1)
+equation.
+If
+.i A
+[\c
+.b C ]
+is
+.b C ,
+the equation is centered;
+if
+.b I ,
+indented by
+.NR (bi
+[4m];
+and if
+.b L ,
+left-aligned.
+.i T
+[empty]
+is a title aligned to the right margin
+next to the equation.
+See
+.q "Typesetting Mathematics \- User's Guide"
+by Brian W. Kernighan
+and Lorinda L. Cherry.
+.TL
+.b .EN
+.i C
+.DE
+End
+.i \%@g@eqn
+equation.
+If
+.i C
+[empty]
+is
+.b C ,
+and the equation is followed immediately
+by another
+.b .EQ ,
+the texts of each are centered together.
+Otherwise,
+the equation is typeset
+within the page or column
+with
+.NR (es
+[0.5v]
+space
+above and below it.
+.TL
+.b .TS
+.i H
+.DE
+Begin (start)
+.i \%@g@tbl (1)
+table.
+Tables are preceded and followed by
+.NR (bs
+of space.
+If
+.i H
+[empty]
+is
+.b H ,
+you can call
+.b .TH
+after some table rows
+to repeat them across columns or pages.
+If you want a table to float,
+surround the
+.b .TS
+and
+.b .TE
+calls with
+.b .(z
+and
+.b .)z
+calls.
+.TL
+.b .TH
+.DE
+With \(lq\c
+.b ".TS H" \(rq,
+end the
+.i \%@g@tbl
+table header.
+.TL
+.b .TE
+.DE
+End
+.i \%@g@tbl
+table.
+.TL
+.b .PS
+.i h
+.i w
+.DE
+Begin
+.i \%@g@pic (1)
+picture.
+.i h
+[empty]
+and
+.i w
+[empty],
+if present,
+scale the image.
+.\" XXX: That's vague, but DWB pic and GNU pic reportedly interpret
+.\" these arguments differently and there's no room here to discuss it.
+.TL
+.b .PE
+.DE
+End
+.i \%@g@pic
+picture,
+leaving the drawing position at the bottom of the picture.
+.TL
+.b .PF
+.DE
+End
+.i \%@g@pic
+picture,
+leaving the drawing position at the top of the picture.
+.TL
+.b .IS
+.DE
+Begin
+.i ideal (1)\**
+picture.
+.(f
+\**
+.i groff
+does not provide an implementation of the
+.i ideal
+preprocessor.
+.)f
+.TL
+.b .IE
+.DE
+End
+.i ideal
+picture,
+leaving the drawing position at the bottom of the picture.
+.TL
+.b .IF
+.DE
+End
+.i ideal
+picture,
+leaving the drawing position at the top of the picture.
+.TL
+.b .GS
+.i A
+.DE
+Begin
+.i \%@g@grn (1)
+picture.
+.i A
+[\c
+.b C ]
+can be
+.b C ,
+.b L ,
+or
+.b R
+to center, left-, or right-align
+the picture.
+.TL
+.b .GE
+.DE
+End
+.i \%@g@grn
+picture,
+leaving the drawing position at the bottom of the picture.
+.TL
+.b .GF
+.DE
+End
+.i \%@g@grn
+picture,
+leaving the drawing position at the top of the picture.
+.sh 1 "Formal Documents"
+.TL
+.b .tp
+.DE
+Begin title page.
+Unusually,
+.b .sp
+calls at the top of the page
+.i are
+honored.
+Headers and footers are suppressed.
+The page number
+is not incremented
+for this page.
+.TL
+.b .++
+.i S
+.i H
+.DE
+Begin a
+.i segment
+of an organized document,
+affecting the values and formatting
+of chapter and page numbers.
+The chapter number in
+.NR (ch
+is reset to\~0.
+A segment uses Arabic numerals
+for chapter and page numbers
+except where noted.
+The mandatory segment type argument
+.i S
+must be one of
+.b C
+for chapters
+(of the main matter),
+.b A
+for appendices
+(uppercase alphabetical chapter numbers),
+.b P
+for preliminary (\(lqfront\(rq) matter
+(such as a foreword;
+lowercase Roman page numbers),
+.b AB
+for an abstract
+(page numbering restarts at 1),
+or
+.b B
+for \(lqback\(rq matter,
+such as a bibliography.
+.b C
+or
+.b A
+may be prefixed with
+.b R ,
+which specifies a restart of page numbering
+when
+.b .+c
+is called within the applicable segment.
+If present,
+the
+.i H
+[empty]
+parameter defines the new header,
+which must be delimited as a three-part title\(em\c
+if it contains spaces,
+it must furthermore be quoted.
+To include the chapter number in
+.i H,
+use the input sequence
+.b "\eEn(ch" .\**
+.(f
+\**
+If you wish to avoid use of the \*G\|\" prevent italic f \ ugliness
+.b \eE
+extension,
+fully
+.i eight
+backslashes must precede
+.q n(ch .
+.)f
+For example,
+\[lq]\c
+.b ".++ RA |||\eEn(ch.%|" \[rq]
+numbers appendices and pages as
+.bi A .\c
+.bi n
+in the right-hand header,
+where
+.i A
+is the appendix letter
+and
+.i n
+is the page number.
+Each subdivision of a segment
+(each chapter,
+appendix,
+etc.\&)
+should be preceded by a
+.b .+c
+call.
+It is easier when using
+\*T to put the front matter
+at the end of the paper,
+so that the table of contents
+can be collected and put out;
+this material can then be resequenced
+by a tool that processes the output format,
+or physically moved
+to the beginning of the printed document.
+.TL
+.b .+c
+.i T
+.DE
+Begin chapter
+(or appendix).
+Reset the footnote number
+in
+.NR ($f
+to 1.
+If the segment type is
+.b RA
+or
+.b RC ,
+reset the page number
+in
+.NR %
+to 1.
+If
+.b .++
+has not been called,
+a segment type of
+.b C
+is assumed.
+If a header is defined,
+it replaces the footer
+on the first page
+of each chapter.
+If a title
+.i T
+[empty]
+is supplied,
+.b .$c
+is called.
+.TL
+.b .$c
+.i T
+.DE
+Format a chapter heading
+centered in boldface.
+The text
+.ST (wc
+[\c
+.b Chapter ]
+is output
+if the segment type is
+.b C
+or
+.b RC,
+or that in
+.ST (wa
+[\c
+.b Appendix ]
+if the segment type is
+.b A
+or
+.b RA.
+The chapter number
+is incremented and output. \" except for abstract and bibliography segs
+If a chapter title
+.i T
+is present,
+it is formatted the same way,
+preceded by vertical space.
+If the segment type is any of
+.b C ,
+.b RC ,
+.b A ,
+or
+.b RA ,
+.b $C
+is called.
+.TL
+.b .$C
+.i K
+.i N
+.i T
+.DE
+This hook macro
+is called by
+.b .+c
+and
+.b .$c .
+.i K
+is the chapter or appendix term supplied by
+.b $c ,
+.i N
+is the chapter or appendix number,
+and
+.i T
+is its title.
+.\" TODO: Move the following application note to meintro.me.in or some
+.\" future non-introductory me(7) usage manual.
+This hook can be used to insert chapter titles
+into a table of contents.
+.sh 1 "Miscellaneous"
+.TL
+.b .ld
+.DE
+Update the
+.NR (y2
+and
+.NR (y4
+registers based on the current value of
+.NR (yr ,
+reinitialize the localized strings
+.ST (dw ,
+.ST (mo ,
+.ST (wa ,
+and
+.ST (wc ,
+and reset
+.ST (td
+based on the foregoing.
+.TL
+.b .re
+.DE
+Reset tab stops to every 0.5i.
+.TL
+.b .ba
+.i \(+-n
+.DE
+Set the base indentation
+to
+.i \(+-n
+[0].
+Paragraphs,
+sections,
+and displays
+are indented by at least this amount,
+stored in
+.NR ($i .
+Titles and footnotes
+are unaffected.
+.TL
+.b .hl
+.DE
+Break and draw a horizontal line
+of the current line length.
+You might call
+.b .hl
+at the beginning and/or end
+of a floating keep
+to differentiate
+the text from a figure.
+.TL
+.b .ep
+.DE
+End this page,
+but do not begin the next page.
+Useful for forcing out footnotes,
+but other than
+that hardly ever used.
+Must be followed by a
+.b .bp
+request or the end of input.
+.\" dead-tree pagination
+.br
+.ne 6v
+.sh 1 "\f(BIroff\fP Support\fR\**"
+.(f
+\**
+These facilities are provided to aid migration of
+\(lqold
+.i roff \(rq
+documents.
+See
+.i roff (7)
+for a history of
+.i roff -related
+typesetting systems.
+.)f
+.pp
+.TL
+.b .ix
+.i \(+-n
+.DE
+Equivalent to \(lq\|\fB\[aq]in \fI\(+-n\/\fR\(rq.
+.TL
+.b .bl
+.i n
+.DE
+Equivalent to \(lq\fB.sp \fIN\/\fR\(rq
+inside a
+.b .(b
+block.
+.TL
+.b .m1
+.i \(+-n
+.DE
+Set/adjust the space between the top of the page
+and the header to/by
+.i \(+-n
+[4v].
+.TL
+.b .m2
+.i \(+-n
+.DE
+Set/adjust the space between the header
+and the first line of text to/by
+.i \(+-n
+[2v].
+.TL
+.b .m3
+.i \(+-n
+.DE
+Set/adjust the space
+between the bottom of the text
+and the footer to/by
+.i \(+-n
+[2v].
+.TL
+.b .m4
+.i \(+-n
+.DE
+Set/adjust the space
+between the footer
+and the bottom of the page to/by
+.i \(+-n
+[4v].
+.TL
+.b .pa
+.i \(+-n
+.DE
+Equivalent to \(lq\fB.bp \fI\(+-n\/\fR\(rq.
+.TL
+.b .ro
+.DE
+Equivalent to \(lq\fB.af % i\fP\(rq.
+.TL
+.b .ar
+.DE
+Equivalent to \(lq\fB.af % 1\fP\(rq.
+.TL
+.b .n1
+.i C
+.DE
+Number output lines starting from 1.
+If
+.i C
+[empty]
+is
+.b C ,
+the line length is reduced
+and correspondingly indented;
+otherwise,
+the page offset is reduced
+to accommodate the line number.
+The amount in all cases is
+.NR (no
+[\ew\(aq0000\(aqu
+(the width of four numerals
+in the current font)].
+.TL
+.b .n2
+.i \(+-n
+.DE
+Stop numbering output lines if
+.i n
+missing,
+otherwise continue with the number modified by
+\(+-\c
+.i n.
+.TL
+.b .sk
+.DE
+Leave the next output page blank
+except for headers and footers.
+This can reserve space
+for a full-page diagram
+produced externally
+and composited in later.
+(To reserve only a partial page,
+use \[lq]\c
+.b .sv \~\c
+.bi n \[rq],
+where
+.i n
+is the amount of space required.
+This space will be output immediately
+if there is room,
+and otherwise
+at the top of the next page.
+If
+.i n
+is greater than the space available
+on an empty page,
+none will be output.)
+.sh 1 "Predefined Strings"
+.TL
+.ST *
+.DE
+Interpolate footnote number bracketed by superscripting strings:
+.ST { \c
+.\" \^ avoids 'f\' bad kerning in Times bold; wrong font metrics?
+.NR ($f \^\c
+.ST } .
+.TL
+.ST #
+.DE
+Interpolate delayed text number surrounded by square brackets:
+.b [ \c
+.NR ($d \c
+.b ] .
+.TL
+.ST {
+.DE
+Begin superscripting:
+move upward and reduce the type size.
+The line height is increased above by
+.NR (sx
+[0.2m]
+to accommodate the superscript.
+In \*N mode,
+output a left square bracket.
+.TL
+.ST }
+.DE
+End superscripting:
+reverse the motion and type size change of
+.ST { .
+In \*N mode,
+output a right square bracket.
+.\" TODO: Move this example to a section on super- and subscripting in
+.\" meintro.
+.\"For example,
+.\"to produce a superscript
+.\"you might type
+.\".b x \c
+.\".ST { \c
+.\".b 2 \c
+.\".ST } ,
+.\"which will render as
+.\".b x\*{2\*}
+.\"on typesetters and as
+.\".b x[2]
+.\"on terminals.
+.TL
+.ST <
+.DE
+Begin subscripting:
+move downward and reduce the type size.
+The line height is increased below by
+.NR (sx
+to accommodate the subscript.
+In \*N mode,
+output a left angle bracket.
+.TL
+.ST >
+.DE
+End subscripting:
+reverse the motion and type size change of
+.ST < .
+In \*N mode,
+output a right angle bracket.
+.\" dead-tree pagination
+.br
+.ne 6v
+.pp
+\*G \*(ME provides localized strings
+to support documents in several input languages;
+see the
+.i groff_tmac (5)
+man page.
+The date-related strings are initialized
+based on the current date
+when the formatter runs.
+To encode a different date in your document,
+change the \*T date registers as desired
+and then call
+.b .ld
+to update the strings.
+The day of the week is
+.i not
+recomputed from a new calendar date;
+.NR (dw
+must be modified manually.
+The strings can also be defined directly.
+.(b L F
+.TL
+.ST (dw
+.DE
+Weekday name.
+.TL
+.ST (mo
+.DE
+Month name.
+.TL
+.ST (td
+.DE
+The date in a form suitable for correspondence.
+Construct other date formats with
+.ST (dw ,
+.NR (dy
+(day of the month),
+.ST (mo ,
+.NR (mo
+(month of the year),
+.NR (y4
+(year),
+and
+.NR (y2
+(year of the century).
+.TL
+.ST (wa
+.DE
+The term
+.b .$c
+uses for
+.q appendix .
+.TL
+.ST (wc
+.DE
+The term
+.b .$c
+uses for
+.q chapter .
+.)b
+.sh 1 "Special Characters"
+.pp
+For modern documents,
+see the
+.i groff_char (7)
+man page.
+.pp
+For rendering of legacy \*(ME documents,
+the macro package defines several strings that construct accent marks
+and two symbols from mathematical set theory.
+These strings are limited in multiple respects:
+they can have a crude appearance,
+they are unrecognizable on character-cell video terminals
+because they rely on overstriking,
+and they cannot in general be \(lqstacked\(rq,
+as is required to correctly render words in
+(for example)
+Vietnamese.
+Preferable \*G alternatives
+are presented alongside them in the following table.
+.sp
+.\" dead-tree pagination
+.ne 2v
+.ta 5n +\w'There exists'u+2n +\w'Usage'u+3n +\w'Example'u+3n \
++\w'Output'u+3n +\w'groff'u+3n +\w'Output'u+3n
+.nf
+.b " Name Usage Example Output \f(BIgroff\fP Output"
+ Acute \e*\(aq a\e*\(aq a\*' \e[a aa] \[a aa]
+ Grave \e*\(ga e\e*\(ga e\*` \e[e ga] \[e ga]
+ Umlaut \e*: u\e*: u\*: \e[u ad] \[u ad]
+ Tilde \e*\(ti n\e*\(ti n\*~ \e[n a\(ti] \[n a~]
+ Caret \e*\(ha e\e*\(ha e\*^ \e[e a\(ha] \[e a^]
+ Cedilla \e*, c\e*, c\*, \e[c ac] \[c ac]
+ Caron \e*v s\e*v s\*v \e[s ah] \[s ah]
+ Ring \e*o A\e*o A\*o \e[A ao] \[A ao]
+ There exists \e*(qe \*(qe \e[te] \[te]
+ For all \e*(qa \*(qa \e[fa] \[fa]
+.fi
+.pp
+Three further string definitions cause no particular problems but have
+no advantage over \*G special character escape sequences
+apart from portability to BSD Unix systems.
+(The last lacks even that distinction,
+since
+Unix Version\~7 \*T
+supported the
+.b \e(em
+special character.)
+.TL
+.ST (lq
+.DE
+Left double quotation mark.
+Use
+.b \e(lq
+instead.
+.TL
+.ST (rq
+.DE
+Right double quotation mark.
+Use
+.b \e(rq
+instead.
+.TL
+.ST \-
+.DE
+Em dash.
+Use
+.b \e(em
+instead.
+.uh Acknowledgments
+.pp
+Allman would like to thank
+Bob Epstein,
+Bill Joy,
+and Larry Rowe
+for having the courage
+to use the \*(ME macros
+to produce non-trivial papers
+during the development stages;
+Ricki Blau,
+Pamela Humphrey,
+and Jim Joyce
+for their help with the documentation phase;
+peter kessler
+for numerous complaints,
+most accompanied by fixes;
+and the plethora of people who have contributed ideas
+and have given support for the project.
+.bp
+.uh Summary
+.pp
+Almost all macros,
+strings,
+and registers
+available in the \*(ME package
+are summarized below;
+the legacy strings from section
+.q "Special Characters"
+are omitted.
+Selected \*T
+requests,
+registers,
+and escape sequences are included as well;
+those listed can generally be used with impunity.
+The list is sorted by Unicode code point
+(basic Latin subset)
+keyed on the identifier:
+escape and control characters are disregarded,
+as are the escape function selectors for register and string
+interpolation,
+.b n
+and
+.b * .
+.pp
+Each row contains the name of the
+macro (or request),
+register,
+string,
+or escape function;
+a code for the name's type
+(one of the foregoing);
+and its description.
+The type codes are
+.b M
+for a macro or \*T
+request
+(shown prefixed with the control character
+.b . ,
+but the no-break control character
+.b \(aq
+can also be used),
+.b S
+for a string
+(shown using its interpolation syntax,
+.b \e*
+or
+.b \e*( ),
+.b R
+for a register
+(shown using its interpolation syntax,
+.b \en
+or
+.b \en( ),
+and
+.b F
+for a \*T built-in function
+(shown prefixed with the escape character
+.b \e ).
+.pp
+The type code can carry a variety of annotations.
+A section sign \(sc indicates features interpreted by \*T
+rather than the \*(ME package.
+The dagger \(dg and double dagger \(dd identify user-definable macros.
+Those marked with
+\(dd have default definitions;
+changing them may have unexpected side effects.
+The degree sign \(de notes features requiring AT&T device-independent
+\*T extensions
+(ca.\& 1981),
+and a square \(sq labels \*G extensions.
+.de $H
+.ev 1
+.ta \w'\enewline\(sc'u +\w'TYPE'u+2n
+.b "Name Type Description"
+.ev
+..
+.sp
+.if t .2c
+.if n .(c
+.(l L
+.$H
+\e\fI\,newline\fP F\(sc continue input line
+\e" F\(sc comment (to end of input line)
+\e*# S delayed text marker
+\e$\fI\,n\fP F\(sc interpolate \fIn\/\fPth macro argument
+\en($0 R section depth
+\&.$0 M\(dg post-section heading hook
+\en($1 R first section number component
+\&.$1 M\(dg pre-section heading depth 1 hook
+\en($2 R second section number component
+\&.$2 M\(dg pre-section heading depth 2 hook
+\en($3 R third section number component
+\&.$3 M\(dg pre-section heading depth 3 hook
+\en($4 R fourth section number component
+\&.$4 M\(dg pre-section heading depth 4 hook
+\en($5 R fifth section number component
+\&.$5 M\(dg pre-section heading depth 5 hook
+\en($6 R sixth section number component
+\&.$6 M\(dg pre-section heading depth 6 hook
+\&.$C M\(dg post-chapter title heading hook
+\&.$H M\(dg page/column heading hook
+\en($c R current column number
+\&.$c M\(dd output chapter number and title
+\en($d R delayed text number
+\en($f R footnote number
+\&.$f M\(dd output footer
+\&.$h M\(dd output header
+\en($i R paragraph base indentation
+\en($l R column width
+\en($m R number of available columns
+\e*($n S concatenated section number
+\en($p R numbered paragraph number
+\&.$p M\(dd output section heading
+\en($s R column spacing (indentation)
+\&.$s M\(dd output footnote area separator
+\e% F\(sc control hyphenation
+\en% R\(sc current page number
+\e& F\(sc dummy character
+\e(\fI\,xx\fP F\(sc interpolate special character \fIxx\fP
+\&.(b M begin block
+\&.(c M begin centered block
+\&.(d M begin delayed text
+\&.(f M begin footnote
+\&.(l M begin list
+\&.(q M begin long quotation
+\&.(x M begin index entry
+\&.(z M begin floating keep
+\e\(aq F\(sc acute accent
+\&.)b M end block
+\&.)c M end centered block
+\&.)d M end delayed text
+\&.)f M end footnote
+\&.)l M end list
+\&.)q M end long quotation
+\&.)x M end index entry
+\&.)z M end floating keep
+\e*\fI\,x\fP F\(sc interpolate string \fIx\fP
+\e*(\fI\,xx\fP F\(sc interpolate string \fIxx\fP
+\e** S footnote marker
+\&.++ M set document segment type
+\&.+c M begin chapter or appendix
+\e\- F\(sc minus sign
+\e*\- S em dash
+\en(.$ R\(sc macro parameter count
+\en(.i R\(sc current indentation
+\en(.l R\(sc current line length
+\en(.p R\(sc current page length
+\en(.s R\(sc current type size in points
+\e0 F\(sc unadjustable digit-width space
+\&.1c M end multi-column layout
+\&.2c M begin multi-column layout
+\e*< S begin subscripting
+\e*> S end subscripting
+\&.EN M end \fI@g@eqn\fP equation
+\&.EQ M begin \fI@g@eqn\fP equation
+\&.GE M\(de end \fI@g@grn\fP picture with position at bottom
+\&.GF M\(de end \fI@g@grn\fP picture with position at top
+\&.GS M\(de start \fI@g@grn\fP picture
+\&.IE M\(de end \fIideal\fP picture with position at bottom
+\&.IF M\(de end \fIideal\fP picture with position at top
+\&.IS M\(de start \fIideal\fP picture
+\eL\(aq\fI\,d\/\fP\(aq F\(sc draw vertical line of length \fId\fP
+\&.PE M\(de end \fI@g@pic\fP picture with position at bottom
+\&.PF M\(de end \fI@g@pic\fP picture with position at top
+\&.PS M\(de start \fI@g@pic\fP picture
+\&.TE M end \fI@g@tbl\fP table
+\&.TH M end heading for multi-page \fI@g@tbl\fP table
+\&.TS M begin \fI@g@tbl\fP table
+\e\(ha F\(sc 1/12 em unbreakable hair space
+\e_ F\(sc underrule
+\e\(ga F\(sc grave accent
+\&.ad M\(sc set text adjustment mode
+\&.af M\(sc assign register format
+\&.am M\(sc append to macro
+\&.ar M use Arabic numerals for page numbers
+\&.as M\(sc append to string
+\&.b M embolden argument
+\&.ba M set base indentation
+\&.bc M begin new column
+\&.bi M embolden and italicize argument
+\en(bi R display (block) indentation
+\&.bl M insert space (even at page top; cf.\& \fB.sp\fP)
+\en(bm R distance from text area to page bottom
+\&.bp M\(sc begin new page
+\&.br M\(sc break output line
+\en(bs R display (block) pre/post space
+\en(bt R block threshold for keeps
+\&.bx M box argument
+\ec F\(sc continue output line
+\&.ce M\(sc center output lines
+\en(ch R current chapter number
+\&.cp M\(sc\(sq toggle AT&T \*T compatibility mode
+\&.de M\(sc define macro
+\en(df R display font
+\&.do M\(sc\(sq operate with compatibility mode off
+\&.ds M\(sc define string
+\en(dv R\(sq vertical spacing of displayed text (%)
+\en(dw R\(sc day of the week
+\e*(dw S weekday name
+\en(dy R\(sc day of the month
+\ee F\(sc printable version of escape character \fB\e\fP
+\&.ef M set even-numbered page footer
+\&.eh M set even-numbered page header
+\&.el M\(sc else part of \fB.ie\fP conditional
+\&.ep M end page
+\en(es R equation pre/post space
+\ef\fI\,f\fP F\(sc inline font change to font \fIf\fP
+\ef(\fI\,ff\fP F\(sc inline font change to font \fIff\fP
+\&.fc M\(sc set field characters
+\en(ff R footnote font
+\&.fi M\(sc enable filling
+\en(fi R footnote indentation (first line only)
+\en(fm R footer margin
+\&.fo M set footer
+\&.fp M mount font at position
+\en(fp R footnote type size in points
+\en(fs R footnote prespace
+\en(fu R footnote undent (right indentation)
+\eh\(aq\fI\,d\/\fP\(aq F\(sc move distance \fId\fP horizontally
+\&.hc M\(sc set hyphenation character
+\&.he M set header
+\&.hl M draw horizontal line
+\en(hm R header margin
+\&.hx M suppress next page's headers/footers
+\&.hy M\(sc set automatic hyphenation mode
+\&.i M italicize argument
+\&.ie M\(sc conditional with \fB.el\fP
+\&.if M\(sc conditional
+\en(ii R indented paragraph indentation
+\&.in M\(sc set indentation (transient; cf.\& \fB.ba\fP)
+\&.ip M begin indented paragraph
+\&.ix M set indentation without break
+\el\(aq\fI\,d\/\fP\(aq F\(sc draw horizontal line of length \fId\fP
+\&.lc M\(sc set leader repetition character
+\&.ld M\(sq reset localization and date info
+\&.ll M set line length in \fIme\fP environments
+\&.lp M begin fully left-aligned paragraph
+\e*(lq S left double quotation mark
+\&.ls M\(sc set multi-line spacing
+\&.m1 M set page top to header distance
+\&.m2 M set header to text distance
+\&.m3 M set text to footer distance
+\&.m4 M set footer to page bottom distance
+\&.mc M\(sc set margin character
+\&.mk M\(sc mark vertical position (see \fB.rt\fP)
+\en(mo R\(sc month of the year
+\e*(mo S month name
+\en\fI\,x\fP F\(sc interpolate register \fIx\fP
+\en(\fI\,xx\fP F\(sc interpolate register \fIxx\fP
+\&.n1 M begin output line numbering
+\&.n2 M end or alter output line numbering
+\&.na M\(sc disable adjustment
+\&.ne M\(sc need vertical space
+\&.nf M\(sc disable filling
+\&.nh M\(sc disable automatic hyphenation
+\en(no R\(sq line numbering offset
+\&.np M begin numbered paragraph
+\&.nr M\(sc set register
+\&.ns M\(sc begin no-space mode
+\&.of M set odd-numbered page footer
+\&.oh M set odd-numbered page header
+\&.pa M begin page
+\&.pd M output delayed text
+\en(pf R paragraph font
+\en(pi R paragraph indentation
+\&.pl M\(sc set page length
+\&.pn M\(sc set next page number
+\&.po M\(sc set page offset
+\en(po R paragraph offset
+\&.pp M begin first-line indented paragraph
+\en(pp R paragraph type size in points
+\en(ps R paragraph prespace
+\&.q M quote argument
+\en(qi R long quotation left/right indentation
+\en(qp R long quotation type size in points
+\en(qs R long quotation pre/post space
+\&.r M set argument in roman
+\&.re M reset tab stops
+\&.rj M\(sq right-align output lines
+\&.rm M\(sc remove macro, string, or request
+\&.rn M\(sc rename macro, string, or request
+\&.ro M use Roman numerals for page numbers
+\e*(rq S right double quotation mark
+\&.rr M\(sc remove register
+\&.rs M\(sc restore spacing (end no-space mode)
+\&.rt M\(sc return to vertical position set by \fB.mk\fP
+\es\(aq\fI\,\(+-n\/\fP\(aq F\(sc\(de inline type size change\
+ to/by \fIn\fP points
+\en(sf R section title font
+\&.sh M begin numbered section
+\en(si R section indentation per level of depth
+\&.sk M skip next page
+\&.sm M set argument at smaller type size
+\&.so M\(sc source (interpolate) input file
+\en(so R additional section title offset
+\&.sp M\(sc insert space (except at page top; cf.\& \fB.bl\fP)
+\en(sp R section title type size in points
+\en(ss R section prespace
+\&.sx M change section depth
+\en(sx R\(sq super/subscript line height increase
+\&.sz M set type size and vertical spacing
+\&.ta M\(sc set tab stops
+\&.tc M\(sc set tab repetition character
+\e*(td S today's date
+\en(tf R title font
+\&.ti M\(sc temporary indentation (next line only)
+\&.tl M\(sc output three-part title
+\en(tm R distance from page top to text area
+\&.tp M begin title page
+\en(tp R title type size in points
+\&.tr M\(sc translate characters
+\en(tv R\(sq vertical spacing of text (%)
+\&.u M underline argument
+\&.uh M begin unnumbered section
+\&.ul M\(sc underline output lines
+\ev\(aq\fI\,d\/\fP\(aq F\(sc move distance \fId\fP vertically
+\ew\(aq\fI\,S\/\fP\(aq F\(sc interpolate formatted width of \fIS\fP
+\e*(wa S\(sq term for \(lqappendix\(rq used by \fB.$c\fP
+\e*(wc S\(sq term for \(lqchapter\(rq used by \fB.$c\fP
+\&.xl M set line length (current environment)
+\&.xp M output index
+\en(xs R index entry prespace
+\en(xu R index undent (right indentation)
+\en(y2 R\(sq year of the century
+\en(y4 R\(sq year
+\en(yr R\(sc year minus 1900
+\en(zs R floating keep pre/post space
+\e{ F\(sc begin conditional group
+\e*{ S begin superscripting
+\e| F\(sc 1/6 em unbreakable thin space
+\e} F\(sc end conditional group
+\e*} S end superscripting
+\e\(ti F\(sc\(sq unbreakable word space
+.)l
+.if n .)c
+.ds $H \" empty
+.\" If we're laying out the final column, `1c` will produce an
+.\" unnecessary empty page. If we're not, omitting `1c` will format a
+.\" column of headers with nothing underneath.
+.if \n($c<\n($m .1c
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/doc/ms.ms b/doc/ms.ms
new file mode 100644
index 0000000..984c804
--- /dev/null
+++ b/doc/ms.ms
@@ -0,0 +1,4486 @@
+.\" 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/>.
+.
+.\" Handle font requests with families, for instance in tbl(1) tables.
+.if n \{\
+. ftr CR B \" for a visible distinction from roman
+. ftr CB B
+. ftr CI I
+. ftr CBI BI
+. \" Redefine CW to use bold instead for a visible font change.
+. als CW B
+. \" The "document control settings" table imposes this minimum width.
+. nr LL 87n
+.\}
+.\" This document doesn't require the minus sign (in Times) but we do
+.\" want a copy- and-pastable hyphen-minus.
+.ie '\*[.T]'cp1047' .char \- \N'96'
+.el .char \- \N'45'
+.\" A very limited output device might not have a dagger glyph.
+.fchar \[dg] *
+.nr PS 11
+.nr VS 13
+.ds FR 1
+.nr TC-MARGIN \w'00' \" expect 2-digit page numbers at most
+.ie t .nr PI 3.5n
+.el .nr PI 4n
+.ND May 2023
+.EH '%''May 2023'
+.EF ''''
+.OH 'Using \f[I]groff\f[] with the \f[I]ms\f[] macros''%'
+.OF ''''
+.TL
+Using
+.BI groff
+with the
+.BI ms
+Macro Package
+.AU
+Larry Kollar
+.AI
+kollar@alltel.net
+.AU
+G.\& Branden Robinson
+.AI
+g.branden.robinson@gmail.com
+.AB no
+The
+.I ms
+(\[lq]manuscript\[rq]) package is suitable for the composition of
+letters,
+memoranda,
+reports,
+and books.
+.
+These
+.I groff
+macros feature cover page and table of contents generation,
+automatically numbered headings,
+several paragraph styles,
+a variety of text styling options,
+footnotes,
+and multi-column page layouts.
+.
+.I ms
+supports the
+.I tbl ,
+.I eqn ,
+.I pic ,
+and
+.I refer
+preprocessors for inclusion of tables,
+mathematical equations,
+diagrams,
+and standardized bibliographic citations.
+.
+This implementation is mostly compatible with the documented interface
+and behavior of AT&T Unix Version\~7
+.I ms .
+.
+Many extensions from 4.2BSD (Berkeley)
+.\" Few changes were made in 4.3, Tahoe, Reno, or 4.4.
+and Tenth Edition Research Unix have been recreated.
+.AE
+.
+.
+.\" ------------------------- End of cover page ------------------------
+.NH 1
+Introduction
+.XS
+Introduction
+.XE
+.
+.
+.LP
+The
+.I ms
+macros are the oldest surviving package for
+.I roff
+systems.\**
+.
+.FS
+While manual
+.I pages
+are older,
+early ones used macros supplanted by the
+.I man
+package of Seventh Edition Unix (1979).
+.
+.I ms
+shipped with Sixth Edition (1975) and was documented by Mike Lesk in a
+Bell Labs internal memorandum.
+.FE
+.
+While the
+.I man
+package was designed for brief reference documents,
+the
+.I ms
+macros are also suitable for longer works intended for printing and
+possible publication.
+.
+.
+.PP
+In this document,
+a right arrow (\[->]) is used to indicate a tab character in the input.
+.
+.
+.KS
+.NH 2
+Basic information
+.XS
+ Basic information
+.XE
+.
+.
+.LP
+.I ms
+documents are plain text files;
+prepare them with your preferred text editor.
+.
+If you're in a hurry to start,
+know that
+.I ms
+needs one of its macros called at the beginning of a document so that it
+can initialize.
+.
+A
+.I macro
+is a formatting instruction to
+.I ms.
+.
+Put a macro call on a line by itself.
+.
+Use
+.CW .PP
+if you want your paragraph's first line to be indented,
+or
+.CW .LP
+if you don't.
+.KE
+.
+.
+.PP
+After that,
+start typing normally.
+.
+It is a good practice to start each sentence on a new line,
+or to put two spaces after sentence-ending punctuation,
+so that the formatter knows where the sentence boundaries are.
+.
+You can separate paragraphs with further paragraphing macro calls,
+or with blank lines,
+and you can indent with tabs.
+.
+When you need one of the features mentioned earlier,
+return to this manual.
+.
+.
+.PP
+Format the document with the
+.I groff (1)
+command.
+.
+.I nroff (1)
+can be useful for previewing.
+.
+.
+.if n .ftr TI I
+.TS
+box center;
+Lf(CR)1 Lf(CB).
+$ editor radical.ms \f[TI]# vim, emacs, .\|.\|.
+$ nroff -ww -z -ms radical.ms \f[TI]# check for errors
+$ nroff \-ms radical.ms | less \-R
+$ groff \-T pdf \-ms radical.ms > radical.pdf
+$ see radical.pdf \f[TI]# or your favorite PDF viewer
+.TE
+.if n .ftr TI
+.
+.
+.PP
+Our
+.CW radical.ms
+document might look like this.
+.
+.
+.TS
+box center;
+Lf(CR).
+\&.LP
+Radical novelties are so disturbing that they tend to be
+suppressed or ignored, to the extent that even the
+possibility of their existence in general is more often
+denied than admitted.
+.sp
+\[->]That\[aq]s what Dijkstra said, anyway.
+.TE
+.
+.
+.LP
+.I ms
+exposes many aspects of document layout to user control via
+.I groff 's
+.I registers
+and
+.I strings,
+which store numbers and text,
+respectively.
+.
+Measurements in
+.I groff
+are expressed with a suffix called a
+.I "scaling unit."
+.
+.
+.TS
+box center;
+cb cb
+cf(CR) l .
+Scaling unit Description
+_
+i inches (\[sd])
+c centimeters
+p points (1/72\[sd])
+P picas (1/6\[sd])
+v \[lq]vees\[rq]; current vertical spacing
+m \[lq]ems\[rq]; width of an \[lq]M\[rq] in the current font
+n \[lq]ens\[rq]; one-half em
+.TE
+.
+.
+.PP
+Set registers with the
+.CW nr
+request
+and strings with the
+.CW ds
+request.
+.
+.I Requests
+are like macro calls;
+they go on lines by themselves and start with the
+.I "control character,"
+a dot
+.CW . ). (
+.
+The difference is that they directly instruct the formatter program,
+rather than the macro package.
+.
+We'll discuss a few as applicable.
+.
+It is wise to specify a scaling unit when setting any register that
+represents a length,
+size,
+or distance.
+.
+.
+.TS
+box center;
+lf(CR).
+\&.nr PS 10.5p \[rs]" Use 10.5\-point type.
+\&.ds FAM P \[rs]" Use Palatino font family.
+.TE
+.
+.
+.LP
+In the foregoing,
+we see that
+.CW \[rs]"
+begins a comment.
+.
+This is an example of an
+.I "escape sequence,"
+the other kind of formatting instruction.
+.
+Escape sequences can appear anywhere.
+.
+They begin with the escape character
+.CW \[rs] ) (
+and are followed by at least one more character.
+.
+.I ms
+documents like this one tend to use only a few of
+.I groff 's
+many requests and escape sequences;
+see the
+.I groff (7)
+man page for complete lists.
+.
+.
+.TS
+box center;
+Cb Cb
+Lf(CR) Lx .
+Escape sequence Description
+_
+\[rs]" Begin comment; ignore remainder of line.
+\[rs]n[\f[I]reg\f[]] T{
+Interpolate value of register
+.I reg .
+T}
+\[rs]*[\f[I]str\f[]] T{
+Interpolate contents of string
+.I str .
+T}
+\[rs]*\f[I]s T{
+abbreviation of
+.CW \[rs]*[\f[I]s\f[]] ;
+the name
+.I s
+must be only one character
+T}
+\[rs][\f[I]char\f[]] T{
+Interpolate glyph of special character named
+.I char .
+T}
+\[rs]& non-printing, zero-width dummy character
+\[rs]\[ti] T{
+Insert an unbreakable space of adjustable width like a normal space.
+T}
+\[rs]| T{
+Move horizontally by one-sixth em
+(\[lq]thin space\[rq]).
+T}
+.TE
+.
+.
+.PP
+Prefix any words that start with a dot
+.CW .\& ) (
+or neutral apostrophe
+.CW \[aq] ) (
+with
+.CW \[rs]&
+if they are at the beginning of an input line
+(or might become that way in editing)
+to prevent them from being interpreted as macro calls or requests.
+.
+Suffix
+.CW . ,
+.CW ? ,
+and
+.CW !\&
+with
+.CW \[rs]&
+when needed to cancel end-of-sentence detection.
+.
+.
+.TS
+box center;
+lf(CR).
+My exposure was \[rs]&.5 to \[rs]&.6 Sv of neutrons, said Dr.\[rs]&
+Wallace after the criticality incident.
+.TE
+.
+.
+.\" ------------------------
+.if t \{\
+. br
+. bp
+.\}
+.NH 1
+General structure of an
+.BI ms
+document
+.XS
+General structure of an
+.I ms
+document
+.XE
+.
+.
+.LP
+The
+.I ms
+macro package expects a certain amount of structure:
+a well-formed document contains at least one paragraphing or heading
+macro call.
+.
+Longer documents have a structure as follows.
+.
+.
+.IP "\fBDocument type\fP"
+Calling the
+.CW RP
+macro at the beginning of your document puts the document description
+(see below)
+on a cover page.
+.
+Otherwise,
+.I ms
+places this information
+(if any)
+on the first page,
+followed immediately by the body text.
+.
+Some document types found in other
+.I ms
+implementations are specific to AT&T or Berkeley,
+and are not supported by
+.I "groff ms" .
+.
+.
+.IP "\fBFormat and layout\fP"
+By setting registers and strings,
+you can configure your document's typeface,
+margins,
+spacing,
+headers and footers,
+and footnote arrangement.
+.
+See section \[lq]Document control settings\[rq] below.
+.
+.
+.IP "\fBDocument description\fP"
+A document description consists of any of:
+a title,
+one or more authors' names and affiliated institutions,
+an abstract,
+and a date or other identifier.
+.
+See section \[lq]Document description macros\[rq] below.
+.
+.
+.IP "\fBBody text\fP"
+The main matter of your document follows its description
+(if any).
+.
+.I ms
+supports highly structured text consisting of paragraphs interspersed
+with multi-level headings
+(chapters,
+sections,
+subsections,
+and so forth)
+and augmented by lists,
+footnotes,
+tables,
+diagrams,
+and similar material.
+.
+See section \[lq]Body text\[rq] below.
+.
+.
+.IP "\fBTables of contents\fP"
+Macros enable the collection of entries for a table of contents
+(or index)
+as the material they discuss appears in the document.
+.
+You then call a macro to emit the table of contents at the end of
+your document.
+.
+The table of contents must necessarily follow the rest of the text since
+GNU
+.I troff
+is a single-pass formatter;
+it thus cannot determine the page number of a division of the text until
+it has been set and output.
+.
+Since
+.I ms
+output was designed for the production of hard copy,
+the traditional procedure was to manually relocate the pages containing
+the table of contents between the cover page and the body text.
+.
+Today,
+page resequencing is more often done in the digital domain.
+.
+An index works similarly,
+but because it typically needs to be sorted after collection,
+its preparation requires separate processing.
+.
+.
+.\" ------------------------
+.if t \{\
+. br
+. bp
+.\}
+.NH 1
+Document control settings
+.XS
+Document control settings
+.XE
+.
+.
+.LP
+The document parameters below are presented in the syntax
+used to interpolate their values.
+.
+For any unsatisfactory default,
+define its register,
+string,
+or special character before calling any
+.I ms
+macro other than
+.CW RP .
+.
+The \[lq]Next\[rq] heading indicates that changes to the parameter are
+effective as of the next new element processed of the listed type.
+.
+For entries marked
+.I special ,
+see the discussion in the applicable section.
+.
+.
+.TS H
+box;
+cb | cb cb cb cb
+l | lf(CR)p-1 lx l lf(CR)p-1.
+Type Parameter Definition Next Default
+_
+.TH
+Margins \[rs]n[PO] Page offset (left margin) page\
+ 1i (0)\*{*\*}
+\^ \[rs]n[LL] Line length paragraph \
+6.5i (65n)\*{*\*}
+\^ \[rs]n[LT] Title line length paragraph \
+6.5i (65n)\*{*\*}
+\^ \[rs]n[HM] Top (header) margin page 1i
+\^ \[rs]n[FM] Bottom (footer) margin page 1i
+_
+T{
+Titles
+.br
+(headers,
+.br
+footers)
+T} \[rs]*[LH] Left header text header \f[I]empty
+\^ \[rs]*[CH] Center header text header \-\[rs]n[%]\-
+\^ \[rs]*[RH] Right header text header \f[I]empty
+\^ \[rs]*[LF] Left footer text footer \f[I]empty
+\^ \[rs]*[CF] Center footer text footer \f[I]empty
+\^ \[rs]*[RF] Right footer text footer \f[I]empty
+_
+Text \[rs]n[PS] Type (point) size paragraph 10p
+\^ \[rs]n[VS] Vertical spacing paragraph 12p
+\^ \[rs]n[HY] Hyphenation mode paragraph 6
+\^ \[rs]*[FAM] Font family paragraph T
+_
+Paragraphs \[rs]n[PI] Indentation paragraph 5n
+\^ \[rs]n[PD] Paragraph distance (spacing) paragraph\
+ 0.3v \f[R](\f[]1v\f[R])\*{\[dg]\*}
+\^ \[rs]n[QI] Quotation indentation paragraph 5n
+\^ \[rs]n[PORPHANS] # of initial lines kept paragraph\
+ 1
+_
+Headings \[rs]n[PSINCR] Type (point) size increment\
+ heading 1p
+\^ \[rs]n[GROWPS] Size increase depth limit heading 0
+\^ \[rs]n[HORPHANS] # of following lines kept\
+ heading 1
+\^ \[rs]*[SN\-STYLE] Numbering style (alias) heading\
+ \[rs]*[SN\-DOT]
+_
+Footnotes \[rs]n[FI] Indentation footnote 2n
+\^ \[rs]n[FF] Format footnote 0
+\^ \[rs]n[FPS] Type (point) size footnote\
+ \[rs]n[PS]\-2p
+\^ \[rs]n[FVS] Vertical spacing footnote\
+ \[rs]n[FPS]+2p
+\^ \[rs]n[FPD] Paragraph distance (spacing) footnote\
+ \[rs]n[PD]/2
+\^ \[rs]*[FR] Line length ratio \f[I]special 11/12
+_
+Displays \[rs]n[DD] Display distance (spacing)\
+ \f[I]special 0.5v \f[R](\f[]1v\f[R])\*{\[dg]\*}
+\^ \[rs]n[DI] Display indentation \f[I]special 0.5i
+_
+Other \[rs]n[MINGW] Minimum gutter width page 2n
+\^ \[rs]n[TC\-MARGIN] TOC page number margin width\
+ \f[CR]PX\f[] call \[rs]w\[aq]000\[aq]
+\^ \[rs][TC\-LEADER] TOC leader character\
+ \f[CR]PX\f[] call .\[rs]h\[aq]1m\[aq]
+.TE
+.
+.
+.IP \*{*\*}
+Defaults vary by output device and paper format;
+the values shown are for typesetters using U.S.\& letter paper,
+and then terminals.
+.
+See section \[lq]Paper format\[rq] of the
+.I groff (1)
+man page.
+.
+.
+.IP \*{\[dg]\*}
+The
+.CW PD
+and
+.CW DD
+registers use the larger value if the vertical motion quantum of the
+output device is too coarse for the smaller one;
+usually,
+this is the case only for output to terminals and emulators thereof.
+.
+.
+.\" ------------------------
+.if t \{\
+. br
+. bp
+.\}
+.NH 1
+Document description macros
+.XS
+Document description macros
+.XE
+.
+.
+.LP
+Only the simplest document lacks a title.\**
+.
+.FS
+Distinguish a document title from \[lq]titles\[rq],
+which are what
+.I roff
+systems call headers and footers collectively.
+.FE
+.
+As its level of sophistication
+(or complexity)
+increases,
+it tends to acquire a date of revision,
+explicitly identified authors,
+sponsoring institutions for authors,
+and,
+at the rarefied heights,
+an abstract of its content.
+.
+By default,
+.I ms
+arranges most of the document description
+(the title,
+author names and institutions,
+and abstract,
+but not the date)
+at the top of the first page.
+.
+.
+.PP
+Define these data by calling the macros below in the order shown;
+.CW .DA
+or
+.CW .ND
+can be called to set the document date
+(or other identifier)
+at any time before (a) the abstract,
+if present,
+or (b) its information is required in a header or footer.
+.
+Use of these macros is optional,
+except that
+.CW .TL
+is mandatory if any of
+.CW .RP ,
+.CW .AU ,
+.CW .AI ,
+or
+.CW .AB
+is called,
+and
+.CW .AE
+is mandatory if
+.CW .AB
+is called.
+.
+.
+.TS H
+box;
+lb lb
+lf(CR) lx.
+Macro Description
+_
+.TH
+\&.RP \f[R][\f[I]option\f[] .\|.\|.] T{
+Use the \[lq]report\[rq]
+(AT&T: \[lq]released paper\[rq])
+format for your document,
+creating a separate cover page.
+.
+If the optional
+.CW no\-\:\%repeat\-\:\%info
+argument is given,
+.I ms
+produces a cover page but does not repeat any of its information
+subsequently
+(but see the
+.CW DA
+macro below regarding the date).
+.
+Normally,
+.CW .RP
+sets the page number following the cover page to\~1.
+.
+Specifying the optional
+.CW no\-\:\%renumber
+argument suppresses this alteration.
+.
+Optional arguments can occur in any order.
+.
+.CW no
+is recognized as a synonym of
+.CW no\-\:\%repeat\-\:\%info
+for AT&T compatibility.
+T}
+_
+\&.TL T{
+Specify the document title.
+.
+.I ms
+collects text on input lines following this call into the title
+until reaching
+.CW .AU ,
+.CW .AB ,
+or a heading or paragraphing macro call.
+T}
+_
+\&.AU T{
+Specify an author's name.
+.
+.I ms
+collects text on input lines following this call into the author's name
+until reaching
+.CW .AI ,
+.CW .AB ,
+another
+.CW .AU ,
+or a heading or paragraphing macro call.
+.
+Call it repeatedly to specify multiple authors.
+T}
+_
+\&.AI T{
+Specify the preceding author's institution.
+.
+An
+.CW .AU
+call is usefully followed by at most one
+.CW .AI
+call;
+if there are more,
+the last
+.CW .AI
+call controls.
+.
+.I ms
+collects text on input lines following this call into the author's
+institution until reaching
+.CW .AU ,
+.CW .AB ,
+or a heading or paragraphing macro call.
+T}
+_
+\&.DA \f[R][\f[I]x\f[] .\|.\|.\&] T{
+Typeset the current date,
+or any
+.I x , arguments\~
+in the center footer,
+and,
+if
+.CW .RP
+is also called,
+left-aligned at the end of the document description on the cover page.
+T}
+_
+\&.ND \f[R][\f[I]x\f[] .\|.\|.\&] T{
+Typeset the current date,
+or any
+.I x , arguments\~
+if
+.CW .RP
+is also called,
+left-aligned at the end of the document description on the cover page.
+.
+This is
+.I "groff ms" 's
+default.
+T}
+_
+\&.AB \f[R][\f[]no\f[R]] T{
+Begin the abstract.
+.
+.I ms
+collects text on input lines following this call into the abstract
+until reaching an
+.CW .AE
+call.
+.
+By default,
+.I ms
+places the word \[lq]ABSTRACT\[rq] centered and in italics above the
+text of the abstract.
+.
+The optional argument
+.CW no
+suppresses this heading.
+T}
+_
+\&.AE End the abstract.
+.TE
+.
+.
+.KS
+.LP
+An example document description,
+using a cover page,
+follows.
+.
+.
+.\" Wrap lines in the code example below at 64 columns.
+.TS
+box center;
+l.
+T{
+.nf
+.CW
+\&.RP
+\&.TL
+The Inevitability of Code Bloat in Commercial and Free Software
+\&.AU
+J.\[rs]& Random Luser
+\&.AI
+University of West Bumblefuzz
+\&.AB
+This report examines the long-term growth of the code bases in
+two large,
+popular software packages;
+the free Emacs and the commercial Microsoft Word.
+While differences appear in the type or order of features added,
+due to the different methodologies used,
+the results are the same in the end.
+\&.PP
+The free software approach is shown to be superior in that while
+free software can become as bloated as commercial offerings,
+free software tends to have fewer serious bugs and the added
+features are more in line with user demand.
+\&.AE
+.R
+\&.\|.\|.\|the rest of the paper\|.\|.\|.
+.fi
+T}
+.TE
+.KE
+.
+.
+.\" ------------------------
+.if t \{\
+. br
+. bp
+.\}
+.NH 1
+Body text
+.XS
+Body text
+.XE
+.
+.
+.LP
+A variety of macros,
+registers,
+and strings can be used to structure and style the body of your
+document.
+.
+They organize your text into
+paragraphs,
+headings,
+footnotes,
+and inclusions of material such as tables and figures.
+.
+.
+.KS
+.NH 2
+Text settings
+.XS
+ Text settings
+.XE
+.
+.
+.LP
+The
+.CW FAM
+string,
+a GNU extension,
+sets the font family for body text;
+the default is
+.CW T \[rq]. \[lq]
+.
+The
+.CW PS
+and
+.CW VS
+registers set the type size and vertical spacing
+(distance between text baselines),
+respectively.
+.
+The font family and type size are ignored on terminal devices.
+.
+Setting these parameters before the first call of a heading,
+paragraphing,
+or (non-date) document description macro also applies them to headers,
+footers,
+and
+(for
+.CW FAM )
+footnotes.
+.
+.
+.PP
+Which font families are available depends on the output device;
+as a convention,
+.CW T
+selects a serif family (\[lq]Times\[rq]),
+.CW H
+a sans-serif family (\[lq]Helvetica\[rq]),
+and
+.CW C
+a monospaced family (\[lq]Courier\[rq]).
+.
+The man page for the output driver documents its font repertoire.
+.
+Consult the
+.I groff (1)
+man page for lists of available output devices and their drivers.
+.
+.
+.PP
+The
+.CW HY
+register defines the automatic hyphenation mode used with the
+.CW hy
+request.
+.
+Setting
+.CW \[rs]n[HY]
+.CW 0 "" to\~
+is equivalent to using the
+.CW nh
+request.
+.
+This is a Tenth Edition Research Unix extension.
+.KE
+.
+.
+.KS
+.NH 2
+Typographical symbols
+.XS
+ Typographical symbols
+.XE
+.
+.
+.LP
+.I ms
+provides a few strings to obtain typographical symbols not easily
+entered with the keyboard.
+.
+These and many others are available as special character escape
+sequences\*[-]see
+the
+.I groff_char (7)
+man page.
+.
+.TS
+box center;
+cb lb
+Lf(CR) Lx.
+String Description
+_
+\[rs]*[\-] Interpolate an em dash.
+_
+\[rs]*[Q] T{
+Interpolate typographer's quotation marks where available,
+and neutral double quotes otherwise.
+.
+.CW \[rs]*[Q]
+is the left quote and
+.CW \[rs]*[U]
+the right.
+T}
+\[rs]*[U] \^
+.TE
+.KE
+.
+.
+.KS
+.NH 2
+Paragraphs
+.XS
+ Paragraphs
+.XE
+.
+.
+.LP
+Paragraphing macros
+.I break ,
+or terminate,
+any pending output line so that a new paragraph can begin.
+.
+Several paragraph types are available,
+differing in how indentation
+applies to them:
+to left,
+right,
+or both margins;
+to the first output line of the paragraph,
+all output lines,
+or all but the first.
+.
+All paragraphing macro calls cause the insertion of vertical space in
+the amount stored in the
+.CW PD
+register,
+except at page or column breaks.
+.
+Alternatively,
+a blank input line breaks the output line and vertically spaces by one
+vee.
+.KE
+.
+.
+.PP
+The
+.CW PORPHANS
+register defines the minimum number of initial lines of any paragraph
+that must be kept together to avoid isolated lines at the bottom of a
+page.
+.
+If a new paragraph is started close to the bottom of a page,
+and there is insufficient space to accommodate
+.CW \[rs]n[PORPHANS]
+lines before an automatic page break,
+then a page break is forced before the start of the paragraph.
+.
+This is a GNU extension.
+.
+.
+.TS H
+box;
+lb lb
+lf(CR) lx.
+Macro Description
+_
+.TH
+\&.LP Set a paragraph without any (additional) indentation.
+_
+\&.PP T{
+Set a paragraph with a first-line left indentation of
+.CW \[rs]n[PI] .
+T}
+_
+\&.IP \f[R][\f[I]marker\f[] [\f[I]width\f[]]] T{
+Set a paragraph with a left indentation.
+.
+The optional
+.I marker
+is not indented and is empty by default.
+.
+It has several applications;
+see subsection \[lq]Lists\[rq] below.
+.
+.I width
+overrides the indentation amount in
+.CW \[rs]n[PI] ;
+its default unit is
+.CW n \[rq]. \[lq]
+.
+Once specified,
+.I width
+applies to further
+.CW .IP
+calls until specified again or a heading or different paragraphing macro
+is called.
+T}
+_
+\&.QP T{
+Set a paragraph indented from both left and right margins by
+.CW \[rs]n[QI] .
+T}
+_
+T{
+\&.QS
+.br
+\&.QE
+T} T{
+Begin
+.CW QS ) (
+and end
+.CW QE ) (
+a region where each paragraph is indented from both margins by
+.CW \[rs]n[QI] .
+.
+The text between
+.CW .QS
+and
+.CW .QE
+can be structured further by use of other paragraphing macros.
+T}
+_
+\&.XP T{
+Set an \[lq]exdented\[rq] paragraph\[em]one with a left indentation of
+.CW \[rs]n[PI]
+on every line
+.I except
+the first
+(also known as a hanging indent).
+.
+This is a Berkeley extension.
+T}
+.TE
+.
+.
+.KS
+.PP
+The following example illustrates the use of paragraphing macros.
+.
+.
+.TS
+box center;
+l.
+T{
+.nf
+.CW
+\&.NH 2
+Cases used in the 2001 study
+\&.LP
+Two software releases were considered for this report.
+\&.PP
+The first is commercial software;
+the second is free.
+\&.IP \[rs][bu]
+Microsoft Word for Windows,
+starting with version 1.0 through the current version
+(Word 2000).
+\&.IP \[rs][bu]
+GNU Emacs,
+from its first appearance as a standalone editor through the
+current version (v20).
+See [Bloggs 2002] for details.
+\&.QP
+Franklin\[aq]s Law applied to software:
+software expands to outgrow both RAM and disk space over time.
+\&.SH
+Bibliography
+\&.XP
+Bloggs, Joseph R.,
+\&.I "Everyone\[aq]s a Critic" ,
+Underground Press, March 2002.
+A definitive work that answers all questions and criticisms
+about the quality and usability of free software.
+.R
+.fi
+T}
+.TE
+.KE
+.
+.
+.KS
+.NH 2
+Headings
+.XS
+ Headings
+.XE
+.
+.
+.LP
+Use headings to create a hierarchical structure for your document.
+.
+The
+.I ms
+macros print headings in
+.B bold
+using the same font family and,
+by default,
+type size as the body text.
+.
+Headings are available with and without automatic numbering.
+.
+Text on input lines following the macro call becomes the heading's
+title.
+.
+Call a paragraphing macro to end the heading text and start the
+section's content.
+.
+.
+.TS
+box;
+cb cb
+lf(CR) lx .
+Macro Description
+_
+\&.NH [\f[I]depth\f[]] T{
+Set an automatically numbered heading.
+.
+.I ms
+produces a numbered heading in the form
+.CW
+.I a .\c
+.I b .\c
+.R
+.I c .\|.\|.,
+to any level desired,
+with the numbering of each depth increasing automatically and being
+reset to zero when a more significant depth increases.
+.
+\[lq]1\[rq]\~is the most significant or coarsest division of the
+document.
+.
+Only non-zero values are output.
+.
+If
+.I depth
+is omitted,
+it is taken to be
+.CW 1 .
+.
+If you specify
+.I depth
+such that an ascending gap occurs relative to the previous
+.CW NH
+call\[em]that is,
+you \[lq]skip a depth\[rq],
+as by
+.CW ".NH\~1" \[rq] \[lq]
+and then
+.CW ".NH\~3" \[rq]\c \[lq]
+.I "groff ms" "" \[em]
+emits a warning on the standard error stream.
+T}
+\&.NH S \f[I]heading-depth-index\f[]\f[R] .\|.\|.\f[] T{
+Alternatively,
+you can give
+.CW NH
+a first argument
+.CW S , of\~
+followed by integers to number the heading depths explicitly.
+.
+Further automatic numbering,
+if used,
+resumes using the specified indices as their predecessors.
+.
+.\" Although undocumented in Tuthill's 4.2BSD ms.diffs paper...
+This feature is a Berkeley extension.
+T}
+.TE
+.KE
+.
+.
+.PP
+An example may be illustrative.
+.
+.
+.TS
+box center;
+cb | cb
+lf(CR) | lB.
+Input Result
+_
+T{
+.nf
+\&.NH 1
+Animalia
+\&.NH 2
+Arthropoda
+\&.NH 3
+Crustacea
+\&.NH 2
+Chordata
+\&.NH S 6 6 6
+Daimonia
+\&.NH 1
+Plantae
+.fi
+T} T{
+.nf
+1. Animalia
+.sp
+1.1. Arthropoda
+.sp
+1.1.1. Crustacea
+.sp
+1.2. Chordata
+.sp
+6.6.6. Daimonia
+.sp
+7. Plantae
+.fi
+T}
+.TE
+.
+.
+.PP
+After
+.CW .NH
+is called,
+the assigned number is made available in the strings
+.CW SN\-DOT
+(as it appears in a printed heading with default formatting,
+followed by a terminating period)
+and
+.CW SN\-NO\-DOT
+(with the terminating period omitted).
+.
+These are GNU extensions.
+.
+.
+.PP
+You can control the style used to print numbered headings by defining an
+appropriate alias for the string
+.CW SN\-STYLE .
+.
+By default,
+.CW \[rs]*[SN\-STYLE]
+is aliased to
+.CW \[rs]*[SN\-DOT] .
+.
+If you prefer to omit the terminating period from numbers appearing in
+numbered headings,
+you may define the alias as follows.
+.
+.
+.TS
+box center;
+lf(CR).
+\&.als SN\-STYLE SN\-NO\-DOT
+.TE
+.
+.
+.LP
+Any such change in numbering style becomes effective from the next use
+of
+.CW .NH
+following redefinition of the alias for
+.CW \[rs]*[SN\-STYLE] .
+.
+The formatted number of the current heading is available in
+.CW \[rs]*[SN]
+(a feature first documented by Berkeley),
+which facilitates its inclusion in,
+for example,
+table captions,
+equation labels,
+and
+.CW .XS /\c
+.CW .XA /\c
+.CW .XE
+table of contents entries.
+.
+.
+.TS
+box;
+cb cb
+lf(CR) lx .
+Macro Description
+_
+\&.SH [\f[I]depth\f[]] T{
+Set an unnumbered heading.
+.
+The optional
+.I depth
+argument is a GNU extension indicating the heading depth corresponding
+to the
+.I depth
+argument of
+.CW .NH .
+.
+It matches the type size at which the heading is set to that of a
+numbered heading at the same depth when the
+.CW \[rs]n[GROWPS]
+and
+.CW \[rs]n[PSINCR]
+heading size adjustment mechanism is in effect.
+T}
+.TE
+.
+.
+.PP
+The
+.CW PSINCR
+register defines an increment in type size to be applied to a heading at
+a lesser depth than that specified in
+.CW \[rs]n[GROWPS] .
+.
+The value of
+.CW \[rs]n[PSINCR]
+should be specified in points with the
+.CW p
+scaling unit and may include a fractional component;
+for example,
+.
+.
+.TS
+box center;
+lf(CR).
+\&.nr PSINCR 1.5p
+.TE
+.
+.
+.LP
+sets a type size increment of 1.5 points.
+.
+.
+.PP
+The
+.CW GROWPS
+register defines the heading depth above which the type size increment
+set by
+.CW \[rs]n[PSINCR]
+becomes effective.
+.
+For each heading depth less than the value of
+.CW \[rs]n[GROWPS] ,
+the type size is increased by
+.CW \[rs]n[PSINCR] .
+.
+Setting
+.CW \[rs]n[GROWPS]
+to a value less than\~2 disables the incremental heading size feature.
+.
+.
+.PP
+In other words,
+if the value of
+.CW GROWPS
+register is greater than the
+.I depth
+argument to a
+.CW .NH
+or
+.CW .SH
+call,
+the type size of a heading produced by these macros increases by
+.CW \[rs]n[PSINCR]
+units over
+.CW \[rs]n[PS]
+multiplied by the difference of
+.CW \[rs]n[GROWPS]
+and
+.I depth .
+.
+.
+For example,
+the sequence
+.
+.TS
+box center;
+lf(CR).
+\&.nr PS 10
+\&.nr GROWPS 3
+\&.nr PSINCR 1.5p
+\&.NH 1
+Carnivora
+\&.NH 2
+Felinae
+\&.NH 3
+Felis catus
+\&.SH 2
+Machairodontinae
+.TE
+.
+.
+.LP
+will cause \[lq]1. Carnivora\[rq] to be printed in 13-point text,
+followed by \[lq]1.1. Felinae\[rq] in 11.5-point text,
+while \[lq]1.1.1. Felis catus\[rq] and all more deeply nested headings
+will remain in the 10-point text specified by the
+.CW PS
+register.
+.
+\[lq]Machairodontinae\[rq] is printed at 11.5 points,
+since it corresponds to heading depth\~2.
+.
+.
+.PP
+The
+.CW \[rs]n[HORPHANS]
+register operates in conjunction with the
+.CW NH
+and
+.CW SH
+macros to inhibit the printing of isolated headings at the bottom of a
+page;
+it specifies the minimum number of lines of the subsequent paragraph
+that must be kept on the same page as the heading.
+.
+If insufficient space remains on the current page to accommodate the
+heading and this number of lines of paragraph text,
+a page break is forced before the heading is printed.
+.
+Any display macro call or
+.I tbl ,
+.I pic ,
+or
+.I eqn
+region
+(see subsequent sections)
+between the heading and the subsequent paragraph suppresses this
+grouping.
+.
+.
+.\" The next table is huge and we need a lot of room for it, but we
+.\" can't use a keep because it's a boxed repeated-heading table. Flush
+.\" the pending output line and demand half a page.
+.br
+.ne (\n[.p]u / 2u)
+.NH 2
+Typeface and decoration
+.XS
+ Typeface and decoration
+.XE
+.
+.
+.LP
+The
+.I ms
+macros provide a variety of ways to style text.
+.
+Attend closely to the ordering of arguments labeled
+.I pre
+and
+.I post,
+which is not intuitive.
+.
+Support for
+.I pre
+arguments is a GNU extension.\**
+.FS
+This idiosyncrasy arose through feature accretion;
+for example,
+the
+.CW B
+macro in Version\~6 Unix
+.I ms
+(1975) accepted only one argument,
+the text to be set in boldface.
+.
+By Version\~7 (1979) it recognized a second argument;
+in 1990,
+.I "groff ms"
+added a \*[Q]pre\*[U] argument,
+placing it third to avoid breaking support for older documents.
+.FE
+.
+.
+.TS H
+box;
+lb lb
+lf(CR) lx.
+Macro Description
+_
+.TH
+\&.B \f[R][\f[I]text\f[] [\f[I]post\f[] [\f[I]pre\f[]]]] T{
+Style
+.I text
+in
+.B bold ,
+followed by
+.I post
+in the previous font style without intervening space,
+and preceded by
+.I pre
+similarly.
+.
+Without arguments,
+.I ms
+styles subsequent text in bold
+until the next
+paragraphing,
+heading,
+or no-argument typeface macro call.
+T}
+_
+\&.R \f[R][\f[I]text\f[] [\f[I]post\f[] [\f[I]pre\f[]]]] T{
+As
+.CW .B ,
+but use the roman style
+(upright text of normal weight)
+instead of bold.
+.
+Argument recognition is a GNU extension.
+T}
+_
+\&.I \f[R][\f[I]text\f[] [\f[I]post\f[] [\f[I]pre\f[]]]] T{
+As
+.CW .B ,
+but use an
+.I italic
+or oblique style instead of bold.
+T}
+_
+\&.BI \f[R][\f[I]text\f[] [\f[I]post\f[] [\f[I]pre\f[]]]] T{
+As
+.CW .B ,
+but use a
+.BI "bold italic"
+or bold oblique style instead of upright bold.
+.
+This is a Tenth Edition Research Unix extension.
+.\" possibly 9th, but definitely not Berkeley
+T}
+_
+\&.CW \f[R][\f[I]text\f[] [\f[I]post\f[] [\f[I]pre\f[]]]] T{
+As
+.CW .B ,
+but use a
+.CW constant-width
+(monospaced) roman typeface instead of bold.
+.
+This is a Tenth Edition Research Unix extension.
+.\" possibly 9th, but definitely not Berkeley
+T}
+_
+\&.BX \f[R][\f[I]text\f[]] T{
+Typeset
+.I text
+and draw a
+.BX box
+around it.
+.
+On terminal devices,
+reverse video is used instead
+(see the implementation note below).
+.
+If you want
+.I text
+to contain space,
+use unbreakable space or horizontal motion escape sequences
+.CW \[rs]\[ti] , (
+.CW \[rs]\c
+.I space ,
+.CW \[rs]\[ha] ,
+.CW \[rs]| ,
+.CW \[rs]0 ,
+or
+.CW \[rs]h ).
+T}
+_
+\&.UL \f[R][\f[I]text\f[] [\f[I]post\f[]]] T{
+Typeset
+.I text
+with an
+.UL underline .
+.
+.I post,
+if present,
+is set after
+.I text
+with no intervening space.
+T}
+_
+\&.LG T{
+Set subsequent text in
+.LG
+larger type
+.NL
+(2\~points larger than the current size)
+until the next
+type size,
+paragraphing,
+or heading macro call.
+.
+You can
+.LG
+specify this macro
+.LG
+multiple times
+.NL
+to enlarge the type size as needed.
+T}
+_
+\&.SM T{
+Set subsequent text in
+.SM
+smaller type
+.NL
+(2\~points smaller than the current size)
+until the next
+type size,
+paragraphing,
+or heading macro call.
+.
+You can
+.SM
+specify this macro
+.SM
+multiple times
+.NL
+to reduce the type size as needed.
+T}
+_
+\&.NL T{
+Set subsequent text at the normal type size
+.CW \[rs]n[PS] ). (
+T}
+.TE
+.
+.
+.PP
+.I pre
+and
+.I post
+arguments
+are typically used to simplify the attachment of punctuation to styled
+words.
+When
+.I pre
+is used,
+a hyphenation control escape sequence
+.CW \[rs]%
+that would ordinarily start
+.I text
+must start
+.I pre
+instead to have the desired effect.
+.
+.TS
+box center;
+Cb Cb
+Lf(CR) L.
+Input Result
+T{
+.na
+.nh
+The CS course\[aq]s students found one C language keyword
+.br
+\&.CW static ) \[rs]%(
+.br
+most troublesome.
+T} T{
+The CS course's students found one C language keyword
+.CW static ) \%(
+most troublesome.
+T}
+.TE
+.
+.KS
+You can use the output line continuation escape sequence
+.CW \[rs]c
+to achieve the same result.
+.
+It is also portable to some older
+.I ms
+implementations. \" DWB 3.3 ms: no; Heirloom Doctools ms: yes
+.
+.TS
+box center;
+Cb Cb
+Lf(CR) L.
+Input Result
+T{
+.na
+.nh
+The CS course\[aq]s students found one C language keyword
+.br
+\[rs]%(\[rs]c
+.br
+\&.CW static )
+.br
+most troublesome.
+T} T{
+The CS course's students found one C language keyword
+\%(\c
+.CW static )
+most troublesome.
+T}
+.TE
+.KE
+.
+.
+.PP
+Rather than calling the
+.CW CW
+macro,
+in
+.I "groff ms"
+you might prefer to change the font family to Courier by setting
+.CW \[rs]*[FAM]
+to
+.CW C \[rq]. \[lq]
+.
+You can then use all four style macros above,
+returning to the default family (Times) with
+.CW ".ds FAM T" \[rq]. \[lq]
+.
+Because changes to
+.CW \[rs]*[FAM]
+take effect only at the next paragraph,
+this document uses
+.CW .CW
+to \[lq]inline\[rq] a change to the font family,
+marking syntactical elements of
+.I ms
+and
+.I groff .
+.
+.
+.KS
+.PP
+.I "groff ms"
+also offers strings to begin and end super- and subscripting.
+.
+These are GNU extensions.
+.
+.
+.TS
+box;
+lb lb
+lf(CR) lx.
+String Description
+_
+\[rs]*{ Begin superscripting.
+\[rs]*} End superscripting.
+_
+\[rs]*< Begin subscripting.
+\[rs]*> End subscripting.
+.TE
+.KE
+.
+.
+.nr PS -2
+.nr VS -2
+.LP
+.B1
+.hy 0
+.I "Implementation note:"
+In
+.CW nroff
+mode,
+the
+.CW BX
+macro \[lq]boxes\[rq] its argument by bracketing it with
+.I groff
+extension escape sequences to set the foreground color to black and the
+background to white and then reset them to their previous values;
+the terminal output driver,
+.I grotty (1),
+converts these to ISO\~6429 color escape sequences,
+which may be ignored or mishandled by some terminals,
+or may be disabled by
+.I grotty 's
+.CW \-c
+option.
+.
+Further,
+if the terminal is set up to use these colors in those roles already,
+.CW .BX
+will cause no visible effect in the output.
+.
+Surmounting these challenges would require adding features to
+.I grotty ,
+for instance to provide a mechanism to request ISO\~6429's
+\[lq]standout\[rq] mode \" That's "smso" and "rmso" in terminfo.
+(often supported on monochrome terminals),
+or to replace the presumed support of the terminal for ISO\~6429 escape
+sequences with the use of a library that can query the capabilities of
+the terminal and adapt the output sent to the device accordingly.
+.
+(Practically,
+this likely means adding a dependency on
+.CW libtinfo .)
+.
+Contact the
+.I groff
+development mailing list if you'd like to contribute.
+.sp \n[PD]/2
+.B2
+.nr PS +2
+.nr VS +2
+.
+.
+.NH 2
+Lists
+.XS
+ Lists
+.XE
+.
+.
+.LP
+The
+.I marker
+argument to the
+.CW IP
+macro can be employed to present a variety of lists;
+for instance,
+you can use a bullet glyph
+.CW \[rs][bu] ) (
+for unordered lists,
+a number
+(or auto-incrementing register)
+for numbered lists,
+or a word or phrase for glossary-style or definition lists.
+.
+If you set the paragraph indentation register
+.CW PI
+before calling
+.CW IP ,
+you can later reorder the items in the list without having to ensure
+that a
+.I width
+argument remains affixed to the first call.
+.
+.
+.TS H
+box center;
+cb cb
+lf(CR) l .
+Input Result
+_
+.TH
+T{
+.nf
+\&.nr PI 2n
+A bulleted list:
+\&.IP \[rs][bu]
+lawyers
+\&.IP \[rs][bu]
+guns
+\&.IP \[rs][bu]
+money
+.fi
+T} T{
+.nr PI 2n
+A bulleted list:
+.IP \[bu]
+lawyers
+.IP \[bu]
+guns
+.IP \[bu]
+money
+T}
+_
+T{
+.nf
+\&.nr step 0 1
+\&.nr PI 3n
+A numbered list:
+\&.IP \[rs]n+[step].
+lawyers
+\&.IP \[rs]n+[step].
+guns
+\&.IP \[rs]n+[step].
+money
+.fi
+T} T{
+.nr step 0 1
+.nr PI 3n
+A numbered list:
+.IP \n+[step].
+lawyers
+.IP \n+[step].
+guns
+.IP \n+[step].
+money
+T}
+_
+T{
+.nf
+A glossary-style list:
+\&.IP lawyers 0.4i
+Two or more attorneys.
+\&.IP guns
+Firearms,
+preferably large-caliber.
+\&.IP money
+Gotta pay for those
+lawyers and guns!
+.fi
+T} T{
+A glossary-style list:
+.
+.IP lawyers 0.4i
+Two or more attorneys.
+.IP guns
+Firearms,
+preferably large-caliber.
+.IP money
+Gotta pay for those lawyers and guns!
+T}
+.TE
+.
+.
+.PP
+In the enumerated list example,
+we employed the
+.CW nr
+request to create a register of our own,
+.CW step .
+.
+We initialized it to zero and assigned it an auto-increment of 1.
+.
+Each time we use the escape sequence
+.CW \[rs]n+[PI]
+(note the plus sign),
+the formatter applies the increment just before interpolating the
+register's value.
+.
+Preparing the
+.CW PI
+register as well enables us to rearrange the list without the tedium of
+updating macro calls.
+.
+.
+.PP
+In the glossary example,
+observe how the
+.CW IP
+macro places the definition on the same line as the term if it has
+enough space.
+.
+If this is not what you want,
+there are a few workarounds we will illustrate by modifying the example.
+.
+First,
+you can use a
+.CW br
+request to force a break after printing the term or label.
+.
+Second,
+you could apply the
+.CW \[rs]p
+escape sequence to force a break.
+.
+The space following the escape sequence is important;
+if you omit it,
+.I groff
+prints the first word of the paragraph text on the same line as the term
+or label
+(if it fits)
+.I then
+breaks the line.
+.
+Finally,
+you may append a horizontal motion to the marker with the
+.CW \[rs]h
+escape sequence;
+using the same amount as the indentation will ensure that the marker is
+too wide for
+.I groff
+to treat it as \[lq]fitting\[rq] on the same line as the paragraph text.
+.
+.
+.TS
+box center;
+cb | cb | cb
+lf(CR) | lf(CR) | lf(CR).
+Approach #1 Approach #2 Approach #3
+_
+T{
+.nf
+\&.IP guns
+\&.br
+Firearms,
+.fi
+T} T{
+.nf
+\&.IP guns
+\[rs]p Firearms,
+.fi
+T} T{
+.nf
+\&.IP guns\[rs]h\[aq]0.4i\[aq]
+Firearms,
+.fi
+T}
+_
+.T&
+cb s s
+l s s.
+Result
+_
+T{
+A glossary-style list:
+.
+.IP lawyers 0.4i
+Two or more attorneys.
+.IP guns\h\[aq]0.4i\[aq] 0.4i
+Firearms,
+preferably large-caliber.
+.IP money
+Gotta pay for those lawyers and guns!
+T}
+.TE
+.
+.
+.NH 2
+Indented regions
+.XS
+ Indented regions
+.XE
+.
+.
+.LP
+You may need to indent a region of text while otherwise formatting it
+normally.
+.
+Indented regions can be nested;
+you can change
+.CW \[rs]n[PI]
+before each call to vary the amount of inset.
+.
+.
+.TS
+box;
+cb cb
+lf(CR) lx .
+Macro Description
+_
+\&.RS T{
+Begin a region where headings,
+paragraphs,
+and displays are indented (further) by
+.CW \[rs]n[PI] .
+T}
+\&.RE T{
+End the (next) most recent indented region.
+T}
+.TE
+.
+.
+.PP
+This feature enables you to easily line up text under hanging and
+indented paragraphs.
+.
+For example,
+you may wish to structure lists hierarchically.
+.
+.
+.KS
+.TS
+box center;
+cb cb
+lf(CR)8 l .
+Input Result
+_
+T{
+.nf
+.CW
+\&.IP \[rs][bu] 2
+Lawyers:
+\&.RS
+\&.IP \[rs][bu]
+Dewey,
+\&.IP \[rs][bu]
+Cheatham,
+and
+\&.IP \[rs][bu]
+Howe.
+\&.RE
+\&.IP \[rs][bu]
+Guns
+.R
+\&.\|.\|.
+.fi
+T} T{
+.IP \[bu] 2
+Lawyers:
+.RS
+.IP \[bu]
+Dewey,
+.IP \[bu]
+Cheatham,
+and
+.IP \[bu]
+Howe.
+.RE
+.IP \[bu]
+Guns
+\&.\|.\|.
+T}
+.TE
+.KE
+.
+.
+.NH 2
+Keeps, boxed keeps, and displays
+.XS
+ Keeps, boxed keeps, and displays
+.XE
+.
+.
+.LP
+On occasion,
+you may want to
+.I keep
+several lines of text,
+or a region of a document,
+together on a single page,
+preventing an automatic page break within certain boundaries.
+.
+This can cause a page break to occur earlier than it normally would.
+.
+For example,
+you may want to keep two paragraphs together,
+or a paragraph that refers to a table,
+list,
+or figure adjacent to the item it discusses.
+.
+.I ms
+provides the
+.CW KS
+and
+.CW KE
+macros for this purpose.
+.
+.
+.PP
+You can alternatively specify a
+.I "floating keep:"
+if a keep cannot fit on the current page,
+.I ms
+holds its contents and allows material following the keep
+(in the source document)
+to fill the remainder of the current page.
+.
+When the page breaks,
+whether by reaching the end or
+.CW bp
+request,
+.I ms
+puts the floating keep at the beginning of the next page.
+.
+This is useful for placing large graphics or tables that do not need to
+appear exactly where they occur in the source document.
+.
+.
+.TS
+box;
+cb cb
+lf(CR) lx .
+Macro Description
+_
+\&.KS Begin a keep.
+\&.KF Begin a floating keep.
+_
+\&.KE End (floating) keep.
+.TE
+.
+.
+.PP
+As an alternative to the keep mechanism,
+the
+.CW ne
+request forces a page break if there is not at least the amount of
+vertical space specified in its argument remaining on the page.
+.
+One application of
+.CW ne
+is to reserve space on the page for a figure or illustration to be
+included later.
+.
+.
+.KS
+.PP
+A
+.I "boxed keep"
+has a frame drawn around it.
+.
+.
+.TS
+box;
+cb cb
+lf(CR) lx .
+Macro Description
+_
+\&.B1 Begin a keep with a box drawn around it.
+\&.B2 End boxed keep.
+.TE
+.KE
+.
+.
+.KS
+.LP
+Boxed keep macros cause breaks;
+if you need to box a word or phrase within a line,
+see the
+.CW BX
+macro in section \[lq]Typeface and decoration\[rq] above.
+.
+Box lines are drawn as close as possible to the text they enclose so
+that they are usable within paragraphs.
+.
+If you wish to place one or more paragraphs in a boxed keep,
+you may improve their appearance by calling
+.CW .B1
+after the first paragraphing macro,
+and by adding a small amount of vertical space before calling
+.CW .B2 .
+.
+.
+.TS
+box center;
+lf(CR).
+\&.LP
+\&.B1
+\&.I Warning:
+Happy Fun Ball may suddenly accelerate to dangerous speeds.
+\&.sp \[rs]n[PD]/2 \[rs]" space by half the inter-paragraph distance
+\&.B2
+.TE
+.KE
+.
+.
+.LP
+If you want a boxed keep to float,
+you will need to enclose the
+.CW .B1
+and
+.CW .B2
+calls within a pair of
+.CW .KF
+and
+.CW .KE
+calls.
+.
+.
+.PP
+.I Displays
+turn off filling;
+lines of verse or program code are shown with their lines broken as in
+the source document without requiring
+.CW br
+requests between lines.
+.
+Displays can be kept on a single page or allowed to break across pages.
+.
+The
+.CW DS
+macro begins a kept display of the layout specified in its first
+argument;
+non-kept displays are begun with dedicated macros corresponding to their
+layout.
+.
+.
+.TS
+box;
+cb s | cb
+cb cb | ^
+lf(CR) lf(CR) | lx .
+Display macro Description
+With keep Without keep
+_
+\&.DS L \&.LD Begin left-aligned display.
+\&.DS \f[R][\f[]I\f[R] [\,\f[I]indent\/\f[]]] \
+\&.ID \f[R][\,\f[I]indent\/\f[]] T{
+Begin display indented by
+.I indent
+if given,
+.CW \[rs]n[DI]
+otherwise.
+T}
+\&.DS B \&.BD T{
+Begin block display
+(left-aligned with longest line centered).
+T}
+\&.DS C \&.CD Begin centered display.
+\&.DS R \&.RD T{
+Begin right-aligned display.
+This is a GNU extension.
+T}
+_
+.T&
+cf(CR) s | lx .
+\&.DE End any display.
+.TE
+.
+.
+.PP
+The distance stored in
+.CW \[rs]n[DD]
+is inserted before and after each pair of display macros;
+this is a Berkeley extension.
+.
+In
+.I "groff ms" ,
+this distance replaces any adjacent inter-paragraph distance
+or subsequent spacing prior to a section heading.
+.
+The
+.CW DI
+register is a GNU extension;
+its value is an indentation applied to displays created with
+.CW .DS
+and
+.CW .ID
+without arguments,
+to
+.CW .DS\~I \[rq] \[lq]
+without an indentation argument,
+and to equations set with
+.CW .EQ\~I \[rq]. \[lq]
+.
+Changes to either register take effect at the next display boundary.
+.
+.
+.KS
+.NH 2
+Tables, figures, equations, and references
+.XS
+ Tables, figures, equations, and references
+.XE
+.LP
+The
+.I ms
+package is often used with the
+.I tbl ,
+.I pic ,
+.I eqn ,
+and
+.I refer
+preprocessors.
+.
+The
+.CW \[rs]n[DD]
+distance is also applied to regions of the document preprocessed with
+.I tbl ,
+.I pic ,
+and
+.I eqn .
+.
+Mark text meant for preprocessors by enclosing it in pairs of tokens as
+follows,
+with nothing between the dot and the macro name.
+.
+The preprocessors match these tokens only at the start of an input line.
+.
+.
+.TS
+box;
+cb cb
+lf(CR) lx .
+Tag pair Description
+_
+T{
+\&.TS
+.R
+.CW H ] [
+.CW
+.br
+\&.TE
+T} T{
+Demarcate a table to be processed by the
+.I tbl
+preprocessor.
+.
+The optional
+.CW H
+argument to
+.CW .TS
+instructs
+.I ms
+to repeat table rows
+(often column headings)
+at the top of each new page the table spans,
+if applicable;
+calling the
+.CW TH
+macro marks the end of such rows.
+.
+The GNU
+.I tbl (1)
+man page provides a comprehensive reference to the preprocessor and
+offers examples of its use.
+T}
+_
+T{
+\&.PS
+.br
+\&.PE
+.br
+\&.PF
+T} T{
+.CW .PS
+begins a picture to be processed by the
+.I pic
+preprocessor;
+either of
+.CW .PE
+or
+.CW .PF
+ends it,
+the latter with \[lq]flyback\[rq] to the vertical position at its top.
+.
+You can create
+.I pic
+input manually or with a program such as
+.I xfig (1).
+T}
+_
+T{
+\&.EQ
+.R
+.I align \~[\c [
+.I label ]]
+.CW
+.br
+\&.EN
+T} T{
+Demarcate an equation to be processed by the
+.I eqn
+preprocessor.
+.
+The equation is centered by default;
+.I align
+can be
+.CW C ,
+.CW L ,
+or
+.CW I
+to (explicitly) center,
+left-align,
+or indent it by
+.CW \[rs]n[DI] ,
+respectively.
+.
+If specified,
+.I label
+is set right-aligned.
+T}
+_
+T{
+\&.[
+.br
+\&.]
+T} T{
+Demarcate a bibliographic citation to be processed by the
+.I refer
+preprocessor.
+.
+The GNU
+.I refer (1)
+man page provides a comprehensive reference to the preprocessor and the
+format of its bibliographic database.
+T}
+.TE
+.KE
+.
+.
+.PP
+When
+.I refer
+emits collected references
+(as might be done on a \[lq]Works Cited\[rq] page),
+it interpolates the string
+.CW \[rs]*[REFERENCES]
+as an unnumbered heading
+.CW .SH ). (
+.
+.
+.KS
+.PP
+The following is an example of how to set up a table that may print
+across two or more pages.
+.
+.
+.TS
+box center;
+l .
+T{
+.nf
+.CW
+\&.TS H
+allbox;
+Cb | Cb .
+Part\[->]Description
+_
+\&.TH
+\&.T&
+L | Lx .
+GH-1978\[->]Fribulating gonkulator
+.R
+\&.\|.\|.\|the rest of the table follows\|.\|.\|.
+.CW
+\&.TE
+.R
+.fi
+T}
+.TE
+.
+.
+Attempting to place a multi-page table inside a keep can lead to
+unpleasant results,
+particularly if the
+.I tbl
+.CW allbox
+option is used.
+.KE
+.
+.
+.PP
+Mathematics can be typeset using the language of the
+.I eqn
+preprocessor.
+.
+.
+.TS
+box center;
+Lf(CR).
+\&.EQ C (\[rs]*[SN\-NO\-DOT]a)
+p \[ti] = \[ti] q sqrt { 1 + \[ti] ( x / q sup 2 ) }
+\&.EN
+.TE
+.
+.
+This input formats a labelled equation.
+.
+We used the
+.CW SN\-NO\-DOT
+string to base the equation label on the current heading number,
+giving us more flexibility to reorganize the document.
+.
+.
+.EQ C (\*[SN-NO-DOT]a)
+p ~ = ~ q sqrt { 1 + ~ ( x / q sup 2 ) }
+.EN
+.
+Use
+.I groff
+options
+to run preprocessors on the input:
+.CW \-e
+for
+.I eqn ,
+.CW \-p
+for
+.I pic ,
+.CW \-R
+for
+.I refer ,
+and
+.CW \-t
+for
+.I tbl.
+.
+.
+.KS
+.NH 2
+Footnotes
+.XS
+ Footnotes
+.XE
+.
+.
+.LP
+.\" The following sentence is used below as an example as well. Keep it
+.\" in sync.
+A footnote is typically anchored to a place in the text with a
+.I marker,
+which is a small integer,\**
+.FS
+like this numeric footnote
+.FE
+a symbol,\*{\[dg]\*}
+.FS \[dg]
+like this symbolic footnote
+.FE
+or arbitrary user-specified text.
+.
+.
+.TS
+box;
+lb lb
+lf(CR) lx.
+String Description
+_
+\[rs]** T{
+Place an
+.I "automatic number,"
+an automatically updated numeric footnote marker,
+in the text.
+.
+Each time this string is interpolated,
+the number it produces increments by one.
+.
+Automatic numbers start at 1.
+.
+This is a Berkeley extension.
+T}
+.TE
+.KE
+.
+.
+.PP
+Enclose the footnote text in
+.CW FS
+and
+.CW FE
+macro calls to set it at the nearest available \[lq]foot\[rq],
+or bottom,
+of a text column or page.
+.
+.
+.TS
+box;
+cb cb
+lfCR lx .
+Macro Description
+_
+\&.FS \f[R][\f[I]marker\f[]] T{
+Begin a footnote.
+.
+The
+.CW FS\-MARK
+hook
+(see below)
+is called with any supplied
+.I marker
+argument,
+which is then also placed at the beginning of the footnote text.
+.
+If
+.I marker
+is omitted,
+the next pending automatic number enqueued by interpolation of the
+.CW *
+string is used,
+and if none exists,
+nothing is prefixed.
+.
+T}
+_
+\&.FE End footnote text.
+.TE
+.
+.
+.PP
+You may not desire automatically numbered footnotes in spite of their
+convenience.
+.
+You can indicate a footnote with a symbol or other text by specifying
+its marker at the appropriate place
+(for example,
+by using
+.CW \[rs][dg]
+for the dagger glyph)
+.I and
+as an argument to the
+.CW FS
+macro.
+.
+Such manual marks should be repeated as arguments to
+.CW .FS
+or as part of the footnote text to disambiguate their correspondence.
+.
+You may wish to use
+.CW \[rs]*{
+and
+.CW \[rs]*}
+to superscript the marker at the anchor point,
+in the footnote text,
+or both.
+.
+.
+.PP
+.I "groff ms"
+provides a hook macro,
+.CW FS\-MARK ,
+for user-determined operations to be performed when the
+.CW FS
+macro is called.
+.
+It is passed the same arguments as
+.CW FS
+itself.
+.
+An application of
+.CW FS\-MARK
+is anchor placement for a hyperlink reference,
+so that a footnote can link back to its referential context.\**
+.
+.FS
+\[lq]Portable Document Format Publishing with GNU Troff\[rq],
+.I pdfmark.ms
+in the
+.I groff
+distribution,
+uses this technique.
+.FE
+.
+By default,
+this macro has an empty definition.
+.
+.CW FS\-MARK
+is a GNU extension.
+.
+.
+.PP
+The following input was used to produce the first sentence in this
+section.
+.
+.
+.TS
+box center;
+lfCR.
+A footnote is anchored to a place in the text with a
+\&.I marker,
+which is a small integer,\[rs]**
+\&.FS
+like this numeric footnote
+\&.FE
+a symbol,\[rs]*{\[rs][dg]\[rs]*}
+\&.FS \[rs][dg]
+like this symbolic footnote
+\&.FE
+or arbitrary user-specified text.
+.TE
+.
+.
+.PP
+Footnotes can be safely used within keeps and displays,
+but you should avoid using automatically numbered footnotes within
+floating keeps.
+.
+You can place a second
+.CW \[rs]**
+interpolation between a
+.CW \[rs]**
+and its corresponding
+.CW .FS
+call as long as each
+.CW .FS
+call occurs
+.I after
+the corresponding
+.CW \[rs]**
+and occurrences of
+.CW .FS
+are in the same order as corresponding occurrences of
+.CW \[rs]** .
+.
+.
+.PP
+Footnote text is formatted as paragraphs are,
+using analogous parameters.
+.
+The registers
+.CW FI ,
+.CW FPD ,
+.CW FPS ,
+and
+.CW FVS
+correspond to
+.CW PI ,
+.CW PD ,
+.CW PS ,
+and
+.CW VS ,
+respectively;
+.CW FPD ,
+.CW FPS ,
+and
+.CW FVS
+are GNU extensions.
+.
+.
+.KS
+.PP
+The
+.CW FF
+register controls the formatting of automatically numbered footnote
+paragraphs,
+and those for which
+.CW .FS
+is given a
+.I marker
+argument,
+at the bottom of a column or page as follows.
+.
+.
+.TS
+box;
+cb cb
+lf(CR) lx .
+\f[CB]FF\f[] value Description
+_
+0 T{
+Set an automatic number as a superscript
+(on typesetter devices)
+or surrounded by square brackets
+(on terminals).
+.
+The footnote paragraph is indented as with
+.CW .PP
+if there is an
+.CW .FS
+argument or an automatic number,
+and as with
+.CW .LP
+otherwise.
+.
+This is the default.
+T}
+1 T{
+As
+.CW 0 ,
+but set the marker as regular text,
+and follow an automatic number with a period.
+T}
+2 T{
+As
+.CW 1 ,
+but without indentation
+(like
+.CW .LP ).
+T}
+3 T{
+As
+.CW 1 ,
+but set the footnote paragraph with the marker hanging
+(like
+.CW .IP ).
+T}
+.TE
+.KE
+.
+.
+.PP
+The default footnote line length is 11/12ths of the normal line length
+for compatibility with the expectations of historical
+.I ms
+documents;
+you may wish to set
+.CW \[rs]*[FR]
+to
+.CW 1
+to align with contemporary typesetting practices.
+.
+In the past,\**
+.FS
+Unix
+Version\~7
+.I ms ,
+its descendants,
+and
+.I "groff ms"
+prior to version 1.23.0
+.FE
+an
+.CW FL
+register was used for the line length in footnotes;
+however,
+setting this register at document initialization time had no effect on
+the footnote line length in multi-column arrangements.\**
+.
+.FS
+You could reset it after each call to
+.CW .1C ,
+.CW .2C ,
+or
+.CW .MC .
+.FE
+.
+.
+.PP
+.CW \[rs]*[FR]
+should be used in preference to
+.CW \[rs]n[FL]
+in contemporary documents.
+.
+The footnote line length is effectively computed as
+.I column-width "" \[lq]
+.CW "\~*\~\[rs]*[FR]" \[rq].
+.
+If an absolute footnote line length is required,
+recall that arithmetic expressions in the
+.I roff
+language are evaluated strictly from left to right,
+with no operator precedence
+(parentheses are honored).
+.
+.
+.TS
+box center;
+lf(CR).
+\&.ds FR 0+3i \[rs]" Set footnote line length to 3 inches.
+.TE
+.
+.
+.LP \" continuing previous paragraph
+Changes to the footnote length ratio
+.CW \[rs]*[FR]
+take effect with the next footnote written in single-column
+arrangements,
+but on the next page in multiple-column contexts.
+.
+.
+.KS
+.NH 2
+Language and localization
+.XS
+ Language and localization
+.XE
+.
+.
+.LP
+.I "groff ms"
+provides several strings that you can customize for your own purposes,
+or redefine to adapt the macro package to languages other than English.
+.
+It is already localized for
+.\" cs, de, fr, it, sv
+Czech,
+German,
+French,
+Italian,
+and
+Swedish.
+.
+Load the desired localization macro package after
+.I ms ;
+see the
+.I groff_tmac (5)
+man page.
+.
+.
+.TS
+box center;
+lf(CR).
+$ \f[CB]groff \-ms \-mfr bienvenue.ms
+.TE
+.
+.
+.PP
+The following strings are available.
+.
+.TS
+box center;
+cb lb
+lf(CR) lf(CR) .
+String Default
+_
+\[rs]*[REFERENCES] References
+\[rs]*[ABSTRACT] \[rs]f[I]ABSTRACT\[rs]f[]
+\[rs]*[TOC] Table of Contents
+\[rs]*[MONTH1] January
+\[rs]*[MONTH2] February
+\[rs]*[MONTH3] March
+\[rs]*[MONTH4] April
+\[rs]*[MONTH5] May
+\[rs]*[MONTH6] June
+\[rs]*[MONTH7] July
+\[rs]*[MONTH8] August
+\[rs]*[MONTH9] September
+\[rs]*[MONTH10] October
+\[rs]*[MONTH11] November
+\[rs]*[MONTH12] December
+.TE
+.
+.
+.PP
+The default for
+.CW \[rs]*[ABSTRACT]
+includes font selection escape sequences to set the word in italics.
+.KE
+.
+.
+.KS
+.NH 2
+Glyphs for special characters
+.XS
+ Glyphs for special characters
+.XE
+.
+.
+.LP
+Some of the special character escape sequences used in this document
+are listed below.
+.
+The minus sign glyph can also be accessed by the shorthand
+.CW \[rs]\[mi] .
+.
+These and many others are documented in the
+.I groff_char (7)
+man page.
+.
+.
+.TS
+box center;
+Cb Lb Lb
+Lf(CR) L L .
+Input Appearance Description
+_
+\[rs][\-] \[mi] minus sign
+\[rs][\->] \[->] right arrow
+\[rs][aq] \[aq] neutral apostrophe
+\[rs][bu] \[bu] bullet
+\[rs][dq] \[dq] neutral double quote
+\[rs][dg] \[dg] dagger
+\[rs][em] \[em] em dash
+\[rs][ha] \[ha] circumflex accent (caret, hat)
+\[rs][lg] \[lq] left double quotation mark
+\[rs][rq] \[rq] right double quotation mark
+\[rs][rs] \[rs] reverse solidus (backslash)
+\[rs][sd] \[sd] seconds (double prime) mark
+\[rs][ti] \[ti] tilde
+.TE
+.KE
+.
+.\" ------------------------
+.if t \{\
+. br
+. bp
+.\}
+.NH 1
+Page layout
+.XS
+Page layout
+.XE
+.LP
+.I ms 's
+default page layout arranges text
+in a single column
+with the page number
+between hyphens
+centered in a header
+on each page
+except the first,
+and produces no footers.
+.
+You can customize this arrangement.
+.
+.
+.NH 2
+Headers and footers
+.XS
+ Headers and footers
+.XE
+.
+.
+.LP
+There are multiple ways to produce headers and footers.
+.
+One is to define the strings
+.CW LH ,
+.CW CH ,
+and
+.CW RH
+to set the left,
+center,
+and right headers,
+respectively;
+and
+.CW LF ,
+.CW CF ,
+and
+.CW RF
+to set the left,
+center,
+and right footers.
+.
+This approach suffices for documents that do not distinguish odd- and
+even-numbered pages.
+.
+.
+.PP
+Another method is to call macros that set headers or footers for odd- or
+even-numbered pages.
+.
+Each such macro takes a delimited argument separating the left,
+center,
+and right header or footer texts from each other.
+.
+You can replace the neutral apostrophes (\[aq]) shown below with any
+character not appearing in the header or footer text.
+.
+These macros are Berkeley extensions.
+.
+.
+.TS
+box;
+lb lb
+lf(CR) lx.
+Macro Description
+_
+\&.OH \[aq]\f[I]left\f[]\[aq]\f[I]center\f[]\[aq]\f[I]right\f[]\[aq]\
+ T{
+Set the left, center, and right headers on odd-numbered (recto) pages.
+T}
+\&.OF \[aq]\f[I]left\f[]\[aq]\f[I]center\f[]\[aq]\f[I]right\f[]\[aq]\
+ T{
+Set the left, center, and right footers on odd-numbered (recto) pages.
+T}
+\&.EH \[aq]\f[I]left\f[]\[aq]\f[I]center\f[]\[aq]\f[I]right\f[]\[aq]\
+ T{
+Set the left, center, and right headers on even-numbered (verso) pages.
+T}
+\&.EF \[aq]\f[I]left\f[]\[aq]\f[I]center\f[]\[aq]\f[I]right\f[]\[aq]\
+ T{
+Set the left, center, and right footers on even-numbered (verso) pages.
+T}
+.TE
+.
+.
+.PP
+With either method,
+a percent sign
+.B %
+in header or footer text is replaced by the current page number.
+.
+By default,
+.I ms
+places no header on a page numbered \[lq]1\[rq]
+(regardless of its number format).
+.
+.
+.TS
+box;
+lb lb
+lf(CR) lx.
+Macro Description
+_
+\&.P1 T{
+Typeset the header even on page\~1.
+.
+To be effective,
+this macro must be called before the header trap is sprung on any page
+numbered \[lq]1\[rq];
+in practice,
+unless your page numbering is unusual,
+this means that you should call it early,
+before
+.CW .TL
+or any heading or paragraphing macro.
+.
+This is a Berkeley extension.
+T}
+.TE
+.
+.
+.PP
+For even greater flexibility,
+.I ms
+is designed to permit the redefinition of the macros that are called
+when the
+.I groff
+traps that ordinarily cause the headers and footers to be output are
+sprung.
+.
+.CW PT
+(\[lq]page trap\[rq])
+is called by
+.I ms
+when the header is to be written,
+and
+.CW BT
+(\[lq]bottom trap\[rq])
+when the footer is to be.
+.
+The
+.I groff
+page location trap that
+.I ms
+sets up to format the header also calls the
+(normally undefined)
+.CW HD
+macro after
+.CW .PT ;
+you can define
+.CW .HD
+if you need additional processing after setting the header
+(for example,
+to draw a line below it).
+.
+.\" Although undocumented in Tuthill's 4.2BSD ms.diffs paper...
+The
+.CW HD
+hook is a Berkeley extension.
+.
+Any such macros you (re)define must implement any desired specialization
+for odd-,
+even-,
+or first numbered pages.
+.
+.
+.KS
+.NH 2
+Tab stops
+.XS
+ Tab stops
+.XE
+.
+.
+.LP
+Use the
+.CW ta
+request to set tab stops as needed.
+.
+.
+.TS
+box;
+lb lb
+lf(CR) lx.
+Macro Description
+_
+\&.TA T{
+Reset the tab stops to the
+.I ms
+default
+(every 5 ens).
+.
+Redefine this macro to create a different set of default tab stops.
+T}
+.TE
+.KE
+.
+.
+.KS
+.NH 2
+Margins
+.XS
+ Margins
+.XE
+.
+.
+.LP
+Control margins using the registers summarized in the \[lq]Margins\[rq]
+portion of the table in section \[lq]Document control settings\[rq]
+above.
+.
+There is no setting for the right margin;
+the combination of page offset
+.CW \[rs]n[PO]
+and line length
+.CW \[rs]n[LL]
+determines it.
+.KE
+.
+.
+.KS
+.NH 2
+Multiple columns
+.XS
+ Multiple columns
+.XE
+.
+.
+.LP
+.I ms
+can set text in as many columns as reasonably fit on the page.
+.
+The following macros force a page break if a multi-column layout is
+active when they are called.
+.
+.CW \[rs]n[MINGW]
+is the default minimum gutter width;
+it is a GNU extension.
+.
+When multiple columns are in use,
+keeps
+and the
+.CW \%HORPHANS
+and
+.CW \%PORPHANS
+registers
+work with respect to column breaks instead of page breaks.
+.
+.
+.TS
+box;
+cb cb
+lf(CR) lx .
+Macro Description
+_
+\&.1C T{
+Arrange page text in a single column (the default).
+T}
+_
+\&.2C T{
+Arrange page text in two columns.
+T}
+_
+\&.MC \f[R][\f[I]column-width\f[] [\f[I]gutter-width\f[]]] T{
+Arrange page text in multiple columns.
+.
+If you specify no arguments,
+it is equivalent to the
+.CW 2C
+macro.
+.
+Otherwise,
+.I column-width
+is the width of each column and
+.I gutter-width
+is the minimum distance between columns.
+T}
+.TE
+.KE
+.
+.
+.\" ------------------------
+.NH 2
+Creating a table of contents
+.XS
+ Creating a table of contents
+.XE
+.LP
+Because
+.I roff
+formatters process their input in a single pass,
+material on page 50,
+for example,
+cannot influence what appears on page\~1\[em]this poses a challenge for
+a table of contents at its traditional location in front matter,
+if you wish to avoid manually maintaining it.
+.
+.I ms
+enables the collection of material to be presented in the table of
+contents as it appears,
+saving its page number along with it,
+and then emitting the collected contents on demand toward the end of the
+document.
+.
+The table of contents can then be resequenced to its desired location
+by physically rearranging the pages of a printed document,
+or as part of post-processing\[em]with a
+.I sed (1)
+script to reorder the pages in
+.I troff 's
+output,
+with
+.I pdfjam (1),
+or with
+.I gropdf (1)'s
+.B .pdfswitchtopage
+feature,
+for example.
+.
+.
+.PP
+Define an entry to appear in the table of contents by bracketing its
+text between calls to the
+.CW XS
+and
+.CW XE
+macros.
+.
+A typical application is to call them immediately after
+.CW NH
+or
+.CW SH
+and repeat the heading text within them.
+.
+The
+.CW XA
+macro,
+used within
+.CW .XS /\c
+.CW .XE
+pairs,
+supplements an entry\[em]for instance,
+when it requires multiple output lines,
+whether because a heading is too long to fit or because style dictates
+that page numbers not be repeated.
+.
+You may wish to indent the text thus wrapped to correspond to its
+heading depth;
+this can be done in the entry text by prefixing it with tabs or
+horizontal motion escape sequences,
+or by providing a second argument to the
+.CW XA
+macro.
+.
+.CW .XS
+and
+.CW .XA
+automatically associate the page number where they are called with the
+text following them,
+but they accept arguments to override this behavior.
+.
+At the end of the document,
+call
+.CW TC
+or
+.CW PX
+to emit the table of contents;
+.CW .TC
+resets the page number
+.B i "" to\~
+(Roman numeral one),
+and then calls
+.CW PX .
+.
+All of these macros are Berkeley extensions.
+.
+.TS
+box;
+cb cb
+lf(CR) lx .
+Macro Description
+_
+\&.XS \f[R][\f[I]page-number\f[]] T{
+Begin,
+supplement,
+and end a table of contents entry.
+.
+Each entry is associated with
+.I page-number
+(otherwise the current page number);
+a
+.I page-number
+of
+.CW no
+prevents a leader and page number from being emitted for that entry.
+.
+Use of
+.CW .XA
+within
+.CW .XS /\c
+.CW .XE
+is optional;
+it can be repeated.
+.
+If
+.I indentation
+is present,
+a supplemental entry is indented by that amount;
+ens are assumed if no unit is indicated.
+.
+Text on input lines between
+.CW .XS
+and
+.CW .XE
+is stored for later recall by
+.CW .PX .
+T}
+\&.XA \f[R][\f[I]page-number\f[] [\f[I]indentation\f[]]] \^
+\&.XE \^
+_
+\&.PX \f[R][\f[]no\f[R]] T{
+Switch to single-column layout.
+.
+Unless
+.CW no
+is specified,
+center and interpolate
+.CW \[rs]*[TOC]
+in bold and two points larger than the body text.
+.
+Emit the table of contents entries.
+T}
+_
+\&.TC \f[R][\f[]no\f[R]] T{
+Set the page number to\~1,
+the page number format to lowercase Roman numerals,
+and call
+.CW PX
+(with a
+.CW no
+argument,
+if present).
+T}
+.TE
+.
+.
+.KS
+.PP
+Here's an example of typical
+.I ms
+table of contents preparation and
+its result.
+.
+We employ horizontal escape sequences
+.CW \[rs]h
+to indent the entries by sectioning depth.
+.
+.TS
+box center;
+L.
+T{
+.nf
+.CW
+\&.NH 1
+Introduction
+\&.XS
+Introduction
+\&.XE
+.R
+\&.\|.\|.
+.CW
+\&.NH 2
+Methodology
+\&.XS
+\[rs]h\[aq]2n\[aq]Methodology
+\&.XA no
+\[rs]h\[aq]4n\[aq]Fassbinder\[aq]s Approach
+\&.XA no
+\[rs]h\[aq]4n\[aq]Kahiu\[aq]s Approach
+\&.XE
+.R
+\&.\|.\|.
+.CW
+\&.NH 1
+Findings
+\&.XS
+Findings
+\&.XE
+.R
+\&.\|.\|.
+.CW
+\&.TC
+.fi
+T}
+.TE
+.KE
+.
+.nr SavedPageNumber \n%
+.nr SavedH1 \n[H1] \" groff ms internal name
+.nr SavedH2 \n[H2] \" groff ms internal name
+.nr % 1
+.rr H1
+.rr H2
+.als SavedTOC toc*div \" groff ms internal name
+.rm toc*div
+.di ThrowAway
+.NH 1
+Introduction
+.XS
+Introduction
+.XE
+.nr % 2
+.NH 2
+Methodology
+.XS
+\h'2n'Methodology
+.XA no
+\h'4n'Fassbinder's Approach
+.XA no
+\h'4n'Kahiu's Approach
+.XE
+.nr % 5
+.NH 1
+Findings
+.XS
+Findings
+.XE
+.br
+.di
+.\" We can't emit the TOC inside a B1/B2 box, so use lines instead.
+.R
+\l'\n[.l]u'
+.PX
+\l'\n[.l]u'
+.als toc*div SavedTOC
+.rm SavedTOC
+.nr % \n[SavedPageNumber]
+.nr H1 \n[SavedH1]
+.nr H2 \n[SavedH2]
+.rr SavedPageNumber
+.rr SavedH1
+.rr SavedH2
+.
+.
+.PP
+The remaining features in this subsection are GNU extensions.
+.
+.I "groff ms"
+obviates the need to repeat heading text after
+.CW XS
+calls.
+.
+Call
+.CW XN
+and
+.CW XH
+after
+.CW NH
+and
+.CW SH ,
+respectively.
+.
+.
+.TS
+box;
+cb cb
+lf(CR) lx .
+Macro Description
+_
+\&.XN \f[I]heading-text T{
+Format
+.I heading-text
+and create a corresponding table of contents entry;
+the indentation is computed from the depth of the preceding
+.CW NH
+call.
+T}
+\&.XH \f[I]depth heading-text T{
+As
+.CW .XN ,
+but use
+.I depth
+to determine the indentation.
+T}
+.TE
+.
+.
+.KS
+.PP
+.I "groff ms"
+encourages customization of table of contents entry production.
+.
+.
+.TS
+box;
+cb cb
+lf(CR) lx .
+Macro Description
+_
+\&.XN\-REPLACEMENT \f[I]heading-text T{
+These hook macros implement
+.CW .XN
+and
+.CW .XH ,
+respectively.
+.
+They call
+.CW \%XN\-INIT
+and
+pass their
+.I heading-text
+arguments to
+.CW .\%XH\-UPDATE\-TOC .
+T}
+\&.XH\-REPLACEMENT \f[I]depth heading-text \^
+\&.XH\-INIT T{
+This hook macro does nothing by default.
+T}
+\&.XH\-UPDATE\-TOC\~ \f[I]depth heading-text T{
+Bracket
+.I heading-text
+with
+.CW XS
+and
+.CW XE
+calls,
+indenting it by 2 ens per level of
+.I depth
+beyond the first.
+T}
+.TE
+.KE
+.
+.
+.LP
+.TS
+box center;
+L.
+T{
+.nf
+.CW
+\&.NH 1
+\&.XN Introduction
+.R
+\&.\|.\|.
+.CW
+\&.NH 2
+\&.XN Methodology
+\&.XH 3 \[dq]Fassbinder\[aq]s Approach\[dq]
+\&.XH 3 \[dq]Kahiu\[aq]s Approach\[dq]
+.R
+\&.\|.\|.
+.CW
+\&.NH 1
+\&.XN Findings
+.R
+\&.\|.\|.
+.CW
+\&.TC
+.fi
+T}
+.TE
+.
+.nr SavedPageNumber \n%
+.nr SavedH1 \n[H1] \" groff ms internal name
+.nr SavedH2 \n[H2] \" groff ms internal name
+.nr % 1
+.rr H1
+.rr H2
+.als SavedTOC toc*div \" groff ms internal name
+.rm toc*div
+.di ThrowAway
+.NH 1
+.XN Introduction
+.nr % 2
+.NH 2
+.XN Methodology
+.XH 3 "Fassbinder's Approach"
+.XH 3 "Kahiu's Approach"
+.nr % 5
+.NH 1
+.XN Findings
+.br
+.di
+.\" We can't emit the TOC inside a B1/B2 box, so use lines instead.
+.R
+\l'\n[.l]u'
+.PX
+\l'\n[.l]u'
+.als toc*div SavedTOC
+.rm SavedTOC
+.nr % \n[SavedPageNumber]
+.nr H1 \n[SavedH1]
+.nr H2 \n[SavedH2]
+.rr SavedPageNumber
+.rr SavedH1
+.rr SavedH2
+.
+.
+.PP
+To get the section number of the numbered headings into the table of
+contents entries,
+we might define
+.CW \%XN\-REPLACEMENT
+as follows.
+.
+(We obtain the heading depth from
+.I "groff ms" 's
+internal register
+.CW nh*hl .)
+.
+.
+.LP
+.TS
+box center;
+L.
+T{
+.nf
+.CW
+\&.de XN\-REPLACEMENT
+\&.XN\-INIT
+\&.XH\-UPDATE\-TOC \[rs]\[rs]n[nh*hl] \[rs]\[rs]$@
+\&\[rs]&\[rs]\[rs]*[SN] \[rs]\[rs]$*
+\&..
+T}
+.TE
+.
+.
+.PP
+You can change the style of the leader that bridges each table of
+contents entry with its page number;
+define the
+.CW TC\-LEADER
+special character by using the
+.CW char
+request.
+.
+A typical leader combines the dot glyph
+.CW .\& \[rq] \[lq]
+with a horizontal motion escape sequence to spread the dots.
+.
+The width of the page number field is stored in the
+.CW TC\-MARGIN
+register.
+.
+.
+.\" ------------------------
+.if t \{\
+. br
+. bp
+.\}
+.NH 1
+Differences from AT&T
+.BI ms
+.XS
+Differences from AT&T
+.I ms
+.XE
+.LP
+The
+.I "groff ms"
+macros are an independent reimplementation,
+using no AT&T code.
+.
+Since they take advantage of the extended features of
+.I groff ,
+they cannot be used with AT&T
+.I troff .
+.
+.I "groff ms"
+supports features described above as Berkeley and Tenth Edition Research
+Unix extensions,
+and adds several of its own.
+.
+.
+.PP
+The internals of
+.I "groff ms"
+differ from those of AT&T
+.I ms .
+.
+Documents that depend upon implementation details of AT&T
+.I ms
+may not format properly with
+.I "groff ms" .
+.
+Such details include macros whose function was not documented in the
+AT&T
+.I ms
+manual [Lesk 1978].
+.\" TODO: Use refer(1).
+.\" XXX: We support RT anyway; maybe we should stop?
+.
+.
+.PP
+The error-handling policy of
+.I "groff ms"
+is to detect and report errors,
+rather than to ignore them silently.
+.
+.
+.PP
+Tenth Edition \" possibly 9th
+Research Unix supported
+.B P1 /
+.B P2
+macros to bracket code examples;
+.I "groff ms"
+does not.
+.
+.
+.PP
+.I "groff ms"
+does not work in GNU
+.I troff 's \" GNU
+AT&T compatibility mode.
+.
+If loaded when that mode is enabled,
+it aborts processing with a diagnostic message.
+.
+.
+.PP
+Multiple line spacing is not supported.
+.
+Use a larger vertical spacing instead.
+.
+.
+.PP
+.I "groff ms"
+uses the same header and footer defaults in both
+.CW nroff
+and
+.CW troff
+modes
+as AT&T
+.I ms
+does in
+.CW troff
+mode;
+AT&T's default in
+.CW nroff
+mode is to put the date,
+in U.S.\& traditional format
+(e.g.,
+\[lq]January 1, 2021\[rq]),
+in the center footer
+(the
+.CW CF
+string).
+.
+.
+.PP
+Many
+.I "groff ms"
+macros,
+including those for paragraphs,
+headings,
+and displays,
+cause a reset of formatting parameters,
+and may change the indentation;
+they do so not by incrementing or decrementing it,
+but by setting it absolutely.
+.
+This can cause problems for documents that define additional macros of
+their own that try to manipulate indentation.
+.
+Use
+.CW .RS
+and
+.CW .RE
+instead of the
+.CW in
+request.
+.
+.
+.PP
+AT&T
+.I ms
+interpreted the values of the registers
+.CW PS
+and
+.CW VS
+in points,
+and did not support the use of scaling units with them.
+.
+.I "groff ms"
+interprets values of the registers
+.CW PS ,
+.CW VS ,
+.CW FPS ,
+and
+.CW FVS
+equal to or larger than\~1,000
+(one thousand)
+as decimal fractions multiplied by\~1,000.\**
+.FS
+Register values are converted to and stored as basic units.
+.
+See \[lq]Measurements\[rq] in the
+.I groff
+Texinfo manual or in
+.I groff (7).
+.FE
+.
+This threshold makes use of a scaling unit with these parameters
+practical for high-resolution devices while preserving backward
+compatibility.
+.
+It also permits expression of non-integral type sizes.
+.
+For example,
+.CW "groff \-rPS=10.5p" \[rq] \[lq]
+at the shell prompt is equivalent to placing
+.CW ".nr PS 10.5p" \[rq] \[lq]
+at the beginning of the document.
+.
+.
+.PP
+AT&T
+.I ms 's
+.CW AU
+macro supported arguments used with some document types;
+.I "groff ms"
+does not.
+.
+.
+.PP
+Right-aligned displays are available.
+.
+The AT&T
+.I ms
+manual observes that \[lq]it is tempting to assume that
+.CW ".DS R"
+will right adjust lines,
+but it doesn't work\[rq].
+.
+In
+.I "groff ms" ,
+it does.
+.
+.
+.PP
+To make
+.I "groff ms"
+use the default page offset
+(which also specifies the left margin),
+the
+.B PO
+register must stay undefined until the first
+.I ms
+macro is called.
+.
+This implies that
+.B \[rs]n[PO]
+should not be used early in the document,
+unless it is changed also:
+accessing an undefined register automatically defines it.
+.
+.
+.PP
+.I "groff ms"
+supports the
+.CW PN
+register,
+but it is not necessary;
+you can access the page number via the usual
+.CW %
+register and invoke the
+.CW af
+request to assign a different format to it if desired.\**
+.FS
+If you redefine the
+.I ms
+.CW PT
+macro \" I wouldn't mention that, but Lesk 1978 encourages doing so. :-/
+and desire special treatment of certain page numbers
+(like
+.CW 1 \[rq]), \[lq]
+you may need to handle a non-Arabic page number format,
+as
+.I "groff ms" 's
+.CW .PT
+does;
+see the macro package source.
+.
+.I "groff ms"
+aliases the
+.CW PN
+register to
+.CW % .
+.FE
+.
+.
+.PP
+The AT&T
+.I ms
+manual documents registers
+.CW CW
+and
+.CW GW
+as setting the default column width and \[lq]intercolumn gap\[rq],
+respectively,
+and which applied when
+.CW .MC
+was called with fewer than two arguments.
+.
+.I "groff ms"
+instead treats
+.CW .MC
+without arguments as synonymous with
+.CW .2C ;
+there is thus no occasion for a default column width register.
+.
+Further,
+the
+.CW MINGW
+register
+and the second argument to
+.CW .MC
+specify a
+.I minimum
+space between columns,
+not the fixed gutter width of AT&T
+.I ms .
+.
+.
+.PP
+The AT&T
+.I ms
+manual did not document the
+.CW QI
+register;
+Berkeley and
+.I "groff ms"
+do.
+.
+.
+.PP
+The register
+.CW GS
+is set to\~1 by the
+.I "groff ms"
+macros,
+but is not used by the AT&T
+.I ms
+package.
+.
+Documents that need to determine whether they are being formatted with
+.I "groff ms"
+or another implementation should test this register.
+.
+.
+.\" XXX: We can't use a keep here because the wrong page number will be
+.\" recorded in the table of contents; see Savannah #63159.
+.\"KS
+.br
+.ne 6v
+.NH 2
+Unix Version\~7
+.BI ms
+macros not implemented by
+.BI "groff ms"
+.XS
+ Unix Version 7
+.I ms
+macros not implemented by
+.I "groff ms"
+.XE
+.LP
+Several macros described in the Unix Version\~7
+.I ms
+documentation are unimplemented by
+.I "groff ms"
+because they are specific to the requirements of documents produced
+internally by Bell Laboratories,
+some of which also require a glyph for the Bell System logo that
+.I groff
+does not support.
+.
+These macros implemented several document type formats
+(\c
+.CW EG , \" engineer's notes
+.CW IM , \" internal memorandum
+.CW MF , \" memorandum for file
+.CW MR , \" memorandum for record
+.CW TM , \" technical memorandum
+.CW TR ), \" technical report
+were meaningful only in conjunction with the use of certain document
+types
+(\c
+.CW AT , \" attachments
+.CW CS , \" cover sheet info for `TM` documents
+.CW CT , \" copies to
+.CW OK , \" "other keywords" for `TM` documents
+.CW SG ), \" signatures for `TM` documents
+stored the postal addresses of Bell Labs sites
+(\c
+.CW HO , \" Holmdel
+.CW IH , \" Naperville
+.CW MH , \" Murray Hill
+.CW PY , \" Piscataway
+.CW WH ), \" Whippany
+or lacked a stable definition over time
+(\c
+.CW UX ). \" Unix; on 1st use, add footnote identifying trademark owner
+.
+To compatibly render historical
+.I ms
+documents using these macros,
+we advise your documents to invoke the
+.CW rm
+request to remove any such macros it uses and then define replacements
+with an authentically typeset original at hand.\**
+.FS
+The removal beforehand is necessary because
+.I "groff ms"
+aliases these macros to a diagnostic macro,
+and you want to redefine the aliased name,
+not its target.
+.FE
+.
+For informal purposes,
+a simple definition of
+.CW UX
+should maintain the readability of the document's substance.
+.
+.
+.TS
+box center;
+lf(CR).
+\&.rm UX
+\&.ds UX Unix\[rs]"
+.TE
+.rs \" XXX: Work around Savannah #64005.
+.\"KE
+.
+.
+.\" ------------------------
+.if t \{\
+. br
+. bp
+.\}
+.NH 1
+Legacy features
+.XS
+Legacy features
+.XE
+.
+.
+.LP
+.I "groff ms"
+retains some legacy features solely to support formatting of historical
+documents;
+contemporary ones should not use them because they can render poorly.
+.
+See
+.I groff_char (7)
+instead.
+.
+.
+.KS
+.NH 2
+AT&T
+.I ms
+accent mark strings
+.XS
+ AT&T
+.I ms
+accent mark strings
+.XE
+.LP
+AT&T
+.I ms
+defined
+accent mark strings as follows.
+.
+.
+.TS
+box center;
+Cb Lb
+Lf(CR) Lx.
+String Description
+_
+\[rs]*[\[aq]] Apply acute accent to subsequent glyph.
+\[rs]*[\[ga]] Apply grave accent to subsequent glyph.
+\[rs]*[:] Apply dieresis (umlaut) to subsequent glyph.
+\[rs]*[\[ha]] Apply circumflex accent to subsequent glyph.
+\[rs]*[\[ti]] Apply tilde accent to subsequent glyph.
+\[rs]*[C] Apply caron to subsequent glyph.
+.\" \*v was an undocumented (in Lesk 1978-11-13) synonym for \*C.
+\[rs]*[,] Apply cedilla to subsequent glyph.
+.TE
+.KE
+.
+.
+.NH 2
+Berkeley
+.I ms
+accent mark and glyph strings
+.XS
+ Berkeley
+.I ms
+accent mark and glyph strings
+.XE
+.LP
+Berkeley
+.I ms
+offered an
+.CW AM
+macro;
+calling it redefined the AT&T accent mark strings
+(except for
+.CW \[rs]*C ),
+applied them to the
+.I preceding
+glyph,
+and defined additional strings,
+some for spacing glyphs.
+.
+.
+.TS
+box;
+cb cb
+lf(CR) lx .
+Macro Description
+_
+\&.AM Enable alternative accent mark and glyph-producing strings.
+.TE
+.
+.
+.TS
+box center;
+Cb Lb
+Lf(CR) Lx.
+String Description
+_
+\[rs]*[\[aq]] Apply acute accent to preceding glyph.
+\[rs]*[\[ga]] Apply grave accent to preceding glyph.
+\[rs]*[:] Apply dieresis (umlaut) to preceding glyph.
+\[rs]*[\[ha]] Apply circumflex accent to preceding glyph.
+\[rs]*[\[ti]] Apply tilde accent to preceding glyph.
+\[rs]*[,] Apply cedilla to preceding glyph.
+\[rs]*[/] Apply stroke (slash) to preceding glyph.
+\[rs]*[v] Apply caron to preceding glyph.
+\[rs]*[_] Apply macron to preceding glyph.
+\[rs]*[.] Apply underdot to preceding glyph.
+\[rs]*[o] Apply ring accent to preceding glyph.
+_
+\[rs]*[?] Interpolate inverted question mark.
+\[rs]*[!] Interpolate inverted exclamation mark.
+\[rs]*[8] Interpolate small letter sharp s.
+\[rs]*[q] Interpolate small letter o with hook accent (ogonek).
+\[rs]*[3] Interpolate small letter yogh.
+\[rs]*[d-] Interpolate small letter eth.
+\[rs]*[D-] Interpolate capital letter eth.
+\[rs]*[th] Interpolate small letter thorn.
+\[rs]*[TH] Interpolate capital letter thorn.
+\[rs]*[ae] Interpolate small ae ligature.
+\[rs]*[AE] Interpolate capital ae ligature.
+\[rs]*[oe] Interpolate small oe ligature.
+\[rs]*[OE] Interpolate capital oe ligature.
+.TE
+.rs \" XXX: Work around Savannah #64005.
+.
+.
+.\" ------------------------
+.if t \{\
+. br
+. bp
+.\}
+.NH 1
+Further reading
+.XS
+Further reading
+.XE
+.
+.
+.XP
+\[lq]Typing Documents on the Unix System:
+Using the \-ms Macros with Troff and Nroff\[rq];
+M.\& E.\& Lesk;
+November 13, 1978.
+.
+This document describes the
+.I ms
+supplied with AT&T Unix Version\~7.
+.
+.
+.XP
+\[lq]A Revised Version of \-ms\[rq];
+Bill Tuthill;
+August 1983.
+.
+The 4.2BSD release featured several extensions to
+.I ms ,
+most of which are recreated in
+.I "groff ms" .
+.
+(The exceptions are the
+.CW TM
+and
+.CW CT
+macros for setting a doctoral thesis in the format required by the
+contemporaneous degree-granting authorities of the University of
+California at Berkeley.)
+.
+.
+.XP
+\[lq]Using PDF boxes with
+.I groff
+and the
+.I ms
+macros\[rq];
+Deri James;
+March 2021.
+.
+.CW BOXSTART
+and
+.CW BOXSTOP
+macros are available via the
+.I sboxes
+extension package,
+enabling colored,
+bordered boxes when the
+.CW pdf
+output device is used.
+.
+This document is distributed with
+.I groff
+as the file
+.I msboxes.pdf .
+.
+.
+.LP
+This manual was composed using
+.I "groff ms" ;
+the curious may consult its source in the file
+.I ms.ms
+to see how its formatting was achieved.
+.\" ------------------------
+.TC
+.
+.
+.\" Local Variables:
+.\" fill-column: 72
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff textwidth=72:
diff --git a/doc/pic.ms b/doc/pic.ms
new file mode 100644
index 0000000..51c710f
--- /dev/null
+++ b/doc/pic.ms
@@ -0,0 +1,3287 @@
+.\" Copyright (C) 2006-2020 Free Software Foundation, Inc.
+.\" Written by Eric S. Raymond <esr@thyrsus.com>
+.\"
+.\" 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/>.
+.\"
+.\" For tolerably obvious reason, this needs to be processed through PIC.
+.\" It also needs to be processed through TBL and EQN. Use "groff -p -e -t".
+.\" There is no hope that this will ever look right under nroff.
+.\"
+.\" Comments beginning with %% are cut lines so portions of this
+.\" document can be automatically extracted. %%TUTORIAL%% begins the
+.\" tutorial part; %%REFERENCE%% the reference part. %%POSTLUDE%% the
+.\" bibliography and end matter after the reference part.
+.\"
+.\" This document was written for free use and redistribution by
+.\" Eric S. Raymond <esr@thyrsus.com> in August 1995. It has been put
+.\" under the GPL in March 2006.
+.\"
+.
+.
+.\" Set a proper TeX and LaTeX
+.ie t \{\
+. ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X\"
+. ds lx L\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\*(tx\"
+.\}
+.el \{\
+. ds tx TeX\"
+. ds lx LaTeX\"
+.\}
+.
+.\" Centered caption for figure. Assumes previous .KS
+.de CE
+. ce 1
+Figure \\n[H1]-\\$1
+. sp 1
+. KE
+..
+.
+.\" Definitions end here
+.
+.
+.TL
+Making Pictures With GNU PIC
+.AU
+Eric S. Raymond
+.AI
+\[la]\fIesr@snark.thyrsus.com\fP\[ra]
+.AB
+The \fBpic\fP language is a \fBtroff\fP extension that makes it easy
+to create and alter box-and-arrow diagrams of the kind frequently used
+in technical papers and textbooks.
+This paper is both an introduction to and reference for \fIgpic\/\fP(1),
+the implementation distributed by the Free Software Foundation for use
+with \fIgroff\/\fP(1).
+It also catalogs other implementations and explains the differences
+among them.
+.AE
+.\"%%TUTORIAL%%
+.
+.
+.NH 1
+Introduction to PIC
+.
+.NH 2
+Why PIC?
+.PP
+The \fBpic\fP language provides an easy way to write procedural
+box-and-arrow diagrams to be included in \fBtroff\fP documents.
+The language is sufficiently flexible to be quite useful for state
+charts, Petri-net diagrams, flow charts, simple circuit schematics,
+jumper layouts, and other kinds of illustration involving repetitive
+uses of simple geometric forms and splines.
+Because these descriptions are procedural and object-based, they are
+both compact and easy to modify.
+.PP
+The phrase \[lq]GNU pic\[rq] may refer to either of two \fBpic\fP
+implementations distributed by the Free Software Foundation and
+intended to accept the same input language.
+The \fIgpic\/\fP(1) implementation is for use with the \fIgroff\/\fP(1)
+implementation of \fBtroff\fP.
+The \fIpic2plot\/\fP(1) implementation runs standalone and is part of
+the \fBplotutils\fR package.
+Because both implementations are widely available in source form for
+free, they are good bets for writing very portable documentation.
+.
+.NH 2
+PIC Versions
+.PP
+The original 1984 pre-\fIditroff\/\fP(1) version of \fBpic\fP is long
+obsolete.
+The rewritten 1991 version is still available as part of the
+Documenter's Work Bench module of System V.
+.PP
+Where differences between Documenter's Work Bench (1991) \fBpic\fP and GNU
+\fBpic\fP need to be described, original \fBpic\fP is referred to as
+\[lq]DWB pic\[rq].
+Details on the history of the program are given at the end of this
+document.
+.PP
+The \fBpic2plot\fR program does not require the rest of the
+\fIgroff\/\fP(1) toolchain to render graphics.
+It can display \fBpic\fR diagrams in an X\~window, or generate output
+plots in a large number of other formats.
+These formats include: PNG, PBM, PGM, PPM, GIF, SVG, Adobe Illustrator
+format, idraw-editable Postscript, the WebCGM format for Web-based
+vector graphics, the format used by the \fBxfig\fP drawing editor, the
+Hewlett-Packard PCL\~5 printer language, the Hewlett-Packard Graphics
+Language (by default, HP-GL/2), the ReGIS (remote graphics instruction
+set) format developed by DEC, Tektronix format, and device-independent
+GNU graphics metafile format.
+.PP
+In this document, \fIgpic\/\fP(1) and \fIpic2plot\/\fP(1) extensions are
+marked as such.
+.
+.
+.NH 1
+Invoking PIC
+.PP
+Every \fBpic\fP description is a little program describing drawing
+actions.
+The \fB[gtn]roff\fP-dependent versions compile the program by
+\fIpic\/\fP(1) into \fIgtroff\/\fP(1) macros; the \fIpic2plot\/\fP(1)
+implementation uses a plotting library to draw the picture directly.
+Programs that process or display
+\fIgtroff\/\fP(1) output need not know or care that parts of the image
+began life as \fBpic\fP descriptions.
+.PP
+The \fIpic\/\fP(1) program tries to translate anything between \fB.PS\fP
+and \fB.PE\fP markers, and passes through everything else.
+The normal definitions of \fB.PS\fP and \fB.PE\fP in the \fIms\fP macro
+package and elsewhere have also the side-effect of centering the
+\fBpic\fP output on the page.
+.
+.KS
+.NH 2
+PIC Error Messages
+.PP
+If you make a mistake in \fBpic\fP input such that the program cannot
+interpret what you mean,
+\fIgpic\/\fP(1) issues a diagnostic message in the format prescribed by
+the GNU Coding Standards.
+.
+A typical error message looks like
+.
+.
+.ds FAM C
+.DS
+pic:\fIfile\fP:\fInnn\fP: syntax error before \[aq]\fItoken\fP\[aq]
+pic:\fIfile\fP:\fInnn\fP: giving up on this picture
+.DE
+.ds FAM T
+.
+.
+.LP
+where
+.I file
+is the name of the file being processed,
+.I nnn
+is a line number within that file,
+and
+.I token
+is a symbol in the \fBpic\fP language
+(often a keyword)
+near
+(usually just after)
+the error location.
+.KE
+.
+.
+.NH 1
+Basic PIC Concepts
+.PP
+Pictures are described procedurally, as collections of objects
+connected by motions.
+Normally, \fBpic\fP tries to string together objects left-to-right in
+the sequence they are described, joining them at visually natural
+points.
+Here is an example illustrating the flow of data in \fBpic\fP
+processing:
+.KS
+.PS
+ellipse "document";
+arrow;
+box width 0.6 "\fIgpic\/\fP(1)"
+arrow;
+box width 1.1 "\fIgtbl\/\fP(1) or \fIgeqn\/\fP(1)" "(optional)" dashed;
+arrow;
+box width 0.6 "\fIgtroff\/\fP(1)";
+arrow;
+ellipse "PostScript"
+.PE
+.CE "1: Flow of \fBpic\fP data"
+.PP
+This was produced from the following \fBpic\fP program:
+.KS
+.DS
+.ps -1
+.vs -1
+.CW
+\&.PS
+ellipse "document";
+arrow;
+box width 0.6 "\efIgpic\e/\efP(1)"
+arrow;
+box width 1.1 "\efIgtbl\e/\efP(1) or \efIgeqn\e/\efP(1)" "(optional)" dashed;
+arrow;
+box width 0.6 "\efIgtroff\e/\efP(1)";
+arrow;
+ellipse "PostScript"
+\&.PE
+.DE
+.R
+.KE
+.LP
+This little program illustrates several \fBpic\fP basics.
+Firstly, we see how to invoke three object types; ellipses, arrows, and
+boxes.
+We see how to declare text lines to go within an object (and that text
+can have font changes in it).
+We see how to change the line style of an object from solid (the
+default) to dashed.
+And we see that a box can be made wider than its default size to
+accommodate more text (we'll discuss this facility in detail in the next
+section).
+.PP
+We also get to see \fBpic\fP's simple syntax.
+Statements are ended by newlines or semicolons.
+String quotes are required around all text arguments, whether or not
+they contain spaces.
+In general, the order of command arguments and modifiers like \[lq]width
+1.2\[rq] or \[lq]dashed\[rq] doesn't matter, except that the order of
+text arguments is significant.
+.PP
+Here are all but one of the basic \fBpic\fP objects at their default sizes:
+.KS
+.PS
+box "box";
+move;
+line "line" "";
+move;
+arrow "arrow" "";
+move;
+circle "circle";
+move;
+ellipse "ellipse";
+move;
+arc; down; move; "arc"
+.PE
+.CE "2: Basic \fBpic\fP objects"
+.PP
+The missing simple object type is a \fIspline\fP.
+There is also a way to collect objects into \fIblock composites\fP which
+allows you to treat the whole group as a single object (resembling a
+box) for many purposes.
+We'll describe both of these later on.
+.PP
+The box, ellipse, circle, and block composite objects are \fIclosed\/\fR;
+lines, arrows, arcs and splines are \fIopen\fP.
+This distinction is often important in explaining command modifiers.
+.PP
+Figure \n[H1]-2 was produced by the following \fBpic\fP program,
+which introduces some more basic concepts:
+.KS
+.DS
+.CW
+\&.PS
+box "box";
+move;
+line "line" "";
+move;
+arrow "arrow" "";
+move;
+circle "circle";
+move;
+ellipse "ellipse";
+move;
+arc; down; move; "arc"
+\&.PE
+.DE
+.ft R
+.KE
+.PP
+The first thing to notice is the \fImove\fP command, which moves a
+default distance (1/2 inch) in the current movement direction.
+.PP
+Secondly, see how we can also decorate lines and arrows with text.
+The line and arrow commands each take two arguments here, specifying
+text to go above and below the object.
+If you wonder why one argument would not do, contemplate the output of
+\fBarrow "ow!"\fP:
+.KS
+.PS
+arrow "ow!"
+.PE
+.CE "3: Text centered on an arrow"
+.PP
+When a command takes one text string, \fBpic\fP tries to place it at
+the object's geometric center.
+As you add more strings, \fBpic\fP treats them as a vertical block to be
+centered.
+The program
+.KS
+.DS
+.CW
+line "1";
+line "1" "2";
+line "1" "2" "3";
+line "1" "2" "3" "4";
+line "1" "2" "3" "4" "5";
+.DE
+.ft R
+.KE
+.LP
+for example, gives you this:
+.KS
+.sp 2
+.PS
+line "1";
+line "1" "2";
+line "1" "2" "3";
+line "1" "2" "3" "4";
+line "1" "2" "3" "4" "5";
+.PE
+.sp 2
+.CE "4: Effects of multiple text arguments"
+.PP
+The last line of Figure 3-2's program, `\fBarc; down; move;
+"arc"\fP', describing the captioned arc, introduces several new ideas.
+Firstly, we see how to change the direction in which objects are
+joined.
+Had we written \fBarc; move; "arc"\fP, omitting \fBdown\fP the caption
+would have been joined to the top of the arc, like this:
+.KS
+.PS
+arc; move; "arc";
+.PE
+.CE "5: Result of \fBarc; move; ""arc""\fP"
+.PP
+This is because drawing an arc changes the default direction to the
+one its exit end points at.
+To reinforce this point, consider:
+.KS
+.PS
+arc cw; move; "arc";
+.PE
+.CE "6: Result of \fBarc cw; move; ""arc""\fP"
+.PP
+All we've done differently here is specify \[lq]cw\[rq] for a clockwise arc
+(\[lq]ccw\[rq] specifies counter-clockwise direction).
+Observe how it changes the default direction to down, rather than up.
+.PP
+Another good way to see this via with the following program:
+.KS
+.DS
+.CW
+line; arc; arc cw; line
+.DE
+.ft R
+.KE
+.LP
+which yields:
+.KS
+.PS
+line; arc; arc cw; line;
+.PE
+.CE "7: Result of \fBline; arc; arc cw; line\fP"
+.LP
+Notice that we did not have to specify \[lq]up\[rq] for the second arc to be
+joined to the end of the first.
+.PP
+Finally, observe that a string, alone, is treated as text to be
+surrounded by an invisible box of a size either specified by width
+and height attributes or by the defaults \fBtextwid\fR and
+\fBtextht\fR.
+Both are initially zero (because we don't know the default font size).
+.
+.
+.NH 1
+Sizes and Spacing
+.PP
+Sizes are specified in inches.
+If you don't like inches, it's possible to set a global style variable
+\fBscale\fP that changes the unit.
+Setting \fBscale = 2.54\fP effectively changes the internal unit to
+centimeters (all other size variable values are scaled correspondingly).
+.
+.NH 2
+Default Sizes of Objects
+.PP
+Here are the default sizes for \fBpic\fP objects:
+.TS H
+center, tab(@), linesize(2);
+lb | lb
+l | l.
+.sp 2p
+Object@Default Size
+.sp 2p
+_
+.sp 2p
+.TH
+box@0.75" wide by 0.5" high
+circle@0.5" diameter
+ellipse@0.75" wide by 0.5" high
+arc@0.5" radius
+line@0.5" long
+arrow@0.5" long
+.sp 5p
+_
+.TE
+.PP
+The simplest way to think about these defaults is that they make the
+other basic objects fit snugly into a default-sized box.
+.PP
+\fIpic2plot\/\fP(1) does not necessarily emit a physical inch for
+each virtual inch in its drawing coordinate system.
+Instead, it draws on a canvas 8\~virtual inches by 8\~virtual inches
+wide.
+If its output page size is \[lq]letter\[rq], these virtual inches will
+map to real ones.
+Specifying a different page size (such as, say, \[lq]a4\[rq]) will scale
+virtual inches so they are output as one eighth of the page width.
+Also, \fIpic2plot\/\fP(1) centers all images by default, though the
+\fB\-n\fP option can be used to prevent this.
+.
+.NH 2
+Objects Do Not Stretch!
+.PP
+Text is rendered in the current font with normal troff line spacing.
+Boxes, circles, and ellipses do \fInot\fP automatically resize to fit
+enclosed text.
+Thus, if you say \fBbox "this text far too long for a default box"\fP
+you'll get this:
+.KS
+.PS
+box "this text is far too long for a default box"
+.PE
+.CE "1: Boxes do not automatically resize"
+.LP
+which is probably not the effect you want.
+.
+.NH 2
+Resizing Boxes
+.PP
+To change the box size, you can specify a box width with the \[lq]width\[rq]
+modifier:
+.KS
+.PS
+box width 3 "this text is far too long for a default box"
+.PE
+.CE "2: Result of \fBbox width 3 ""text far too long""\fP"
+.PP
+This modifier takes a dimension in inches.
+There is also a \[lq]height\[rq] modifier that changes a box's height.
+The \fBwidth\fP keyword may be abbreviated to \fBwid\fP; the
+\fBheight\fP keyword to \fBht\fP.
+.
+.NH 2
+Resizing Other Object Types
+.PP
+To change the size of a circle, give it a \fBrad[ius]\fP or
+\fBdiam[eter]\fP modifier; this changes the radius or diameter of the
+circle, according to the numeric argument that follows.
+.KS
+.PS
+{circle rad 0.1; move down 0.2 from last circle .s; "0.1"};
+move; circle rad 0.2 "0.2"; move; circle rad 0.3 "0.3";
+.PE
+.CE "3: Circles with increasing radii"
+.PP
+The \fBmove\fP command can also take a dimension, which just tells
+it how many inches to move in the current direction.
+.PP
+Ellipses are sized to fit in the rectangular box defined by their
+axes, and can be resized with \fBwidth\fP and \fBheight\fP like boxes.
+.PP
+You can also change the radius of curvature of an arc with \fBrad[ius]\fP
+(which specifies the radius of the circle of which the arc is a segment).
+Larger values yield flatter arcs.
+.KS
+.PS
+{arc rad 0.1; move down 0.3 from last arc .center; "0.1"};
+move;
+{arc rad 0.2; move down 0.4 from last arc .center; "0.2"};
+move;
+{arc rad 0.3; move down 0.5 from last arc .center; "0.3"};
+.PE
+.CE "4: \fBarc rad\fP with increasing radii"
+.PP
+Observe that because an arc is defined as a quarter circle, increasing
+the radius also increases the size of the arc's bounding box.
+.
+.NH 2
+The `same' Keyword
+.PP
+In place of a dimension specification, you can use the keyword
+\fBsame\fR.
+This gives the object the same size as the previous one
+of its type.
+As an example, the program
+.KS
+.DS
+.CW
+\&.PS
+box; box wid 1 ht 1; box same; box
+\&.PE
+.R
+.DE
+.KE
+.LP
+gives you
+.KS
+.PS
+box; box wid 1 ht 1; box same; box
+.PE
+.CE "5: The \fBsame\fP keyword"
+.
+.
+.NH 1
+Generalized Lines and Splines
+.
+.NH 2
+Diagonal Lines
+.PP
+It is possible to specify diagonal lines or arrows by adding multiple \fBup\fP,
+\fBdown\fP, \fBleft\fP, and \fBright\fP modifiers to the line object.
+Any of these can have a multiplier.
+To understand the effects, think of the drawing area as being gridded
+with standard-sized boxes.
+.KS
+.PS
+# Draw a demonstration up left arrow with grid box overlay
+define gridarrow
+{
+ move right 0.5
+ [
+ {arrow up left $1;}
+ box wid 0.5 ht 0.5 dotted with .nw at last arrow .end;
+ for i = 2 to ($1 / 0.5) do {
+ box wid 0.5 ht 0.5 dotted with .sw at last box .se;
+ }
+ move down from last arrow .center;
+ [
+ sprintf("\fBarrow up left %g\fP", $1)
+ ]
+ ]
+ move right 0.1 from last [] .e;
+}
+gridarrow(0.5);
+gridarrow(1);
+gridarrow(1.5);
+gridarrow(2);
+undef gridarrow
+.PE
+.CE "1: Diagonal arrows (dotted boxes show the implied 0.5-inch grid)"
+.
+.NH 2
+Multi-Segment Line Objects
+.PP
+A \[lq]line\[rq] or \[lq]arrow\[rq] object may actually be a path
+consisting of any number of segments of varying lengths and directions.
+To describe a path, connect several line or arrow commands with the
+keyword \fBthen\fP.
+.KS
+.PS
+define zigzag { $1 right 1 then down .5 left 1 then right 1 }
+zigzag(line);
+.PE
+.CE "2: \fBline right 1 then down .5 left 1 then right 1\fP"
+.PP
+If a path starts with \fBthen\fP, the first segment is assumed to be into
+the current direction, using the default length.
+.
+.NH 2
+Spline Objects
+.PP
+If you start a path with the \fBspline\fP keyword, the path vertices
+are treated as control points for a spline curve fit.
+.KS
+.PS
+[zigzag(spline);]
+move down 0.2 from last [] .s;
+"The spline curve..."
+move right from last [] .e;
+[
+ zigzag(line dashed);
+ spline from start of last line right 1 then down .5 left 1 then right 1;
+ "1" at last spline .start + (-0.1, 0);
+ "2" at last spline .start + (1.1, 0);
+ "3" at last spline .end + (-1.1, 0);
+ "4" at last spline .end + (0.1, 0);
+]
+move down 0.2 from last [] .s;
+"...with tangents displayed"
+undef zigzag;
+.PE
+.CE "3: \fBspline right 1 then down .5 left 1 then right 1\fP"
+.PP
+You can describe many natural-looking but irregular curves this
+way.
+For example:
+.KS
+.PS
+[spline right then up then left then down ->;]
+move down 0.2 from last [] .s;
+["\fBspline right then up then left then down ->;\fP"]
+move right 3 from last [] .se;
+"\fBspline left then up right then down right ->;\fP"
+move up 0.2;
+[spline left then up right then down right ->;]
+.PE
+.CE "4: Two more spline examples"
+.LP
+Note the arrow decorations.
+Arrowheads can be applied naturally to any path-based object, line or
+spline.
+We'll see how in the next section.
+.
+.
+.NH 1
+Decorating Objects
+.
+.NH 2
+Text Special Effects
+.PP
+All \fBpic\fP implementations support the following font-styling
+escapes within text objects:
+.IP "\efR, \ef1" \w'\efR,\~\ef3'u+2n
+Set Roman style (the default)
+.IP "\efI, \ef2"
+Set Italic style
+.IP "\efB, \ef3"
+Set Bold style
+.IP \efP
+Revert to previous style; only works one level deep, does not stack.
+.PP
+In the \fBpic\fP implementations that are preprocessors for a
+toolchain that include \fB[gtn]roff\fP, text objects may also contain
+\fB[gtn]roff\fP vertical- and horizontal-motion escapes such as \eh or \ev.
+Troff special glyphs are also available.
+All \e-escapes will be passed through to the postprocessing stage and
+have their normal effects.
+The base font family is set by the \fB[gtn]roff\fP environment at the
+time the picture is rendered.
+.PP
+\fBpic2plot\fP replaces \fB[gtn]roff\fP horizontal- and vertical-motion
+escapes with \e-escapes of its own.
+Troff special glyphs are not available, but in most back ends Latin-1
+special characters and a square-root radical will be.
+See the \fBpic2plot\fP documentation for full details.
+.
+.NH 2
+Dashed Objects
+.PP
+We've already seen that the modifier \fBdashed\fP can change the line
+style of an object from solid to dashed.
+GNU \fBgpic\fP permits you to dot or dash ellipses, circles, and arcs
+(and splines in \*[tx] mode only); some versions of DWB may only permit
+dashing of lines and boxes.
+It's possible to change the dash interval by specifying a
+number after the modifier.
+.PP
+.KS
+.PS
+box dashed "default";
+move;
+box dashed 0.05 "0.05";
+move;
+box dashed 0.1 "0.1";
+move;
+box dashed 0.15 "0.15";
+move;
+box dashed 0.2 "0.2";
+.PE
+.CE "1: Dashed objects"
+.
+.NH 2
+Dotted Objects
+.PP
+Another available qualifier is \fBdotted\fP.
+GNU \fBgpic\fP permits you to dot or dash ellipses, circles, and arcs
+(and splines in \*[tx] mode only); some versions of DWB may only permit
+dashing of lines and boxes.
+It too can be suffixed with a number to specify the interval between
+dots:
+.KS
+.PS
+box dotted "default";
+move;
+box dotted 0.05 "0.05";
+move;
+box dotted 0.1 "0.1";
+move;
+box dotted 0.15 "0.15";
+move;
+box dotted 0.2 "0.2";
+.PE
+.CE "2: Dotted objects"
+.
+.NH 2
+Rounding Box Corners
+.PP
+It is also possible, in GNU \fBgpic\fP only, to modify a box so it has
+rounded corners:
+.KS
+.PS
+box rad 0.05 "rad 0.05";
+move;
+box rad 0.1 "rad 0.1";
+move;
+box rad 0.15 "rad 0.15";
+move;
+box rad 0.2 "rad 0.2";
+move;
+box rad 0.25 "rad 0.25";
+.PE
+.CE "3: \fBbox rad\fP with increasing radius values"
+.PP
+Radius values higher than half the minimum box dimension are silently
+truncated to that value.
+.
+.NH 2
+Slanted Boxes
+.PP
+GNU \fBgpic\fP supports slanted boxes:
+.KS
+.PS
+box wid 1.2 xslanted 0.1 "xslanted 0.1";
+move;
+box wid 1.2 yslanted -0.1 "yslanted -0.1";
+move;
+box wid 1.2 xslanted -0.2 yslanted 0.1 "xslanted -0.2" "yslanted 0.1";
+.PE
+.CE "4: Various slanted boxes."
+.PP
+The \fBxslanted\fP and \fByslanted\fP attributes specify the x and
+y\~offset, respectively, of the box's upper right corner from its default
+position.
+.
+.NH 2
+Arrowheads
+.PP
+Lines and arcs can be decorated as well.
+Any line or arc (and any spline as well) can be decorated with
+arrowheads by adding one or more as modifiers:
+.KS
+.PS
+line <- ->
+.PE
+.CE "5: Double-headed line made with \fBline <- ->\fP"
+.PP
+In fact, the \fBarrow\fP command is just shorthand for \fBline ->\fP.
+And there is a double-head modifier <->, so the figure above could have
+been made with \fBline <->\fP.
+.PP
+Arrowheads have a \fBwidth\fP attribute, the distance across the rear;
+and a \fBheight\fP attribute, the length of the arrowhead along the shaft.
+.PP
+Arrowhead style is controlled by the style variable \fBarrowhead\fP.
+The DWB and GNU versions interpret it differently.
+DWB defaults to open arrowheads and an \fBarrowhead\fP value of\~2; the
+Kernighan paper says a value of\~7 makes solid arrowheads.
+GNU \fBgpic\fP defaults to solid arrowheads and an \fBarrowhead\fP value
+of\~1; a value of\~0 produces open arrowheads.
+Note that solid arrowheads are always filled with the current outline
+color.
+.
+.NH 2
+Line Thickness
+.PP
+It's also possible to change the line thickness of an object (this is
+a GNU extension, DWB \fBpic\fP doesn't support it).
+The default thickness of the lines used to draw objects is controlled by the
+.B linethick
+variable.
+This gives the thickness of lines in points.
+A negative value means use the default thickness:
+in \*[tx] output mode, this means use a thickness of 8 milliinches;
+in \*[tx] output mode with the
+.B -c
+option, this means use the line thickness specified by
+.B .ps
+lines; in troff output mode, this means use a thickness proportional
+to the pointsize.
+A zero value means draw the thinnest possible line supported by the
+output device.
+Initially it has a value of -1.
+There is also a \fBthickness\fP attribute (which can be abbreviated to
+\fBthick\fP).
+For example, \fBcircle thickness 1.5\fP would draw a circle using a line
+with a thickness of 1.5 points.
+The thickness of lines is not affected by the value of the
+.B scale
+variable, nor by any width or height given in the
+.B .PS
+line.
+.
+.NH 2
+Invisible Objects
+.PP
+The modifier \fBinvis[ible]\fP makes an object entirely invisible.
+This used to be useful for positioning text in an invisible object that
+is properly joined to neighboring ones.
+Newer DWB versions and GNU \fBpic\fP treat stand-alone text in exactly
+this way.
+.
+.NH 2
+Filled Objects
+.PP
+It is possible to fill boxes, circles, and ellipses.
+The modifier \fBfill[ed]\fP accomplishes this.
+You can suffix it with a fill value; the default is given by the style
+variable \fBfillval\fP.
+.PP
+DWB \fBpic\fP and \fBgpic\fP have opposite conventions for fill values
+and different defaults.
+DWB \fBfillval\fP defaults to 0.3 and smaller values are darker; GNU
+\fBfillval\fP uses 0 for white and 1 for black.
+.KS
+.PS
+circle fill; move; circle fill 0.4; move; circle fill 0.9;
+.PE
+.CE "6: \fBcircle fill; move; circle fill 0.4; move; circle fill 0.9;\fR"
+.PP
+GNU \fBgpic\fP makes some additional guarantees.
+A fill value greater than 1 can also be used: this means fill with the
+shade of gray that is currently being used for text and lines.
+Normally this is black, but output devices may provide a mechanism for
+changing this.
+The invisible attribute does not affect the filling of objects.
+Any text associated with a filled object is added after the object has
+been filled, so that the text is not obscured by the filling.
+.
+.NH 2
+Colored Objects
+.PP
+As a GNU extension, three additional modifiers are available to specify
+colored objects.
+\fBoutline\fP sets the color of the outline, \fBshaded\fP the fill
+color, and \fBcolor\fP sets both.
+All three keywords expect a suffix specifying the color.
+Example:
+.KS
+.PS
+box color "yellow"; arrow color "cyan"; circle shaded "green" outline "black";
+.PE
+.CE "7: \fBbox color ""yellow""; arrow color ""cyan""; \
+circle shaded ""green"" outline ""black"";\fR"
+.PP
+Alternative spellings are \fBcolour\fP, \fBcolored\fP, \fBcoloured\fP,
+and \fBoutlined\fP.
+.PP
+Predefined color names for \fI[gtn]roff\/\fP-based \fBpic\fP
+implementations are defined in the device macro files, for example
+\f(CWps.tmac\fP; additional colors can be defined with the
+\fB.defcolor\fP request (see the manual page of GNU \fItroff\/\fP(1)
+for more details).
+Currently, color support is not available at all in \*[tx] mode.
+.PP
+The \fIpic2plot\/\fP(1) carries with its own set of color names,
+essentially those recognized by the X\~window system with \[lq]grey\[rq]
+accepted as a variant of \[lq]gray\[rq].
+.PP
+\fBpic\fP assumes that at the beginning of a picture both glyph and fill
+color are set to the default value.
+.
+.
+.NH 1
+More About Text Placement
+.PP
+By default, text is centered at the geometric center of the object it is
+associated with.
+The modifier \fBljust\fP causes the left end to be at the specified
+point (which means that the text lies to the right of the specified
+place!), the modifier \fBrjust\fP puts the right end at the place.
+The modifiers \fBabove\fP and \fBbelow\fP center the text one half line
+space in the given direction.
+.PP
+Text attributes can be combined:
+.KS
+.PS
+[line up "ljust text" ljust;]
+move 1.5;
+[line up "rjust text" rjust;]
+move;
+[arrow 1 "ljust above" ljust above;]
+move;
+[arrow 1 "rjust below" rjust below;]
+.PE
+.CE "1: Text attributes"
+.PP
+What actually happens is that \fIn\fP text strings are centered in a box
+that is \fBtextwid\fP wide by \fBtextht\fP high.
+Both these variables are initially zero (that is \fBpic\fR's way of not
+making assumptions about \fI[tg]roff\/\fP(1)'s default point size).
+.PP
+In GNU \fBgpic\fR, objects can have an
+.B aligned
+attribute.
+This only works if the postprocessor is
+\fBgrops\fP or \fBgropdf\fP.
+Any text associated with an object having the
+.B aligned
+attribute is rotated about the center of the object
+so that it is aligned in the direction from the start point
+to the end point of the object.
+Note that this attribute has no effect for objects whose start and
+end points are coincident.
+.
+.
+.NH 1
+More About Direction Changes
+.PP
+We've already seen how to change the direction in which objects are
+composed from rightwards to downwards.
+Here are some more illustrative examples:
+.KS
+.PS
+down;
+[
+ "\fBright; box; arrow; circle; arrow; ellipse\fP";
+ move 0.2;
+ [right; box; arrow; circle; arrow; ellipse;]
+]
+move down 0.3 from last [] .s;
+[
+ "\fBleft; box; arrow; circle; arrow; ellipse\fP"
+ move 0.2;
+ [left; box; arrow; circle; arrow; ellipse;]
+]
+# move down 0.3 from last [] .sw;
+# To re-join this illustrations, delete everything from here down to
+# the next #-comment, and uncomment the move line above
+.PE
+.CE "1: Effects of different motion directions (right and left)"
+.KS
+.PS
+# To re-join this illustrations, delete everything down to here, then
+# comment out the next `down' line.
+# Don't forget to re-number the figures following!
+down;
+[
+ "\fBdown; box; arrow; circle; arrow; ellipse;\fP"
+ move 0.2;
+ box; arrow; circle; arrow; ellipse;
+]
+move right 2 from last [] .e;
+[
+ up; box; arrow; circle; arrow; ellipse;
+ move 0.2;
+ "\fBup; box; arrow; circle; arrow; ellipse;\fP"
+]
+.PE
+.CE "2: Effects of different motion directions (up and down)"
+.PP
+Something that may appear surprising happens if you change directions
+in the obvious way:
+.KS
+.PS
+box; arrow; circle; down; arrow; ellipse
+.PE
+.CE "3: \fBbox; arrow; circle; down; arrow; ellipse\fP"
+.LP
+You might have expected that program to yield this:
+.KS
+.PS
+box; arrow; circle; move to last circle .s; down; arrow; ellipse
+.PE
+.CE "4: More intuitive?"
+.LP
+But, in fact, to get Figure \*[SN]3 you have to do this:
+.KS
+.DS
+.CW
+\&.PS
+box;
+arrow;
+circle;
+move to last circle .s;
+down;
+arrow;
+ellipse
+\&.PE
+.R
+.DE
+.KE
+.LP
+Why is this?
+Because the exit point for the current direction is already set when you
+draw the object.
+The second arrow in Figure \*[SN]2 dropped downwards from the circle's
+attachment point for an
+object to be joined to the right.
+.PP
+The meaning of the command \fBmove to last circle \&.s\fP should be
+obvious.
+In order to see how it generalizes, we'll need to go into detail on two
+important topics; locations and object names.
+.
+.
+.NH 1
+Naming Objects
+.PP
+The most natural way to name locations in \fBpic\fP is relative to
+objects.
+In order to do this, you have to be able to name
+objects.
+The \fBpic\fP language has rich facilities for this that try to emulate
+the syntax of English.
+.
+.NH 2
+Naming Objects By Order Of Drawing
+.PP
+The simplest (and generally the most useful) way to name an object is
+with a \fBlast\fP clause.
+It needs to be followed by an object type name; \fBbox\fP, \fBcircle\fP,
+\fBellipse\fP, \fBline\fP, \fBarrow\fP, \fBspline\fP, \fB""\fP, or
+\fB[]\fP (the last type refers to a \fIcomposite object\fP which we'll
+discuss later).
+So, for example, the \fBlast circle\fP clause in the program attached to
+Figure \*[SN]3 refers to the last circle drawn.
+.PP
+More generally, objects of a given type are implicitly numbered
+(starting from\~1).
+You can refer to (say) the third ellipse in the current picture with
+\fB3rd ellipse\fP, or to the first box as \fB1st box\fP, or to the fifth
+text string (which isn't an attribute to another object) as \fB5th
+""\fP.
+.PP
+Objects are also numbered backwards by type from the last one.
+You can say \fB2nd last box\fP to get the second-to-last box, or
+\fB3rd last ellipse\fP to get the third-to-last ellipse.
+.PP
+In places where \fIn\/\fBth\fR is allowed, \fB`\fIexpr\/\fB'th\fR is
+also allowed.
+Note that
+.B 'th
+is a single token: no space is allowed between the
+.B '
+and the \fBth\fP.
+For example,
+.IP
+.KS
+.DS
+.CW
+for i = 1 to 4 do {
+ line from `i'th box.nw to `i+1'th box.se
+}
+.DE
+.R
+.KE
+.
+.NH 2
+Naming Objects With Labels
+.PP
+You can also specify an object by referring to a label.
+A label is a word (which must begin with a capital letter) followed by a
+colon; you declare it by placing it immediately before the object
+drawing command.
+For example, the program
+.KS
+.DS
+.CW
+\&.PS
+A: box "first" "object"
+move;
+B: ellipse "second" "object"
+move;
+arrow right at A .r;
+\&.PE
+.R
+.DE
+.KE
+.LP
+declares labels \fBA\fP and \fBB\fP for its first and second objects.
+Here's what that looks like:
+.KS
+.PS
+A: box "first" "object"
+move;
+B: ellipse "second" "object"
+move;
+arrow right at A .r;
+.PE
+.CE "1: Example of label use"
+The \fBat\fP statement in the fourth line uses the label \fBA\fP (the
+behavior of \fBat\fP is explained in the next section).
+We'll see later on that labels are most useful for referring to block
+composite objects.
+.PP
+Labels are not constants but variables (you can view colon as a sort
+of assignment).
+You can say something like \fBA: A + (1,0);\fP and the effect is to
+reassign the label \fBA\fR to designate a position one inch to the right
+of its old value.
+.
+.
+.NH 1
+Describing locations
+.PP
+The location of points can be described in many different ways.
+All these forms are interchangeable as for as the \fBpic\fP language
+syntax is concerned; where you can use one, any of the others that would
+make semantic sense are allowed.
+.PP
+The special label \fBHere\fR always refers to the current position.
+.
+.NH 2
+Absolute Coordinates
+.PP
+The simplest is absolute coordinates in inches; \fBpic\fP uses a
+Cartesian system with (0,0) at the lower left corner of the virtual
+drawing surface for each picture (that is, X\~increases to the right
+and Y\~increases upwards).
+An absolute location may always be written in the conventional form as
+two comma-separated numbers surrounded by parentheses (and this is
+recommended for clarity).
+In contexts where it creates no ambiguity, the pair of X and
+Y\~coordinates suffices without parentheses.
+.PP
+It is a good idea to avoid absolute coordinates, however.
+They tend to make picture descriptions difficult to understand and
+modify.
+Instead, there are quite a number of ways to specify locations
+relative to \fBpic\fP objects and previous locations.
+.PP
+Another possibility of surprise is the fact that \fBpic\fP crops the
+picture to the smallest bounding box before writing it out.
+For example, if you have a picture consisting of a small box with its
+lower left corner at (2,2) and another small box with its upper right
+corner at (5,5), the width and height of the image are both 3\~units and
+not\~5.
+To get the origin at (0,0) included, simply add an invisible object to
+the picture, positioning the object's left corner at (0,0).
+.
+.NH 2
+Locations Relative to Objects
+.PP
+The symbol \fBHere\fP always refers to the position of the last object
+drawn or the destination of the last \fBmove\fP.
+.PP
+Alone and unqualified, a \fBlast circle\fP or any other way of
+specifying a closed-object or arc location refers as a position to the
+geometric center of the object.
+Unqualified, the name of a line or spline object refers to the position
+of the object start.
+.PP
+Also, \fBpic\fP objects have quite a few named locations
+associated with them.
+One of these is the object center, which can be indicated (redundantly)
+with the suffix \fB.center\fP (or just \fB.c\fP).
+Thus, \fBlast circle \&.center\fP is equivalent to \fBlast
+circle\fP.
+.NH 3
+Locations Relative to Closed Objects
+.PP
+Every closed object (box, circle, ellipse, or block composite) also
+has eight compass points associated with it;
+.KS
+.PS
+define dot {circle fill rad 0.02 at $1}
+
+define compass { [
+ ME: $1;
+ dot(ME.c); "\fB .c\fP" at ME .c ljust;
+ dot(ME.n); "\fB.n\fP" at ME .n above
+ dot(ME.ne); "\fB .ne\fP" at ME .ne above
+ dot(ME.e); "\fB .e\fP" at ME .e ljust
+ dot(ME.se); "\fB .se\fP" at ME .se below
+ dot(ME.s); "\fB.s\fP" at ME .s below
+ dot(ME.sw); "\fB.sw \fP" at ME .sw below
+ dot(ME.w); "\fB.w \fP" at ME .w rjust
+ dot(ME.nw); "\fB.nw \fP" at ME .nw above
+] }
+compass(box wid 1.5 ht 1);
+move right from last [] .e;
+compass(circle diam 1);
+move right from last [] .e;
+compass(ellipse wid 1.5 ht 1);
+.PE
+.CE "1: Compass points"
+.LP
+these are the locations where eight compass rays from the geometric center
+would intersect the figure.
+So when we say \fBlast circle \&.s\fP we are referring to the south
+compass point of the last circle drawn.
+The explanation of Figure 8-3's program is now complete.
+.PP
+(In case you dislike compass points, the names \fB.top\fP,
+\&\fB.bottom\fP, \fB.left\fP and \fB.right\fP are synonyms for \fB.n\fP,
+\&\fB.s\fP, \fB.e\fP, and \fB.w\fP respectively; they can even be
+abbreviated to \fB.t\fP, \fB.b\fP, \fB.l\fP and \fB.r\fP).
+.PP
+The names \fBcenter\fP, \fBtop\fP, \fBbottom\fP, \fBleft\fP, \fBright\fP,
+\fBnorth\fP, \fBsouth\fP, \fBeast\fP, and \fBwest\fP can also be used
+(without the leading dot) in a prefix form marked by \fBof\fP; thus,
+\fBcenter of last circle\fP and \fBtop of 2nd last ellipse\fP are both
+valid object references.
+Finally, the names \fBleft\fP and \fBright\fP can be prefixed with
+\fBupper\fP and \fBlower\fP which both have the obvious meaning.
+.PP
+Arc objects also have compass points; they are the compass points of
+the implied circle.
+.PP
+Non-closed objects (line, arrow, or spline) have compass points too, but
+the locations of them are completely arbitrary.
+In particular, different \fBpic\fP implementations return different
+locations.
+.NH 3
+Locations Relative to Open Objects
+.PP
+Every open object (line, arrow, arc, or spline) has three named
+points: \fB.start\fP, \fB.center\fP (or \fB.c\fP), and \fB.end\fP.
+They can also be used without leading dots in the \fBof\fP prefix form.
+The center of an arc is the center of its circle, but the center of
+a line, path, or spline is halfway between its endpoints.
+.KS
+.PS
+define critical {
+ [ ME: $1;
+ dot(ME.c); "\fB.center\fP" rjust at ME.center + (-0.1, 0.1)
+ dot(ME.start); "\fB.start\fP" rjust at ME.start + (-0.1, 0.1)
+ dot(ME.end); "\fB.end\fP" rjust at ME.end + (-0.1, 0.1)
+ ]
+}
+critical(line up right 1);
+move right 1 from last [] .e;
+critical(arc rad 0.5 cw);
+move down 0.5 from 2nd last [] .s;
+critical(line right 1 then down .5 left 1 then right 1);
+move right 1 from last [] .e;
+critical(spline right 1 then up right then left then left 1);
+.PE
+.CE "2: Special points on open objects"
+.PP
+.
+.NH 2
+Ways of Composing Positions
+.PP
+Once you have two positions to work with, there are several ways to
+combine them to specify new positions.
+.NH 3
+Vector Sums and Displacements
+.PP
+Positions may be added or subtracted to yield a new position (to be
+more precise, you can only add a position and an expression pair; the
+latter must be on the right side of the addition or subtraction sign).
+The result is the conventional vector sum or difference of coordinates.
+For example, \fBlast box \&.ne + (0.1, 0)\fP is a valid position.
+This example illustrates a common use, to define a position slightly
+offset from a named one (say, for captioning purposes).
+.NH 3
+Interpolation Between Positions
+.PP
+A position may be interpolated between any two positions.
+The syntax is `\fIfraction\fP \fBof the way between\fP \fIposition1\fP
+\fBand\fP \fIposition2\fP'.
+For example, you can say \fB1/3 of the way between Here and last ellipse
+\&.ne\fP.
+The fraction may be in numerator/denominator form or may be an ordinary
+number (values are \fInot\fP restricted to [0,1]).
+As an alternative to this verbose syntax, you can say `\fIfraction\fP
+\fB<\,\fP\fIposition1\fP \fB,\fP \fIposition2\/\fP\fB>\fP'; thus, the
+example could also be written as \fB1/3 <Here, last ellipse>\fP.
+.KS
+.PS
+arrow up right;
+P: 1/3 of the way between last arrow .start and last arrow .end;
+dot(P); move right 0.1; "P";
+.PE
+.CE "3: \fBP: 1/3 of the way between last arrow .start and last arrow .end\fP"
+.PP
+This facility can be used, for example, to draw double connections.
+.KS
+.PS
+A: box "yin"; move;
+B: box "yang";
+arrow right at 1/4 <A.e,A.ne>;
+arrow left at 1/4 <B.w,B.sw>;
+.PE
+.CE "4: Doubled arrows"
+.LP
+You can get Figure \n[H1]-4 from the following program:
+.KS
+.DS
+.CW
+\&.PS
+A: box "yin"; move;
+B: box "yang";
+arrow right at 1/4 <A.e,A.ne>;
+arrow left at 1/4 <B.w,B.sw>;
+\&.PE
+.R
+.DE
+.KE
+.LP
+Note the use of the short form for interpolating points.
+.NH 3
+Projections of Points
+.PP
+Given two positions \fIp\fP and \fIq\fP, the position
+\fB(\,\fP\fIp\fP\fB,\fP \fIq\fP\fB)\fP has the X\~coordinate of \fIp\fP
+and the Y coordinate of \fIq\fP.
+This can be helpful in placing an object at one of the corners of the
+virtual box defined by two other objects.
+.KS
+.PS
+box invis wid 2 height 1;
+dot(last box .ne); "\fB(B,A)\fP is here" ljust at last circle + (0.1, 0.1);
+dot(last box .se); "B" ljust at last circle + (0.1, -0.1)
+dot(last box .sw); "\fB(A,B)\fP is here" rjust at last circle + (-0.1, -0.1);
+dot(last box .nw); "A" ljust at last circle + (-0.1, 0.1)
+.PE
+.CE "5: Using (\fIx\fP, \fIy\fP) composition"
+.
+.NH 2
+Using Locations
+.PP
+There are four ways to use locations; \fBat\fP, \fBfrom\fP, \fBto\fP,
+and \fBwith\fP.
+All four are object modifiers; that is, you use them as suffixes to a
+drawing command.
+.PP
+The \fBat\fP modifier says to draw a closed object or arc with its
+center at the following location, or to draw a line/spline/arrow
+starting at the following location.
+.PP
+The \fBto\fP modifier can be used alone to specify a move destination.
+The \fBfrom\fP modifier can be used alone in the same way as \fBat\fP.
+.PP
+The \fBfrom\fP and \fBto\fP modifiers can be used with a \fBline\fR or
+\fBarc\fR command to specify start and end points of the object.
+In conjunction with named locations, this offers a very flexible
+mechanism for connecting objects.
+For example, the following program
+.KS
+.DS
+.CW
+\&.PS
+box "from"
+move 0.75;
+ellipse "to"
+arc cw from 1/3 of the way \e
+ between last box .n and last box .ne to last ellipse .n;
+\&.PE
+.R
+.DE
+.KE
+.LP
+yields:
+.KS
+.PS
+box "from"
+move 0.75;
+ellipse "to"
+arc cw from 1/3 of the way \
+ between last box .n and last box .ne to last ellipse .n;
+.PE
+.CE "6: A tricky connection specified with English-like syntax"
+.PP
+The \fBwith\fP modifier allows you to identify a named attachment
+point of an object (or a position within the object) with another point.
+This is very useful for connecting objects in a natural way.
+For an example, consider these two programs:
+.KS
+.PS
+[
+ [
+ box wid 0.5 ht 0.5;
+ box wid 0.75 ht 0.75;
+ ]
+ move 0.1 down 0.3 from last [] .s;
+ "\fBbox wid 0.5 ht 0.5; box wid 0.75 ht 0.75\fP"
+]
+move from last [].e 1.5
+[
+ [
+ box wid 0.5 ht 0.5;
+ box wid 0.75 ht 0.75 with .sw at last box .se;
+ ]
+ move 0.1 down 0.3 from last [] .s;
+ box invisible "\fBbox wid 0.5 ht 0.5;\fP" \
+ "\fBbox wid 0.75 ht 0.75 with .sw at last box .se;\fP"
+]
+.PE
+.CE "7: Using the \fBwith\fP modifier for attachments"
+.
+.NH 2
+The `chop' Modifier
+.PP
+When drawing lines between circles that don't intersect them at a
+compass point, it is useful to be able to shorten a line by the radius
+of the circle at either or both ends.
+Consider the following program:
+.KS
+.DS
+.CW
+\&.PS
+circle "x"
+circle "y" at 1st circle - (0.4, 0.6)
+circle "z" at 1st circle + (0.4, -0.6)
+arrow from 1st circle to 2nd circle chop
+arrow from 2nd circle to 3rd circle chop
+arrow from 3rd circle to 1st circle chop
+\&.PE
+.DE
+.R
+.KE
+.LP
+It yields the following:
+.KS
+.PS
+circle "x"
+circle "y" at 1st circle - (0.4, 0.6)
+circle "z" at 1st circle + (0.4, -0.6)
+arrow from 1st circle to 2nd circle chop
+arrow from 2nd circle to 3rd circle chop
+arrow from 3rd circle to 1st circle chop
+.PE
+.CE "8: The \fBchop\fR modifier"
+.LP
+Notice that the \fBchop\fR attribute moves arrowheads rather than
+stepping on them.
+By default, the \fBchop\fR modifier shortens both ends of the line by
+\fBcirclerad\fR.
+By suffixing it with a number you can change the amount of chopping.
+.PP
+If you say \fBline \&.\|.\|.\& chop \fIr1\fP chop \fIr2\fP\fR with
+\fIr1\fP and \fIr2\fP both numbers, you can vary the amount of chopping
+at both ends.
+You can use this in combination with trigonometric functions to write
+code that deals with more complex intersections.
+.
+.
+.NH 1
+Object Groups
+.PP
+There are two different ways to group objects in \fBpic\fP; \fIbrace
+grouping\fP and \fIblock composites\fP.
+.
+.NH 2
+Brace Grouping
+.PP
+The simpler method is simply to group a set of objects within curly
+bracket or brace characters.
+On exit from this grouping, the current position and direction are
+restored to their value when the opening brace was encountered.
+.
+.NH 2
+Block Composites
+.PP
+A block composite object is created a series of commands enclosed by
+square brackets.
+The composite can be treated for most purposes like a single closed
+object, with the size and shape of its bounding box.
+Here is an example.
+The program fragment
+.KS
+.DS
+.CW
+A: [
+ circle;
+ line up 1 at last circle .n;
+ line down 1 at last circle .s;
+ line right 1 at last circle .e;
+ line left 1 at last circle .w;
+ box dashed with .nw at last circle .se + (0.2, -0.2);
+ Caption: center of last box;
+]
+.R
+.DE
+.KE
+.LP
+yields the block in figure \n[H1]-1, which we show both with and
+without its attachment points.
+The block's location becomes the value of \fBA\fP.
+.KS
+.PS
+define junction {
+ circle;
+ line up 1 at last circle .n;
+ line down 1 at last circle .s;
+ line right 1 at last circle .e;
+ line left 1 at last circle .w;
+ box dashed with .nw at last circle .se + (0.2, -0.2);
+ Caption: center of last box;
+}
+[junction();]
+move;
+compass([junction()]);
+.PE
+.CE "1: A sample composite object"
+.LP
+To refer to one of the composite's attachment points, you can say
+(for example) \fBA \&.s\fP.
+For purposes of object naming, composites are a class.
+You could write \fBlast [] \&.s\fP as an equivalent reference, usable
+anywhere a location is needed.
+This construction is very important for putting together large,
+multi-part diagrams.
+.PP
+Blocks are also a variable-scoping mechanism, like a \fIgroff\/\fP(1)
+environment.
+All variable assignments done inside a block are undone at the end of it.
+To get at values within a block, write a name of the block followed by a
+dot, followed by the label you want.
+For example, we could refer the center of the box in the above composite as
+\fBlast [] \&.Caption\fP or \fBA.Caption\fP.
+.PP
+This kind of reference to a label can be used in any way any other
+location can be.
+For example, if we added \fB"Hi!" at A.Caption\fP
+the result would look like this:
+.KS
+.PS
+A: [junction();]
+"Hi!" at A.Caption;
+.PE
+.CE "2: Adding a caption using interior labeling"
+.PP
+You can also use interior labels in either part of a \fBwith\fR
+modifier.
+This means that the example composite could be placed relative to its
+caption box by a command containing \fBwith A.Caption at\fP.
+.PP
+Note that both width and height of the block composite object are always
+positive:
+.KS
+.PS
+[
+ [
+ box wid -0.5 ht 0.5
+ box wid 0.75 ht 0.75
+ ]
+ move 0.1 down 0.3 from last [].s
+ "\fBbox wid -0.5 ht 0.5; box wid 0.75 ht 0.75\fP"
+]
+move from last [].e 2
+[
+ [
+ [ box wid -0.5 ht 0.5 ]
+ box wid 0.75 ht 0.75
+ ]
+ move 0.1 down 0.3 from last [].s
+ "\fB[box wid -0.5 ht 0.5]; box wid 0.75 ht 0.75\fP"
+]
+.PE
+.CE "3: Composite block objects always have positive width and height"
+.PP
+Blocks may be nested.
+This means you can use block attachment points to build up complex
+diagrams hierarchically, from the inside out.
+Note that \fBlast\fP and the other sequential naming mechanisms
+don't look inside blocks, so if you have a program that looks
+like
+.KS
+.DS
+.CW
+\&.PS
+P: [box "foo"; ellipse "bar"];
+Q: [
+ [box "baz"; ellipse "quxx"]
+ "random text";
+ ]
+arrow from 2nd last [];
+\&.PE
+.R
+.DE
+.KE
+.LP
+the arrow in the last line is attached to object \fBP\fP, not
+object \fBQ\fP.
+.PP
+In DWB \fBpic\fP, only references one level deep into enclosed blocks
+were permitted.
+GNU \fBgpic\fP removes this restriction.
+.PP
+The combination of block variable scoping, assignability of labels and
+the macro facility that we'll describe later on can be used to
+simulate functions with local variables (just wrap the macro body in
+block braces).
+.
+.
+.NH 1
+Style Variables
+.PP
+There are a number of global style variables in \fBpic\fR that can be used to
+change its overall behavior.
+We've mentioned several of them in previous sections.
+They're all described here.
+For each variable, the default is given.
+.TS H
+center, tab(@), linesize(2);
+lb | lb | lb
+l | n | l.
+.sp 2p
+Style Variable@Default@What It Does
+.sp 2p
+_
+.sp 2p
+.TH
+boxht@0.5@Default height of a box
+boxwid@0.75@Default width of a box
+lineht@0.5@Default length of vertical line
+linewid@0.75@Default length of horizontal line
+linethick@-1@Default line thickness
+arcrad @0.25@Default radius of an arc
+circlerad@0.25@Default radius of a circle
+ellipseht@0.5@Default height of an ellipse
+ellipsewid@0.75@Default width of an ellipse
+moveht@0.5@Default length of vertical move
+movewid@0.75@Default length of horizontal move
+textht@0@Default height of box enclosing a text object
+textwid@0@Default width of box enclosing a text object
+arrowht@0.1@Length of arrowhead along shaft
+arrowwid@0.05@Width of rear of arrowhead
+arrowhead@1@Enable/disable arrowhead filling
+dashwid@0.05@Interval for dashed lines
+maxpswid@8.5@Maximum width of picture
+maxpsht@11@Maximum height of picture
+scale@1@Unit scale factor
+fillval@0.5@Default fill value
+.sp 5p
+_
+.TE
+Any of these variables can be set with a simple assignment statement.
+For example:
+.KS
+.PS
+[boxht=1; boxwid=0.3; movewid=0.2; box; move; box; move; box; move; box;]
+.PE
+.CE "1: \fBboxht=1; boxwid=0.3; movewid=0.2; box; move; box; move; box; move; box;\fP"
+.PP
+In GNU \fBpic\fR, setting the \fBscale\fR variable re-scales all
+size-related state variables so that their values remain equivalent in
+the new units.
+.PP
+The command \fBreset\fP resets all style variables to their defaults.
+You can give it a list of variable names as arguments (optionally
+separated by commas), in which case it resets only those.
+.PP
+State variables retain their values across pictures until reset.
+.
+.
+.NH 1
+Expressions, Variables, and Assignment
+.PP
+A number is a valid expression, of course (all numbers are stored
+internally as floating-point).
+Decimal-point notation is acceptable;
+in GNU \fBgpic\fR, scientific notation in C's `e' format (like
+\f(CW5e-2\fP) is accepted.
+.PP
+Anywhere a number is expected, the language also accepts a
+variable.
+Variables may be the built-in style variable described in the last
+section, or new variables created by assignment.
+.PP
+DWB \fBpic\fP supports only the ordinary assignment via \fB=\fP, which
+defines the variable (on the left side of the equal sign) in the current
+block if it is not already defined there, and then changes the value (on
+the right side) in the current block.
+The variable is not visible outside of the block.
+This is similar to the C\~programming language where a variable within a
+block shadows a variable with the same name outside of the block.
+.PP
+GNU \fBgpic\fP supports an alternate form of assignment using \fB:=\fP.
+The variable must already be defined, and the value is assigned to
+that variable without creating a variable local to the current block.
+For example, this
+.KS
+.DS
+.CW
+x=5
+y=5
+[
+ x:=3
+ y=3
+]
+print x " " y
+.DE
+.KE
+.LP
+prints \fB3 5\fP.
+.PP
+You can use the height, width, radius, and x and y coordinates of any
+object or corner in expressions.
+If \fBA\fP is an object label or name, all the following are valid:
+.KS
+.DS
+.CW
+A.x # x coordinate of the center of A
+A.ne.y # y coordinate of the northeast corner of A
+A.wid # the width of A
+A.ht # and its height
+2nd last circle.rad # the radius of the 2nd last circle
+.R
+.DE
+.KE
+.LP
+Note the second expression, showing how to extract a corner coordinate.
+.PP
+Basic arithmetic resembling those of C operators are available; \fB+\fP,
+\fB*\fP, \fB-\fP, \fB/\fP, and \fB%\fP.
+So is \fB^\fP for exponentiation.
+Grouping is permitted in the usual way using parentheses.
+GNU \fBgpic\fP allows logical operators to appear in expressions;
+\fB!\&\fP (logical negation, not factorial), \fB&&\fP, \fB|\||\fP,
+\fB==\fP, \fB!=\fP, \fB>=\fP, \fB<=\fP, \fB<\fP, \fB>\fP.
+.PP
+Various built-in functions are supported: \fBsin(\fIx\fB)\fR,
+\fBcos(\fIx\fB)\fR, \fBlog(\fIx\fB)\fR, \fBexp(\fIx\fB)\fR,
+\fBsqrt(\fIx\fB)\fR, \fBmax(\fIx\fB,\fIy\fB)\fR,
+\fBatan2(\fIx\fB,\fIy\fB)\fR, \fBmin(\fIx\fB,\fIy\fB)\fR,
+\fBint(\fIx\fB)\fR, \fBrand()\fP, and \fBsrand()\fP.
+Both \fBexp\fP and \fBlog\fP are
+base\~10; \fBint\fP does integer truncation; \fBrand()\fP returns a
+random number in [0-1), and \fBsrand()\fP sets the seed for
+a new sequence of pseudo-random numbers to be returned by \fBrand()\fP
+(\fBsrand()\fP is a GNU extension).
+.PP
+GNU \fBgpic\fP also documents a one-argument form or rand,
+\fBrand(\fIx\fB)\fR, which returns a random number between 1 and
+\fIx\fP, but this is deprecated and may be removed in a future
+version.
+.PP
+The function \fBsprintf()\fP behaves like a C \fIsprintf\/\fP(3)
+function that only takes %%, %e, %E, %f, %g, and %G conversion
+specifications.
+.
+.
+.NH 1
+Macros
+.PP
+You can define macros in \fBpic\fP, with up to 32 arguments (up to 16
+on EBCDIC platforms).
+This is useful for diagrams with repetitive parts.
+In conjunction with the scope rules for block composites, it effectively
+gives you the ability to write functions.
+.PP
+The syntax is
+.DS
+.CW
+\fBdefine\fP \fIname\fP \fB{\fP \fIreplacement text \fB}\fP
+.R
+.DE
+.LP
+This defines \fIname\fR as a macro to be replaced by the replacement
+text (not including the braces).
+The macro may be called as
+.DS
+.CW
+\fIname\fB(\fIarg1, arg2, \|.\|.\|.\& argn\fB)\fR
+.R
+.DE
+.LP
+The arguments (if any) are substituted for tokens \fB$1\fP, \fB$2\fP
+\&.\|.\|.\& \fB$n\fP
+appearing in the replacement text.
+.PP
+As an example of macro use, consider this:
+.KS
+.DS
+.CW
+.ps -1
+.vs -1
+\&.PS
+# Plot a single jumper in a box, $1 is the on-off state.
+define jumper { [
+ shrinkfactor = 0.8;
+ Outer: box invis wid 0.45 ht 1;
+
+ # Count on end ] to reset these
+ boxwid = Outer.wid * shrinkfactor / 2;
+ boxht = Outer.ht * shrinkfactor / 2;
+
+ box fill (!$1) with .s at center of Outer;
+ box fill ($1) with .n at center of Outer;
+] }
+
+# Plot a block of six jumpers.
+define jumperblock {
+ jumper($1);
+ jumper($2);
+ jumper($3);
+ jumper($4);
+ jumper($5);
+ jumper($6);
+
+ jwidth = last [].Outer.wid;
+ jheight = last [].Outer.ht;
+
+ box with .nw at 6th last [].nw wid 6*jwidth ht jheight;
+
+ # Use {} to avoid changing position from last box draw.
+ # This is necessary so move in any direction works as expected
+ {"Jumpers in state $1$2$3$4$5$6" at last box .s + (0,-0.2);}
+}
+
+# Sample macro invocations.
+jumperblock(1,1,0,0,1,0);
+move;
+jumperblock(1,0,1,0,1,1);
+\&.PE
+.ps
+.vs
+.R
+.DE
+.KE
+.LP
+It yields the following:
+.KS
+.PS
+# Plot a single jumper in a box, $1 is the on-off state.
+define jumper { [
+ shrinkfactor = 0.8;
+ Outer: box invis wid 0.45 ht 1;
+
+ # Count on end ] to reset these
+ boxwid = Outer.wid * shrinkfactor / 2;
+ boxht = Outer.ht * shrinkfactor / 2;
+
+ box fill (!$1) with .s at center of Outer;
+ box fill ($1) with .n at center of Outer;
+] }
+
+# Plot a block of six jumpers
+define jumperblock {
+ jumper($1);
+ jumper($2);
+ jumper($3);
+ jumper($4);
+ jumper($5);
+ jumper($6);
+
+ jwidth = last [].Outer.wid;
+ jheight = last [].Outer.ht;
+
+ box with .nw at 6th last [].nw wid 6*jwidth ht jheight;
+
+ # Use {} to avoid changing position from last box draw.
+ # This is necessary so move in any direction works as expected
+ {"Jumpers in state $1$2$3$4$5$6" at last box .s + (0,-0.2);}
+}
+
+# Sample macro invocations
+jumperblock(1,1,0,0,1,0);
+move 0.25;
+jumperblock(1,0,1,0,1,1);
+.PE
+.CE "1: Sample use of a macro"
+.LP
+This macro example illustrates how you can combine [], brace grouping,
+and variable assignment to write true functions.
+.PP
+One detail the example above does not illustrate is the fact that
+macro argument parsing is not token-oriented.
+If you call \fBjumper(\~1\~)\fP, the value of $1 is \fB"\~1\~"\fP.
+You could even call \fBjumper(big\~string)\fP to give $1 the value
+\fB"big\~string"\fP.
+.PP
+If you want to pass in a coordinate pair, you can avoid getting
+tripped up by the comma by wrapping the pair in parentheses.
+.PP
+Macros persist through pictures.
+To undefine a macro, say \fBundef\fP \fIname\fR; for example,
+.DS
+\f(CWundef jumper\fP
+\f(CWundef jumperblock\fP
+.DE
+.LP
+would undefine the two macros in the jumper block example.
+.
+.
+.NH 1
+Import/Export Commands
+.PP
+Commands that import or export data between \fBpic\fR and its
+environment are described here.
+.
+.NH 2
+File and Table Insertion
+.PP
+The statement
+.DS
+\f(CWcopy\fP \fIfilename\fR
+.DE
+.LP
+inserts the contents of \fIfilename\fR in the \fBpic\fP input stream.
+Any \fB.PS\fP/\fB.PE\fP pair in the file is ignored.
+You can use this to include pre-generated images.
+.PP
+A variant of this statement replicates the \fBcopy thru\fP feature of
+\fIgrap\/\fP(1).
+The call
+.DS
+\f(CWcopy\fP \fIfilename\fR \f(CWthru\fP \fImacro\fP
+.DE
+.LP
+calls \fImacro\fP (which may be either a name or replacement text)
+on the arguments obtained by breaking each line of the file into
+blank-separated fields.
+The macro may have up to 9\~arguments.
+The replacement text may be delimited by braces or by a pair of
+instances of any character not appearing in the rest of the text.
+.PP
+If you write
+.DS
+\f(CWcopy\fP \f(CWthru\fP \fImacro\fP
+.DE
+.LP
+omitting the filename, lines to be parsed are taken from the input
+source up to the next \fB.PE\fP.
+.PP
+In either of the last two \fBcopy\fP commands, GNU \fBgpic\fP permits a
+trailing `\fBuntil\fP \fIword\/\fP' clause to be added which terminates
+the copy when the first word matches the argument (the default
+behavior is therefore equivalent to \fBuntil \&.PE\fP).
+.PP
+Accordingly, the command
+.RS
+.KS
+.IP
+.CW
+.nf
+\&.PS
+copy thru % circle at ($1,$2) % until "END"
+1 2
+3 4
+5 6
+END
+box
+\&.PE
+.R
+.fi
+.KE
+.RE
+.LP
+is equivalent to
+.RS
+.KS
+.IP
+.CW
+.nf
+\&.PS
+circle at (1,2)
+circle at (3,4)
+circle at (5,6)
+box
+\&.PE
+.R
+.fi
+.KE
+.RE
+.
+.NH 2
+Debug Messages
+.PP
+The command \fBprint\fR accepts any number of arguments, concatenates
+their output forms, and writes the result to standard error.
+Each argument must be an expression, a position, or a text string.
+.
+.NH 2
+Escape to Post-Processor
+.PP
+If you write
+.DS
+\fBcommand\fR \fIarg\fR\|.\|.\|.
+.DE
+.LP
+\fBpic\fP concatenates the arguments and pass them through as a line
+to troff or \*[tx].
+Each
+.I arg
+must be an expression, a position, or text.
+This has a similar effect to a line beginning with
+.B .
+or
+\fB\e\fR\|,
+but allows the values of variables to be passed through.
+.LP
+For example,
+.KS
+.DS
+.CW
+.nf
+\&.PS
+x = 14
+command ".ds string x is " x "."
+\&.PE
+\e*[string]
+.DE
+.R
+.KE
+.LP
+prints
+.DS
+.CW
+x is 14.
+.R
+.DE
+.
+.NH 2
+Executing Shell Commands
+.PP
+The command
+.DS
+\f(CWsh\fP \f(CW{\fP \fIanything.\|.\|.\fP \f(CW}\fP
+.DE
+.LP
+macro-expands the text in braces, then executes it as a shell command.
+This could be used to generate images or data tables for later
+inclusion.
+The delimiters shown as {} here may also be two copies of any one
+character not present in the shell command text.
+In either case, the body may contain balanced {} pairs.
+Strings in the body may contain balanced or unbalanced braces in any
+case.
+.
+.
+.NH 1
+Control-flow constructs
+.PP
+The \fBpic\fP language provides conditionals and looping.
+For example,
+.KS
+.DS
+.CW
+pi = atan2(0,-1);
+for i = 0 to 2 * pi by 0.1 do {
+ "-" at (i/2, 0);
+ "." at (i/2, sin(i)/2);
+ ":" at (i/2, cos(i)/2);
+}
+.R
+.DE
+.KE
+.LP
+which yields this:
+.KS
+.PS
+pi = atan2(0,-1);
+for i = 0 to 2 * pi by 0.1 do {
+ "-" at (i/2, 0);
+ "." at (i/2, sin(i)/2);
+ ":" at (i/2, cos(i)/2);
+}
+.PE
+.CE "1: Plotting with a \fBfor\fP loop"
+.LP
+The syntax of the \fBfor\fP statement is:
+.DS
+\fBfor\fR \fIvariable\fR \fB=\fR \fIexpr1\/\fR \fBto\fR \fIexpr2\/\fR \
+[\fBby\fR [\fB*\fR]\fIexpr3\/\fR] \fBdo\fR \fIX\fR \fIbody\fR \fIX\fR
+.DE
+The semantics are as follows: Set
+.I variable
+to \fIexpr1\fR.
+While the value of
+.I variable
+is less than or equal to
+\fIexpr2\fR,
+do
+.I body
+and increment
+.I variable
+by
+\fIexpr3\fR;
+if
+.B by
+is not given, increment
+.I variable
+by\~1.
+If
+.I expr3
+is prefixed by\~\c
+.B *
+then
+.I variable
+is multiplied instead by
+\fIexpr3\fR.
+The value of
+.I expr3
+can be negative for the additive case;
+.I variable
+is then tested whether it is greater than or equal to
+\fIexpr2\fR.
+For the multiplicative case,
+.I expr3
+must be greater than zero.
+If the constraints aren't met, the loop isn't executed.
+.I X
+can be any character not occurring in
+\fIbody\fR; or the two \fIX\/\fPs may be paired braces (as in the
+\fBsh\fR command).
+.PP
+The syntax of the \fBif\fP statement is as follows:
+.DS
+\fBif\fR \fIexpr\fR \fBthen\fR \fIX\fR \fIif-true\fR \fIX\fR \
+[\fBelse\fR \fIY\fR \fIif-false\fR \fIY\/\fR]
+.DE
+Its semantics are as follows: Evaluate
+\fIexpr\fR;
+if it is non-zero then do
+\fIif-true\fR,
+otherwise do
+\fIif-false\fR.
+.I X
+can be any character not occurring in
+\fIif-true\fR.
+.I Y
+can be any character not occurring in
+\fIif-false\fR.
+.PP
+Eithe or both of the
+.I X
+or
+.I Y
+pairs may instead be balanced pairs of
+braces ({ and\~}) as in the \fBsh\fR command.
+In either case, the \fIif-true\fR may contain balanced pairs of braces.
+None of these delimiters are seen inside strings.
+.PP
+All the usual relational operators my be used in conditional expressions;
+\fB!\&\fP (logical negation, not factorial), \fB&&\fP, \fB|\||\fP, \fB==\fP,
+\fB!=\fP, \fB>=\fP, \fB<=\fP, \fB<\fP, \fB>\fP.
+.PP
+String comparison is also supported using \fB==\fP and \fB!=\fP.
+String comparisons may need to be parenthesized to avoid syntactic
+ambiguities.
+.
+.
+.NH 1
+Interface To [gt]roff
+.PP
+The output of \fBpic\fP is \fB[gt]roff\fP drawing commands.
+The GNU \fIgpic\/\fP(1) command warns that it relies on drawing
+extensions present in \fIgroff\/\fP(1) that are not present in
+\fItroff\/\fP(1).
+.
+.NH 2
+Scaling Arguments
+.PP
+The DWB \fIpic\/\fP(1) program accepts one or two arguments to
+\&\fB.PS\fP, which is interpreted as a width and height in inches to
+which the results of \fIpic\/\fP(1) should be scaled (width and height
+scale independently).
+If there is only one argument, it is interpreted as a width to scale the
+picture to, and height is scaled by the same proportion.
+.PP
+GNU \fBgpic\fP is less general; it accepts a single width to scale
+to, or a zero width and a maximum height to scale to.
+With two non-zero arguments, it scales to the maximum height.
+.
+.NH 2
+How Scaling is Handled
+.PP
+When \fBpic\fP processes a picture description on input, it passes
+\fB.PS\fP, \fB.PE\fP, and \fB.PF\fP through to the postprocessor.
+The \fB.PS\fP gets decorated with two numeric arguments which are the X
+and Y\~dimensions of the picture in inches.
+The post-processor can use these to reserve space for the picture and
+center it.
+.PP
+The GNU incarnation of the \fBms\fP macro package, for example, includes
+the following definitions:
+.KS
+.DS
+.ps -1
+.vs -1
+.CW
+\&.de PS
+\&.br
+\&.sp \e\en[DD]u
+\&.ie \e\en[.$]<2 .@error bad arguments to PS (not preprocessed with pic?)
+\&.el \e{\e
+\&. ds@need (u;\e\e$1)+1v
+\&. in +(u;\e\en[.l]-\e\en[.i]-\e\e$2/2>?0)
+\&.\e}
+\&..
+\&.de PE
+\&.par@reset
+\&.sp \e\en[DD]u+.5m
+\&..
+.R
+.DE
+.ps
+.vs
+.KE
+.LP
+Equivalent definitions of these and of \fB.PF\fP are supplied by GNU
+\fIpic\/\fP(1) if you use the \-mpic option; this should make it usable
+with macro pages other than \fIms\/\fR(1).
+.PP
+If \fB.PF\fP is used instead of \fB.PE\fP, the \fBtroff\fP position is
+restored to what it was at the picture start (Kernighan notes that
+the\~F stands for \[lq]flyback\[rq]).
+.PP
+The invocation
+.DS
+\&\fB.PS <\,\fP\fIfile\fP
+.DE
+.LP
+causes the contents of \fIfile\fP to replace the \fB.PS\fP line.
+This feature is deprecated; use `\fBcopy\fP \fIfile\fR' instead.
+.
+.NH 2
+PIC and [gt]roff commands
+.PP
+By default, input lines that begin with a period are passed to the
+postprocessor, embedded at the corresponding point in the output.
+Messing with horizontal or vertical spacing is an obvious recipe for
+bugs, but point size and font changes are usually safe.
+.PP
+Point sizes and font changes are also safe within text strings, as
+long as they are undone before the end of string.
+.PP
+The enablement of output line filling by \fB[gt]roff\fP is preserved
+across pictures.
+.
+.NH 2
+PIC and EQN
+.PP
+The Kernighan paper notes that there is a subtle problem with
+complicated equations inside \fBpic\fR pictures; they come out wrong if
+\fIeqn\/\fP(1) has to leave extra vertical space for the equation.
+If your equation involves more than subscripts and superscripts, you
+must add to the beginning of each equation the extra information
+\fBspace\~0\fP.
+He gives the following example:
+.KS
+.DS
+.CW
+arrow
+box "$space 0 {H( omega )} over {1 - H( omega )}$"
+arrow
+.R
+.DE
+.KE
+.EQ
+delim @@
+.EN
+.KS
+.PS
+arrow
+box "@space 0 {H( omega )} over {1 - H( omega )}@"
+arrow
+.PE
+.CE "1: Equations within pictures"
+.
+.NH 2
+Absolute Positioning of Pictures
+.PP
+A \fBpic\fP picture is positioned vertically by troff at the current
+position.
+The topmost position possible on a page is not the paper edge
+but a position which is one baseline lower so that the first row of glyphs
+is visible.
+To make a picture really start at the paper edge you have to make the
+baseline-to-baseline distance zero, this is, you must set the vertical
+spacing to\~0 (using \fB.vs\fP) before starting the picture.
+.
+.
+.NH 1
+Interface to TeX
+.PP
+.PP
+\*[tx] mode is enabled by the
+.B \-t
+option.
+In \*[tx] mode, pic defines a vbox called
+.B \egraph
+for each picture; the name can be changed with the pseudo-variable
+.B figname
+(which is actually a specially parsed command).
+You must yourself print that vbox using, for example, the command
+.RS
+.LP
+.CW
+\ecenterline{\ebox\egraph}
+.RE
+.LP
+Actually, since the vbox has a height of zero (it is defined with \evtop)
+this produces slightly more vertical space above the picture than
+below it;
+.RS
+.LP
+.CW
+\ecenterline{\eraise 1em\ebox\egraph}
+.RE
+.LP
+would avoid this.
+.PP
+To make the vbox having a positive height and a depth of zero (as used
+e.g.\& by \*(lx's \f(CW\%graphics.sty\fP), define the following macro in
+your document:
+.KS
+.DS
+.CW
+\edef\egpicbox#1{%
+ \evbox{\eunvbox\ecsname #1\eendcsname\ekern 0pt}}
+.R
+.DE
+.KE
+.LP
+Now you can simply say
+.B \egpicbox{graph}
+instead of \ebox\egraph.
+.PP
+You must use a \*[tx] driver that supports the
+.B tpic
+specials, version\~2.
+.PP
+Lines beginning with
+.B \e
+are passed through transparently; a
+.B %
+is added to the end of the line to avoid unwanted spaces.
+You can safely use this feature to change fonts or to
+change the value of \fB\ebaselineskip\fP.
+Anything else may well produce undesirable results; use at your own risk.
+Lines beginning with a period are not given any special treatment.
+.PP
+The \*[tx] mode of \fIpic\/\fP(1) does \fInot\fP translate \fBtroff\fP
+font and size changes included in text strings!
+.PP
+Here an example how to use \fBfigname\fP.
+.KS
+.DS
+.CW
+\&.PS
+figname = foo;
+\&...
+\&.PE
+
+\&.PS
+figname = bar;
+\&...
+\&.PE
+
+\ecenterline{\ebox\efoo \ehss \ebox\ebar}
+.DE
+.R
+.KE
+.LP
+Use this feature sparsingly and only if really needed:
+A different name means a new box register in \*[tx], and the maximum number
+of box registers is only 256.
+Also be careful not to use a predefined \*[tx] or \*[lx] macro name as
+an argument to \fBfigname\fP since this inevitably causes an error.
+.
+.
+.NH 1
+Obsolete Commands
+.PP
+GNU \fIgpic\/\fP(1) has a command
+.DS
+\fBplot\fR \fIexpr\fR [\fB"\fItext\fB"\fR]
+.DE
+This is a text object which is constructed by using
+.I text
+as a format string for sprintf
+with an argument of
+\fIexpr\fP.
+If
+.I text
+is omitted a format string of \fB"%g"\fP is used.
+Attributes can be specified in the same way as for a normal text
+object.
+Be very careful that you specify an appropriate format string;
+\fBpic\fP does only very limited checking of the string.
+This is deprecated in favour of
+\fBsprintf\fP.
+.
+.
+.NH 1
+Some Larger Examples
+.PP
+Here are a few larger examples, with complete source code.
+One of our earlier examples is generated in an instructive way using a
+for loop:
+.KS
+.DS
+.ps -1
+.vs -1
+.CW
+\&.PS
+# Draw a demonstration up left arrow with grid box overlay
+define gridarrow
+{
+ move right 0.1
+ [
+ {arrow up left $1;}
+ box wid 0.5 ht 0.5 dotted with .nw at last arrow .end;
+ for i = 2 to ($1 / 0.5) do
+ {
+ box wid 0.5 ht 0.5 dotted with .sw at last box .se;
+ }
+ move down from last arrow .center;
+ [
+ sprintf("\efBarrow up left %g\efP", $1)
+ ]
+ ]
+ move right 0.1 from last [] .e;
+}
+gridarrow(0.5);
+gridarrow(1);
+gridarrow(1.5);
+gridarrow(2);
+undef gridarrow
+\&.PE
+.R
+.DE
+.ps
+.vs
+.KE
+.KS
+.PS
+# Draw a demonstration up left arrow with grid box overlay
+define gridarrow
+{
+ move right 0.5
+ [
+ {arrow up left $1;}
+ box wid 0.5 ht 0.5 dotted with .nw at last arrow .end;
+ for i = 2 to ($1 / 0.5) do {
+ box wid 0.5 ht 0.5 dotted with .sw at last box .se;
+ }
+ move down from last arrow .center;
+ [
+ sprintf("\fBarrow up left %g\fP", $1)
+ ]
+ ]
+ move right 0.1 from last [] .e;
+}
+gridarrow(0.5);
+gridarrow(1);
+gridarrow(1.5);
+gridarrow(2);
+undef gridarrow
+.PE
+.CE "1: Diagonal arrows (dotted boxes show the implied 0.5-inch grid)"
+.PP
+Here's an example concocted to demonstrate layout of a large,
+multiple-part pattern:
+.KS
+.DS
+.ps -1
+.vs -1
+.CW
+\&.PS
+define filter {box ht 0.25 rad 0.125}
+lineht = 0.25;
+Top: [
+ right;
+ box "\efBms\efR" "sources";
+ move;
+ box "\efBHTML\efR" "sources";
+ move;
+ box "\efBlinuxdoc-sgml\efP" "sources" wid 1.5;
+ move;
+ box "\efBTexinfo\efP" "sources";
+
+ line down from 1st box .s lineht;
+ A: line down;
+ line down from 2nd box .s; filter "\efBhtml2ms\efP";
+ B: line down;
+ line down from 3rd box .s; filter "\efBformat\efP";
+ C: line down;
+ line down from 4th box .s; filter "\efBtexi2roff\efP";
+ D: line down;
+]
+move down 1 from last [] .s;
+Anchor: box wid 1 ht 0.75 "\efBms\efR" "intermediate" "form";
+arrow from Top.A.end to Anchor.nw;
+arrow from Top.B.end to 1/3 of the way between Anchor.nw and Anchor.ne;
+arrow from Top.C.end to 2/3 of the way between Anchor.nw and Anchor.ne;
+arrow from Top.D.end to Anchor.ne
+{
+ # PostScript column
+ move to Anchor .sw;
+ line down left then down ->;
+ filter "\efBpic\efP";
+ arrow;
+ filter "\efBeqn\efP";
+ arrow;
+ filter "\efBtbl\efP";
+ arrow;
+ filter "\efBgroff\efP";
+ arrow;
+ box "PostScript";
+
+ # HTML column
+ move to Anchor .se;
+ line down right then down ->;
+ A: filter dotted "\efBpic2img\efP";
+ arrow;
+ B: filter dotted "\efBeqn2html\efP";
+ arrow;
+ C: filter dotted "\efBtbl2html\efP";
+ arrow;
+ filter "\efBms2html\efP";
+ arrow;
+ box "HTML";
+
+ # Nonexistence caption
+ box dashed wid 1 at B + (2,0) "These tools" "don't yet exist";
+ line chop 0 chop 0.1 dashed from last box .nw to A.e ->;
+ line chop 0 chop 0.1 dashed from last box .w to B.e ->;
+ line chop 0 chop 0.1 dashed from last box .sw to C.e ->;
+}
+\&.PE
+.R
+.DE
+.ps
+.vs
+.KE
+.KS
+.PS
+define filter {box ht 0.25 rad 0.125}
+lineht = 0.25;
+Top: [
+ right;
+ box "\fBms\fR" "sources";
+ move;
+ box "\fBHTML\fR" "sources";
+ move;
+ box "\fBlinuxdoc-sgml\fP" "sources" wid 1.5;
+ move;
+ box "\fBTexinfo\fP" "sources";
+
+ line down from 1st box .s lineht;
+ A: line down;
+ line down from 2nd box .s; filter "\fBhtml2ms\fP";
+ B: line down;
+ line down from 3rd box .s; filter "\fBformat\fP";
+ C: line down;
+ line down from 4th box .s; filter "\fBtexi2roff\fP";
+ D: line down;
+]
+move down 1 from last [] .s;
+Anchor: box wid 1 ht 0.75 "\fBms\fR" "intermediate" "form";
+arrow from Top.A.end to Anchor.nw;
+arrow from Top.B.end to 1/3 of the way between Anchor.nw and Anchor.ne;
+arrow from Top.C.end to 2/3 of the way between Anchor.nw and Anchor.ne;
+arrow from Top.D.end to Anchor.ne
+{
+ # PostScript column
+ move to Anchor .sw;
+ line down left then down ->;
+ filter "\fBpic\fP";
+ arrow;
+ filter "\fBeqn\fP";
+ arrow;
+ filter "\fBtbl\fP";
+ arrow;
+ filter "\fBgroff\fP";
+ arrow;
+ box "PostScript";
+
+ # HTML column
+ move to Anchor .se;
+ line down right then down ->;
+ A: filter dotted "\fBpic2img\fP";
+ arrow;
+ B: filter dotted "\fBeqn2html\fP";
+ arrow;
+ C: filter dotted "\fBtbl2html\fP";
+ arrow;
+ filter "\fBms2html\fP";
+ arrow;
+ box "HTML";
+
+ # Nonexistence caption
+ box dashed wid 1 at B + (2,0) "These tools" "don't yet exist";
+ line chop 0 chop 0.1 dashed from last box .nw to A.e ->;
+ line chop 0 chop 0.1 dashed from last box .w to B.e ->;
+ line chop 0 chop 0.1 dashed from last box .sw to C.e ->;
+}
+.PE
+.CE "2: Hypothetical production flow for dual-mode publishing"
+.PP
+.KS
+.PS
+# a three-dimensional block
+#
+# tblock(<width>, <height>, <text>)
+
+define tblock { [
+ box ht $2 wid $1 \
+ color "gold" outlined "black" \
+ xslanted 0 yslanted 0 \
+ $3;
+ box ht .1 wid $1 \
+ color "yellow" outlined "black" \
+ xslanted .1 yslanted 0 \
+ with .sw at last box .nw;
+ box ht $2 wid .1 \
+ color "goldenrod" outlined "black" \
+ xslanted 0 yslanted .1 \
+ with .nw at 2nd last box .ne;
+] }
+
+tblock(1, .5, "Master" "1");
+move -.1
+tblock(.5, 1, "Slave");
+.PE
+.CE "3: Three-dimensional Boxes"
+.PP
+Here the source code for figure \n[H1]-3:
+.KS
+.DS
+.CW
+\&.PS
+# a three-dimensional block
+#
+# tblock(<width>, <height>, <text>)
+
+define tblock { [
+ box ht $2 wid $1 \e
+ color "gold" outlined "black" \e
+ xslanted 0 yslanted 0 \e
+ $3;
+ box ht .1 wid $1 \e
+ color "yellow" outlined "black" \e
+ xslanted .1 yslanted 0 \e
+ with .sw at last box .nw;
+ box ht $2 wid .1 \e
+ color "goldenrod" outlined "black" \e
+ xslanted 0 yslanted .1 \e
+ with .nw at 2nd last box .ne;
+] }
+
+tblock(1, .5, "Master" "1");
+move -.1
+tblock(.5, 1, "Slave");
+\&.PE
+.DE
+.ft R
+.KE
+.
+.
+.
+.NH 1
+PIC Reference
+.PP
+This is an annotated grammar of \fBpic\fP.
+.
+.NH 2
+Lexical Items
+.PP
+In general, \fBpic\fP is a free-format, token-oriented language that
+ignores whitespace outside strings.
+But certain lines and constructs are specially interpreted at the
+lexical level:
+.PP
+A comment begins with \fB#\fP and continues to \fB\en\fP (comments may
+also follow text in a line).
+A line beginning with a period or backslash may be interpreted as text
+to be passed through to the post-processor, depending on command-line
+options.
+An end-of-line backslash is interpreted as a request to continue the
+line; the backslash and following newline are ignored.
+.PP
+.RS
+Here are the grammar terminals:
+.IP \s[-1]INT\s[0]
+A positive integer.
+.IP \s[-1]NUMBER\s[0]
+A floating point numeric constant.
+May contain a decimal point or be expressed in scientific notation in
+the style of \fIprintf\/\fP(3)'s %e escape.
+A trailing `i' or `I' (indicating the unit `inch') is ignored.
+.IP \s[-1]TEXT\s[0]
+A string enclosed in double quotes.
+A double quote within \s[-1]TEXT\s[0] must be preceded by a backslash.
+Instead of \s[-1]TEXT\s[0] you can use
+.DS
+.CW
+sprintf ( TEXT [, <expr> ...] )
+.R
+.DE
+.IP
+except after the `until' and `last' keywords, and after all ordinal
+keywords (`th' and friends).
+.IP \s[-1]VARIABLE\s[0]
+A string starting with a character from the set [a-z], optionally
+followed by one or more characters of the set [a-zA-Z0-9_].
+(Values of variables are preserved across pictures.)
+.IP \s[-1]LABEL\s[0]
+A string starting with a character from the set [A-Z], optionally
+followed by one or more characters of the set [a-zA-Z0-9_].
+.IP \s[-1]COMMAND-LINE\s[0]
+A line starting with a command character (`.' in groff mode, `\e' in
+\*[tx] mode).
+.IP \s[-1]BALANCED-TEXT\s[0]
+A string either enclosed by `{' and `}' or with \fIX\fP and \fIX\fP,
+where \fIX\fP doesn't occur in the string.
+.IP \s[-1]BALANCED-BODY\s[0]
+Delimiters as in \s[-1]BALANCED-TEXT\s[0]; the body is interpreted as
+`\fB\[la]command\[ra].\|.\|.\fP'.
+.IP \s[-1]FILENAME\s[0]
+The name of a file.
+This has the same semantics as \s[-1]TEXT\s[0].
+.IP \s[-1]MACRONAME\s[0]
+Either \s[-1]VARIABLE\s[0] or \s[-1]LABEL\s[0].
+.RE
+.
+.NH 2
+Semi-Formal Grammar
+.PP
+Tokens not enclosed in \[la]\|\[ra] are literals, except:
+.IP 1.
+\fB\en\fP is a newline.
+.IP 2.
+Three dots is a suffix meaning `replace with 0 or more repetitions
+of the preceding element(s).
+.IP 3.
+An enclosure in square brackets has its usual meaning of `this clause is
+optional'.
+.IP 4.
+Square-bracket-enclosed portions within tokens are optional.
+Thus, `h\^[eigh]\^t' matches either `height' or `ht'.
+.LP
+If one of these special tokens has to be referred to literally, it is
+surrounded with single quotes.
+.PP
+The top-level \fBpic\fP object is a picture.
+.DS
+.CW
+<picture> ::=
+ .PS [NUMBER [NUMBER]]\en
+ <statement> ...
+ .PE \en
+.R
+.DE
+.PP
+The arguments, if present, represent the width and height of the picture,
+causing \fBpic\fR to attempt to scale it to the given dimensions in
+inches.
+In no case, however, the X and Y\~dimensions of the picture exceed the
+values of the style variables \fBmaxpswid\fP and \fBmaxpsheight\fP
+(which default to the normal 8.5\^i by 11\^i page size).
+.PP
+If the ending `.PE' is replaced by `.PF', the page vertical position is
+restored to its value at the time `.PS' was encountered.
+Another alternate form of invocation is `.PS\~<\s[-1]FILENAME\s[0]',
+which replaces the `.PS' line with a file to be interpreted by \fBpic\fR
+(but this feature is deprecated).
+.PP
+The `.PS', `.PE', and `.PF' macros to perform centering and scaling are
+normally supplied by the post-processor.
+.PP
+In the following, either `|' or a new line starts an alternative.
+.DS
+.CW
+<statement> ::=
+ <command> ;
+ <command> \en
+.R
+.DE
+.DS
+.CW
+<command> ::=
+ <primitive> [<attribute>]
+ LABEL : [;] <command>
+ LABEL : [;] <command> [<position>]
+ { <command> ... }
+ VARIABLE [:] = <any-expr>
+ figname = MACRONAME
+ up | down | left | right
+ COMMAND-LINE
+ command <print-arg> ...
+ print <print-arg> ...
+ sh BALANCED-TEXT
+ copy FILENAME
+ copy [FILENAME] thru MACRONAME [until TEXT]
+ copy [FILENAME] thru BALANCED-BODY [until TEXT]
+ for VARIABLE = <expr> to <expr> [by [*] <expr>] do BALANCED-BODY
+ if <any-expr> then BALANCED-BODY [else BALANCED-BODY]
+ reset [VARIABLE [[,] VARIABLE ...]]
+.R
+.DE
+.DS
+.CW
+<print-arg> ::=
+ TEXT
+ <expr>
+ <position>
+.R
+.DE
+.PP
+The current position and direction are saved on entry to a
+ `{\~.\|.\|.\~}' construction and restored on exit from it.
+.PP
+Note that in `if' constructions, newlines can only occur in
+\s[-1]BALANCED-BODY\s[0].
+This means that
+.DS
+.CW
+if
+{ ... }
+else
+{ ... }
+.R
+.DE
+.PP
+fails.
+You have to use the braces on the same line as the keywords:
+.DS
+.CW
+if {
+\&...
+} else {
+\&...
+}
+.R
+.DE
+.PP
+This restriction doesn't hold for the body after the `do' in a `for'
+construction.
+.PP
+At the beginning of each picture, `figname' is reset to the vbox name
+`graph'; this command has only a meaning in \*[tx] mode.
+While the grammar rules allow digits and the underscore in the value of
+`figname', \*[tx] normally accepts uppercase and lowercase letters only
+as box names (you have to use `\ecsname' if you really need to
+circumvent this limitation).
+.DS
+.CW
+<any-expr> ::=
+ <expr>
+ <text-expr>
+ <any-expr> <logical-op> <any-expr>
+ ! <any-expr>
+.R
+.DE
+.DS
+.CW
+<logical-op> ::=
+ == | != | && | '||'
+.R
+.DE
+.DS
+.CW
+<text-expr> ::=
+ TEXT == TEXT
+ TEXT != TEXT
+.R
+.DE
+.PP
+Logical operators are handled specially by \fBpic\fP since they can
+deal with text strings also.
+\fBpic\fP uses \%\fIstrcmp\/\fP(3) to test for equality of strings; an
+empty string is considered as `false' for `&&' and `|\||'.
+.DS
+.CW
+<primitive> ::=
+ box \fR# closed object \[em] rectangle\fP
+ circle \fR# closed object \[em] circle\fP
+ ellipse \fR# closed object \[em] ellipse\fP
+ arc \fR# open object \[em] quarter-circle\fP
+ line \fR# open object \[em] line\fP
+ arrow \fR# open object \[em] line with arrowhead\fP
+ spline \fR# open object \[em] spline curve\fP
+ move
+ TEXT TEXT ... \fR# text within invisible box\fP
+ plot <expr> TEXT \fR# formatted text\fP
+ '[' <command> ... ']'
+.R
+.DE
+.PP
+Drawn objects within `[\~.\|.\|.\~]' are treated as a single composite
+object with a rectangular shape (that of the bounding box of all the
+elements).
+Variable and label assignments within a block are local to the block.
+Current direction of motion is restored to the value at start of block
+upon exit.
+Position is \fInot\fR restored (unlike `{\~}');
+instead, the current position becomes the exit position for the current
+direction on the block's bounding box.
+.DS
+.CW
+<attribute> ::=
+ h[eigh]t <expr> \fR# set height of closed figure\fP
+ wid[th] <expr> \fR# set width of closed figure\fP
+ rad[ius] <expr> \fR# set radius of circle/arc\fP
+ diam[eter] <expr> \fR# set diameter of circle/arc\fP
+ up [<expr>] \fR# move up\fP
+ down [<expr>] \fR# move down\fP
+ left [<expr>] \fR# move left\fP
+ right [<expr>] \fR# move right\fP
+ from <position> \fR# set from position of open figure\fP
+ to <position> \fR# set to position of open figure\fP
+ at <position> \fR# set center of open figure\fP
+ with <path> \fR# fix corner/named point at specified location\fP
+ with <position> \fR# fix position of object at specified location\fP
+ by <expr-pair> \fR# set object's attachment point\fP
+ then \fR# sequential segment composition\fP
+ dotted [<expr>] \fR# set dotted line style\fP
+ dashed [<expr>] \fR# set dashed line style\fP
+ thick[ness] <expr> \fR# set thickness of lines\fP
+ chop [<expr>] \fR# chop end(s) of segment\fP
+ '->' | '<-' | '<->' \fR# decorate with arrows\fP
+ invis[ible] \fR# make primitive invisible\fP
+ solid \fR# set solid line style\fP
+ fill[ed] [<expr>] \fR# fill closed figure with optional density\fP
+ xscaled <expr> \fR# slant box into x direction\fP
+ yscaled <expr> \fR# slant box into y direction\fP
+ colo[u]r[ed] TEXT \fR# set fill and outline color for figure\fP
+ outline[d] TEXT \fR# set outline color for figure\fP
+ shaded TEXT \fR# set fill color for figure\fP
+ same \fR# copy size of previous object\fP
+ cw | ccw \fR# set orientation of curves\fP
+ ljust | rjust \fR# adjust text horizontally\fP
+ above | below \fR# adjust text vertically\fP
+ aligned \fR# align parallel to object\fP
+ TEXT TEXT ... \fR# text within object\fP
+ <expr> \fR# motion in the current direction\fR
+.R
+.DE
+.PP
+Missing attributes are supplied from defaults; inappropriate ones are
+silently ignored.
+For lines, splines, and arcs, height and width refer to arrowhead size.
+.PP
+The `at' primitive sets the center of the current object.
+The `with' attribute fixes the specified feature of the given object to
+a specified location.
+(Note that `with' is incorrectly described in the Kernighan paper.)
+.PP
+The `by' primitive is not documented in the tutorial portion of
+the Kernighan paper, and should probably be considered unreliable.
+.PP
+The primitive `arrow' is a synonym for `line\~->'.
+.PP
+Text is normally an attribute of some object, in which case successive
+strings are vertically stacked and centered on the object's center by
+default.
+Standalone text is treated as though placed in an invisible box.
+.PP
+A text item consists of a string or sprintf-expression, optionally
+followed by positioning information.
+Text (or strings specified with `sprintf') may contain font changes,
+size changes, and local motions, provided those changes are undone
+before the end of the current item.
+Text may also contain \e-escapes denoting special characters.
+The base font and specific set of escapes supported is implementation
+dependent, but supported escapes always include the following:
+.IP "\efR, \ef1" \w'\efR,\~\ef3'u+2n
+Set Roman style (the default)
+.IP "\efI, \ef2"
+Set Italic style
+.IP "\efB, \ef3"
+Set Bold style
+.IP \efP
+Revert to previous style; only works one level deep, does not stack.
+.PP
+Color names are dependent on the \gBpic\fR implementation, but in
+all modern versions color names recognized by the X\~window system are
+supported.
+.PP
+A position is an (x,y) coordinate pair.
+There are lots of different ways to specify positions:
+.DS
+.CW
+<position> ::=
+ <position-not-place>
+ <place>
+ ( <position> )
+.R
+.DE
+.DS
+.CW
+<position-not-place> ::=
+ <expr-pair>
+ <position> + <expr-pair>
+ <position> - <expr-pair>
+ ( <position> , <position> )
+ <expr> [of the way] between <position> and <position>
+ <expr> '<' <position> , <position> '>'
+.R
+.DE
+.DS
+.CW
+<expr-pair> ::=
+ <expr> , <expr>
+ ( expr-pair )
+.R
+.DE
+.DS
+.CW
+<place> ::=
+ <label>
+ <label> <corner>
+ <corner> [of] <label>
+ Here
+.R
+.DE
+.DS
+.CW
+<label> ::=
+ LABEL [. LABEL ...]
+ <nth-primitive>
+.R
+.DE
+.DS
+.CW
+<corner> ::=
+ .n | .e | .w | .s
+ .ne | .se | .nw | .sw
+ .c[enter] | .start | .end
+ .t[op] | .b[ot[tom]] | .l[eft] | .r[ight]
+ left | right | <top-of> | <bottom-of>
+ <north-of> | <south-of> | <east-of> | <west-of>
+ <center-of> | <start-of> | <end-of>
+ upper left | lower left | upper right | lower right
+.R
+.DE
+.DS
+.CW
+<\,\f(CIxxx\/\fP-of> ::=
+ \f(CIxxx\fP \fR# followed by `of'\fP
+.R
+.DE
+.DS
+.CW
+<nth-primitive> ::=
+ <ordinal> <object-type>
+ [<ordinal>] last <object-type>
+.R
+.DE
+.DS
+.CW
+<ordinal> ::=
+ INT th
+ INT st | INT nd | INT rd
+ ` <any-expr> 'th
+.R
+.DE
+.DS
+.CW
+<object-type> ::=
+ box
+ circle
+ ellipse
+ arc
+ line
+ arrow
+ spline
+ '[]'
+ TEXT
+.R
+.DE
+.PP
+As Kernighan notes, \[lq]since barbarisms like \fB1th\fP and \fB3th\fP are
+barbaric, synonyms like \fB1st\fP and \fB3rd\fP are accepted as well.\[rq]
+Objects of a given type are numbered from 1 upwards in order of
+declaration; the \fBlast\fP modifier counts backwards.
+.PP
+The \[lq]'th\[rq] form (which allows you to select a previous object with
+an expression, as opposed to a numeric literal) is not documented in DWB's
+\fIpic\/\fR(1).
+.PP
+The \[la]\,\fIxxx\/\fP-of\|\[ra] rule is special: The lexical parser checks whether
+\fIxxx\fP is followed by the token `of' without eliminating it so that
+the grammar parser can still see `of'.
+Valid examples of specifying a place with corner and label are thus
+.DS
+.CW
+A .n
+\&.n of A
+\&.n A
+north of A
+.R
+.DE
+.LP
+while
+.DS
+.CW
+north A
+A north
+.R
+.DE
+both cause a syntax error.
+(DWB \fBpic\fP also allows the weird form `A\~north\~of'.)
+.PP
+Here the special rules for the `with' keyword using a path:
+.DS
+.CW
+<path> ::=
+ <relative-path>
+ ( <relative-path> , <relative-path> )
+.R
+.DE
+.DS
+.CW
+<relative-path> ::=
+ <corner>
+ . LABEL [. LABEL ...] [<corner>]
+.R
+.DE
+.PP
+The following style variables control output:
+.TS H
+center tab(@), linesize(2);
+lb | lb | lb
+l | n | l.
+.sp 2p
+Style Variable@Default@What It Does
+.sp 2p
+_
+.sp 2p
+.TH
+boxht@0.5@Default height of a box
+boxwid@0.75@Default width of a box
+lineht@0.5@Default length of vertical line
+linewid@0.75@Default length of horizontal line
+arcrad @0.25@Default radius of an arc
+circlerad@0.25@Default radius of a circle
+ellipseht@0.5@Default height of an ellipse
+ellipsewid@0.75@Default width of an ellipse
+moveht@0.5@Default length of vertical move
+movewid@0.75@Default length of horizontal move
+textht@0@Default height of box enclosing a text object
+textwid@0@Default width of box enclosing a text object
+arrowht@0.1@Length of arrowhead along shaft
+arrowwid@0.05@Width of rear of arrowhead
+arrowhead@1@Enable/disable arrowhead filling
+dashwid@0.05@Interval for dashed lines
+maxpswid@8.5@Maximum width of picture
+maxpsht@11@Maximum height of picture
+scale@1@Unit scale factor
+fillval@0.5@Default fill value
+.sp 5p
+_
+.TE
+Any of these can be set by assignment, or reset using the \fBreset\fP
+statement.
+Style variables assigned within `[\~]' blocks are restored to their
+beginning-of-block value on exit; top-level assignments persist across
+pictures.
+Dimensions are divided by \fBscale\fR on output.
+.PP
+All \fBpic\fP expressions are evaluated in floating point; units
+are always inches (a trailing `i' or `I' is ignored).
+Expressions have the following simple grammar, with semantics very
+similar to C\~expressions:
+.DS
+.CW
+<expr> ::=
+ VARIABLE
+ NUMBER
+ <place> <place-attribute>
+ <expr> <op> <expr>
+ - <expr>
+ ( <any-expr> )
+ ! <expr>
+ <func1> ( <any-expr> )
+ <func2> ( <any-expr> , <any-expr> )
+ rand ( )
+.R
+.DE
+.DS
+.CW
+<place-attribute>
+ .x | .y | .h[eigh]t | .wid[th] | .rad
+.R
+.DE
+.DS
+.CW
+<op> ::=
+ + | - | * | / | % | ^ | '<' | '>' | '<=' | '>='
+.R
+.DE
+.DS
+.CW
+<func1> ::=
+ sin | cos | log | exp | sqrt | int | rand | srand
+.R
+.DE
+.DS
+.CW
+<func2> ::=
+ atan2 | max | min
+.R
+.DE
+.LP
+Both \fBexp\fP and \fBlog\fP are base 10; \fBint\fP does integer
+truncation; and \fBrand()\fP returns a random number in [0-1).
+.PP
+There are \fBdefine\fP and \fBundef\fR statements which are not part
+of the grammar (they behave as pre-processor macros to the language).
+These may be used to define pseudo-functions.
+.DS
+.CW
+\fBdefine\fP \fIname\fP \fB{\fP \fIreplacement-text\fP \fB}\fP
+.R
+.DE
+.LP
+This defines \fIname\fR as a macro to be replaced by the replacement
+text (not including the braces).
+The macro may be called as
+.DS
+.CW
+\fIname\/\fB(\,\fIarg1, arg2, .\|.\|., argn\fB\/)\fR
+.R
+.DE
+.LP
+The arguments (if any) are substituted for tokens $1, $2 \&.\|.\|.\& $n
+appearing in the replacement text.
+To undefine a macro, say \fBundef\fP \fIname\fR, specifying the name to
+be undefined.
+.\"%%POSTLUDE%%
+.
+.
+.NH 1
+History and Acknowledgements
+.PP
+Original \fBpic\fP was written to go with Joseph Ossanna's original
+\fItroff\/\fP(1) by Brian Kernighan, and later re-written by Kernighan
+with substantial enhancements (apparently as part of the evolution of
+\fItroff\/\fP(1) into \fIditroff\/\fP(1) to generate
+device-independent output).
+.PP
+The language had been inspired by some earlier graphics languages
+including \fBideal\fP and \fBgrap\fP.
+Kernighan credits Chris van Wyk (the designer of \fBideal\fP) with many
+of the ideas that went into
+\fBpic\fP.
+.PP
+.\" the original definitions of EQ and EN cause insertion of vertical
+.\" space which is not appropriate here
+.de EQ
+..
+.de EN
+..
+.EQ
+delim $$
+.EN
+The \fBpic\fP language was originally described by Brian Kernighan in
+Bell Labs Computing Science Technical Report #116 (you can obtain a
+PostScript copy of the revised version, [1], by sending a mail message to
+\fInetlib@research.att.com\fP with a body of `send 116 from
+research/cstr').
+There have been two revisions, in 1984 and 1991.
+.PP
+The document you are reading effectively subsumes Kernighan's
+description; it was written to fill in lacun\[ae] in the exposition and
+integrate in descriptions of the GNU \fIgpic\/\fP(1) and
+\fIpic2plot\/\fP(1) features.
+.PP
+The GNU \fBgpic\fR implementation was written by James Clark
+\[la]\,\fIjjc@jclark.com\/\fP\[ra].
+.PP
+The GNU \fBpic2plot\fR implementation is based on James Clark's parser
+code and maintained by Robert Maier, principal author of \fBplotutils\fP.
+.
+.
+.NH 1
+Bibliography
+.IP 1.
+Kernighan, B. W.
+\fBPIC \[em] A Graphics Language for Typesetting
+(Revised User Manual)\fP.
+Bell Labs Computing Science Technical Report #116, December 1991.
+.IP 2.
+Van Wyk, C. J.
+\fBA high-level language for specifying pictures\fP.
+\fIACM Transactions On Graphics\fP 1,2 (1982) 163-182.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/doc/txi-en.tex b/doc/txi-en.tex
new file mode 100644
index 0000000..640a355
--- /dev/null
+++ b/doc/txi-en.tex
@@ -0,0 +1,74 @@
+% $Id: txi-en.tex 5191 2013-02-23 00:11:18Z karl $
+% txi.en.tex -- English non-translations for texinfo.tex. This is read
+% when a source document says @documentlanguage en (which might happen
+% after another @documentlanguage). The actual values are the same as
+% the defaults.
+%
+% Copyright 1999, 2007, 2008 Free Software Foundation.
+%
+% This program 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.
+%
+% This program 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/>.
+
+\txisetlanguage{USenglish}{2}{3}
+
+\plainnonfrenchspacing
+
+\gdef\putwordAppendix{Appendix}
+\gdef\putwordChapter{Chapter}
+\gdef\putworderror{error}
+\gdef\putwordfile{file}
+\gdef\putwordin{in}
+\gdef\putwordIndexIsEmpty{(Index is empty)}
+\gdef\putwordIndexNonexistent{(Index is nonexistent)}
+\gdef\putwordInfo{Info}
+\gdef\putwordInstanceVariableof{Instance Variable of}
+\gdef\putwordMethodon{Method on}
+\gdef\putwordNoTitle{No Title}
+\gdef\putwordof{of}
+\gdef\putwordon{on}
+\gdef\putwordpage{page}
+\gdef\putwordsection{section}
+\gdef\putwordSection{Section}
+\gdef\putwordsee{see}
+\gdef\putwordSee{See}
+\gdef\putwordShortTOC{Short Contents}
+\gdef\putwordTOC{Table of Contents}
+%
+\gdef\putwordMJan{January}
+\gdef\putwordMFeb{February}
+\gdef\putwordMMar{March}
+\gdef\putwordMApr{April}
+\gdef\putwordMMay{May}
+\gdef\putwordMJun{June}
+\gdef\putwordMJul{July}
+\gdef\putwordMAug{August}
+\gdef\putwordMSep{September}
+\gdef\putwordMOct{October}
+\gdef\putwordMNov{November}
+\gdef\putwordMDec{December}
+%
+\gdef\putwordDefmac{Macro}
+\gdef\putwordDefspec{Special Form}
+\gdef\putwordDefvar{Variable}
+\gdef\putwordDefopt{User Option}
+\gdef\putwordDeffunc{Function}
+
+% Produces Day Month Year style of output.
+\def\today{%
+ \number\day\space
+ \ifcase\month
+ \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+ \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+ \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+ \fi
+ \space\number\year}
diff --git a/doc/webpage.ms b/doc/webpage.ms
new file mode 100644
index 0000000..c5697d6
--- /dev/null
+++ b/doc/webpage.ms
@@ -0,0 +1,2580 @@
+.\" This file gives a small example how a web page could look like if
+.\" created with groff.
+.\"
+.\"
+.\" To make it work with other output devices also, we include
+.\" www.tmac directly.
+.\"
+.am pspic*error-hook
+. ab \\n[.F]:\\n[.c]: fatal error: PSPIC failed to include '\\$1'
+..
+.
+.nr PS 10
+.nr VS 12
+.if '\*[.T]'html' .nr LL 10i
+.if r ps4html .nr LL 10i
+.
+.mso www.tmac
+.
+.HEAD "<link rel=""stylesheet"" type=""text/css"" href=""groff.css"" >"
+.\" .HEAD "<link rel=""icon"" type=""image/png"" href=""http://www.gnu.org/graphics/gnu-mini.png"" >"
+.
+.ALN "#eeeeee" 30
+.
+.de blm-macro
+. nr tmp \\n[.i]
+. LP
+. in \\n[tmp]u
+..
+.blm blm-macro
+.
+.HX 1
+.
+.defcolor mydarkred rgb 0.65f 0.1f 0.2f
+.defcolor mydarkgreen rgb 0.1f 0.5f 0.2f
+.defcolor mydarkblue rgb 0.1f 0.2f 0.6f
+.
+.ds GNU \m[mydarkred]G\m[]\m[mydarkgreen]N\m[]\m[mydarkblue]U\m[]
+.
+.NHR
+.HTL
+.
+Home of Groff (GNU Troff).
+.
+.HTML-IMAGE-LEFT
+.PSPIC -L gnu.eps 2i 2i
+.ie r ps4html \{\
+. ll 10i
+. br
+. nop \v'-0.66i'\h'2.0i'\s[80]\*[GNU] Troff\s0
+. ll
+.\}
+.el \
+. nop \v'-0.66i'\h'2.0i'\s[60]\*[GNU] Troff\s0
+.HTML-IMAGE-END
+.
+.HR
+.
+.LNS
+.
+.DC T HIS mydarkred
+is the home page for groff (\c
+.URL http://\:www.gnu.org/ GNU
+Troff), which is a software typesetting package
+that reads plain text mixed with formatting commands
+and produces formatted output.
+.
+Output may be PostScript or PDF, html,
+or ASCII/UTF8 for display at the terminal.
+.
+Formatting commands may be either low-level typesetting requests
+(\[lq]primitives\[rq]) or macros from a supplied set.
+.
+Users may also write their own macros.
+.
+All three may be combined.
+
+Present on most Unix systems owing to its long association
+with Unix manuals (man pages),
+groff is capable of producing typographically sophisticated documents
+while consuming only minimal system resources.
+
+The source code of the currently released versions of groff is
+available at the
+.URL "http://\:ftp.gnu.org/\:gnu/\:groff/" "GNU host"
+and its mirrors;
+the current development version is available from a
+.URL "https://\:savannah.gnu.org/\:git/\:?group=groff" "git repository" .
+.
+The current version is 1.23.0 (March 2023).
+
+To view the git repository in your browser, use
+.URL "http://\:git.savannah.gnu.org/\:cgit/\:groff.git" \
+ "Savannah's cgit interface" .
+
+Additional contributions can be found
+.URL "http://\:groff.ffii.org/\:groff/\:contrib/" here .
+
+For a special version of groff on the Microsoft operating systems, see
+.URL "https://\:sf.net/\:projects/\:ezwinports/\:files/" \
+ "Groff for Windows"
+(version 1.21).
+
+Groff was originally written and maintained by James Clark; it
+is now maintained by the team at
+.MTO groff@\:gnu.org "" .
+.
+.HR
+.
+\s[-2]\f[I]This document was produced using
+.URL http://\:www.gnu.org/\:software/\:groff groff\~\n[.x].\n[.y].\n[.Y] .
+.br
+The image at the top has been contributed by Imogen Mulley,
+based on a similar picture found on the
+.URL http://\:www.gnu.org "GNU server" .
+.
+.
+.SH
+License
+.LP
+GNU troff is released under the
+.URL http://\:www.gnu.org/\:copyleft/\:gpl.html "GNU Copyright License" .
+The documentation is released under the
+.URL http://\:www.gnu.org/\:copyleft/\:fdl.html "Free Documentation License" .
+.
+.
+.SH
+README
+.LP
+This is the GNU groff document formatting system.
+The version number is given in the file VERSION.
+
+Included in this release are implementations of `troff', `pic', `eqn',
+`tbl', `grn', `refer', `\-man', `\-mdoc', `\-mom', and `\-ms' macros, and
+drivers for `PostScript', `PDF', `TeX DVI' format, `HP LaserJet\~4'
+printers, `Canon CaPSL' printers, `HTML' and `XHTML' formats (beta status),
+and typewriter-like devices.
+Also included is a modified version of the Berkeley `\-me' macros, the
+enhanced version `gxditview' of the X11 `xditview' previewer, and an
+implementation of the `\-mm' macros contributed by J\[:o]rgen H\[:a]gg.
+
+See the file `INSTALL' for installation instructions on how to install from
+a release.
+You require a C++ compiler.
+
+The file `INSTALL.REPO' contains supplementary instructions for building
+directly from a clone of the repository.
+
+The file `NEWS' describes recent user-visible changes to `groff'.
+
+`groff' is free software.
+See the file `COPYING' for copying permission.
+
+The file `PROBLEMS' describes various problems that have been encountered in
+compiling, installing, and running `groff'.
+
+The file `MORE.STUFF' contains information about add-on packages useful for
+`groff'.
+.
+.
+.SH
+Repository and FTP access
+.LP
+The most recent released version of `groff' is always available by
+.URL "ftp://\:ftp.gnu.org/\:gnu/\:groff" "anonymous ftp" .
+
+The current development version of `groff' is available from a
+.URL http://\:savannah.gnu.org/\:git/\:?group=groff "git repository" .
+
+To view the git repository in your browser, go to its
+.URL http://\:git.savannah.gnu.org/\:cgit/\:groff.git "browser interface" .
+.
+.
+.SH
+Groff dependencies
+.LP
+Depending on your requirements, you may need at least some of the
+following tools to build `groff' directly from its source:
+
+.in 2m
+.nf
+perl \[>=] v5.6.1 (see macro GROFF_PERL in file `m4/groff.m4')
+ghostscript
+the psutils package
+the netpbm package
+texinfo 5.0
+bison \[>=] 1.875b or byacc
+.fi
+.in
+
+Note that `texinfo' and `bison' or `byacc' are required only for building
+from repository sources (a checked-out working copy).
+They are not required for building from a stable release tarball.
+Also note that the version numbers stated are the minimum supported.
+No version of `texinfo' < 5.0 works, and the original release of `bison'
+1.875 is known not to work; you \fImay\fP find that `bison' releases < 1.875
+work, but in case of difficulty, please update to a later version
+\fIbefore\fP posting a bug report.
+For \fIall\fP sources, you need `ghostscript' for creation of either `PDF'
+or `HTML' output; the `netpbm' and `psutils' packages are required only for
+`HTML' output.
+If you don't intend to produce output in either of these formats, then
+these packages are unnecessary.
+
+Additionally, producing `PDF' output directly with the `gropdf' device needs
+a working installation of `perl'.
+The same is true for some other preprocessors like `chem'.
+
+The `groff' configure script searches for the X11 headers and libraries
+`Xaw' and `Xmu'.
+So the corresponding developer packages of your system must be installed,
+otherwise `groff' does not install `gxditview' and the `\-TX*' devices.
+In Debian, the developer packages are `libxaw7\-dev' and `libxmu\-dev'.
+.
+.
+.SH
+Bug reports
+.LP
+Please report bugs using the project's
+.URL https://\:savannah.gnu.org/\:projects/\:groff "bug tracker" .
+
+You may use the form in the file `BUG\-REPORT'; the idea of this is to
+make sure that FSF has all the information it needs to fix the bug.
+At the very least, read the `BUG\-REPORT' form and make sure that you supply
+all the information that it asks for.
+Even if you are not sure that something is a bug, report it:
+this enables us to determine whether it really is a bug.
+.
+.
+.SH
+Mailing lists
+.LP
+Three mailing lists are available:
+
+.ULS
+.LI
+.MTO bug\-groff@\:gnu.org
+for following bug reports;
+
+.LI
+.MTO groff@\:gnu.org
+for general discussion of groff; and
+
+.LI
+.MTO groff\-commit@\:gnu.org "" ,
+a read-only list showing commits to the git repository.
+.ULE
+
+To subscribe, send a mail to \[la]list\[ra]\-request@\[la]domain\[ra]
+(example:
+.MTO groff\-request@\:gnu.org
+for the `groff' list) with the word `subscribe' in either the
+subject or body of the e-mail (don't include the quotes).
+Alternatively, you may subscribe by visiting the web pages at
+
+.in 2m
+.nf
+.URL http://lists.gnu.org/mailman/listinfo/bug\-groff
+.URL http://lists.gnu.org/mailman/listinfo/groff
+.URL http://lists.gnu.org/mailman/listinfo/groff\-commit
+.fi
+.in
+
+Each of these web pages also provides a link to a browseable archive of
+postings to the corresponding mailing list.
+.
+.
+.SH
+NEWS VERSION 1.22.3
+.LP
+.SH 2
+gxditview
+
+.ULS
+.LI
+X11 resources for gxditview, which were previously installed in
+/usr/X11/lib/X11/app\-defaults no matter which `prefix' was set, are
+now installed in appresdir=$prefix/lib/X11/app\-defaults.
+If `appresdir' is not a standard X11 resource directory, the environment
+variable XFILESEARCHPATH should be set to this path.
+The standard default directories depends on the system `libXt'.
+Common directories include:
+
+.in 2m
+.nf
+/usr/lib/X11/app\-defaults
+/usr/share/X11/app\-defaults
+/etc/X11/app\-defaults
+.fi
+.in
+
+Note that if the option `\-\-with\-appresdir' is passed to `configure', the
+`prefix' will not be added to `appresdir'.
+.ULE
+.
+.
+.SH 2
+glilypond
+
+.ULS
+.LI
+This new preprocessor (contributed by Bernd Warken) allows embedding of code
+for
+.URL http://\:www.lilypond.org "GNU LilyPond" ,
+a music typesetter.
+The data gets automatically processed and embedded as EPS images.
+.ULE
+.
+.
+.SH 2
+gperl
+
+.ULS
+.LI
+Bernd Warken contributed a new preprocessor to handle Perl code that can be
+evaluated and then processed by groff.
+.ULE
+.
+.
+.SH 2
+gpinyin
+
+.ULS
+.LI
+Another preprocessor from Bernd Warken to pretty-print Pinyin syllables like
+`guo2wang2' as `gu\['o]w\['a]ng'.
+.ULE
+.
+.
+.SH 2
+pdfroff
+
+.ULS
+.LI
+The pdfroff utility script now activates its `\-\-no\-toc\-relocation'
+option by default, unless a request similar to:
+
+.in 2m
+.nf
+\&.if !\en[PHASE] .tm pdfroff\-option:set toc_relocation=enabled
+.fi
+.in
+
+is invoked during input file processing; (`.if !\en[PHASE] \&.\|.\|.\&'
+ensures that the effect of the `.tm' request is restricted to the
+document setup phase of processing, as pdfroff sets it to 1 or\~2 in the
+output phase, but leaves it unset in the setup phase).
+
+The bundled `spdf.tmac' macro package, which implicitly activates
+`\-mpdfmark' for `ms' macro users, ensures that TOC relocation is
+appropriately enabled, when the `.TC' macro is invoked.
+.ULE
+.
+.
+.SH 2
+macro packages
+
+.ULS
+.LI
+The \-mom macro package now has full support for eqn, pic, and tbl, as well
+as captioning and labelling of pdf images and preprocessor output.
+Lists of Figures, Equations, and Tables can now be autogenerated.
+PDF_IMAGE has a new FRAME option.
+
+.LI
+A French introduction to the \-me macro package has been added (file
+`meintro_fr.me').
+
+.LI
+In \-mdoc, command %C is now available, providing a city or place reference.
+.ULE
+.
+.
+.SH
+NEWS VERSION 1.22.2
+.LP
+.SH 2
+tbl
+
+.ULS
+.LI
+The character `#' can now be used as an eqn delimiter within tables.
+.ULE
+.
+.
+.SH 2
+eqn
+
+.ULS
+.LI
+A GNU extension
+
+.in 2m
+.nf
+.ft C
+delim on
+.ft P
+.fi
+.in
+
+has been added to reactivate delimiters which have been disabled with
+`delim off'.
+.ULE
+.
+.
+.SH
+NEWS VERSION 1.22.1
+.LP
+(There was no release 1.22.)
+.LP
+.SH 2
+groff
+
+.ULS
+.LI
+A new option `\-j' has been added to call the `chem' preprocessor.
+.ULE
+.
+.
+.SH 2
+tbl
+
+.ULS
+.LI
+Improved line numbering support.
+.ULE
+.
+.
+.SH 2
+macro packages
+
+.ULS
+.LI
+Support for the `refer' preprocessor has been added to the \-mm macro
+package.
+
+.LI
+In \-me, the `TH' macro was changed for compatibility with line number
+support in tables.
+
+`bl' now works inside of blocks.
+
+The behaviour of centered blocks has been improved.
+
+Line numbering support has been improved.
+
+.LI
+The \-mom macro package has reached version 2.0, focusing on PDF output
+with gropdf (using the new `pdfmom' wrapper script).
+See the file `version\-2.html' of the \-mom documentation for a list of the
+many changes.
+
+.LI
+Some generic Unicode fallback characters (mainly Roman numerals) have been
+added.
+.ULE
+.
+.
+.SH 2
+tbl
+
+.ULS
+.LI
+Added numbered line support in tables.
+.ULE
+.
+.
+.SH 2
+gropdf
+
+.ULS
+.LI
+A new driver for generating PDF output directly, contributed by
+.MTO deri@\:chuzzlewit.myzen.co.uk "Deri James" .
+
+Note that this driver is written in Perl; you need a working Perl
+installation to run this output device.
+.ULE
+.
+.
+.SH 2
+pdfmom
+
+.ULS
+.LI
+A new wrapper around groff that facilitates the production of PDF documents
+from files formatted with the \-mom macros.
+.ULE
+.
+.
+.SH
+NEWS VERSION 1.21
+.LP
+.SH 2
+troff
+
+.ULS
+.LI
+The new `lsm' request specifies a macro to be invoked when leading
+spaces in an input line are encountered (which are removed then).
+Number registers `lsn' and `lss' hold the number of removed leading
+spaces and the corresponding horizontal space, respectively.
+
+.LI
+There is a new warning category `file', enabled by default.
+The `mso' request emits warnings in this category when the requested
+macro file does not exist.
+
+.LI
+The new `class' request assigns a short name to a set of characters
+which can be referred to in the `cflags' request.
+This is especially useful to control line-breaking and hyphenation
+rules in CJK languages.
+
+.LI
+Three new values for the `cflags' request have been added, which are
+needed for proper CJK support.
+
+.in 2m
+128 prohibit before but allow break after character
+.br
+256 prohibit after but allow break before character
+.br
+512 allow break before and after character
+.in
+.ULE
+.
+.
+.SH 2
+tbl
+
+.ULS
+.LI
+A new global option `nowarn' suppresses warnings if tables are longer
+than the current line width.
+.ULE
+.
+.
+.SH 2
+afmtodit
+
+.ULS
+.LI
+New option `\-o' to specify the name of the output file.
+.ULE
+.
+.
+.SH 2
+macro packages
+
+.ULS
+.LI
+A new macro `%U' has been added to the mdoc package to indicate a URL
+reference within an \&.Rs/.Re environment.
+
+.LI
+Rudimentary support for the Japanese script has been added, most
+suitable for man page handling as output by grotty.
+The file `ja.tmac' contains the necessary setup to allow line breaks
+before and after CJK characters (with proper exceptions).
+Note, however, that no inter-character spacing is implemented yet \[en]
+this usually causes many warnings about bad line breaks.
+.ULE
+.
+.
+.SH
+NEWS VERSION 1.20.1
+.LP
+A packaging error made it necessary to publish this release.
+No user-visible changes.
+.
+.
+.SH
+NEWS VERSION 1.20
+.LP
+.SH 2
+groff
+
+.ULS
+.LI
+XHTML support has been added to grohtml and can be specified by
+\-Txhtml.
+This option also utilizes the MathML capability of
+eqn and combines the outputs of both in the final XHTML file.
+Users can also specify the `\-P\-V' option together with `\-Txhtml'
+in groff.
+This has the effect of creating an XHTML validator
+button at the bottom of each page.
+
+.LI
+Some options have been added to control a new preprocessor,
+`preconv' (see below): `\-k' activates it, `\-K' sets the input
+encoding, and `\-D' sets the default encoding.
+
+.LI
+A new environment variable `GROFF_ENCODING' sets the encoding
+of input files; it implies command option `\-k'.
+.ULE
+.
+.
+.SH 2
+troff
+
+.ULS
+.LI
+Two new requests `device' and `devicem' have been added which are
+equivalents to the \eX and \eY escapes, respectively.
+
+.LI
+A new read-only number register `.br' is available which is set to\~1
+if a macro is called as \&.foo and to\~0 if called as \&'foo.
+This allows reliable modification of requests.
+
+.in 2m
+.nf
+.ft C
+\&.als bp@orig bp
+\&.de bp
+\&.\& tm before bp
+\&.\& ie \e\en[.br] .bp@orig
+\&.\& el \[aq]bp@orig
+\&.\& tm after bp
+\&..
+.ft P
+.fi
+.in
+
+.LI
+A new request `fzoom' has been added to adjust the optical size of a
+font in relation to the others.
+The zoom factor is given in integer multiples of 1/1000th.
+In the following example, the CR font is magnified by 10% (the zoom
+factor is 1.1).
+
+.in 2m
+.nf
+.ft C
+\&.fam P
+\&.fzoom CR 1100
+\&.ps 12
+\&Palatino and \ef[CR]Courier\ef[]
+.ft P
+.fi
+.in
+
+The new number register `.zoom' holds the zoom value of the current font,
+in multiples of 1/1000th.
+
+.LI
+The `cflags' request has been extended with a new flag value 64, to be
+used in combination with values\~2 (break before character) and\~4 (break
+after character).
+If set, the hyphenation codes of the surrounding characters are ignored.
+
+.LI
+A new debugging request, `pev', has been added to print all of the current
+known environments to stderr.
+It first prints the state of the current environment, then iterates
+through all of the known environments, printing each except the one that
+is current.
+
+.LI
+A new escape `\e$^' has been added.
+It represents the parameters of a macro as if they were an argument to
+the `ds' request.
+This is used by `trace.tmac'.
+
+.LI
+A new read-only number register `.O' is available which returns the
+current suppression level as set by the `\eO' escape.
+
+.LI
+The space width emitted by the `\e|' and `\e^' escape sequences can be
+controlled on a per-font basis.
+If there is a glyph named `\e|' or `\e^', respectively (note the leading
+backslash), defined in the current font file, use this glyph's width
+instead of the default value.
+
+This behaviour is not new, but hasn't been documented before.
+.ULE
+.
+.
+.SH 2
+nroff
+
+.ULS
+.LI
+Two new command-line options `\-w' and `\-W' are accepted and passed to
+groff to enable and disable warning messages, respectively.
+.ULE
+.
+.
+.SH 2
+preconv
+
+.ULS
+.LI
+This is a new preprocessor to convert various input encodings to something
+groff understands (this is, ASCII and \e[uXXXX] entities, with `XXXX' a
+hexadecimal number with 4 to 6 digits, representing a Unicode input code).
+Normally, preconv should be invoked with options `\-k' and `\-K' of groff.
+See the preconv man page for details.
+.ULE
+.
+.
+.SH 2
+pic
+
+.ULS
+.LI
+int(x) now really behaves as documented: It truncates the non-integer part
+of\~x, this is, it rounds towards zero and not towards the next integer
+less than or equal to\~x.
+
+.LI
+Pic now supports up to 32 macro arguments (and up to 16 on EBCDIC
+platforms).
+
+.LI
+Heinz-J\[:u]rgen \[:O]rtel contributed code for two new keywords,
+`xslanted' and `yslanted', which can change the shape of boxes into
+arbitrary parallelograms.
+.ULE
+.
+.
+.SH 2
+tbl
+
+.ULS
+.LI
+Latest versions of DWB tbl introduced an `x' column specifier for a single
+column expanded to the line width.
+GNU tbl has now been extended to support even multiple `x' specifiers
+within a table.
+
+.LI
+To avoid collision with the new `x' specifier, a block formatting macro
+must now be selected with specifier letter `m'.
+.ULE
+.
+.
+.SH 2
+eqn
+
+.ULS
+.LI
+Eric S.\& Raymond has added a new device type to eqn, MathML.
+When \-TMathML is enabled, eqn now emits MathML formula markup rather than
+groff commands.
+The new groff \-Txhtml device uses this.
+.ULE
+.
+.
+.SH 2
+chem
+
+.ULS
+.LI
+The preprocessor `chem' was added.
+`chem' is a roff language to generate chemical structure diagrams.
+It generates `pic' output.
+.ULE
+.
+.
+.SH 2
+grops
+
+.ULS
+.LI
+The PS font definition files have been regenerated with newer AFM versions
+from Adobe's 35 core fonts as present in most Level\~2 PS printers.
+The changes are minor (most notably, the addition of the `Euro' glyph and an
+extended set of kerning values).
+
+For backwards compatibility, the old set of font definition files is still
+available; for details please read the man page of grops.
+.ULE
+.
+.
+.SH 2
+grotty
+
+.ULS
+.LI
+\eD'p.\|.\|.\&' is now supported if the polygon consists entirely of
+horizontal and vertical lines.
+.ULE
+.
+.
+.SH 2
+grohtml
+
+.ULS
+.LI
+XHTML support has been added.
+
+.LI
+New command-line option `\-V' (to be used in XHTML mode) to produce an
+XHTML validator button.
+
+.LI
+New command-line option `\-y' to produce a right-justified groff signature
+at the end of the document (in combination with option `\-V').
+.ULE
+.
+.
+.SH 2
+gxditview
+
+.ULS
+.LI
+Support for keyboard navigation has been improved.
+
+.LI
+Similar to other X11 applications, there are now two resource files,
+`GXditview' and `GXditview\-color'.
+.ULE
+.
+.
+.SH 2
+groffer
+
+.ULS
+.LI
+`groffer' version 1.* exists now in a shell and a Perl version.
+.ULE
+.
+.
+.SH 2
+afmtodit
+
+.ULS
+.LI
+New option `\-c' to output more font information as comments.
+
+.LI
+New option `\-k' to suppress output of kerning data.
+
+.LI
+New option `\-f NAME' to set the internal name of the groff font.
+.ULE
+.
+.
+.SH 2
+macro packages
+
+.ULS
+.LI
+Joachim Walsdorff contributed the `hdtbl' package for the generation of
+tables, using a syntax very similar to the HTML table model.
+For example, a table with two cells and two rows looks like this:
+
+.in 2m
+.nf
+.ft C
+\&.TBL cols=2
+\&.\& TR .TD 1*1 .TD 1*2
+\&.\& TR .TD 2*1 .TD 2*2
+\&.ETB
+.ft P
+.fi
+.in
+
+Here the same table using a more expanded syntax:
+
+
+.in 2m
+.nf
+.ft C
+\&.TBL cols=2
+\&.\& TR
+\&.\& TD 1*1
+\&.\& TD 1*2
+\&.\& TR
+\&.\& TD 2*1
+\&.\& TD 2*2
+\&.ETB
+.ft P
+.fi
+.in
+
+Tables can be nested; `hdtbl' works without a preprocessor so that the
+full capability of groff's macro engine is available.
+
+This package currently works with `\-Tps' only.
+
+.LI
+\-mandoc now supports multiple man pages (in either man or mdoc format).
+
+.LI
+Fabrice M\['e]nard contributed locales support.
+In particular, it is now possible to get French localization of the main
+macro packages (\-ms, \-mm, \-me, and \-mom, but not \-man and \-mdoc
+which are localized differently) by appending `\-mfr' to the list of macro
+packages.
+Example:
+
+.in 2m
+.ft C
+.nf
+groff \-ms \-mfr foo > foo.ps
+.fi
+.ft P
+.in
+
+Note that latin-9 input encoding is used for French (to support the `oe'
+ligature).
+
+.LI
+Swedish macro localization (with `\-msv') has been added.
+
+.LI
+German macro localization (with `\-mde' and `\-mden' for traditional and
+new orthography, respectively) has been added.
+
+.LI
+Czech macro localization (with `\-mcs') has been added.
+
+Note that latin-2 input encoding is used for Czech.
+
+.LI
+A new macro `Dx' has been added to the mdoc package which identifies the
+DragonFly OS.
+
+.LI
+If mdoc is used to print multiple man pages (together with the \-rcR=0
+command-line option), each man page now starts a new page.
+
+.LI
+\-mtrace has been considerably improved, now showing number and string
+register assignments, among other things.
+See the groff_trace man page for details.
+
+.LI
+The PSPIC macro now works with all devices (producing a hollow
+rectangle on devices which don't support inclusion of PS images) and
+is loaded in troffrc at start-up.
+
+.LI
+A new auxiliary macro package `62bit' has been added which provides some
+macros for adding, multiplying, and dividing signed 62-bit integers (mainly
+to handle normal groff number operations without risking overflow errors).
+
+.LI
+For \-ms, Eric S.\& Raymond contributed support for ancient Bell Labs
+localisms `.SC', `.UC', `.P1', and `.P2'.
+The latter three are enabled only after \&.SC is called.
+
+.LI
+A new string, `SN-STYLE', has been added to the ms macros, controlling
+the formatting of section numbers in headings defined by `.NH'.
+
+.LI
+The new macro package `ptx' provides a template definition for the `.xx'
+macro as needed by GNU ptx (for creating permuted indices).
+.ULE
+.
+.
+.SH
+NEWS VERSION 1.19.2
+.LP
+.SH 2
+troff
+
+.ULS
+.LI
+Analogously to the \&.ft and \ef pair, two new requests `gcolor' and
+`fcolor' (which pair with \em and \eM, respectively) have been added to
+set the glyph and background colours.
+
+.LI
+A new read-only, string-valued register `.sty' returns the name of the
+current style.
+
+.LI
+Two new conditional operators `F\~\[la]name\[ra]' and `S\~\[la]name\[ra]'
+have been added.
+`F' is true if a font \[la]name\[ra] exists.
+`S' is true if a style \[la]name\[ra] has been registered.
+
+.LI
+Cyrillic characters have been added to the `utf8' and `html' output
+devices.
+.ULE
+.
+.
+.SH 2
+pic
+
+.ULS
+.LI
+The `by' argument in a `for' loop can now be negative if it is additive.
+For the multiplicative case, it must be greater than zero.
+.ULE
+.
+.
+.SH 2
+eqn
+
+.ULS
+.LI
+The following keywords aren't new but haven't been documented previously:
+
+.in 2m
+.B undef
+.I name
+(to undefine a macro)
+.br
+.B
+copy
+.I file \[dq] \[dq]
+.R
+a synonym for `include')
+.br
+.B space
+.I n
+(to modify the vertical spacing before and after an equation)
+.in
+
+.LI
+The following macros aren't new but haven't been documented previously:
+
+.in 2m
+.B Alpha ,
+\&\.\.\.,
+.B Omega
+(the same as
+.B ALPHA ,
+\&\.\.\.,
+.B OMEGA )
+.br
+\fBldots\fP (three dots on the baseline)
+.br
+\fBdollar\fP (a dollar glyph)
+.in
+
+.LI
+The following keywords have been extended.
+Again, this isn't new but hasn't been documented previously:
+
+.in 2m
+.B col
+.I n
+.B {
+\&\.\.\.\&
+.B }
+.br
+.B lcol
+.I n
+.B {
+\&\.\.\.\&
+.B }
+.br
+.B rcol
+.I n
+.B {
+\&\.\.\.\&
+.B }
+.br
+.B ccol
+.I n
+.B {
+\&\.\.\.\&
+.B }
+.br
+.B pile
+.I n
+.B {
+\&\.\.\.\&
+.B }
+.br
+.B lpile
+.I n
+.B {
+\&\.\.\.\&
+.B }
+.br
+.B rpile
+.I n
+.B {
+\&\.\.\.\&
+.B }
+.br
+.B cpile
+.I n
+.B {
+\&\.\.\.\&
+.B }
+.br
+The above all set the vertical spacing between rows to\~\c
+.I n ).
+.ULE
+.
+.
+.SH 2
+grohtml
+
+.ULS
+.LI
+This device driver has been raised to beta stage; its set of tags should
+be stable now.
+
+.LI
+New command-line option `\-s' to set the base point size.
+
+.LI
+New command-line option `\-S' to set the split level while generating
+multiple files.
+.ULE
+.
+.
+.SH 2
+grotty
+
+.ULS
+.LI
+Experimental support for zero-width and double-width characters.
+.ULE
+.
+.
+.SH 2
+gxditview
+
+.ULS
+.LI
+On platforms which have the X\~Window System this program is now built and
+installed automatically.
+.ULE
+.
+.
+.SH 2
+xtotroff
+
+.ULS
+.LI
+This program to create font definition files for xditview isn't new but
+hasn't been installed previously.
+.ULE
+.
+.
+.SH 2
+groffer
+
+.ULS
+.LI
+A security problem (reported as CAN-2004-0969) has been fixed.
+.ULE
+.
+.
+.SH 2
+gdiffmk
+
+.ULS
+.LI
+A new script contributed by Mike Bianchi.
+It compares two groff, nroff, or troff documents and creates an output with
+added margin characters (using `.mc') to indicate the differences.
+.ULE
+.
+.
+.SH 2
+pdfroff
+
+.ULS
+.LI
+A new wrapper script contributed by Keith Marshall to easily create PDF
+documents with groff.
+.ULE
+.
+.
+.SH 2
+macro packages
+
+.ULS
+.LI
+ms.tmac
+
+.ULS
+.LI
+Support for fractional point sizes: A value for the `PS', `VS', `FPS',
+and `VPS' register larger than or equal to 1000 is always divided by 1000.
+For example, `.nr\~PS\~10250' sets the document's font size to 10.25 points.
+
+.LI
+The `Ds' and `De' macros provided in ms since groff version 1.19 have
+been removed; the equivalent `DS' and `DE' macros should be used instead.
+X11 documents which actually use `Ds' and `De' always load a
+specific macro file from the X11 distribution (`macros.t') which
+provides proper definitions for the two macros.
+
+.LI
+The following registers have been added for improving layout control:
+
+.IP PORPHANS
+Defines number of lines following `LP', `PP', `QP', `IP' or `XP' which
+must be kept together, before any automatic page break.
+
+.IP HORPHANS
+Sets number of lines of following paragraph which must be kept with a
+heading, defined by `NH' or `SH', before any automatic page break.
+
+.IP GROWPS
+Sets the first level of heading (set with `NH') which keeps the
+same point size as body text.
+
+.IP PSINCR
+Sets the point size increment for each level of heading (set with
+`NH'), below the threshold level set by `GROWPS'; e.g., if
+\en[PS]\~=\~10, \en[GROWPS]\~=\~3 and \en[PSINCR]\~=\~2.0p, then `.NH\~1'
+produces 14-point headings, `.NH\~2' produces 12-point,
+and all other levels
+remain at 10\~points (because \en[PS]\~=\~10).
+
+.LI
+The `SH' macro now accepts a numeric argument, to make heading size
+match that of `NH' with same argument value when the `GROWPS'/`PSINCR'
+feature is enabled.
+.ULE
+
+Please refer to the documentation of the ms package for other, minor
+improvements.
+
+.LI
+me.tmac
+
+The section type set with the `++' request is available in the `_M'
+register.
+This isn't new but hasn't been documented before.
+
+.LI
+www.tmac
+
+The `HR' macro no longer causes an empty line for non-HTML devices.
+
+A new macro `HEAD' has been added to directly add data to the
+<head>.\|.\|.</head> block.
+
+New macros `OLS' and `OLE' to start and end an ordered list.
+
+New macros `DLS' and `DLE' to start and end a definition list.
+.ULE
+.
+.
+.SH 2
+pdfmark
+
+.ULS
+.LI
+A new macro package contributed by Keith Marshall which implements PDF
+marks.
+This is in alpha stage currently.
+.ULE
+.
+.
+.SH 2
+miscellaneous
+
+.ULS
+.LI
+Two new keywords to the DESC file have been added which are needed for
+grohtml: `image_generator' and `unscaled_charwidths'.
+The former gives the name of the program which creates PNG images,
+and the latter makes troff always use unscaled character widths.
+.ULE
+.
+.
+.SH
+NEWS VERSION 1.19.1
+.LP
+.SH 2
+groff
+
+.ULS
+.LI
+The argument of the command-line option `\-I' is now also passed to troff
+and grops, specifying a directory to search for files on the command line,
+files named in `so' and `psbb' requests, and files named in \eX'ps:\~file'
+and \eX'ps:\~import' escapes.
+
+.LI
+If option `\-V' is used more than once, the commands are both printed
+on standard error and run.
+.ULE
+.
+.
+.SH 2
+troff
+
+.ULS
+.LI
+Two new read-only, string-valued registers `.m' and `.M' return the
+name of the current drawing and background color, respectively.
+
+.LI
+New read-only register `.U' which is set to\~1 if in unsafe mode and
+0\~otherwise.
+
+.LI
+An input encoding file for \%latin-5 (a.k.a.\& ISO \%8859-9) has been
+added.
+Example use:
+
+.in 2m
+.ft C
+groff \-Tdvi \-mlatin5 my_file > my_file.dvi
+.ft R
+.in
+
+Note that some output devices don't support all glyphs of this encoding.
+
+.LI
+If the `return' request is called with an argument, it exits twice,
+namely the current macro and the macro one level higher.
+This is used to define a wrapper macro for `return' in trace.tmac.
+
+.LI
+For completeness, two new requests have been added: `dei1' and `ami1'.
+They are equivalent to `dei' and `ami', respectively, but the macros
+are executed with compatibility mode off (similar to `de1' and `am1').
+
+.LI
+New command-line option `\-I' to specify a directory for files (both
+those on the command line and those named in `psbb' requests).
+This is also handled by the groff wrapper program.
+
+.LI
+Since version 1.19 you can say `.vs\~0'.
+Older versions emit a warning and convert this to `.vs\~\en[.V]'.
+
+This hasn't been documented properly.
+Note that `.vs\~0' isn't saved in a diversion since it doesn't result
+in vertical motion.
+.ULE
+.
+.
+.SH 2
+pic
+
+.ULS
+.LI
+Dashed and dotted ellipses have been implemented.
+.ULE
+.
+.
+.SH 2
+tbl
+
+.ULS
+.LI
+New key character `x' to make tbl call a user-defined macro on a table
+cell.
+Patch by
+.MTO hj.oertel@\:surfeu.de "Heinz-J\[:u]rgen Oertel" .
+.ULE
+.
+.
+.SH 2
+grap2graph
+
+.ULS
+.LI
+A new script contributed by
+.MTO esr@\:thyrsus.com "Eric S.\& Raymond" .
+It converts a grap diagram into a cropped image.
+Since it uses gs and the PNM library, virtually all graphics formats
+are available for output.
+[Note that the grap program itself isn't part of the groff package;
+see the file MORE.STUFF how to obtain grap.]
+.ULE
+.
+.
+.SH 2
+grohtml
+
+.ULS
+.LI
+New option `\-j' to emit output split into multiple files.
+.ULE
+.
+.
+.SH 2
+grops
+
+.ULS
+.LI
+New command-line option `\-I' to specify a directory to search for files
+on the command line and files named in \eX'ps:\~import' and \eX'ps:\~file'
+escapes.
+This is also handled by the groff wrapper program.
+
+.LI
+The default value for the `broken' keyword in the DESC file is now\~0.
+.ULE
+.
+.
+.SH 2
+grolj4
+
+.ULS
+.LI
+A new man page
+.I lj4_font (5)
+documents how fonts are accessed with
+grolj4.
+
+.LI
+The built-in fonts for LJ4 and newer PCL\~5 devices have been completely
+revised, mainly to access as much glyphs as possible.
+The provided metric files should be compatible with recent PCL\~5 printers
+also.
+Additionally, font description files have been added for the Arial and
+Times New Roman family, the MS symbol, and Wingdings fonts.
+.ULE
+.
+.
+.SH 2
+afmtodit
+
+.ULS
+.LI
+New option `\-x' to prevent use of built-in Adobe Glyph List.
+.ULE
+.
+.
+.SH 2
+hpftodit
+
+.ULS
+.LI
+Completely revised to handle HP TrueType metric files also.
+See the hpftodit manual page for more details.
+.ULE
+.
+.
+.SH 2
+groffer
+
+.ULS
+.LI
+This version is a rewrite of groffer in many parts, but it is kept in
+the old single script style.
+
+.ULS
+.LI
+New options: \-\-text (\-\-mode\~text), \-\-tty\-viewer, \-\-X (\-\-mode\~X),
+\-\-X\-viewer, \-\-html (\-\-mode\~html), \-\-html\-view, \-\-apropos\-data,
+\-\-apropos\-devel, \-\-apropos\-progs.
+
+.LI
+New documentation file README_SH.
+
+.LI
+Enhancement of the configuration files and the `apropos' handling.
+.ULE
+.ULE
+.
+.
+.SH 2
+macro packages
+
+.ULS
+.LI
+www.tmac: New macro `JOBNAME' to split output into multiple files.
+
+.LI
+In mdoc, multiple calls to `.Lb' are now supported in the LIBRARY
+section.
+.ULE
+.
+.
+.SH
+NEWS VERSION 1.19
+.LP
+.SH 2
+troff
+
+.ULS
+.LI
+Input encoding files for \%latin-9 (a.k.a.\& \%latin-0 and ISO \%8859-15)
+and \%latin-2 (ISO \%8859-2) have been added.
+Example use:
+
+.in 2m
+.ft C
+groff \-Tdvi \-mlatin9 my_file > my_file.dvi
+.ft P
+.in
+
+You still need proper fonts with the necessary glyphs.
+Out of the box, the groff package supports \%latin-9 only for \-Tps,
+\-Tdvi, and \-Tutf8, and \%latin-2 only for \-Tdvi and \-Tutf8.
+
+.LI
+Composite glyphs are now supported.
+To do this, a subset of the Adobe Glyph List (AGL) Algorithm as described in
+.URL http://\:partners.adobe.com/\:public/\:developer/\:opentype/\:index_glyph.html \
+ http://\:partners.adobe.com/\:public/\:developer/\:opentype/\:index_glyph.html
+is used to construct glyph names based on Unicode character codes.
+The existing groff glyph names are frozen; no glyph names which can't be
+constructed algorithmically will be added in the future.
+
+The \e[.\|.\|.\&] escape sequence has been extended to specify multiple
+glyph components.
+Example:
+
+.in 2m
+.ft C
+\e[A ho]
+.ft R
+.in
+
+this accesses a glyph with the name `u0041_0328'.
+
+Some groff glyphs which are useful as composites map to `wrong' Unicode
+code points.
+For example, `ho' maps to U+02DB which is a spacing ogonek, whereas a
+non-spacing ogonek U+0328 is needed for composite glyphs.
+The new request
+
+.in 2m
+.ft C
+\&.composite from to
+.ft R
+.in
+
+changes the mapping while a composite glyph name is constructed.
+To make \e[A\~ho] yield the expected result,
+
+.in 2m
+.ft C
+\&.composite ho u0328
+.ft R
+.in
+
+is needed.
+[The new file `composite.tmac' loaded at start-up already
+contains proper calls to `.composite'.]
+
+Please refer to the info pages of groff and to the groff_char man page
+for more details.
+
+.LI
+A new request `fschar' has been added to define font-specific fallback
+characters.
+They are searched after the list of fonts declared with the
+`fspecial' request but before the list of fonts declared with `special'.
+
+.LI
+Fallback characters defined with `fschar' can be removed with the
+new `rfschar' request.
+
+.LI
+A new request `schar' has been added to define global fallback
+characters.
+They are searched after the list of fonts declared with the
+`special' request but before the already mounted special fonts.
+
+.LI
+In groff versions 1.18 and 1.18.1, \eD'f\~.\|.\|.\&' didn't move the
+current point horizontally.
+Despite of being silly, this change has been reverted for backwards
+compatibility.
+Consequently, the intermediate output command `Df' also moves the
+position horizontally again.
+
+\eD'f\~.\|.\|.\&' is deprecated since it depends on the horizontal
+motion quanum of the output device (given with the `hor' parameter in
+the DESC file).
+Use the new \eD'Fg\~.\|.\|.\&' escape instead.
+
+.LI
+For orthogonality, new \eD subcommands to change the fill color are
+available:
+
+.in 2m
+.ft C
+\eD\[aq]Fr \&.\|.\|.\&\[aq] \f[R](rgb)\f[]
+.br
+\eD\[aq]Fc \&.\|.\|.\&\[aq] \f[R](cmy)\f[]
+.br
+\eD\[aq]Fg \&.\|.\|.\&\[aq] \f[R](gray)\f[]
+.br
+\eD\[aq]Fk \&.\|.\|.\&\[aq] \f[R](cmyk)\f[]
+.br
+\eD\[aq]Fd\[aq] \f[R](default color)\f[]
+.ft R
+.in
+
+The arguments are the same as with the `defcolor' request.
+The current position is \f[I]not\f[] changed.
+
+.LI
+The values set with \eH and \eS are now available in number registers
+\en[.height] and \en[.slant], respectively.
+
+.LI
+The `.pe' number register isn't new but hasn't been documented before.
+It is set to\~1 during a page ejection caused by the `bp' request.
+
+.LI
+The new glyph symbol `tno' is a textual variant of `no'.
+
+.LI
+The new glyph symbol `+e' represents U+03F5, GREEK LUNATE EPSILON SYMBOL.
+(Well, it is not really new since it has been previously supported by
+grolj4.)
+The mapping for both the dvi and lj4 symbol font has been
+changed accordingly so that Greek small letter epsilon, `*e', has the
+same glyph shape as with other devices.
+.ULE
+.
+.
+.SH 2
+grops
+
+.ULS
+.LI
+The font `freeeuro.pfa' has been added to provide various default glyph
+shapes for `eu' and `Eu'.
+
+.LI
+It is now possible to access all glyphs in a Type\~1 font, not only 256
+(provided the font file created by afmtodit has proper entries).
+grops constructs additional encoding vectors on the fly if necessary.
+
+.LI
+The paper size is now emitted via the %%DocumentMedia and PageSize
+mechanisms so that it is no longer required to tell `gv' or `ps2pdf'
+about the paper size.
+The `broken' flag value\~16 omits this feature
+(the used PostScript command `setpagedevice' is a LanguageLevel\~2
+extension).
+Patch by
+.MTO egil@\:kvaleberg.no "Egil Kvaleberg" .
+
+.LI
+Non-slanted PostScript metrics have been changed again; they no longer
+contain negative left italic correction values.
+This assures correct spacing with eqn.
+.ULE
+.
+.
+.SH 2
+grodvi
+
+.ULS
+.LI
+The font cmtex10 has been added as the special font `SC' to the DVI fonts.
+It is used as a font-specific special font for CW and CWI.
+
+.LI
+New options \-l and \-p to set landscape orientation and the paper size.
+grodvi now emits a `papersize' special which is understood by DVI drivers
+like dvips.
+
+Consequently, the DESC file should contain a `papersize' keyword.
+
+.LI
+The glyph shapes for \e[*f] and \e[*e] have been exchanged with \e[+f] and
+\e[+e], respectively, to be in sync with all other devices.
+
+.LI
+Glyphs \e[HE] and \e[DI] have been replaced with \e[u2662] and \e[u2661],
+respectively, since the former two glyphs have a black (filled) shape
+which grodvi doesn't provide by default (it never has actually).
+.ULE
+.
+.
+.SH 2
+grolj4
+
+.ULS
+.LI
+The glyphs \e[*e] and \e[+e] have been exchanged to be in sync with
+all other devices.
+
+.LI
+The glyph \e[\[ti]=] is now called \e[|=].
+Similar to other devices,
+\e[\[ti]=] is now another name for glyph \e[\[ti]\[ti]].
+.ULE
+.
+.
+.SH 2
+grotty
+
+.ULS
+.LI
+New option `\-r'.
+It is similar to the \-i option except it tells grotty to
+use the `reverse video' attribute to render italic fonts.
+.ULE
+.
+.
+.SH 2
+pic
+
+.ULS
+.LI
+New command `figname' to set the name of a picture's output box in TeX
+mode.
+.ULE
+.
+.
+.SH 2
+refer
+
+.ULS
+.LI
+The environment variable `REFER' to override the name of the default
+database isn't new but hasn't been documented before.
+.ULE
+.
+.
+.SH 2
+soelim
+
+.ULS
+.LI
+New option `\-r' to avoid emission of `.lf' lines.
+
+.LI
+New option `\-t' to emit TeX comment lines (giving current file and the
+line number) instead of `.lf' lines.
+.ULE
+.
+.
+.SH 2
+afmtodit
+
+.ULS
+.LI
+Unencoded glyphs in an AFM file are output also (since grops can now emit
+multiple encoding vectors for a single font).
+
+.LI
+New option `\-m' to prevent negative left italic correction values.
+
+.LI
+The mapping and encoding file together with file `DESC' are now searched
+in the default font directory also.
+Please refer to the man page of afmtodit for more details.
+.ULE
+.
+.
+.SH 2
+macro packages
+
+.ULS
+.LI
+.MTO kollar@\:alltel.net "Larry Kollar"
+and others made the man macros more customizable.
+
+.ULS
+.LI
+New command-line options \-rFT, \-rIN, and \-rSN to set the vertical
+location of the footer line, the body text indentation, and the
+sub-subheading indentation.
+
+.LI
+New command-line option \-rHY (similar to the ms macros) to control
+hyphenation.
+
+.LI
+New macros `.PT' and `.BT' to print the header and footer strings.
+They can be replaced with a customized version in `man.local'.
+
+.LI
+The string `HF' now holds the typeface to print headings and
+subheadings.
+
+.LI
+Similar to the ms macros, the LT register now defaults to LL if not
+explicitly specified on the command line.
+.ULE
+
+.LI
+troff's start-up file `troffrc' now includes `papersize.tmac' to set
+the paper size with the command-line option `\-dpaper=<size>'.
+
+Possible values for `<size>' are the same as the predefined `papersize'
+values in the DESC file (only lowercase; see the groff_font man page)
+except \%a7\[en]d7.
+An appended `l' (ell) character denotes landscape orientation.
+Examples: `a4l', `c3l', `letterl'.
+
+Most output drivers need additional command-line switches `\-p' and
+`\-l' to override the default paper length and orientation as set in
+the driver specific DESC file.
+
+For example, use the following for PS output on A4 paper in landscape
+orientation:
+
+.in 2m
+.ft C
+groff \-Tps \-dpaper=a4l \-P\-pa4 \-P\-l \-ms foo.ms > foo.ps
+.ft R
+.in
+.ULE
+.
+.
+.SH
+NEWS VERSION 1.18.1
+.LP
+.SH 2
+troff
+
+.ULS
+.LI
+The non-slanted PostScript font definition files have been regenerated to
+include left and right italic correction values.
+Applying those to a glyph (this is, prepending the glyph with `\e,' and
+appending `\e/' to the glyph) sets the glyph width to the real value given
+by the horizontal bounding box values.
+Without those escapes, the advance width for the particular glyph is used
+(which can differ considerably).
+
+Most users will neither need this feature nor notice a difference in
+existing documents (provided \e, and \e/ is used as advertised, namely for
+italic fonts only); its main goal is to improve image generation with
+grohtml.
+
+This is an experimental change, and feedback is welcome.
+.ULE
+.
+.SH 2
+tbl
+
+.ULS
+.LI
+Added global option `nospaces' to ignore leading and trailing spaces in data
+items.
+.ULE
+.
+.SH 2
+grolbp
+
+.ULS
+.LI
+The option \-w (\-\-linewidth) has been added (similar to other device
+drivers) to set the default line width.
+.ULE
+.
+.SH 2
+grn
+
+.ULS
+.LI
+Support for b-spline and Bezier curves has been added.
+.ULE
+.
+.SH 2
+groffer
+
+.ULS
+.LI
+New option \-\-shell to select the shell under which groffer shall run.
+.ULE
+.
+.SH 2
+Macro Packages
+
+.ULS
+.LI
+The string `Am' (producing an ampersand) has been added to mdoc for
+compatibility with NetBSD.
+
+.LI
+`.IX' is now deprecated for mom; you should use `.IQ' (Indent Quit)
+instead.
+
+.LI
+In mom, new inlines `FWD', `BCK', `UP', and `DOWN' deal with horizontal
+and vertical movements; please refer to contrib/mom/NEWS for more
+details.
+
+.LI
+New macro ENDNOTES_HDRFTR_CENTER for mom to better control headers.
+.ULE
+.
+.SH 2
+Miscellaneous
+
+.ULS
+.LI
+The `papersize' keyword in the DESC file now accepts multiple arguments.
+It is scanned from left to the right, and the first valid argument is used.
+This makes it possible to provide a fallback paper size.
+
+Example:
+
+.in 2m
+.ft C
+papersize /etc/papersize a4
+.ft P
+.in
+
+.LI
+A local font directory has been prepended to the default font path; it
+defaults to /usr/local/share/groff/site\-font.
+Similar to the normal font searching process, files must be placed into
+a \%dev\c
+.I XXX
+subdirectory, e.g.,
+
+.in 2m
+.ft C
+/usr/local/share/groff/site\-font/devps/FOO
+.ft P
+.in
+
+for a PostScript font definition file FOO.
+.ULE
+.
+.
+.SH
+NEWS VERSION 1.18
+.LP
+This section describes recent user-visible changes in groff.
+Bug fixes are not described.
+There are more details in the man pages.
+
+.ad c
+\s[+5]\m[red]\
+Please read the changes below regarding
+.ie '\*[.T]'html' \
+. URL #grotty grotty ,
+.el \
+. nop grotty,
+groff's tty frontend.\
+\m[]\s[0]
+.br
+.ad n
+.
+.SH 2
+Troff
+
+.ULS
+.LI
+Color support has been added to troff and pic (and to the device drivers
+grops, grodvi, grotty, and grohtml \[en] other preprocessors and drivers will
+follow).
+A new function `defcolor' defines colors; the escape sequence `\em' sets the
+drawing color, the escape sequence `\eM' specifies the background color for
+closed objects created with \eD'.\|.\|.\&' commands.
+`\em[]' and `\eM[]' switch back to the previous color.
+`\em' and `\eM' correspond to the new troff output command sets starting
+with `m' and `DF'.
+The device-specific default color is called `default' and can't be
+redefined.
+
+Use the `color' request to toggle the usage of colors (default is on); the
+read-only register `.color' is\~0 if colors are not active, and non-zero
+otherwise.
+
+The old `Df' output command is mapped onto `DFg'; all color output
+commands don't change the current font position (consequently, `Df'
+doesn't either).
+
+Outputting color can be disabled in troff and groff with the option\~\-c
+(it is always disabled in compatibility mode).
+See the section on grotty for the
+.ie '\*[.T]'html' \
+. URL #GROFF_NO_SGR GROFF_NO_SGR
+.el \
+. nop GROFF_NO_SGR
+environment variable also.
+
+For defining color components as fractions between 0 and\~1, a new
+scaling unit `f' has been defined: 1f\~=\~65536u.
+For testing whether a color is defined (with \&.if and \&.ie), a new
+conditional operator `m' is available.
+
+More details can be found in the groff_diff.7 manual page and in
+groff.texinfo.
+
+.LI
+Similar to \em and \eM, \ef[] switches back to the previous font.
+\efP (and \ef[P]) is still valid for backwards compatibility.
+
+.LI
+The new escape \eF is the same as `.fam'; \eF[] switches back to previous
+family \[en] \eF[P] selects family `P'.
+
+.LI
+Two new glyph symbols are available: `eu' is the official Euro symbol;
+`Eu' is a font-specific glyph variant.
+
+.LI
+The new glyph symbols `t+\-', `tdi', and `tmu' are textual variants of
+`+\-', `di', and `mu', respectively.
+
+.LI
+Latin-1 character 181 (PS name `mu', Unicode name U+00B5 MICRO SIGN) has
+got the troff glyph name `mc'.
+
+.LI
+\-Tutf8 is now available on EBCDIC hosts.
+
+.LI
+Strings can take arguments, using this syntax: \e*[foo\~arg1\~arg2\~.\|.\|.].
+Example:
+
+.in 2m
+.nf
+.ft C
+\&.ds xxx This is a \e\e$1 test.
+\e*[xxx nice]
+.ft P
+.fi
+.in
+
+.LI
+It is now possible to have whitespace between the first and second dot (or
+the name of the ending macro) to end a macro definition.
+Example:
+
+.in 2m
+.nf
+.ft C
+\&.de !
+\&..
+\&.
+\&.de foo
+\&.\& nop Hello, I\[aq]m \[aq]foo\[aq].
+\&.\& nop I will now define \[aq]bar\[aq].
+\&.\& de bar !
+\&.\& nop Hello, I\[aq]m \[aq]bar\[aq].
+\&.\& !
+\&..
+.ft P
+.fi
+.in
+
+.LI
+`.fn' is a new string-valued register which returns the (internal) real
+font name; styles and families are properly concatenated.
+
+.LI
+Three new read/write registers `seconds', `minutes', and `hours' contain
+the current time, set at start-up of troff.
+Use the `af' request to control their output format.
+
+.LI
+The new request `fchar' can be used to provide fallback characters.
+It has the same syntax as the `char' request; the only difference is that
+a character defined with `.char' hides the glyph with the same name in the
+current font, whereas a character defined with `.fchar' is checked only if
+the particular glyph isn't found in the current font.
+This test happens before checking special fonts.
+
+.LI
+In analogy to the `tmc' request, `.writec' is the same as `.write' but
+doesn't emit a final newline.
+
+.LI
+The new request `itc' is a variant of `.it' for which a line interrupted
+with \ec counts as one input line.
+
+.LI
+Two new requests `ds1' and `as1' which are similar to `ds' and `as' but
+with compatibility mode disabled during expansion of strings defined by
+them.
+
+.LI
+The syntax of the `substring' request has been changed:
+The first character in a string now has index\~0, the last character
+has index\~\-1.
+Note that this is an incompatible change.
+
+.LI
+To emit strings directly to the intermediate output, a new `output'
+request has been added; it is similar to `\e!' used at the top level.
+
+.LI
+`.hpf' has been extended.
+It can now handle most TeX hyphenation pattern files without
+modification.
+To do that, the commands \epatterns, \ehyphenation, and \eendinput are
+recognized.
+Please refer to groff_diff.7 for more information.
+
+.LI
+`hpfcode' is a new request to provide an input encoding mapping for the
+`hpf' request.
+
+.LI
+The new request `hpfa' appends hyphenation patterns (`hpf' replaces
+already existing patterns).
+
+.LI
+A new request `ami' (append macro indirect) has been added.
+The first and second parameter of `ami' are taken from string registers
+rather than directly; this very special request is needed to make
+`trace.tmac' independent from the escape character (which might even
+be disabled).
+
+.LI
+The new request `sizes' is similar to the `sizes' command in DESC files.
+It expects the same syntax; the data must be on a single line, and the
+final `0' can be omitted.
+
+.LI
+`trin' (translate input) is a new request which is similar to `tr' with
+the exception that the `asciify' request uses the character code (if
+any) before the character translation.
+Example:
+
+.in 2m
+.nf
+.ft C
+\&.trin ax
+\&.di xxx
+a
+\&.br
+\&.di
+\&.xxx
+\&.trin aa
+\&.asciify xxx
+\&.xxx
+.ft P
+.fi
+.in
+
+The result is `x\~a'.
+Using `tr', the result would be `x\~x'.
+
+.LI
+The request `pvs' isn't new, but hasn't been documented before.
+It adds vertical space after a line has been output.
+This makes it an alternative to the `ls' request to produce
+double-spaced documents.
+The read-only register `.pvs' holds the current amount of the
+post-vertical line space.
+
+.LI
+For compatibility with plan 9's troff, multiple `pi' requests are
+supported:
+
+.in 2m
+.nf
+.ft C
+\&.pi foo
+\&.pi bar
+.ft P
+.fi
+.in
+
+is now equivalent to
+
+.in 2m
+.ft C
+\&.pi foo | bar
+.ft P
+.in
+
+.LI
+A new escape sequence `\eO' is available to disable and enable glyph
+output.
+Please see groff_diff.man and groff.texinfo for more details.
+
+.LI
+The escapes `\e%', `\e&', `\e)', and `\e:' no longer cause an error in \eX;
+they are ignored now.
+Additionally `\e\~' (space) and `\e\[ti]' are converted to single space
+characters.
+
+.LI
+The default tab distance in nroff mode is now 0.8i\~(inches) to be compatible
+with Unix troff.
+
+.LI
+Using the latin-1 input character 0xAD (soft hyphen) for the `shc'
+request was a bad idea.
+Instead, it is now translated to `\e%', and the default hyphenation
+character is again \e[hy].
+Note that the glyph \e[shc] is not useful for typographic purposes;
+it only exists to have glyph names for all latin-1 characters.
+.ULE
+.
+.SH 2
+Macro Packages
+
+.ULS
+.LI
+.MTO df191@\:ncf.ca "Peter Schaffter"
+has contributed a new major macro package called `mom', mainly for
+non-scientific writers, which takes care of many typographic issues.
+It comes with a complete reference (in HTML format) and some examples.
+`mom' has been designed to format documents for PostScript output only.
+
+.LI
+Two macros `AT' (AT&T) and `UC' (Univ.\& of California) have been added to
+the man macros for compatibility with older BSD releases.
+
+.LI
+Both the man and mdoc macro packages now use the LL and LT registers for
+setting the line and title length, respectively (similar to those
+registers in the ms macro package).
+If not set on the command line or in a macro file loaded before the macro
+package itself, they default to 78n\~(ens) in nroff mode and
+6.5i\~(inches) in troff mode.
+
+.LI
+The `\-xwidth' specifier in the mdoc macro package has been removed.
+Its functionality is now integrated directly into `\-width'.
+Similarly, `\-column' has been extended to has this functionality also.
+
+.LI
+A new macro `Ex' has been added to the mdoc macro package to document an
+exit status.
+
+.LI
+`troff.man' has been split.
+Differences to Unix troff are now documented in the new man page
+`groff_diff.man'.
+
+.LI
+The PSPIC macro has been extended to work with DVI output (`pspic.tmac' is
+now automatically loaded for \-Tdvi), using a dvips special to load the EPS
+file.
+
+.LI
+The trace.tmac package now traces calls to `am' also.
+Additionally, it works in compatibility mode.
+
+.LI
+`troff.1' has been split.
+Differences to Unix troff are now documented in the new man page
+`groff_diff.7'.
+
+.LI
+`groff_mwww.7' has been renamed to `groff_www.7'.
+The file mwww.tmac has been removed.
+
+.LI
+`groff_ms.7' has been completely rewritten.
+It now contains a complete reference to the ms macros.
+
+.LI
+`groff_trace.7' documents the trace macro package.
+
+.LI
+Changes in www.tmac
+
+Note that HTML support is still in alpha change, so it is rather likely
+that both macro names and macro syntax will change.
+Some of the macros mentioned below aren't really new but haven't been
+documented properly before.
+
+.ULS
+.LI
+The following macros have been renamed:
+
+.in 2m
+.nf
+MAILTO \-> MTO
+IMAGE \-> IMG
+LINE \-> HR
+.fi
+.in
+
+.LI
+For consistency, the macros `URL', `FTL', and `MTO' now all have the
+address as the first parameter followed by the description.
+
+.LI
+By default, grohtml generates links to all section headings at the top
+of the document.
+Use the new `LK' macro to specify a different place.
+
+.LI
+For specifying the background color and a background image, use the
+new macros `BCL' and `BGIMG', respectively.
+
+.LI
+The macro `NHR' has been added; it suppresses the generation of top and
+bottom rules which grohtml emits by default.
+
+.LI
+The new macro `HX' determines the cut-off point for automatic link
+generation to headings.
+
+.LI
+The image position parameter names in `IMG' have been changed to `\-L',
+`\-R', and `\-C'.
+
+.LI
+New macro `PIMG' for inclusion of a PNG image (it automatically
+converts it into an EPS file if not \-Thtml is used).
+
+.LI
+New macro `MPIMG' for putting a PNG image into the left or right margin
+(it automatically converts it into an EPS file if not \-Thtml is used).
+
+.LI
+New macros `HnS', `HnE' to start and end a header line block.
+
+.LI
+New macro `DC' to produce dropcap characters.
+
+.LI
+New macro `HTL' to generate an HTML title line only but no H1 heading.
+
+.LI
+New macros `ULS' and `ULE' to start and end an unordered list.
+The new macro `LI' inserts a list item.
+.ULE
+.ULE
+.
+.
+.SH 2
+groff
+
+.ULS
+.LI
+The new command-line option `\-c' disables color output (which is always
+disabled in compatibility mode).
+.ULE
+.
+.
+.SH 2
+Nroff
+
+.ULS
+.LI
+Two new command-line options `\-c' and `\-C'; the former passes `\-c' to
+grotty (switching to the old output scheme); the latter passes `\-C' to
+groff (enabling compatibility mode).
+.ULE
+.
+.
+.SH 2
+pic
+
+.ULS
+.LI
+New keywords `color' (or `colour', `colored', `coloured'), `outline' (or
+`outlined'), and `shaded' are available.
+`outline' sets the color of the outline, `shaded' the fill color, and
+`color' sets both.
+Example:
+
+.in 2m
+.ft C
+circle shaded "green" outline "black" ;
+.ft P
+.in
+
+Filled arrows always use the outline color for filling.
+
+Color support for TeX output is not implemented yet.
+.ULE
+.
+.
+.SH 2
+Pic2graph
+
+.ULS
+.LI
+A new script contributed by
+.MTO esr@\:thyrsus.com "Eric S.\& Raymond" .
+It converts a PIC diagram into a cropped image.
+Since it uses gs and the PNM library, virtually all graphics formats
+are available for output.
+.ULE
+.
+.
+.SH 2
+Eqn2graph
+
+.ULS
+.LI
+A new script contributed by
+.MTO esr@\:thyrsus.com "Eric S.\& Raymond" .
+It converts an EQN diagram into a cropped image.
+Since it uses gs and the PNM library, virtually all graphics formats
+are available for output.
+.ULE
+.
+.
+.SH 2
+Groffer
+
+.ULS
+.LI
+A new script contributed by
+.MTO groff\-bernd.warken\-72@web.de "Bernd Warken" .
+It displays groff files and man pages on X and tty, taking care of most
+parameters automatically.
+.ULE
+.
+.
+.SH 2
+Grog
+
+.ULS
+.LI
+Documents using the mom macro package are recognized.
+.ULE
+.
+.
+.SH 2
+grops
+
+.ULS
+.LI
+Color support has been added.
+
+.LI
+A new option `\-p' is available to select the output paper size.
+It has the same syntax as the new `papersize' keyword in the DESC file.
+.ULE
+.
+.
+.SH 2
+Grodvi
+
+.ULS
+.LI
+By default,
+font sizes are now available in the range 5\[en]10000p\~(points),
+similar to PS fonts.
+If you want the old behaviour (i.e., font sizes at discrete values only),
+insert the following at the start of your document:
+
+.in 2m
+.nf
+.ft C
+\&.if \[aq]\e*[.T]\[aq]dvi\[aq] \e
+\&.\& sizes 500 600 700 800 900 1000 1095 1200 1400 1440 1600 \e
+\& 1728 1800 2000 2074 2200 2400 2488 2800 3600
+.ft P
+.fi
+.in
+
+.LI
+A new font file HBI (using cmssbxo10; this is slanted sans serif bold
+extended) has been added.
+
+.LI
+Two font families are now available: `T' and `H'.
+
+.LI
+EC and TC fonts have been integrated.
+Use `\-mec' (calling the file ec.tmac) to switch to them.
+Those fonts give a much better coverage of the symbols defined by groff
+than the CM fonts.
+
+Note that ec.tmac must be called before any language-specific files; it
+doesn't take care of hcode values.
+
+.LI
+Color support has been added.
+For drawing commands, colors are translated to gray values currently.
+.ULE
+.
+.
+.TAG grotty
+.SH 2
+Grotty
+
+.ULS
+.LI
+Color support has been added, using the SGR (ISO\~6429, sometimes called
+ANSI color) escape sequences.
+
+.LI
+SGR escape sequences are now used by default for underlining and bold
+printing also, no longer using the backspace character trick.
+To revert to the old behaviour, use the `\-c' switch.
+
+Note that you have to use the `\-R' option of `less' to make SGR escapes
+display correctly.
+On the other hand, terminal programs and consoles like `xterm' which
+support SGR sequences natively can directly display the output of grotty.
+Consequently, the options `\-b', `\-B', `\-u', and `\-U' work only in
+combination with `\-c' and are ignored silently otherwise.
+
+For the `man' program, it may be necessary to add the `\-R' option of
+`less' to the $PAGER environment variable (or $MANPAGER, depending on the
+used version of `man'); alternatively, you can use `man's `\-P' option (or
+adapt its configuration file accordingly).
+See
+.I man (1)
+for more details.
+
+.TAG GROFF_NO_SGR
+.LI
+If the environment variable GROFF_NO_SGR is set, SGR output is disabled,
+reverting to the old behaviour.
+
+.LI
+A new special \eX'tty:\~sgr\~n' has been added; if n is non-zero or missing,
+enable SGR output (the default).
+
+.LI
+If the new option `\-i' is used (only in SGR mode), grotty sends escape
+sequences to set the italic font attribute instead of the underline
+attribute for italic fonts.
+Note that many terminals don't have support for this (including xterm).
+.ULE
+.
+.
+.SH 2
+grohtml
+
+.ULS
+.LI
+Color support for glyphs has been added.
+
+.LI
+New option `\-h' to select the style of headings in HTML output.
+
+.LI
+New option `\-b' to set the background colour to white.
+
+.LI
+New options `\-a' and `\-g' to control the number of bits for anti-aliasing
+used for text and graphics, respectively.
+Default value is\~4; 0\~means no anti-aliasing.
+
+.LI
+groff character/glyph entities now map onto HTML\~4 character entities.
+.ULE
+.
+.
+.SH 2
+Grolbp
+
+.ULS
+.LI
+Valid paper sizes are now specified as with the new `papersize' keyword
+in the DESC file.
+Specifically, the old custom paper type format `custAAAxBBB' is no longer
+supported.
+.ULE
+.
+.
+.SH 2
+Miscellaneous
+
+.ULS
+.LI
+A new manual page `ditroff.7' is available.
+
+.LI
+The groff texinfo manual is now installed, together with a bunch
+of examples.
+
+.LI
+A new keyword `papersize' has been added to the DESC file format.
+Its argument is either
+
+.ULS
+.LI
+a predefined paper format (e.g., `A4' or `letter')
+
+.LI
+a file name pointing to a file which must contain a paper size
+specification in its first line (e.g., `/etc/papersize')
+
+.LI
+a custom paper size definition like `35c,4i'
+.ULE
+
+See
+.I groff_font (5)
+for more details.
+This keyword only affects the physical dimensions of the output medium;
+grops, grolj4, and grolbp use it currently.
+troff completely ignores it.
+.ULE
+.
+.LNE
+.
+.\" EOF
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff: